]> source.dussan.org Git - sonarqube.git/commitdiff
Fix issue related to SONAR-5419
authorJulien HENRY <julien.henry@sonarsource.com>
Wed, 15 Oct 2014 07:52:24 +0000 (09:52 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Wed, 15 Oct 2014 07:53:27 +0000 (09:53 +0200)
sonar-plugin-api/src/main/java/org/sonar/api/batch/bootstrap/ProjectDefinition.java
sonar-plugin-api/src/test/java/org/sonar/api/batch/bootstrap/ProjectDefinitionTest.java

index ec3bb5efa07ecfb885262f4f4577098e46251c56..65ac737e31e0e73d89e5f7d8efb1ebebb6b3f547 100644 (file)
@@ -313,7 +313,7 @@ public class ProjectDefinition {
   public ProjectDefinition addSourceFiles(String... paths) {
     // Hack for visual studio project builder that used to add baseDir first as source dir
     List<String> sourceDirs = getSourceDirs();
-    if (sourceDirs.size() == 1 && new File(sourceDirs.get(0)).isDirectory()) {
+    if (sourceDirs.size() == 1 && isDirectory(sourceDirs.get(0))) {
       resetSources();
     }
     return addSources(paths);
@@ -326,7 +326,7 @@ public class ProjectDefinition {
   public ProjectDefinition addSourceFiles(File... files) {
     // Hack for visual studio project builder that used to add baseDir first as source dir
     List<String> sourceDirs = getSourceDirs();
-    if (sourceDirs.size() == 1 && new File(sourceDirs.get(0)).isDirectory()) {
+    if (sourceDirs.size() == 1 && isDirectory(sourceDirs.get(0))) {
       resetSources();
     }
     return addSources(files);
@@ -436,17 +436,30 @@ public class ProjectDefinition {
   public ProjectDefinition addTestFiles(String... paths) {
     // Hack for visual studio project builder that used to add baseDir first as test dir
     List<String> testDirs = getTestDirs();
-    if (testDirs.size() == 1 && new File(testDirs.get(0)).isDirectory()) {
+    if (testDirs.size() == 1 && isDirectory(testDirs.get(0))) {
       resetTests();
     }
     return addTests(paths);
   }
 
+  private boolean isDirectory(String relativeOrAbsoluteDir) {
+    File file = new File(relativeOrAbsoluteDir);
+    if (!file.isAbsolute()) {
+      file = new File(baseDir, relativeOrAbsoluteDir);
+    }
+    return file.isDirectory();
+  }
+
   /**
    * @deprecated since 4.5 use {@link #addTests(File...)}
    */
   @Deprecated
   public ProjectDefinition addTestFiles(File... files) {
+    // Hack for visual studio project builder that used to add baseDir first as test dir
+    List<String> testDirs = getTestDirs();
+    if (testDirs.size() == 1 && isDirectory(testDirs.get(0))) {
+      resetTests();
+    }
     return addTests(files);
   }
 
index b92651296051fe365c7507ef7c9bd1e9d6f0a763..28802165afc7b91359eff6b70dde2b2c23fd74a8 100644 (file)
  */
 package org.sonar.api.batch.bootstrap;
 
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.sonar.api.CoreProperties;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.List;
 import java.util.Properties;
 
-import org.junit.Test;
-import org.sonar.api.CoreProperties;
+import static org.fest.assertions.Assertions.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertThat;
 
 public class ProjectDefinitionTest {
 
+  @Rule
+  public TemporaryFolder temp = new TemporaryFolder();
+
   @Test
   public void shouldSetKey() {
     ProjectDefinition def = ProjectDefinition.create();
@@ -183,6 +190,60 @@ public class ProjectDefinitionTest {
     assertThat(root.getTestDirs().size(), is(0));
   }
 
+  @Test
+  public void shouldResetSourceDirsWhenUsindDeprecatedMethod() throws IOException {
+    File baseDir = temp.newFolder();
+    ProjectDefinition root = ProjectDefinition.create().setBaseDir(baseDir);
+    File src = new File(baseDir, "src");
+    src.mkdir();
+    root.addSourceDirs("src");
+    assertThat(root.getSourceDirs()).containsOnly("src");
+
+    root.addSourceFiles("foo.java");
+    assertThat(root.getSourceDirs()).containsOnly("foo.java");
+  }
+
+  @Test
+  public void shouldResetTestDirsWhenUsindDeprecatedMethod() throws IOException {
+    File baseDir = temp.newFolder();
+    ProjectDefinition root = ProjectDefinition.create().setBaseDir(baseDir);
+    File test = new File(baseDir, "test");
+    test.mkdir();
+    root.addTestDirs("test");
+    assertThat(root.getTestDirs()).containsOnly("test");
+
+    root.addTestFiles("fooTest.java");
+    assertThat(root.getTestDirs()).containsOnly("fooTest.java");
+  }
+
+  @Test
+  public void shouldResetSourceDirsWhenUsindDeprecatedFileMethod() throws IOException {
+    File baseDir = temp.newFolder();
+    ProjectDefinition root = ProjectDefinition.create().setBaseDir(baseDir);
+    File src = new File(baseDir, "src");
+    src.mkdir();
+    root.addSourceDirs("src");
+    assertThat(root.getSourceDirs()).containsOnly("src");
+
+    File file = new File(src, "foo.java");
+    root.addSourceFiles(file);
+    assertThat(root.getSourceDirs()).containsOnly(file.getAbsolutePath());
+  }
+
+  @Test
+  public void shouldResetTestDirsWhenUsindDeprecatedFileMethod() throws IOException {
+    File baseDir = temp.newFolder();
+    ProjectDefinition root = ProjectDefinition.create().setBaseDir(baseDir);
+    File test = new File(baseDir, "test");
+    test.mkdir();
+    root.addTestDirs("test");
+    assertThat(root.getTestDirs()).containsOnly("test");
+
+    File file = new File(test, "fooTest.java");
+    root.addTestFiles(file);
+    assertThat(root.getTestDirs()).containsOnly(file.getAbsolutePath());
+  }
+
   private static void assertFiles(List<String> paths, String... values) {
     assertThat(paths.size(), is(values.length));
     for (int i = 0; i < values.length; i++) {