Skip to content

Commit 35ee6ad

Browse files
committed
test: improve osgi tests
1 parent 44b0f23 commit 35ee6ad

File tree

4 files changed

+71
-13
lines changed

4 files changed

+71
-13
lines changed

testng-test-osgi/src/test/java/org/testng/test/osgi/DefaultTestngOsgiOptions.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,23 @@ public static ModifiableCompositeOption defaultTestngOsgiOptions() {
2121
systemProperty("org.ops4j.pax.url.mvn.localRepository")
2222
.value(System.getProperty("testng.org.ops4j.pax.url.mvn.localRepository")),
2323
mavenBundle("org.testng", "testng").versionAsInProject(),
24+
mavenBundle("org.jcommander", "jcommander").versionAsInProject(),
2425
mavenBundle("org.assertj", "assertj-core").versionAsInProject(),
26+
mavenBundle("net.bytebuddy", "byte-buddy").versionAsInProject(),
27+
mavenBundle("com.google.inject", "guice").versionAsInProject(),
28+
mavenBundle("org.yaml", "snakeyaml").versionAsInProject(),
29+
mavenBundle("com.google.guava", "guava").versionAsInProject(),
30+
mavenBundle("com.google.guava", "failureaccess").versionAsInProject(),
31+
mavenBundle("com.google.guava", "listenablefuture").versionAsInProject(),
32+
mavenBundle("com.google.code.findbugs", "jsr305").versionAsInProject(),
33+
mavenBundle("org.apache.servicemix.bundles", "org.apache.servicemix.bundles.aopalliance")
34+
.versionAsInProject(),
35+
mavenBundle("org.checkerframework", "checker-qual").versionAsInProject(),
36+
mavenBundle("com.google.errorprone", "error_prone_annotations").versionAsInProject(),
37+
mavenBundle("com.google.j2objc", "j2objc-annotations").versionAsInProject(),
38+
mavenBundle(
39+
"org.apache.aries.spifly", "org.apache.aries.spifly.dynamic.framework.extension")
40+
.versionAsInProject(),
2541
systemProperty("logback.configurationFile")
2642
.value(System.getProperty("logback.configurationFile")),
2743
mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(),

testng-test-osgi/src/test/java/org/testng/test/osgi/PlainOsgiTest.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@
44
import static org.ops4j.pax.exam.CoreOptions.options;
55
import static org.testng.test.osgi.DefaultTestngOsgiOptions.defaultTestngOsgiOptions;
66

7+
import java.io.ByteArrayInputStream;
78
import java.lang.reflect.Method;
9+
import java.nio.charset.StandardCharsets;
810
import org.ops4j.pax.exam.Configuration;
911
import org.ops4j.pax.exam.Option;
1012
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
1113
import org.ops4j.pax.exam.spi.reactors.PerMethod;
1214
import org.ops4j.pax.exam.testng.listener.PaxExam;
15+
import org.testng.IModuleFactory;
16+
import org.testng.TestNG;
1317
import org.testng.annotations.Listeners;
1418
import org.testng.annotations.Test;
19+
import org.testng.internal.YamlParser;
20+
import org.testng.xml.XmlSuite;
1521

1622
/**
1723
* The purpose of the class is to ensure {@code postgresql} bundle activation does not fail in case
@@ -25,9 +31,7 @@ public Option[] config() {
2531
return options(defaultTestngOsgiOptions());
2632
}
2733

28-
// TODO: Enable this test once the PR https://github.com/ops4j/org.ops4j.pax.exam2/pull/1112
29-
// gets merged and there's a new release done.
30-
@Test(enabled = false)
34+
@Test
3135
public void versionShouldStartWithDigit() throws Exception {
3236
Class<?> versionClass = Class.forName("org.testng.internal.Version");
3337
Method getVersionStringMethod = versionClass.getMethod("getVersionString");
@@ -38,4 +42,23 @@ public void versionShouldStartWithDigit() throws Exception {
3842
(v) -> String.valueOf(v).length() > 0 && Character.isDigit(String.valueOf(v).charAt(0)),
3943
"Version.getVersionString() should start with a digit but was " + version);
4044
}
45+
46+
@Test
47+
public void guiceModuleFactoryLoads() {
48+
assertThat(IModuleFactory.class.getMethods()).isNotEmpty();
49+
}
50+
51+
@Test
52+
public void jcommanderLoads() {
53+
assertThat(TestNG.class.getFields()).isNotEmpty();
54+
}
55+
56+
@Test
57+
public void yamlLoads() {
58+
YamlParser parser = new YamlParser();
59+
ByteArrayInputStream input =
60+
new ByteArrayInputStream("name: My_Suite\n".getBytes(StandardCharsets.UTF_8));
61+
XmlSuite suite = parser.parse("test.yml", input, false);
62+
assertThat(suite).extracting("name").isEqualTo("My_Suite");
63+
}
4164
}

testng-test-osgi/testng-test-osgi-build.gradle.kts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,40 @@ val testngRepository by configurations.creating {
1616
dependencies {
1717
testngRepository(projects.testng)
1818

19-
testImplementation(projects.testng)
19+
testImplementation(projects.testng) {
20+
capabilities {
21+
requireFeature("guice")
22+
}
23+
}
24+
testImplementation(projects.testng) {
25+
capabilities {
26+
requireFeature("yaml")
27+
}
28+
}
2029

2130
testImplementation("javax:javaee-api:8.0.1") {
2231
// The dependency was not obvious, logged https://github.com/cbeust/testng/issues/2578
2332
because("PaxExam uses javax.transaction.NotSupportedException and other classes")
2433
}
25-
testImplementation("org.ops4j.pax.exam:pax-exam-container-native:4.13.1")
34+
testImplementation("org.ops4j.pax.exam:pax-exam-container-native:4.14.0")
2635
// pax-exam is not yet compatible with junit5
2736
// see https://github.com/ops4j/org.ops4j.pax.exam2/issues/886
28-
testImplementation("org.ops4j.pax.exam:pax-exam-testng:4.13.5")
29-
testImplementation("org.ops4j.pax.exam:pax-exam-link-mvn:4.13.5")
37+
testImplementation("org.ops4j.pax.exam:pax-exam-testng:4.14.0")
38+
testImplementation("org.ops4j.pax.exam:pax-exam-link-mvn:4.14.0")
3039
testImplementation("org.ops4j.pax.url:pax-url-aether:2.6.12")
3140
testImplementation("org.apache.felix:org.apache.felix.framework:7.0.5")
3241
testImplementation("ch.qos.logback:logback-core:1.4.11")
3342
testImplementation("ch.qos.logback:logback-classic:1.4.11")
43+
testRuntimeOnly("org.assertj:assertj-core:3.23.1")
44+
testRuntimeOnly("org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance:1.0_6") {
45+
because("Guice requires org.aopalliance.intercept package in osgi, however, aopalliance:aopalliance has no osgi headers")
46+
}
47+
testRuntimeOnly("com.google.errorprone:error_prone_annotations:2.36.0") {
48+
because("It is needed for Guava, only recent version of error_prone_annotations have osgi headers")
49+
}
50+
testRuntimeOnly("org.apache.aries.spifly:org.apache.aries.spifly.dynamic.framework.extension:1.3.7") {
51+
because("slf4j-api 2.0 requires osgi.serviceloader.processor, see https://stackoverflow.com/a/77867804")
52+
}
3453
}
3554

3655
// <editor-fold defaultstate="collapsed" desc="Pass dependency versions to pax-exam container">
@@ -83,5 +102,4 @@ tasks.test {
83102
"-Dtestng.org.ops4j.pax.url.mvn.localRepository=file:${paxLocalCacheRepository.get().asFile.absolutePath}@id=pax-repo"
84103
)
85104
})
86-
ignoreFailures = true
87105
}

testng/testng-build.gradle.kts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,12 @@ tasks.mergedJar {
5151
"Bundle-Description" to project.description,
5252
"Bundle-Version" to project.version.toString().removeSuffix("-SNAPSHOT"),
5353
"Import-Package" to """
54-
bsh.*;version="[2.0.0,3.0.0)";resolution:=optional,
55-
com.beust.jcommander.*;version="[1.7.0,3.0.0)";resolution:=optional,
56-
com.google.inject.*;version="[1.2,1.3)";resolution:=optional,
57-
org.yaml.*;version="[1.6,2.0)";resolution:=optional,
58-
*;resolution:=optional
54+
com.beust.jcommander;version="1.7.0",
55+
org.slf4j;version="2.0",
56+
com.google.inject;version="1.2.0";resolution:=optional,
57+
org.yaml.snakeyaml;version="1.6";resolution:=optional,
58+
org.yaml.snakeyaml.nodes;version="1.6";resolution:=optional,
59+
org.yaml.snakeyaml.constructor;version="1.6";resolution:=optional
5960
""".trimIndent().replace("\n", ""),
6061
"Export-Package" to """
6162
org.testng

0 commit comments

Comments
 (0)