@Test
 public void directory_of_classes_in_library_should_be_supported() throws Exception {
   SonarScanner scanner = ditProjectSonarScanner();
   scanner.setProperty("sonar.java.libraries", "target/classes");
   ORCHESTRATOR.executeBuild(scanner);
   assertThat(getNumberOfViolations(PROJECT_KEY_DIT)).isEqualTo(1);
 }
 @Test
 public void relative_path_and_wildcard_for_binaries_should_be_supported() {
   SonarScanner scanner = ditProjectSonarScanner();
   scanner.setProperty("sonar.java.binaries", "target/../target/clas**, ");
   ORCHESTRATOR.executeBuild(scanner);
   assertThat(getNumberOfViolations(PROJECT_KEY_DIT)).isEqualTo(1);
 }
 @Test
 public void should_use_new_java_binaries_property() {
   SonarScanner scanner = ditProjectSonarScanner();
   scanner.setProperty("sonar.java.binaries", "target/classes");
   ORCHESTRATOR.executeBuild(scanner);
   assertThat(getNumberOfViolations(PROJECT_KEY_DIT)).isEqualTo(1);
 }
 @Test
 public void should_use_aar_library() {
   SonarScanner scanner = aarProjectSonarScanner();
   scanner.setProperty("sonar.java.libraries", aarPath);
   ORCHESTRATOR.executeBuild(scanner);
   assertThat(getNumberOfViolations(PROJECT_KEY_AAR)).isEqualTo(1);
 }
 @Test
 public void invalid_binaries_dir_should_fail_analysis() {
   SonarScanner scanner = ditProjectSonarScanner();
   scanner.setProperty("sonar.java.binaries", "target/dummy__Dir");
   BuildResult buildResult = ORCHESTRATOR.executeBuildQuietly(scanner);
   assertThat(buildResult.getStatus()).isNotEqualTo(0);
   assertThat(buildResult.getLogs())
       .contains("No files nor directories matching 'target/dummy__Dir'");
 }
  @Test
  public void should_support_the_old_binaries_and_libraries_properties() {
    SonarScanner scanner = ditProjectSonarScanner();
    scanner.setProperty("sonar.binaries", "target/classes");
    scanner.setProperty("sonar.libraries", guavaJarPath);
    BuildResult buildResult = ORCHESTRATOR.executeBuildQuietly(scanner);

    assertThat(buildResult.getLogs())
        .contains(
            "sonar.binaries and sonar.libraries are not supported since version 4.0 of sonar-java-plugin,"
                + " please use sonar.java.binaries and sonar.java.libraries instead");
    assertThat(buildResult.isSuccess()).isFalse();
  }
 private static SonarScanner ditProjectSonarScanner() {
   return SonarScanner.create(TestUtils.projectDir("dit-check"))
       .setProperty("sonar.projectKey", PROJECT_KEY_DIT)
       .setProperty("sonar.projectName", "dit-check")
       .setProperty("sonar.projectVersion", "1.0-SNAPSHOT")
       .setProperty("sonar.profile", "dit-check")
       .setProperty("sonar.sources", "src/main/java");
 }
 private static SonarScanner aarProjectSonarScanner() {
   return SonarScanner.create(TestUtils.projectDir("using-aar-dep"))
       .setProperty("sonar.projectKey", PROJECT_KEY_AAR)
       .setProperty("sonar.projectName", "using-aar-dep")
       .setProperty("sonar.projectVersion", "1.0-SNAPSHOT")
       .setProperty("sonar.profile", "using-aar-dep")
       .setProperty("sonar.sources", "src/main/java");
 }
  @BeforeClass
  public static void setUp() {
    wsClient = newAdminWsClient(ORCHESTRATOR);

    ORCHESTRATOR.resetData();
    ORCHESTRATOR.executeBuild(
        SonarScanner.create(projectDir("shared/xoo-sample"))
            .setProperty("sonar.links.homepage", "http://example.com"));
  }
  @Test
  public void should_keep_order_libs() {
    SonarScanner scanner = ditProjectSonarScanner();
    scanner.setProperty("sonar.java.binaries", "target/classes");
    scanner.setProperty("sonar.java.libraries", guavaJarPath + "," + fakeGuavaJarPath);
    scanner.setProperty("sonar.verbose", "true");
    ORCHESTRATOR.executeBuild(scanner);
    assertThat(getNumberOfViolations(PROJECT_KEY_DIT)).isEqualTo(2);

    ORCHESTRATOR.resetData();

    scanner = ditProjectSonarScanner();
    scanner.setProperty("sonar.java.binaries", "target/classes");
    scanner.setProperty("sonar.java.libraries", fakeGuavaJarPath + "," + guavaJarPath);
    scanner.setProperty("sonar.verbose", "true");
    ORCHESTRATOR.executeBuild(scanner);
    assertThat(getNumberOfViolations(PROJECT_KEY_DIT)).isEqualTo(1);
  }
  @BeforeClass
  public static void analyzeProject() {
    orchestrator.resetData();

    orchestrator
        .getServer()
        .restoreProfile(FileLocation.ofClasspath("/authorisation/one-issue-per-line-profile.xml"));

    orchestrator.getServer().provisionProject(PROJECT_KEY, "Sample");
    orchestrator
        .getServer()
        .associateProjectToQualityProfile("sample", "xoo", "one-issue-per-line");
    SonarScanner sampleProject = SonarScanner.create(projectDir("shared/xoo-sample"));
    orchestrator.executeBuild(sampleProject);

    adminWsClient = newAdminWsClient(orchestrator);
    permissionsWsClient = adminWsClient.permissions();

    createUser(LOGIN, "George Orwell");
    createGroup(GROUP_NAME);
  }