@Test public void testScmMeasure() throws IOException, URISyntaxException { File baseDir = prepareProject(); tester.newAnalysis() .properties(ImmutableMap.<String, String>builder() .put("sonar.task", "scan") .put("sonar.projectBaseDir", baseDir.getAbsolutePath()) .put("sonar.projectKey", "com.foo.project") .put("sonar.projectName", "Foo Project") .put("sonar.projectVersion", "1.0-SNAPSHOT") .put("sonar.projectDescription", "Description of Foo Project") .put("sonar.sources", "src") .put("sonar.scm.provider", "xoo") .build()) .execute(); ScannerReport.Changesets fileScm = getChangesets(baseDir, "src/sample.xoo"); assertThat(fileScm.getChangesetIndexByLineList()).hasSize(5); Changeset changesetLine1 = fileScm.getChangeset(fileScm.getChangesetIndexByLine(0)); assertThat(changesetLine1.getAuthor()).isEmpty(); Changeset changesetLine2 = fileScm.getChangeset(fileScm.getChangesetIndexByLine(1)); assertThat(changesetLine2.getAuthor()).isEqualTo(getNonAsciiAuthor().toLowerCase()); Changeset changesetLine3 = fileScm.getChangeset(fileScm.getChangesetIndexByLine(2)); assertThat(changesetLine3.getAuthor()).isEqualTo("julien"); Changeset changesetLine4 = fileScm.getChangeset(fileScm.getChangesetIndexByLine(3)); assertThat(changesetLine4.getAuthor()).isEqualTo("julien"); Changeset changesetLine5 = fileScm.getChangeset(fileScm.getChangesetIndexByLine(4)); assertThat(changesetLine5.getAuthor()).isEqualTo("simon"); }
@Test public void return_latest_changeset() { ScmInfo scmInfo = new ReportScmInfo(ScannerReport.Changesets.newBuilder() .setComponentRef(FILE_REF) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("john") .setDate(123456789L) .setRevision("rev-1") .build()) // Older changeset .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("henry") .setDate(1234567810L) .setRevision("rev-2") .build()) .addChangesetIndexByLine(0) .addChangesetIndexByLine(1) .addChangesetIndexByLine(0) .build()); Changeset latestChangeset = scmInfo.getLatestChangeset(); assertThat(latestChangeset.getAuthor()).isEqualTo("henry"); assertThat(latestChangeset.getDate()).isEqualTo(1234567810L); assertThat(latestChangeset.getRevision()).isEqualTo("rev-2"); }
private Changeset convert(ScannerReport.Changesets.Changeset changeset, int line) { checkState(isNotEmpty(changeset.getRevision()), "Changeset on line %s must have a revision", line); checkState(changeset.getDate() != 0, "Changeset on line %s must have a date", line); return builder .setRevision(changeset.getRevision()) .setAuthor(isNotEmpty(changeset.getAuthor()) ? changeset.getAuthor() : null) .setDate(changeset.getDate()) .build(); } }
private static void addChangeset(Builder scmBuilder, BlameLine line) { ScannerReport.Changesets.Changeset.Builder changesetBuilder = ScannerReport.Changesets.Changeset.newBuilder(); changesetBuilder.setRevision(line.revision()); changesetBuilder.setDate(line.date().getTime()); if (StringUtils.isNotBlank(line.author())) { changesetBuilder.setAuthor(normalizeString(line.author())); } scmBuilder.addChangeset(changesetBuilder.build()); }
private Changeset convert(ScannerReport.Changesets.Changeset changeset, int line) { checkState(isNotEmpty(changeset.getRevision()), "Changeset on line %s must have a revision", line); checkState(changeset.getDate() != 0, "Changeset on line %s must have a date", line); return builder .setRevision(changeset.getRevision()) .setAuthor(isNotEmpty(changeset.getAuthor()) ? changeset.getAuthor() : null) .setDate(changeset.getDate()) .build(); } }
@Test public void return_changeset_for_a_given_line() { ScmInfo scmInfo = new ReportScmInfo(ScannerReport.Changesets.newBuilder() .setComponentRef(FILE_REF) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("john") .setDate(123456789L) .setRevision("rev-1") .build()) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("henry") .setDate(1234567810L) .setRevision("rev-2") .build()) .addChangesetIndexByLine(0) .addChangesetIndexByLine(1) .addChangesetIndexByLine(1) .addChangesetIndexByLine(0) .build()); assertThat(scmInfo.getAllChangesets()).hasSize(4); Changeset changeset = scmInfo.getChangesetForLine(4); assertThat(changeset.getAuthor()).isEqualTo("john"); assertThat(changeset.getDate()).isEqualTo(123456789L); assertThat(changeset.getRevision()).isEqualTo("rev-1"); }
@Test public void create_scm_info_with_some_changesets() { ScmInfo scmInfo = new ReportScmInfo(ScannerReport.Changesets.newBuilder() .setComponentRef(FILE_REF) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("john") .setDate(123456789L) .setRevision("rev-1") .build()) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("henry") .setDate(1234567810L) .setRevision("rev-2") .build()) .addChangesetIndexByLine(0) .addChangesetIndexByLine(1) .addChangesetIndexByLine(0) .addChangesetIndexByLine(0) .build()); assertThat(scmInfo.getAllChangesets()).hasSize(4); }
@Test public void fail_with_ISE_when_changeset_has_no_revision() { thrown.expect(IllegalStateException.class); thrown.expectMessage("Changeset on line 1 must have a revision"); new ReportScmInfo(ScannerReport.Changesets.newBuilder() .setComponentRef(FILE_REF) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("john") .setDate(123456789L) .build()) .addChangesetIndexByLine(0) .build()); }
private void addChangesetInReport(String author, Long date, String revision, boolean copyFromPrevious) { reportReader.putChangesets(ScannerReport.Changesets.newBuilder() .setComponentRef(FILE_REF) .setCopyFromPrevious(copyFromPrevious) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor(author) .setDate(date) .setRevision(revision) .build()) .addChangesetIndexByLine(0) .build()); }
@Test public void fail_with_ISE_when_changeset_has_no_date() { thrown.expect(IllegalStateException.class); thrown.expectMessage("Changeset on line 1 must have a date"); new ReportScmInfo(ScannerReport.Changesets.newBuilder() .setComponentRef(FILE_REF) .addChangeset(ScannerReport.Changesets.Changeset.newBuilder() .setAuthor("john") .setRevision("rev-1") .build()) .addChangesetIndexByLine(0) .build()); }
private static void addChangeset(Builder scmBuilder, BlameLine line) { ScannerReport.Changesets.Changeset.Builder changesetBuilder = ScannerReport.Changesets.Changeset.newBuilder(); changesetBuilder.setRevision(line.revision()); changesetBuilder.setDate(line.date().getTime()); if (StringUtils.isNotBlank(line.author())) { changesetBuilder.setAuthor(normalizeString(line.author())); } scmBuilder.addChangeset(changesetBuilder.build()); }