From f9edbc6dbea4149d78515a0f428d2f37312f727f Mon Sep 17 00:00:00 2001 From: Christoph Rueger Date: Thu, 3 Oct 2024 23:06:00 +0200 Subject: [PATCH] add test Signed-off-by: Christoph Rueger --- .../ServiceProviderFileTest.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/biz.aQute.bndlib.tests/test/test/annotationheaders/ServiceProviderFileTest.java b/biz.aQute.bndlib.tests/test/test/annotationheaders/ServiceProviderFileTest.java index 1d67cad542..137c128057 100644 --- a/biz.aQute.bndlib.tests/test/test/annotationheaders/ServiceProviderFileTest.java +++ b/biz.aQute.bndlib.tests/test/test/annotationheaders/ServiceProviderFileTest.java @@ -99,4 +99,42 @@ public void testBothMetaInfoAndAnnotationsNoParentheses() throws Exception { } } + @SuppressWarnings("unchecked") + @Test + public void testAutoGenerateServiceProviderAnnotation() throws Exception { + try (Builder b = new Builder();) { + b.addClasspath(IO.getFile("bin_test")); + b.setProperty("-includeresource", """ + META-INF/services/com.example.service.Type;\ + literal='\ + java.lang.String' + """); + b.setProperty("-metainf-services", "auto"); + b.build(); + assertTrue(b.check()); + Domain manifest = Domain.domain(b.getJar() + .getManifest()); + Parameters provideCapability = manifest.getProvideCapability(); + + assertThat(provideCapability.get("osgi.service")).isNotNull(); + assertThat(provideCapability.get("osgi.service")).containsEntry("objectClass", "com.example.service.Type"); + + assertThat(provideCapability.get("osgi.serviceloader")).isNotNull(); + assertThat(provideCapability.get("osgi.serviceloader") + .get("osgi.serviceloader")).isEqualTo("com.example.service.Type"); + assertThat(provideCapability.get("osgi.serviceloader")) + .containsEntry("osgi.serviceloader", "com.example.service.Type") + .containsEntry("register:", "java.lang.String"); + + Parameters requireCapability = manifest.getRequireCapability(); + + System.out.println(provideCapability.toString() + .replace(',', '\n')); + System.out.println(requireCapability.toString() + .replace(',', '\n')); + } + } + + + }