use of org.revapi.Report in project revapi by revapi.
the class TextReporterTest method buildReports.
private List<Report> buildReports() {
List<Report> ret = new ArrayList<>();
Report report = Report.builder().withOld(new DummyElement("old2")).withNew(new DummyElement("new2")).addDifference().withCode("code2").withName("name2").withJustification("justified").addClassification(CompatibilityType.BINARY, DifferenceSeverity.BREAKING).done().build();
ret.add(report);
report = Report.builder().withOld(new DummyElement("old1")).withNew(new DummyElement("new1")).addDifference().withCode("code1").withDescription("descr1").withName("name1").addClassification(CompatibilityType.SOURCE, DifferenceSeverity.BREAKING).done().build();
ret.add(report);
return ret;
}
use of org.revapi.Report in project revapi by revapi.
the class AbstractSuggestionsBuilder method build.
@Override
public String build(List<Report> allProblems, BuildTimeReporter.SuggestionBuilderContext context) {
StringBuilder sb = new StringBuilder();
prologue(sb);
for (Report r : allProblems) {
for (Difference d : r.getDifferences()) {
if (!context.isReportable(d)) {
continue;
}
startDifference(sb);
appendDifferenceField(sb, "ignore", true);
appendDifferenceFieldSeparator(sb);
appendDifferenceField(sb, "code", d.code);
appendDifferenceFieldSeparator(sb);
if (r.getOldElement() != null) {
appendDifferenceField(sb, "old", r.getOldElement().getFullHumanReadableString());
appendDifferenceFieldSeparator(sb);
}
if (r.getNewElement() != null) {
appendDifferenceField(sb, "new", r.getNewElement().getFullHumanReadableString());
appendDifferenceFieldSeparator(sb);
}
boolean hasOptionalAttachments = false;
for (Map.Entry<String, String> e : d.attachments.entrySet()) {
if (d.isIdentifyingAttachment(e.getKey())) {
appendDifferenceField(sb, e.getKey(), e.getValue());
appendDifferenceFieldSeparator(sb);
} else {
hasOptionalAttachments = true;
}
}
appendDifferenceField(sb, "justification", "ADD YOUR EXPLANATION FOR THE NECESSITY OF THIS CHANGE");
if (context.isAttachmentsReported() && hasOptionalAttachments) {
startOptionalAttachmentsInComment(sb, "\n Additionally, the following attachments can be used to further identify the difference:\n\n");
for (Map.Entry<String, String> e : d.attachments.entrySet()) {
if (!d.isIdentifyingAttachment(e.getKey())) {
appendDifferenceField(sb, e.getKey(), e.getValue());
appendDifferenceFieldSeparator(sb);
}
}
endOptionalAttachmentsInComment(sb);
}
endDifference(sb);
}
}
epilogue(sb);
return sb.toString();
}
use of org.revapi.Report in project revapi by revapi.
the class JacksonDifferenceAnalyzerTest method detectsChanges.
@Test
void detectsChanges() {
Archive ar = Mockito.mock(Archive.class);
API api = API.of(ar).build();
TestElement oldEl = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.numberNode(42), "here");
TestElement newEl = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.textNode("different"), "here");
TestElement oldRoot = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.arrayNode(), -1);
oldRoot.getChildren().add(oldEl);
TestElement newRoot = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.arrayNode(), -1);
newRoot.getChildren().add(newEl);
TestDifferenceAnalyzer analyzer = new TestDifferenceAnalyzer();
analyzer.beginAnalysis(oldEl, newEl);
Report report = analyzer.endAnalysis(oldEl, newEl);
assertSame(oldEl, report.getOldElement());
assertSame(newEl, report.getNewElement());
assertEquals(1, report.getDifferences().size());
Difference diff = report.getDifferences().get(0);
assertEquals("test.changed", diff.code);
assertEquals(1, diff.classification.size());
assertEquals(POTENTIALLY_BREAKING, diff.classification.get(SEMANTIC));
assertEquals(4, diff.attachments.size());
assertEquals("file.js", diff.attachments.get("file"));
assertEquals("/here", diff.attachments.get("path"));
assertEquals("42", diff.attachments.get("oldValue"));
assertEquals("different", diff.attachments.get("newValue"));
}
use of org.revapi.Report in project revapi by revapi.
the class JacksonDifferenceAnalyzerTest method doesntReportObjectsAsWhole.
@Test
void doesntReportObjectsAsWhole() {
Archive ar = Mockito.mock(Archive.class);
API api = API.of(ar).build();
TestElement oldEl = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.objectNode().put("a", 1), "here");
TestElement newEl = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.objectNode().put("b", 2), "here");
TestDifferenceAnalyzer analyzer = new TestDifferenceAnalyzer();
analyzer.beginAnalysis(oldEl, newEl);
Report report = analyzer.endAnalysis(oldEl, newEl);
assertSame(oldEl, report.getOldElement());
assertSame(newEl, report.getNewElement());
assertTrue(report.getDifferences().isEmpty());
}
use of org.revapi.Report in project revapi by revapi.
the class JacksonDifferenceAnalyzerTest method detectsRemovals.
@Test
void detectsRemovals() {
Archive ar = Mockito.mock(Archive.class);
API api = API.of(ar).build();
TestElement element = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.numberNode(42), "here");
TestElement root = new TestElement(api, ar, "file.js", JsonNodeFactory.instance.objectNode(), -1);
root.getChildren().add(element);
TestDifferenceAnalyzer analyzer = new TestDifferenceAnalyzer();
analyzer.beginAnalysis(element, null);
Report report = analyzer.endAnalysis(element, null);
assertSame(element, report.getOldElement());
assertNull(report.getNewElement());
assertEquals(1, report.getDifferences().size());
Difference diff = report.getDifferences().get(0);
assertEquals("test.removed", diff.code);
assertEquals(1, diff.classification.size());
assertEquals(BREAKING, diff.classification.get(SEMANTIC));
assertEquals(2, diff.attachments.size());
assertEquals("file.js", diff.attachments.get("file"));
assertEquals("/here", diff.attachments.get("path"));
}
Aggregations