package biz.aQute.resolve; import java.io.File; import java.util.List; import org.osgi.framework.namespace.PackageNamespace; import org.osgi.resource.Resource; import aQute.bnd.build.model.EE; import aQute.bnd.build.model.OSGI_CORE; import aQute.bnd.osgi.repository.ResourcesRepository; import aQute.bnd.osgi.repository.XMLResourceParser; import aQute.bnd.osgi.resource.CapReqBuilder; import aQute.bnd.osgi.resource.ResourceBuilder; import aQute.lib.io.IO; import biz.aQute.resolve.ResolverValidator.Resolution; import junit.framework.TestCase; public class ValidatorTest extends TestCase { public void testMultipleSameRequirements() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); CapReqBuilder b1 = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE); b1.addAttribute(PackageNamespace.PACKAGE_NAMESPACE, "javax.script"); system.addCapability(b1.buildSyntheticCapability()); CapReqBuilder b2 = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE); b2.addAttribute(PackageNamespace.PACKAGE_NAMESPACE, "javax.script"); system.addCapability(b2.buildSyntheticCapability()); CapReqBuilder b3 = new CapReqBuilder(PackageNamespace.PACKAGE_NAMESPACE); b3.addAttribute(PackageNamespace.PACKAGE_NAMESPACE, "javax.script"); b3.addAttribute("version", "1.2"); system.addCapability(b3.buildSyntheticCapability()); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); validator.addRepository(IO.getFile("testdata/repo1.index.xml").toURI()); validator.validate(); assertTrue(validator.check()); } } public void testSmallWithSpecificResources() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); validator.addRepository(IO.getFile("testdata/repo1.index.xml").toURI()); List<Resource> resources = XMLResourceParser.getResources(IO.getFile("testdata/repo1.index.xml").toURI()); validator.validate(resources); assertTrue(validator.check()); } } public void testSmall() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); validator.addRepository(IO.getFile("testdata/repo1.index.xml").toURI()); validator.validate(); assertTrue(validator.check()); } } public void testDelibarateFail() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); validator.addRepository(IO.getFile("testdata/repo5-broken.index.xml").toURI()); List<Resolution> resolutions = validator.validate(); assertFalse(validator.check()); assertEquals(1, resolutions.size()); String message = resolutions.get(0).message; String expectedToContain = "missing requirement org.apache.felix.gogo.api"; assertTrue(String.format("expected to contain <%s> but was <%s>", expectedToContain, message), message.contains(expectedToContain)); } } public void testDelibarateFailWithSpecificResources() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); List<Resource> resources = XMLResourceParser .getResources(IO.getFile("testdata/repo5-broken.index.xml").toURI()); List<Resolution> resolutions = validator.validate(resources); assertFalse(validator.check()); assertEquals(1, resolutions.size()); String message = resolutions.get(0).message; String expectedToContain = "missing requirement org.apache.felix.gogo.api"; assertTrue(String.format("expected to contain <%s> but was <%s>", expectedToContain, message), message.contains(expectedToContain)); } } public void testValidatingResourcesWithDocumentaryAttributes() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); ResourcesRepository repository = new ResourcesRepository(); ResourceBuilder builder = new ResourceBuilder(); File file = IO.getFile("testdata/osgi.cmpn-4.3.0.jar"); builder.addFile(file, file.toURI()); repository.add(builder.build()); builder = new ResourceBuilder(); file = IO.getFile("testdata/org.apache.felix.framework-4.0.0.jar"); builder.addFile(file, file.toURI()); repository.add(builder.build()); List<Resource> resources = repository.getResources(); validator.validateResources(repository, resources); assertTrue(validator.check()); } } public void _testLarger() throws Exception { try (ResolverValidator validator = new ResolverValidator();) { ResourceBuilder system = new ResourceBuilder(); system.addEE(EE.JavaSE_1_8); system.addManifest(OSGI_CORE.R6_0_0.getManifest()); validator.setSystem(system.build()); validator.setTrace(true); validator.addRepository(IO.getFile("testdata/larger-repo.xml").toURI()); validator.validate(); assertTrue(validator.check()); } } }