diff options
author | Fabrice Bellingard <bellingard@gmail.com> | 2012-04-02 09:37:37 +0200 |
---|---|---|
committer | Fabrice Bellingard <bellingard@gmail.com> | 2012-04-02 09:37:37 +0200 |
commit | e6d39ea35a03bb60abdad7e31b427c6763ab0d9d (patch) | |
tree | e5787f91dda05fee659862650725d37207375492 /plugins | |
parent | 95e88b5521a5362c3d493cea20eb3a02fa1a03a8 (diff) | |
parent | 71675b44d74ffb48a5049deae72ab90e4b3e7914 (diff) | |
download | sonarqube-e6d39ea35a03bb60abdad7e31b427c6763ab0d9d.tar.gz sonarqube-e6d39ea35a03bb60abdad7e31b427c6763ab0d9d.zip |
Merge branch 'current'
Diffstat (limited to 'plugins')
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()); + } + +} |