package test;
import java.util.Properties;
import aQute.bnd.osgi.Builder;
import aQute.bnd.osgi.Jar;
import aQute.bnd.osgi.JarResource;
import aQute.bnd.osgi.Processor;
import aQute.bnd.osgi.Resource;
import aQute.lib.io.IO;
import junit.framework.TestCase;
/**
* Tests the make functionality.
*/
@SuppressWarnings("resource")
public class MakeTest extends TestCase {
/**
* Test a make plugin
*/
public static void testMakePlugin() throws Exception {
Builder b = new Builder();
b.setProperty("Export-Package", "*");
b.setProperty("Include-Resource", "jar/asm.jar.md5");
b.setProperty("-make", "(*).md5;type=md5;file=$1");
b.setProperty("-plugin", "test.make.MD5");
b.addClasspath(IO.getFile("jar/osgi.jar"));
Jar jar = b.build();
System.err.println(b.getErrors());
System.err.println(b.getWarnings());
assertEquals(0, b.getErrors().size());
assertEquals(0, b.getWarnings().size());
assertNotNull(jar.getResource("asm.jar.md5"));
}
/**
* Check if we can get a resource through the make copy facility.
*
* @throws Exception
*/
public static void testCopy() throws Exception {
Builder bmaker = new Builder();
Properties p = new Properties();
p.setProperty("-resourceonly", "true");
p.setProperty("-plugin", "aQute.bnd.make.MakeBnd, aQute.bnd.make.MakeCopy");
p.setProperty("-make", "(*).jar;type=bnd;recipe=bnd/$1.bnd, (*).jar;type=copy;from=jar/$1.jar");
p.setProperty("Include-Resource", "asm.jar,xyz=asm.jar");
bmaker.setProperties(p);
Jar jar = bmaker.build();
assertNotNull(jar.getResource("asm.jar"));
assertNotNull(jar.getResource("xyz"));
report(bmaker);
}
/**
* Check if we can create a JAR recursively
*
* @throws Exception
*/
public static void testJarInJarInJar() throws Exception {
Builder bmaker = new Builder();
Properties p = new Properties();
p.setProperty("-plugin", "aQute.bnd.make.MakeBnd, aQute.bnd.make.MakeCopy");
p.setProperty("-resourceonly", "true");
p.setProperty("-make", "(*).jar;type=bnd;recipe=bnd/$1.bnd");
p.setProperty("Include-Resource", "makesondemand.jar");
bmaker.setProperties(p);
bmaker.setClasspath(new String[] {
"bin"
});
Jar jar = bmaker.build();
JarResource resource = (JarResource) jar.getResource("makesondemand.jar");
assertNotNull(resource);
jar = resource.getJar();
resource = (JarResource) jar.getResource("ondemand.jar");
assertNotNull(resource);
report(bmaker);
}
/**
* Check if we can create a jar on demand through the make facility with a
* new name.
*
* @throws Exception
*/
public static void testComplexOnDemand() throws Exception {
Builder bmaker = new Builder();
Properties p = new Properties();
p.setProperty("-resourceonly", "true");
p.setProperty("-plugin", "aQute.bnd.make.MakeBnd, aQute.bnd.make.MakeCopy");
p.setProperty("-make", "(*).jar;type=bnd;recipe=bnd/$1.bnd");
p.setProperty("Include-Resource", "www/xyz.jar=ondemand.jar");
bmaker.setProperties(p);
bmaker.setClasspath(new String[] {
"bin"
});
Jar jar = bmaker.build();
Resource resource = jar.getResource("www/xyz.jar");
assertNotNull(resource);
assertTrue(resource instanceof JarResource);
report(bmaker);
}
static void report(Processor processor) {
System.err.println();
for (int i = 0; i < processor.getErrors().size(); i++)
System.err.println(processor.getErrors().get(i));
for (int i = 0; i < processor.getWarnings().size(); i++)
System.err.println(processor.getWarnings().get(i));
assertEquals(0, processor.getErrors().size());
assertEquals(0, processor.getWarnings().size());
}
}