Search in sources :

Example 16 with Report

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;
}
Also used : Report(org.revapi.Report) ArrayList(java.util.ArrayList)

Example 17 with Report

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();
}
Also used : Report(org.revapi.Report) Difference(org.revapi.Difference) Map(java.util.Map)

Example 18 with Report

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"));
}
Also used : Archive(org.revapi.Archive) Report(org.revapi.Report) API(org.revapi.API) Difference(org.revapi.Difference) Test(org.junit.jupiter.api.Test)

Example 19 with Report

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());
}
Also used : Archive(org.revapi.Archive) Report(org.revapi.Report) API(org.revapi.API) Test(org.junit.jupiter.api.Test)

Example 20 with Report

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"));
}
Also used : Archive(org.revapi.Archive) Report(org.revapi.Report) API(org.revapi.API) Difference(org.revapi.Difference) Test(org.junit.jupiter.api.Test)

Aggregations

Report (org.revapi.Report)26 Test (org.junit.Test)13 API (org.revapi.API)9 AnalysisContext (org.revapi.AnalysisContext)9 Difference (org.revapi.Difference)9 Archive (org.revapi.Archive)6 Test (org.junit.jupiter.api.Test)5 AnalysisResult (org.revapi.AnalysisResult)5 ArrayList (java.util.ArrayList)4 Revapi (org.revapi.Revapi)3 HashMap (java.util.HashMap)2 Check (org.revapi.java.spi.Check)2 Map (java.util.Map)1 ModelNode (org.jboss.dmr.ModelNode)1 JavaArchive (org.jboss.shrinkwrap.api.spec.JavaArchive)1 Element (org.revapi.Element)1 MethodElement (org.revapi.java.model.MethodElement)1 MethodParameterElement (org.revapi.java.model.MethodParameterElement)1 TypeElement (org.revapi.java.model.TypeElement)1 JavaModelElement (org.revapi.java.spi.JavaModelElement)1