package test; import java.io.File; import java.util.Map; import java.util.Properties; import java.util.jar.Manifest; import aQute.bnd.header.OSGiHeader; import aQute.bnd.osgi.Builder; import aQute.bnd.osgi.Constants; import aQute.bnd.osgi.Jar; import junit.framework.TestCase; @SuppressWarnings("resource") public class ExportHeaderTest extends TestCase { /** * If you import a range then the maven guys can have the silly -SNAPSHOT in * the version. This tests if ranges are correcly cleaned up. * * @throws Exception */ public static void testImportHeaderWithMessedUpRange() throws Exception { Builder builder = new Builder(); Jar bin = new Jar(new File("bin")); builder.setClasspath(new Jar[] { bin }); Properties p = new Properties(); p.setProperty("Private-Package", "test.packageinfo.ref"); p.setProperty("Import-Package", "test.packageinfo;version=\"[1.1.1-SNAPSHOT,1.1.1-SNAPSHOT]"); builder.setProperties(p); Jar jar = builder.build(); Manifest manifest = jar.getManifest(); String imph = manifest.getMainAttributes().getValue("Import-Package"); assertEquals("test.packageinfo;version=\"[1.1.1.SNAPSHOT,1.1.1.SNAPSHOT]\"", imph); } public static void testPickupExportVersion() throws Exception { Builder builder = new Builder(); Jar bin = new Jar(new File("bin")); builder.setClasspath(new Jar[] { bin }); Properties p = new Properties(); p.setProperty("Private-Package", "test.packageinfo.ref"); builder.setProperties(p); Jar jar = builder.build(); Manifest manifest = jar.getManifest(); String imph = manifest.getMainAttributes().getValue("Import-Package"); assertEquals("test.packageinfo;version=\"[1.0,2)\"", imph); } public static void testExportVersionWithPackageInfo() throws Exception { Builder builder = new Builder(); Jar bin = new Jar(new File("bin")); builder.setClasspath(new Jar[] { bin }); Properties p = new Properties(); p.setProperty("Export-Package", "test.packageinfo"); builder.setProperties(p); Jar jar = builder.build(); Manifest manifest = jar.getManifest(); String exph = manifest.getMainAttributes().getValue("Export-Package"); Map<String,String> exports = OSGiHeader.parseHeader(exph).get("test.packageinfo"); assertEquals("1.0.0.SNAPSHOT", exports.get(Constants.VERSION_ATTRIBUTE)); assertEquals("1.2.3", exports.get("Implementation-Version")); assertEquals("Best Snapshot in the world", exports.get("Implementation-Title")); } }