Skip to content

Commit 6a25754

Browse files
vlsikrmahadevan
authored andcommitted
test: improve osgi tests
1 parent 44b0f23 commit 6a25754

File tree

4 files changed

+74
-18
lines changed

4 files changed

+74
-18
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: 29 additions & 8 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.lang.reflect.Method;
7+
import java.io.ByteArrayInputStream;
8+
import java.nio.charset.StandardCharsets;
89
import org.ops4j.pax.exam.Configuration;
910
import org.ops4j.pax.exam.Option;
1011
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
1112
import org.ops4j.pax.exam.spi.reactors.PerMethod;
1213
import org.ops4j.pax.exam.testng.listener.PaxExam;
14+
import org.testng.IModuleFactory;
15+
import org.testng.TestNG;
1316
import org.testng.annotations.Listeners;
1417
import org.testng.annotations.Test;
18+
import org.testng.internal.Version;
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,17 +31,32 @@ 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 {
32-
Class<?> versionClass = Class.forName("org.testng.internal.Version");
33-
Method getVersionStringMethod = versionClass.getMethod("getVersionString");
34-
Object version = getVersionStringMethod.invoke(null);
36+
String version = String.valueOf(Version.getVersionString());
3537

3638
assertThat(version)
3739
.matches(
38-
(v) -> String.valueOf(v).length() > 0 && Character.isDigit(String.valueOf(v).charAt(0)),
40+
(v) -> !v.isEmpty() && Character.isDigit(v.charAt(0)),
3941
"Version.getVersionString() should start with a digit but was " + version);
4042
}
43+
44+
@Test
45+
public void guiceModuleFactoryLoads() {
46+
assertThat(IModuleFactory.class.getMethods()).isNotEmpty();
47+
}
48+
49+
@Test
50+
public void jcommanderLoads() {
51+
assertThat(TestNG.class.getFields()).isNotEmpty();
52+
}
53+
54+
@Test
55+
public void yamlLoads() {
56+
YamlParser parser = new YamlParser();
57+
ByteArrayInputStream input =
58+
new ByteArrayInputStream("name: My_Suite\n".getBytes(StandardCharsets.UTF_8));
59+
XmlSuite suite = parser.parse("test.yml", input, false);
60+
assertThat(suite).extracting("name").isEqualTo("My_Suite");
61+
}
4162
}

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.83",
55+
org.slf4j;version="2.0",
56+
com.google.inject;version="1.4";resolution:=optional,
57+
org.yaml.snakeyaml;version="2.0";resolution:=optional,
58+
org.yaml.snakeyaml.nodes;version="2.0";resolution:=optional,
59+
org.yaml.snakeyaml.constructor;version="2.0";resolution:=optional
5960
""".trimIndent().replace("\n", ""),
6061
"Export-Package" to """
6162
org.testng

0 commit comments

Comments
 (0)