use of org.sonar.api.batch.sensor.internal.SensorContextTester in project sonar-java by SonarSource.
the class DroppedPropertiesSensorTest method test_two_reportPaths_property.
@Test
void test_two_reportPaths_property() throws Exception {
SensorContextTester contextTester = SensorContextTester.create(tmp.newFolder());
MapSettings mapSettings = new MapSettings().setProperty("sonar.jacoco.reportPaths", "/path").setProperty("sonar.jacoco.reportPath", "/path");
contextTester.setSettings(mapSettings);
List<String> analysisWarnings = new ArrayList<>();
DroppedPropertiesSensor sensor = new DroppedPropertiesSensor(analysisWarnings::add);
sensor.execute(contextTester);
assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty();
assertThat(analysisWarnings).isEmpty();
}
use of org.sonar.api.batch.sensor.internal.SensorContextTester in project sonar-java by SonarSource.
the class DroppedPropertiesSensorTest method test_empty.
@Test
void test_empty() throws Exception {
SensorContextTester contextTester = SensorContextTester.create(tmp.newFolder());
List<String> analysisWarnings = new ArrayList<>();
DroppedPropertiesSensor sensor = new DroppedPropertiesSensor(analysisWarnings::add);
sensor.execute(contextTester);
assertThat(logTester.logs(LoggerLevel.WARN)).isEmpty();
assertThat(analysisWarnings).isEmpty();
}
use of org.sonar.api.batch.sensor.internal.SensorContextTester in project sonar-java by SonarSource.
the class JavaSensorTest method createContext.
private static SensorContextTester createContext(InputFile.Type onType) throws IOException {
SensorContextTester context = SensorContextTester.create(new File("src/test/java/").getAbsoluteFile());
DefaultFileSystem fs = context.fileSystem();
String effectiveKey = "org/sonar/plugins/java/JavaSensorTest.java";
File file = new File(fs.baseDir(), effectiveKey);
DefaultInputFile inputFile = new TestInputFileBuilder("", effectiveKey).setLanguage("java").setModuleBaseDir(fs.baseDirPath()).setType(onType).initMetadata(new String(Files.readAllBytes(file.toPath()), UTF_8)).setCharset(UTF_8).build();
fs.add(inputFile);
return context;
}
use of org.sonar.api.batch.sensor.internal.SensorContextTester in project sonar-java by SonarSource.
the class JavaSensorTest method testIssueCreation.
private void testIssueCreation(InputFile.Type onType, int expectedIssues) throws IOException {
MapSettings settings = new MapSettings();
NoSonarFilter noSonarFilter = mock(NoSonarFilter.class);
SensorContextTester context = createContext(onType).setRuntime(SonarRuntimeImpl.forSonarLint(Version.create(6, 7)));
DefaultFileSystem fs = context.fileSystem();
fs.setWorkDir(tmp.newFolder().toPath());
SonarComponents sonarComponents = createSonarComponentsMock(context);
DefaultJavaResourceLocator javaResourceLocator = new DefaultJavaResourceLocator(new ClasspathForMain(settings.asConfig(), fs));
JavaSensor jss = new JavaSensor(sonarComponents, fs, javaResourceLocator, settings.asConfig(), noSonarFilter, null);
jss.execute(context);
// argument 120 refers to the comment on line #120 in this file
verify(noSonarFilter, times(1)).noSonarInFile(fs.inputFiles().iterator().next(), Collections.singleton(120));
verify(sonarComponents, times(expectedIssues)).reportIssue(any(AnalyzerMessage.class));
settings.setProperty(JavaVersion.SOURCE_VERSION, "wrongFormat");
jss.execute(context);
settings.setProperty(JavaVersion.SOURCE_VERSION, "1.7");
jss.execute(context);
}
use of org.sonar.api.batch.sensor.internal.SensorContextTester in project sonar-java by SonarSource.
the class JavaSensorTest method analyzeTwoFilesWithIssues.
private SensorContextTester analyzeTwoFilesWithIssues(MapSettings settings) throws IOException {
SensorContextTester context = SensorContextTester.create(new File("src/test/files").getAbsoluteFile()).setSettings(settings).setRuntime(SonarRuntimeImpl.forSonarQube(Version.create(8, 7), SonarQubeSide.SCANNER, SonarEdition.COMMUNITY));
DefaultFileSystem fs = context.fileSystem();
fs.setWorkDir(tmp.newFolder().toPath());
File mainFile = new File(fs.baseDir(), "CodeWithIssues.java");
fs.add(new TestInputFileBuilder("", mainFile.getName()).setLanguage("java").setModuleBaseDir(fs.baseDirPath()).setType(InputFile.Type.MAIN).initMetadata(Files.readString(mainFile.toPath())).setCharset(UTF_8).build());
File testFile = new File(fs.baseDir(), "CodeWithIssuesTest.java");
fs.add(new TestInputFileBuilder("", testFile.getName()).setLanguage("java").setModuleBaseDir(fs.baseDirPath()).setType(InputFile.Type.TEST).initMetadata(Files.readString(testFile.toPath())).setCharset(UTF_8).build());
FileLinesContextFactory fileLinesContextFactory = mock(FileLinesContextFactory.class);
when(fileLinesContextFactory.createFor(any(InputFile.class))).thenReturn(mock(FileLinesContext.class));
ClasspathForTest javaTestClasspath = new ClasspathForTest(context.config(), fs);
ClasspathForMain javaClasspath = new ClasspathForMain(context.config(), fs);
DefaultJavaResourceLocator resourceLocator = new DefaultJavaResourceLocator(new ClasspathForMain(context.config(), fs));
CheckRegistrar[] checkRegistrars = new CheckRegistrar[] { new CustomRegistrar() };
ActiveRulesBuilder activeRulesBuilder = new ActiveRulesBuilder();
CheckList.getChecks().stream().map(check -> AnnotationUtils.getAnnotation(check, org.sonar.check.Rule.class).key()).map(key -> new NewActiveRule.Builder().setRuleKey(RuleKey.of("java", key)).build()).forEach(activeRulesBuilder::addRule);
Stream.of("CustomMainCheck", "CustomJspCheck", "CustomTestCheck").map(key -> new NewActiveRule.Builder().setRuleKey(RuleKey.of("CustomRepository", key)).build()).forEach(activeRulesBuilder::addRule);
CheckFactory checkFactory = new CheckFactory(activeRulesBuilder.build());
SonarComponents components = new SonarComponents(fileLinesContextFactory, fs, javaClasspath, javaTestClasspath, checkFactory, checkRegistrars, null);
JavaSensor jss = new JavaSensor(components, fs, resourceLocator, context.config(), mock(NoSonarFilter.class), null);
jss.execute(context);
return context;
}
Aggregations