Search in sources :

Example 11 with Info

use of aQute.bnd.differ.Baseline.Info in project bnd by bndtools.

the class BaselineTest method testIgnoreResourceDiff.

/**
	 * Check if we can ignore resources in the baseline. First build two jars
	 * that are identical except for the b/b resource. Then do baseline on them.
	 */
public void testIgnoreResourceDiff() throws Exception {
    Processor processor = new Processor();
    DiffPluginImpl differ = new DiffPluginImpl();
    differ.setIgnore("b/b");
    Baseline baseline = new Baseline(processor, differ);
    try (Builder a = new Builder();
        Builder b = new Builder()) {
        a.setProperty("-includeresource", "a/a;literal='aa',b/b;literal='bb'");
        a.setProperty("-resourceonly", "true");
        b.setProperty("-includeresource", "a/a;literal='aa',b/b;literal='bbb'");
        b.setProperty("-resourceonly", "true");
        try (Jar aj = a.build();
            Jar bj = b.build()) {
            Set<Info> infoSet = baseline.baseline(aj, bj, null);
            BundleInfo binfo = baseline.getBundleInfo();
            assertFalse(binfo.mismatch);
        }
    }
}
Also used : DiffPluginImpl(aQute.bnd.differ.DiffPluginImpl) Processor(aQute.bnd.osgi.Processor) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) ProjectBuilder(aQute.bnd.build.ProjectBuilder) Builder(aQute.bnd.osgi.Builder) Jar(aQute.bnd.osgi.Jar) Baseline(aQute.bnd.differ.Baseline) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) Info(aQute.bnd.differ.Baseline.Info)

Example 12 with Info

use of aQute.bnd.differ.Baseline.Info in project bnd by bndtools.

the class BaselineTest method testPrematureJar.

/**
	 * When a JAR is build the manifest is not set in the resources but in a
	 * instance var.
	 *
	 * @throws Exception
	 */
public void testPrematureJar() throws Exception {
    File file = IO.getFile(new File(""), "jar/osgi.jar");
    try (Builder b1 = new Builder();
        Builder b2 = new Builder()) {
        b1.addClasspath(file);
        b1.setProperty(Constants.BUNDLE_VERSION, "1.0.0.${tstamp}");
        b1.setExportPackage("org.osgi.service.event");
        try (Jar j1 = b1.build()) {
            assertTrue(b1.check());
            File tmp = new File("tmp.jar");
            j1.write(tmp);
            try (Jar j11 = new Jar(tmp)) {
                Thread.sleep(2000);
                b2.addClasspath(file);
                b2.setProperty(Constants.BUNDLE_VERSION, "1.0.0.${tstamp}");
                b2.setExportPackage("org.osgi.service.event");
                try (Jar j2 = b2.build()) {
                    assertTrue(b2.check());
                    DiffPluginImpl differ = new DiffPluginImpl();
                    ReporterAdapter ra = new ReporterAdapter();
                    Baseline baseline = new Baseline(ra, differ);
                    ra.setTrace(true);
                    ra.setPedantic(true);
                    Set<Info> infos = baseline.baseline(j2, j11, null);
                    print(baseline.getDiff(), " ");
                    assertEquals(Delta.UNCHANGED, baseline.getDiff().getDelta());
                }
            } finally {
                tmp.delete();
            }
        }
    }
}
Also used : DiffPluginImpl(aQute.bnd.differ.DiffPluginImpl) ReporterAdapter(aQute.libg.reporter.ReporterAdapter) ProjectBuilder(aQute.bnd.build.ProjectBuilder) Builder(aQute.bnd.osgi.Builder) Jar(aQute.bnd.osgi.Jar) Baseline(aQute.bnd.differ.Baseline) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) Info(aQute.bnd.differ.Baseline.Info) File(java.io.File)

Example 13 with Info

use of aQute.bnd.differ.Baseline.Info in project bnd by bndtools.

the class BaselineTest method testJava8DefaultMethods.

public void testJava8DefaultMethods() throws Exception {
    try (Builder older = new Builder();
        Builder newer = new Builder()) {
        older.addClasspath(IO.getFile("java8/older/bin"));
        older.setExportPackage("*");
        newer.addClasspath(IO.getFile("java8/newer/bin"));
        newer.setExportPackage("*");
        try (Jar o = older.build();
            Jar n = newer.build()) {
            assertTrue(older.check());
            assertTrue(newer.check());
            DiffPluginImpl differ = new DiffPluginImpl();
            Baseline baseline = new Baseline(older, differ);
            Set<Info> infoSet = baseline.baseline(n, o, null);
            assertEquals(1, infoSet.size());
            for (Info info : infoSet) {
                assertTrue(info.mismatch);
                assertEquals(new Version(0, 1, 0), info.suggestedVersion);
                assertEquals(info.packageName, "api_default_methods");
            }
        }
    }
}
Also used : DiffPluginImpl(aQute.bnd.differ.DiffPluginImpl) Version(aQute.bnd.version.Version) ProjectBuilder(aQute.bnd.build.ProjectBuilder) Builder(aQute.bnd.osgi.Builder) Jar(aQute.bnd.osgi.Jar) Baseline(aQute.bnd.differ.Baseline) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) Info(aQute.bnd.differ.Baseline.Info)

Example 14 with Info

use of aQute.bnd.differ.Baseline.Info in project bnd by bndtools.

the class BaselineTest method testConsumerTypeBump.

// Adding a method to a ConsumerType produces a MINOR bump (1.0.0 -> 2.0.0)
public static void testConsumerTypeBump() throws Exception {
    Processor processor = new Processor();
    DiffPluginImpl differ = new DiffPluginImpl();
    Baseline baseline = new Baseline(processor, differ);
    try (Jar older = new Jar(IO.getFile("testresources/api-orig.jar"));
        Jar newer = new Jar(IO.getFile("testresources/api-consumerbump.jar"))) {
        Set<Info> infoSet = baseline.baseline(newer, older, null);
        assertEquals(1, infoSet.size());
        Info info = infoSet.iterator().next();
        assertTrue(info.mismatch);
        assertEquals("dummy.api", info.packageName);
        assertEquals("2.0.0", info.suggestedVersion.toString());
    }
}
Also used : DiffPluginImpl(aQute.bnd.differ.DiffPluginImpl) Processor(aQute.bnd.osgi.Processor) Jar(aQute.bnd.osgi.Jar) Baseline(aQute.bnd.differ.Baseline) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) Info(aQute.bnd.differ.Baseline.Info)

Example 15 with Info

use of aQute.bnd.differ.Baseline.Info in project bnd by bndtools.

the class BaselineTest method testProviderProtectedFieldRemovedChange.

// Deleting a protected field on a ProviderType API class produces a MINOR
// bump (1.0.0 -> 1.1.0)
public void testProviderProtectedFieldRemovedChange() throws Exception {
    Processor processor = new Processor();
    DiffPluginImpl differ = new DiffPluginImpl();
    Baseline baseline = new Baseline(processor, differ);
    try (Jar older = new Jar(IO.getFile("jar/baseline/provider-deletion-1.0.0.jar"));
        Jar newer = new Jar(IO.getFile("jar/baseline/provider-deletion-1.1.0.jar"))) {
        baseline.baseline(newer, older, null);
        BundleInfo bundleInfo = baseline.getBundleInfo();
        assertFalse(bundleInfo.mismatch);
        assertEquals("1.1.0", bundleInfo.suggestedVersion.toString());
        Set<Info> packageInfos = baseline.getPackageInfos();
        assertEquals(1, packageInfos.size());
        Info change = packageInfos.iterator().next();
        assertTrue(change.mismatch);
        assertEquals("bnd.baseline.test", change.packageName);
        assertEquals("1.1.0", change.suggestedVersion.toString());
    }
}
Also used : DiffPluginImpl(aQute.bnd.differ.DiffPluginImpl) Processor(aQute.bnd.osgi.Processor) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) Jar(aQute.bnd.osgi.Jar) Baseline(aQute.bnd.differ.Baseline) BundleInfo(aQute.bnd.differ.Baseline.BundleInfo) Info(aQute.bnd.differ.Baseline.Info)

Aggregations

Info (aQute.bnd.differ.Baseline.Info)22 Baseline (aQute.bnd.differ.Baseline)16 BundleInfo (aQute.bnd.differ.Baseline.BundleInfo)13 Jar (aQute.bnd.osgi.Jar)13 DiffPluginImpl (aQute.bnd.differ.DiffPluginImpl)10 Processor (aQute.bnd.osgi.Processor)8 Builder (aQute.bnd.osgi.Builder)5 ProjectBuilder (aQute.bnd.build.ProjectBuilder)4 Diff (aQute.bnd.service.diff.Diff)4 Version (aQute.bnd.version.Version)4 Instructions (aQute.bnd.osgi.Instructions)3 MultiMap (aQute.lib.collections.MultiMap)3 Parameters (aQute.bnd.header.Parameters)2 RepositoryPlugin (aQute.bnd.service.RepositoryPlugin)2 File (java.io.File)2 Formatter (java.util.Formatter)2 Map (java.util.Map)2 Manifest (java.util.jar.Manifest)2 Attrs (aQute.bnd.header.Attrs)1 Analyzer (aQute.bnd.osgi.Analyzer)1