@Test public void nothing_to_do_when_no_coverage_info() { CoverageLineReader computeCoverageLine = new CoverageLineReader(Collections.<ScannerReport.LineCoverage>emptyList().iterator()); DbFileSources.Line.Builder lineBuilder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(1); assertThat(computeCoverageLine.read(lineBuilder)).isEmpty(); assertThat(lineBuilder.hasLineHits()).isFalse(); assertThat(lineBuilder.hasConditions()).isFalse(); assertThat(lineBuilder.hasCoveredConditions()).isFalse(); }
@Test public void read_one_syntax_highlighting_on_many_lines() { // This highlighting begin on line 1 and finish on line 3 TextRange textRange = newTextRange(LINE_1, LINE_3); when(rangeOffsetConverter.offsetToString(textRange, LINE_1, DEFAULT_LINE_LENGTH)).thenReturn(RANGE_LABEL_1); when(rangeOffsetConverter.offsetToString(textRange, LINE_2, 6)).thenReturn(RANGE_LABEL_2); when(rangeOffsetConverter.offsetToString(textRange, LINE_3, DEFAULT_LINE_LENGTH)).thenReturn(RANGE_LABEL_3); HighlightingLineReader highlightingLineReader = newReader(of(textRange, ANNOTATION)); assertThat(highlightingLineReader.read(line1)).isEmpty(); DbFileSources.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line 2").setLine(2); assertThat(highlightingLineReader.read(line2)).isEmpty(); assertThat(highlightingLineReader.read(line3)).isEmpty(); assertThat(line1.getHighlighting()).isEqualTo(RANGE_LABEL_1 + ",a"); assertThat(line2.getHighlighting()).isEqualTo(RANGE_LABEL_2 + ",a"); assertThat(line3.getHighlighting()).isEqualTo(RANGE_LABEL_3 + ",a"); }
@Test public void set_coverage_on_uncovered_lines() { CoverageLineReader computeCoverageLine = new CoverageLineReader(newArrayList(ScannerReport.LineCoverage.newBuilder() .setLine(1) .setHits(false) .build()).iterator()); DbFileSources.Line.Builder lineBuilder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(1); assertThat(computeCoverageLine.read(lineBuilder)).isEmpty(); assertThat(lineBuilder.hasLineHits()).isTrue(); assertThat(lineBuilder.getLineHits()).isEqualTo(0); }
private static DbFileSources.Data.Builder newRandomData(int numberOfLines) { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); for (int i = 1; i <= numberOfLines; i++) { dataBuilder.addLinesBuilder() .setLine(i) .setScmRevision(randomAlphanumeric(15)) .setScmAuthor(randomAlphanumeric(10)) .setScmDate(RandomUtils.nextLong()) .setSource(randomAlphanumeric(20)) .setLineHits(RandomUtils.nextInt(4)) .setConditions(RandomUtils.nextInt(4)) .setCoveredConditions(RandomUtils.nextInt(4)) .setHighlighting(randomAlphanumeric(40)) .setSymbols(randomAlphanumeric(30)) .addAllDuplication(Arrays.asList(RandomUtils.nextInt(200), RandomUtils.nextInt(200))) .build(); } return dataBuilder; } }
private void addFileSourceInDb(@Nullable String author, @Nullable Long date, @Nullable String revision, String srcHash, String fileUuid) { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); DbFileSources.Line.Builder builder = fileDataBuilder.addLinesBuilder() .setLine(1); if (author != null) { builder.setScmAuthor(author); } if (date != null) { builder.setScmDate(date); } if (revision != null) { builder.setScmRevision(revision); } dbTester.getDbClient().fileSourceDao().insert(dbTester.getSession(), new FileSourceDto() .setFileUuid(fileUuid) .setProjectUuid("PROJECT_UUID") .setSourceData(fileDataBuilder.build()) .setSrcHash(srcHash)); dbTester.commit(); }
@Test public void nothing_to_do_when_no_coverage_info_for_next_line() { CoverageLineReader computeCoverageLine = new CoverageLineReader(newArrayList( ScannerReport.LineCoverage.newBuilder() .setLine(1) .setConditions(10) .setHits(true) .setCoveredConditions(2) .build() // No coverage info on line 2 ).iterator()); DbFileSources.Data.Builder fileSourceBuilder = DbFileSources.Data.newBuilder(); DbFileSources.Line.Builder line1Builder = fileSourceBuilder.addLinesBuilder().setLine(1); DbFileSources.Line.Builder line2Builder = fileSourceBuilder.addLinesBuilder().setLine(2); computeCoverageLine.read(line1Builder); computeCoverageLine.read(line2Builder); assertThat(line2Builder.hasLineHits()).isFalse(); assertThat(line2Builder.hasConditions()).isFalse(); assertThat(line2Builder.hasCoveredConditions()).isFalse(); }
@Test public void nothing_to_do_when_no_coverage_info_for_current_line() { CoverageLineReader computeCoverageLine = new CoverageLineReader(newArrayList( ScannerReport.LineCoverage.newBuilder() .setLine(1) .setConditions(10) .setHits(true) .setCoveredConditions(2) .build() // No coverage info on line 2 ).iterator()); DbFileSources.Line.Builder line2Builder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(2); computeCoverageLine.read(line2Builder); assertThat(line2Builder.hasLineHits()).isFalse(); assertThat(line2Builder.hasConditions()).isFalse(); assertThat(line2Builder.hasCoveredConditions()).isFalse(); }
@Test public void set_scm_with_minim_fields() { ScmInfo scmInfo = new ScmInfoImpl(Collections.singletonMap(1, Changeset.newChangesetBuilder() .setDate(123456789L) .build())); ScmLineReader lineScm = new ScmLineReader(scmInfo); DbFileSources.Line.Builder lineBuilder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(1); assertThat(lineScm.read(lineBuilder)).isEmpty(); assertThat(lineBuilder.hasScmAuthor()).isFalse(); assertThat(lineBuilder.getScmDate()).isEqualTo(123456789L); assertThat(lineBuilder.hasScmRevision()).isFalse(); }
@Test public void set_coverage() { CoverageLineReader computeCoverageLine = new CoverageLineReader(newArrayList(ScannerReport.LineCoverage.newBuilder() .setLine(1) .setConditions(10) .setHits(true) .setCoveredConditions(2) .build()).iterator()); DbFileSources.Line.Builder lineBuilder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(1); assertThat(computeCoverageLine.read(lineBuilder)).isEmpty(); assertThat(lineBuilder.getLineHits()).isEqualTo(1); assertThat(lineBuilder.getConditions()).isEqualTo(10); assertThat(lineBuilder.getCoveredConditions()).isEqualTo(2); }
private static void addLine(DbFileSources.Data.Builder dataBuilder, Integer line, String author, Long date, String revision) { dataBuilder.addLinesBuilder() .setLine(line) .setScmAuthor(author) .setScmDate(date) .setScmRevision(revision); }
@Test public void should_support_having_no_author() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); // gets filtered out fileDataBuilder.addLinesBuilder().setScmAuthor("John").setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(555L).setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getChangesetForLine(2).getAuthor()).isNull(); }
@Test public void return_same_changeset_objects_for_lines_with_same_fields() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(65L).setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev2").setScmDate(6541L).setLine(2); fileDataBuilder.addLinesBuilder().setScmRevision("rev1").setScmDate(6541L).setLine(3); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(65L).setLine(4); ScmInfo scmInfo = DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get(); assertThat(scmInfo.getAllChangesets()).hasSize(4); assertThat(scmInfo.getChangesetForLine(1)).isSameAs(scmInfo.getChangesetForLine(4)); }
@Test public void should_support_some_lines_not_having_scm_info() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(543L).setLine(1); fileDataBuilder.addLinesBuilder().setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); }
@Test public void return_absent_dsm_info_when_no_changeset() { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setLine(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash")).isNotPresent(); }
private void readLineAndAssertLatestChanges(ScmLineReader lineScm, int line, Changeset expectedChangeset, Changeset expectedChangesetWithRevision) { DbFileSources.Line.Builder lineBuilder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(line); assertThat(lineScm.read(lineBuilder)).isEmpty(); assertThat(lineScm.getLatestChange()).isSameAs(expectedChangeset); assertThat(lineScm.getLatestChangeWithRevision()).isSameAs(expectedChangesetWithRevision); }
@Test public void nothing_to_read() { HighlightingLineReader highlightingLineReader = newReader(Collections.emptyMap()); DbFileSources.Line.Builder lineBuilder = newBuilder().addLinesBuilder().setLine(1); assertThat(highlightingLineReader.read(lineBuilder)).isEmpty(); assertThat(lineBuilder.hasHighlighting()).isFalse(); }
private static DbFileSources.Data newData(String... lines) { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); for (int i = 1; i <= lines.length; i++) { dataBuilder.addLinesBuilder() .setLine(i) .setSource(lines[i - 1]) .build(); } return dataBuilder.build(); }
@Test public void filter_out_entries_without_date() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(555L).setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev-1").setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getChangesetForLine(1).getRevision()).isEqualTo("rev"); }
@Test public void set_coverage_only_conditions() { CoverageLineReader computeCoverageLine = new CoverageLineReader(newArrayList(ScannerReport.LineCoverage.newBuilder() .setLine(1) .setConditions(10) .setCoveredConditions(2) .build()).iterator()); DbFileSources.Line.Builder lineBuilder = DbFileSources.Data.newBuilder().addLinesBuilder().setLine(1); assertThat(computeCoverageLine.read(lineBuilder)).isEmpty(); assertThat(lineBuilder.hasLineHits()).isFalse(); assertThat(lineBuilder.getConditions()).isEqualTo(10); }
private DbFileSources.Line.Builder addSourceLine(HighlightingLineReader highlightingLineReader, int line, String source) { DbFileSources.Line.Builder lineBuilder = sourceData.addLinesBuilder().setSource(source).setLine(line); assertThat(highlightingLineReader.read(lineBuilder)).isEmpty(); return lineBuilder; }