@Test public void testForceSeverity() throws IOException { DefaultInputFile inputFile = new TestInputFileBuilder("foo", "src/Foo.xoo") .setLanguage(Xoo.KEY) .initMetadata("a\nb\nc\nd\ne\nf\ng\nh\ni\n") .build(); SensorContextTester context = SensorContextTester.create(temp.newFolder()); context.fileSystem().add(inputFile); context.settings().setProperty(OneIssuePerLineSensor.FORCE_SEVERITY_PROPERTY, "MINOR"); sensor.execute(context); assertThat(context.allIssues()).hasSize(10); // One issue per line for (Issue issue : context.allIssues()) { assertThat(issue.overriddenSeverity()).isEqualTo(Severity.MINOR); } }
@Test public void testExecution() throws IOException { File measures = new File(baseDir, "src/foo.xoo.measures"); FileUtils.write(measures, "ncloc:12\nbranch_coverage:5.3\nsqale_index:300\nbool:true\n\n#comment", StandardCharsets.UTF_8); InputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo").setLanguage("xoo").setModuleBaseDir(baseDir.toPath()).build(); context.fileSystem().add(inputFile); Metric<Boolean> booleanMetric = new Metric.Builder("bool", "Bool", Metric.ValueType.BOOL) .create(); when(metricFinder.<Integer>findByKey("ncloc")).thenReturn(CoreMetrics.NCLOC); when(metricFinder.<Double>findByKey("branch_coverage")).thenReturn(CoreMetrics.BRANCH_COVERAGE); when(metricFinder.<Long>findByKey("sqale_index")).thenReturn(CoreMetrics.TECHNICAL_DEBT); when(metricFinder.<Boolean>findByKey("bool")).thenReturn(booleanMetric); sensor.execute(context); assertThat(context.measure("foo:src/foo.xoo", CoreMetrics.NCLOC).value()).isEqualTo(12); assertThat(context.measure("foo:src/foo.xoo", CoreMetrics.BRANCH_COVERAGE).value()).isEqualTo(5.3); assertThat(context.measure("foo:src/foo.xoo", CoreMetrics.TECHNICAL_DEBT).value()).isEqualTo(300L); assertThat(context.measure("foo:src/foo.xoo", booleanMetric).value()).isTrue(); }
@Test public void testExecution() throws IOException { File symbol = new File(baseDir, "src/foo.xoo.highlighting"); FileUtils.write(symbol, "1:4:k\n12:15:cd\n\n#comment"); DefaultInputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo") .setLanguage("xoo") .setModuleBaseDir(baseDir.toPath()) .initMetadata(" xoo\nazertyazer\nfoo") .build(); context.fileSystem().add(inputFile); sensor.execute(context); assertThat(context.highlightingTypeAt("foo:src/foo.xoo", 1, 2)).containsOnly(TypeOfText.KEYWORD); assertThat(context.highlightingTypeAt("foo:src/foo.xoo", 2, 8)).containsOnly(TypeOfText.COMMENT); } }
@Test public void testExecution() throws IOException { File significantCode = new File(baseDir, "src/foo.xoo.significantCode"); FileUtils.write(significantCode, "1,1,4\n2,2,5"); context.fileSystem().add(inputFile); sensor.execute(context); assertThat(context.significantCodeTextRange("foo:src/foo.xoo", 1)).isEqualTo(range(1, 1, 4)); assertThat(context.significantCodeTextRange("foo:src/foo.xoo", 2)).isEqualTo(range(2, 2, 5)); }
@Test public void file_with_branches() throws Exception { addFileToFs(fileWithBranches); GenericCoverageReportParser parser = new GenericCoverageReportParser(); parser.parse(new File(this.getClass().getResource("coverage.xml").toURI()), context); assertThat(parser.numberOfMatchedFiles()).isEqualTo(1); assertThat(context.lineHits(fileWithBranches.key(), 3)).isEqualTo(1); assertThat(context.lineHits(fileWithBranches.key(), 4)).isEqualTo(1); assertThat(context.conditions(fileWithBranches.key(), 3)).isEqualTo(8); assertThat(context.conditions(fileWithBranches.key(), 4)).isEqualTo(2); assertThat(context.coveredConditions(fileWithBranches.key(), 3)).isEqualTo(5); assertThat(context.coveredConditions(fileWithBranches.key(), 4)).isEqualTo(0); }
@Test public void testLineHitAndConditions() throws IOException { File coverage = new File(baseDir, "src/foo.xoo.itcoverage"); FileUtils.write(coverage, "1:3:4:2"); InputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo").setModuleBaseDir(baseDir.toPath()).setLanguage("xoo").setLines(10).build(); context.fileSystem().add(inputFile); sensor.execute(context); assertThat(context.lineHits("foo:src/foo.xoo", 1)).isEqualTo(3); assertThat(context.conditions("foo:src/foo.xoo", 1)).isEqualTo(4); assertThat(context.coveredConditions("foo:src/foo.xoo", 1)).isEqualTo(2); } }
@Test void upload_reports() throws IOException { Path baseDir = COVERAGE_DIR.toAbsolutePath(); SensorContextTester context = SensorContextTester.create(baseDir); context.setSettings(new MapSettings()); context.settings().setProperty("sonar.go.coverage.reportPaths", "coverage.relative.out"); Path goFilePath = baseDir.resolve("cover.go"); String content = new String(Files.readAllBytes(goFilePath), UTF_8); context.fileSystem().add(TestInputFileBuilder.create("moduleKey", baseDir.toFile(), goFilePath.toFile()) .setLanguage("go") .setType(InputFile.Type.MAIN) .initMetadata(content) .setContents(content) .build()); GoPathContext goContext = new GoPathContext(File.separatorChar, File.pathSeparator, baseDir.toString()); GoCoverageReport.saveCoverageReports(context, goContext); String fileKey = "moduleKey:cover.go"; assertThat(context.lineHits(fileKey, 3)).isNull(); assertThat(context.lineHits(fileKey, 4)).isEqualTo(1); assertThat(context.lineHits(fileKey, 5)).isEqualTo(2); assertThat(context.conditions(fileKey, 5)).isNull(); assertThat(context.coveredConditions(fileKey, 5)).isNull(); assertThat(context.lineHits(fileKey, 6)).isEqualTo(0); assertThat(context.lineHits(fileKey, 7)).isEqualTo(0); assertThat(context.lineHits(fileKey, 8)).isNull(); }
@Before public void prepare() throws IOException { baseDir = temp.newFolder(); context = SensorContextTester.create(baseDir); }
@Test public void get_report_paths() { SensorContextTester context = SensorContextTester.create(COVERAGE_DIR); context.setSettings(new MapSettings()); Path coverageFile1 = COVERAGE_DIR.resolve("coverage.linux.relative.out").toAbsolutePath(); context.settings().setProperty("sonar.go.coverage.reportPaths", coverageFile1 + ",coverage.linux.absolute.out"); Stream<Path> reportPaths = GoCoverageReport.getReportPaths(context); assertThat(reportPaths).containsExactlyInAnyOrder( coverageFile1, Paths.get("src", "test", "resources", "coverage", "coverage.linux.absolute.out")); }
@Test public void metrics_for_test_file() { InputFile inputFile = createInputFile("lets.go", InputFile.Type.TEST, "// This is not a line of code\n" + "package main\n" + "import \"fmt\"\n" + "func main() {\n" + " fmt.Println(\"Hello\")\n" + "}\n"); sensorContext.fileSystem().add(inputFile); GoSensor goSensor = getSensor(); goSensor.execute(sensorContext); assertThat(sensorContext.allIssues()).hasSize(0); assertThat(sensorContext.measure(inputFile.key(), CoreMetrics.NCLOC)).isNull(); assertThat(sensorContext.measure(inputFile.key(), CoreMetrics.COMMENT_LINES)).isNull(); assertThat(sensorContext.measure(inputFile.key(), CoreMetrics.CLASSES)).isNull(); assertThat(sensorContext.measure(inputFile.key(), CoreMetrics.FUNCTIONS)).isNull(); assertThat(sensorContext.measure(inputFile.key(), CoreMetrics.STATEMENTS)).isNull(); assertThat(sensorContext.measure(inputFile.key(), CoreMetrics.COGNITIVE_COMPLEXITY)).isNull(); assertThat(fileLinesContext.saveCount).isEqualTo(0); assertThat(fileLinesContext.metrics.keySet()).isEmpty(); }
@Test void import_report() { GoTestSensor goTestSensor = new GoTestSensor(); goTestSensor.goPathContext = new GoPathContext(File.separatorChar, File.pathSeparator, goPath.toString()); Path baseDir = goPath.resolve("src").resolve(packagePath); SensorContextTester context = SensorContextTester.create(baseDir); DefaultFileSystem fs = context.fileSystem(); DefaultInputFile fooTestFile = getTestInputFile(fs, "something \nfunc TestFoo1( \nfunc TestFoo2( ", "foo_test.go"); DefaultInputFile barTestFile = getTestInputFile(fs, "func TestBar(", "bar_test.go"); MapSettings settings = new MapSettings(); String absoluteReportPath = baseDir.resolve("report1.out").toString(); settings.setProperty(GoTestSensor.REPORT_PATH_KEY, "report.out,invilid/report/path," + absoluteReportPath); context.setSettings(settings); goTestSensor.execute(context); assertThat(context.measure(fooTestFile.key(), CoreMetrics.TESTS).value()).isEqualTo(3); // one test comes from report1.out assertThat(context.measure(fooTestFile.key(), CoreMetrics.SKIPPED_TESTS).value()).isEqualTo(0); assertThat(context.measure(fooTestFile.key(), CoreMetrics.TEST_FAILURES).value()).isEqualTo(1); assertThat(context.measure(fooTestFile.key(), CoreMetrics.TEST_ERRORS)).isNull(); assertThat(context.measure(fooTestFile.key(), CoreMetrics.TEST_EXECUTION_TIME).value()).isEqualTo(4); assertThat(context.measure(barTestFile.key(), CoreMetrics.TESTS).value()).isEqualTo(1); assertThat(context.measure(barTestFile.key(), CoreMetrics.SKIPPED_TESTS).value()).isEqualTo(1); assertThat(context.measure(barTestFile.key(), CoreMetrics.TEST_FAILURES).value()).isEqualTo(0); assertThat(context.measure(barTestFile.key(), CoreMetrics.TEST_ERRORS)).isNull(); assertThat(context.measure(barTestFile.key(), CoreMetrics.TEST_EXECUTION_TIME).value()).isEqualTo(7); }
@Before public void prepare() throws IOException { MockitoAnnotations.initMocks(this); File baseDir = temp.newFolder(); context = SensorContextTester.create(baseDir); file = new TestInputFileBuilder("foo", "src/ManyStatements.java") .setModuleBaseDir(baseDir.toPath()) .setCharset(StandardCharsets.UTF_8) .setLanguage("java").build(); context.fileSystem().add(file); File ioFile = file.file(); FileUtils.copyURLToFile(this.getClass().getResource("ManyStatements.java"), ioFile); }
@Test public void testRule() throws IOException { DefaultInputFile inputFile = new TestInputFileBuilder("foo", "src/Foo.xoo") .setLanguage(Xoo.KEY) .initMetadata("a\nb\nc\nd\ne\nf\ng\nh\ni\n") .build(); SensorContextTester context = SensorContextTester.create(temp.newFolder()); context.fileSystem().add(inputFile); sensor.execute(context); assertThat(context.allIssues()).hasSize(10); // One issue per line for (Issue issue : context.allIssues()) { assertThat(issue.gap()).isNull(); } }
private void addFileToFs(DefaultInputFile inputFile) { context.fileSystem().add(inputFile); }
@Test public void test() throws IOException { Path baseDir = temp.newFolder().toPath().toAbsolutePath(); createErrorFile(baseDir); int[] startOffsets = {10, 20, 30, 40}; int[] endOffsets = {19, 29, 39, 49}; DefaultInputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo") .setLanguage("xoo") .setOriginalLineStartOffsets(startOffsets) .setOriginalLineEndOffsets(endOffsets) .setModuleBaseDir(baseDir) .setLines(4) .build(); context = SensorContextTester.create(baseDir); context.fileSystem().add(inputFile); sensor.execute(context); assertThat(context.allAnalysisErrors()).hasSize(1); AnalysisError error = context.allAnalysisErrors().iterator().next(); assertThat(error.inputFile()).isEqualTo(inputFile); assertThat(error.location()).isEqualTo(new DefaultTextPointer(1, 4)); assertThat(error.message()).isEqualTo("my error"); } }
static SonarComponents sonarComponents(File file) { SensorContextTester context = SensorContextTester.create(new File("")).setRuntime(SonarRuntimeImpl.forSonarLint(Version.create(6, 7))); context.setSettings(new MapSettings().setProperty("sonar.java.failOnException", true)); SonarComponents sonarComponents = new SonarComponents(null, context.fileSystem(), null, null, null) { @Override public boolean reportAnalysisError(RecognitionException re, File file) { return false; } }; sonarComponents.setSensorContext(context); context.fileSystem().add(new TestInputFileBuilder("", file.getPath()).setCharset(StandardCharsets.UTF_8).build()); return sonarComponents; }
public <G extends Serializable> Measure<G> measure(String componentKey, Metric<G> metric) { return measure(componentKey, metric.key()); }
@Test public void testLineHitNoConditions() throws IOException { File coverage = new File(baseDir, "src/foo.xoo.coverage"); FileUtils.write(coverage, "1:3\n\n#comment"); InputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo").setLanguage("xoo").setModuleBaseDir(baseDir.toPath()).setLines(10).build(); context.fileSystem().add(inputFile); sensor.execute(context); assertThat(context.lineHits("foo:src/foo.xoo", 1)).isEqualTo(3); }
@Test void test_file_issue() throws IOException { InputFile inputFile = createInputFile("lets.go", InputFile.Type.MAIN, "// hey \n package main \n"); sensorContext.fileSystem().add(inputFile); GoSensor goSensor = getSensor("S1451"); goSensor.execute(sensorContext); assertThat(sensorContext.allIssues()).hasSize(1); }
public void multipleCoverage() { tester.newCoverage() .onFile(new TestInputFileBuilder("foo", "src/Foo.java").initMetadata("annot dsf fds foo bar\nasdas").build()) .lineHits(1, 2) .conditions(3, 4, 2) .save(); tester.newCoverage() .onFile(new TestInputFileBuilder("foo", "src/Foo.java").initMetadata("annot dsf fds foo bar\nasdas").build()) .lineHits(1, 2) .conditions(3, 4, 3) .save(); assertThat(tester.lineHits("foo:src/Foo.java", 1)).isEqualTo(4); assertThat(tester.conditions("foo:src/Foo.java", 3)).isEqualTo(4); assertThat(tester.coveredConditions("foo:src/Foo.java", 3)).isEqualTo(3); }