package test; import java.util.List; import aQute.bnd.osgi.Builder; import aQute.bnd.osgi.Processor; import aQute.bnd.osgi.Verifier; import junit.framework.TestCase; public class NativeHeader extends TestCase { static Builder b = new Builder(); static { try { b.setProperty("Include-Resource", "x.so;literal='x',y.so;literal='y',native/libclib_jiio.so;literal='',native/libmlib_jai.so;literal='', org/osgi/test/cases/framework/fragments/tb8/linux_x86/libNative.so;literal=''"); b.build(); } catch (Exception e) { e.printStackTrace(); } } public static void testFunnyHeader() throws Exception { Verifier v = new Verifier(b); v.doNative( "org/osgi/test/cases/framework/fragments/tb8/linux_x86/libNative.so; osname=Linux; processor=x86; osversion=\"(1000,10000]\","); assertBad(v, "name"); } public static void testWildcardNotAtEnd() throws Exception { Verifier v = new Verifier(b); v.doNative("x.so;osname=win32,*,x.dll"); assertBad(v, "may only END in wildcard"); } public static void testWildcard() throws Exception { Verifier v = new Verifier(b); v.doNative("x.so ;y.so;osname=Linux;processor=amd64,*"); assertOk(v); } public static void testSimple() throws Exception { Verifier v = new Verifier(b); v.doNative( "\rnative/libclib_jiio.so ;\r" + "native/libmlib_jai.so;\r" + "osname=Linux ;\r" + "processor=amd64\r"); assertOk(v); } static void assertOk(Processor v) { System.err.println(v.getWarnings()); System.err.println(v.getErrors()); assertEquals(0, v.getErrors().size()); assertEquals(0, v.getWarnings().size()); } static void assertBad(Processor v, String ok) { assertEmptyAfterRemove(v.getErrors(), ok); assertEmptyAfterRemove(v.getWarnings(), ok); } private static void assertEmptyAfterRemove(List<String> errors, String ok) { for (String s : errors) { if (s.indexOf(ok) < 0) fail("Found error/warning that can not be removed: " + s + " : " + ok); } } }