aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorFabrice Bellingard <bellingard@gmail.com>2012-04-02 09:37:37 +0200
committerFabrice Bellingard <bellingard@gmail.com>2012-04-02 09:37:37 +0200
commite6d39ea35a03bb60abdad7e31b427c6763ab0d9d (patch)
treee5787f91dda05fee659862650725d37207375492 /plugins
parent95e88b5521a5362c3d493cea20eb3a02fa1a03a8 (diff)
parent71675b44d74ffb48a5049deae72ab90e4b3e7914 (diff)
downloadsonarqube-e6d39ea35a03bb60abdad7e31b427c6763ab0d9d.tar.gz
sonarqube-e6d39ea35a03bb60abdad7e31b427c6763ab0d9d.zip
Merge branch 'current'
Diffstat (limited to 'plugins')
-rw-r--r--plugins/sonar-squid-java-plugin/src/main/java/org/sonar/plugins/squid/JavaSourceImporter.java17
-rw-r--r--plugins/sonar-squid-java-plugin/src/test/java/org/sonar/plugins/squid/JavaSourceImporterTest.java59
2 files changed, 60 insertions, 16 deletions
diff --git a/plugins/sonar-squid-java-plugin/src/main/java/org/sonar/plugins/squid/JavaSourceImporter.java b/plugins/sonar-squid-java-plugin/src/main/java/org/sonar/plugins/squid/JavaSourceImporter.java
index 47a9e644a3b..3adb55000fd 100644
--- a/plugins/sonar-squid-java-plugin/src/main/java/org/sonar/plugins/squid/JavaSourceImporter.java
+++ b/plugins/sonar-squid-java-plugin/src/main/java/org/sonar/plugins/squid/JavaSourceImporter.java
@@ -19,6 +19,9 @@
*/
package org.sonar.plugins.squid;
+import java.nio.charset.Charset;
+import java.util.List;
+
import org.apache.commons.configuration.Configuration;
import org.apache.commons.io.FileUtils;
import org.sonar.api.CoreProperties;
@@ -26,13 +29,14 @@ import org.sonar.api.batch.DependedUpon;
import org.sonar.api.batch.Phase;
import org.sonar.api.batch.Sensor;
import org.sonar.api.batch.SensorContext;
-import org.sonar.api.resources.*;
+import org.sonar.api.resources.InputFile;
+import org.sonar.api.resources.Java;
+import org.sonar.api.resources.JavaFile;
+import org.sonar.api.resources.Project;
+import org.sonar.api.resources.ProjectFileSystem;
import org.sonar.api.utils.SonarException;
import org.sonar.java.api.JavaUtils;
-import java.nio.charset.Charset;
-import java.util.List;
-
@Phase(name = Phase.Name.PRE)
@DependedUpon(JavaUtils.BARRIER_BEFORE_SQUID)
public final class JavaSourceImporter implements Sensor {
@@ -82,10 +86,11 @@ public final class JavaSourceImporter implements Sensor {
String source = FileUtils.readFileToString(inputFile.getFile(), sourcesEncoding.name());
context.saveSource(javaFile, source);
}
-
+ } catch (SonarException e) {
+ throw e;
} catch (Exception e) {
throw new SonarException("Unable to read and import the source file : '" + inputFile.getFile().getAbsolutePath() + "' with the charset : '"
- + sourcesEncoding.name() + "'.", e);
+ + sourcesEncoding.name() + "'.", e);
}
}
diff --git a/plugins/sonar-squid-java-plugin/src/test/java/org/sonar/plugins/squid/JavaSourceImporterTest.java b/plugins/sonar-squid-java-plugin/src/test/java/org/sonar/plugins/squid/JavaSourceImporterTest.java
index 987757ff6f4..9727e5e525e 100644
--- a/plugins/sonar-squid-java-plugin/src/test/java/org/sonar/plugins/squid/JavaSourceImporterTest.java
+++ b/plugins/sonar-squid-java-plugin/src/test/java/org/sonar/plugins/squid/JavaSourceImporterTest.java
@@ -19,24 +19,32 @@
*/
package org.sonar.plugins.squid;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
import org.junit.Before;
-import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.resources.InputFile;
import org.sonar.api.resources.JavaFile;
import org.sonar.api.utils.SonarException;
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.Charset;
-
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.*;
-
public class JavaSourceImporterTest {
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
private JavaSourceImporter importer;
private SensorContext context;
private InputFile inputFile;
@@ -61,4 +69,35 @@ public class JavaSourceImporterTest {
verify(context).saveSource(eq(javaFile), anyString());
}
-} \ No newline at end of file
+ @Test
+ public void testImportUnexistingFile() {
+ File fileToImport = new File("unexisting-file.java");
+ inputFile = mock(InputFile.class);
+ when(inputFile.getRelativePath()).thenReturn("UndocumentedApi.java");
+ when(inputFile.getFile()).thenReturn(fileToImport);
+ when(inputFile.getFileBaseDir()).thenReturn(fileToImport.getParentFile());
+
+ JavaFile javaFile = JavaFile.fromRelativePath("UndocumentedApi.java", true);
+ when(context.isIndexed(javaFile, true)).thenReturn(true);
+
+ thrown.expect(SonarException.class);
+ thrown.expectMessage("Unable to read and import the source file");
+ thrown.expectMessage("unexisting-file.java");
+ importer.importSource(context, javaFile, inputFile, Charset.defaultCharset());
+ }
+
+ /**
+ * SONAR-3315
+ */
+ @Test
+ public void testDuplicateSource() {
+ JavaFile javaFile = JavaFile.fromRelativePath("UndocumentedApi.java", true);
+ when(context.isIndexed(javaFile, true)).thenReturn(true);
+ Mockito.doThrow(new SonarException("Duplicate source for resource")).when(context).saveSource(any(JavaFile.class), anyString());
+
+ thrown.expect(SonarException.class);
+ thrown.expectMessage("Duplicate source for resource");
+ importer.importSource(context, javaFile, inputFile, Charset.defaultCharset());
+ }
+
+}