blob: ac76bc543bb184c5e5d77caade16c236d21f3339 [file] [log] [blame]
package ioc.specs
import com.example.ManifestModule
import org.apache.tapestry5.ioc.IOCUtilities
import org.apache.tapestry5.ioc.RegistryBuilder
import spock.lang.Specification
class ManifestProcessingSpec extends Specification {
def "invalid class in manifest"() {
File fakejar = new File("src/test/fakejar")
expect:
// This is more to verify the module execution environment
fakejar.exists()
fakejar.isDirectory()
when:
URL url = fakejar.toURL()
URLClassLoader loader = new URLClassLoader([url] as URL[], Thread.currentThread().contextClassLoader)
RegistryBuilder builder = new RegistryBuilder(loader)
IOCUtilities.addDefaultModules(builder)
then:
RuntimeException e = thrown()
e.message.contains "Exception loading module(s) from manifest"
e.message.contains "Failure loading Tapestry IoC module class does.not.exist.Module"
}
def "valid class in manifest"() {
given:
File jar = new File("src/test/realjar")
expect:
// This is more to verify the module execution environment
jar.exists()
jar.isDirectory()
when:
URL url = jar.toURL()
URLClassLoader loader = new URLClassLoader([url] as URL[], Thread.currentThread().contextClassLoader)
RegistryBuilder builder = new RegistryBuilder(loader)
IOCUtilities.addDefaultModules(builder)
def reg = builder.build()
reg.performRegistryStartup()
then:
noExceptionThrown()
ManifestModule.startupCalled == true
cleanup:
ManifestModule.startupCalled = false
}
def "blacklisted manifest module not loaded"() {
given:
File jar = new File("src/test/realjar")
def props = System.getProperties()
props.setProperty("tapestry.manifest-modules-blacklist", "does.not.ExistModule,com.example.ManifestModule")
expect:
// This is more to verify the module execution environment
jar.exists()
jar.isDirectory()
when:
URL url = jar.toURL()
URLClassLoader loader = new URLClassLoader([url] as URL[], Thread.currentThread().contextClassLoader)
RegistryBuilder builder = new RegistryBuilder(loader)
IOCUtilities.addDefaultModules(builder)
def reg = builder.build()
reg.performRegistryStartup()
then:
noExceptionThrown()
ManifestModule.startupCalled == false
cleanup:
props.remove("tapestry.manifest-modules-blacklist")
ManifestModule.startupCalled = false
}
def "blacklisted manifest module empty"() {
given:
File jar = new File("src/test/realjar")
def props = System.getProperties()
props.setProperty("tapestry.manifest-modules-blacklist", "")
expect:
// This is more to verify the module execution environment
jar.exists()
jar.isDirectory()
when:
URL url = jar.toURL()
URLClassLoader loader = new URLClassLoader([url] as URL[], Thread.currentThread().contextClassLoader)
RegistryBuilder builder = new RegistryBuilder(loader)
IOCUtilities.addDefaultModules(builder)
def reg = builder.build()
reg.performRegistryStartup()
then:
noExceptionThrown()
ManifestModule.startupCalled == true
cleanup:
props.remove("tapestry.manifest-modules-blacklist")
ManifestModule.startupCalled = false
}
}