Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
Tests compose their execution environment on the classpath; if module system is triggered (i.e. by a Lookup for Module or ModuleInfo, core loads happily NB modules from the classpath. But does not load OSGi modules.
Subsequently, NB modules that depends on those won't be 'initialized' although they are well part of <testdependencies> and their code can be actually executed.
Modules tha are OSGi in the current distribution are:
Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-annotations Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-core Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-databind Bundle-SymbolicName: com.fasterxml.jackson.dataformat.jackson-dataformat Bundle-SymbolicName: com.googlecode.javaewah.JavaEWAH Bundle-SymbolicName: com.google.guava Bundle-SymbolicName: com.jcraft.jzlib Bundle-SymbolicName: com.sun.jersey.core Bundle-SymbolicName: com.sun.jna Bundle-SymbolicName: com.sun.jna.platform Bundle-SymbolicName: groovy Bundle-SymbolicName: groovy-ant Bundle-SymbolicName: javax.annotation-api Bundle-SymbolicName: javax.servlet-api Bundle-SymbolicName: javax.servlet.jsp.jstl-api Bundle-SymbolicName: javax.validation.api Bundle-SymbolicName: javax.ws.rs-api Bundle-SymbolicName: javax.xml Bundle-SymbolicName: javax.xml.soap-api Bundle-SymbolicName: jaxb-api Bundle-SymbolicName: jaxb-api Bundle-SymbolicName: joda-time Bundle-SymbolicName: junit-jupiter-api Bundle-SymbolicName: junit-jupiter-engine Bundle-SymbolicName: junit-jupiter-params Bundle-SymbolicName: net.java.html Bundle-SymbolicName: net.java.html.boot Bundle-SymbolicName: net.java.html.boot.fx Bundle-SymbolicName: net.java.html.boot.script Bundle-SymbolicName: net.java.html.geo Bundle-SymbolicName: net.java.html.json Bundle-SymbolicName: net.java.html.sound Bundle-SymbolicName: org.apache.commons.beanutils Bundle-SymbolicName: org.apache.commons.chain Bundle-SymbolicName: org.apache.commons.codec Bundle-SymbolicName: org.apache.commons.commons-fileupload Bundle-SymbolicName: org.apache.commons.io Bundle-SymbolicName: org.apache.commons.logging Bundle-SymbolicName: org.apache.felix.main Bundle-SymbolicName: org.apache.xmlrpc Bundle-SymbolicName: org.eclipse.core.jobs; singleton:=true Bundle-SymbolicName: org.eclipse.core.runtime.compatibility.auth Bundle-SymbolicName: org.eclipse.core.runtime; singleton:=true Bundle-SymbolicName: org.eclipse.equinox.common; singleton:=true Bundle-SymbolicName: org.eclipse.equinox.registry;singleton:=true Bundle-SymbolicName: org.eclipse.equinox.security;singleton:=true Bundle-SymbolicName: org.eclipse.mylyn.bugzilla.core;singleton:=true Bundle-SymbolicName: org.eclipse.mylyn.tasks.core;singleton:=true Bundle-SymbolicName: org.eclipse.mylyn.wikitext.confluence.core;single Bundle-SymbolicName: org.eclipse.mylyn.wikitext.markdown.core;singleto Bundle-SymbolicName: org.eclipse.osgi; singleton:=true Bundle-SymbolicName: org.glassfish.hk2.api Bundle-SymbolicName: org.glassfish.hk2.external.asm-all-repackaged Bundle-SymbolicName: org.glassfish.hk2.external.cglib Bundle-SymbolicName: org.glassfish.hk2.external.javax.inject Bundle-SymbolicName: org.glassfish.hk2.locator Bundle-SymbolicName: org.glassfish.hk2.osgi-resource-locator Bundle-SymbolicName: org.glassfish.hk2.utils Bundle-SymbolicName: org.glassfish.javax.el Bundle-SymbolicName: org.glassfish.javax.faces Bundle-SymbolicName: org.glassfish.jersey.containers.jersey-container-se Bundle-SymbolicName: org.glassfish.jersey.core.jersey-client Bundle-SymbolicName: org.glassfish.jersey.core.jersey-common Bundle-SymbolicName: org.glassfish.jersey.core.jersey-server Bundle-SymbolicName: org.glassfish.jersey.ext.jersey-entity-filtering Bundle-SymbolicName: org.glassfish.jersey.media.jersey-media-moxy Bundle-SymbolicName: org.glassfish.web.javax.servlet.jsp.jstl Bundle-SymbolicName: org.json Bundle-SymbolicName: org.netbeans.html.ko4j Bundle-SymbolicName: org.netbeans.html.xhr4j Bundle-SymbolicName: org.primefaces Bundle-SymbolicName: osgi.cmpn Bundle-SymbolicName: osgi.core Bundle-SymbolicName: slf4j.jdk14 Bundle-SymbolicName: software.amazon.ion.java Bundle-SymbolicName: testng
And some others.
Tests that eventually use those modules on classpath must either use NbModuleSuite, or will eventually fail to initialize the module system properly, even though the running code can actually use the module's classes.
Most notably, there're asm-8.0.jar*, which is used at boostrap and are included by org.netbeans.lib.asm NetBeans module wrapper, although the JARs themselves are OSGi modules. This complicates classpath construction as in the module system tends to include both distribution (platform/core/asm*.jar) as well as the original binaries (libs.asm/external/asm*.jar) that leads to duplicate Bundle errors.
Not sure about impact of this feature to tests: virtually any test that uses OSGi on its classpath would then require inclusion of Felix or Netbinox to provide an OSGi container.
// jtulach please evaluate