blob: 72e6eaf3358d3ee2536438a3311b87818198c1bf [file] [log] [blame]
package ioc.specs
import java.io.File;
import java.net.URL;
import org.apache.tapestry5.ioc.Locatable;
import org.apache.tapestry5.ioc.internal.services.ClasspathScannerImpl;
import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl
import org.apache.tapestry5.ioc.internal.util.InternalUtils;
import org.apache.tapestry5.ioc.services.ClasspathMatcher;
import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
import spock.lang.Specification;
class ClasspathScannerImplSpec extends Specification {
// TAP5-2096
def "can locate classes inside a subpackage, inside an extracted JAR file"() {
setup:
ClasspathMatcher matchAll = new ClasspathMatcher(){
boolean matches(String arg0, String arg1) {
true
};
}
def scannerJob = new ClasspathScannerImpl.Job(matchAll, Thread.currentThread().getContextClassLoader(), new ClasspathURLConverterImpl())
when:
URL url = Locatable.class.getResource('Locatable.class');
scannerJob.scanDir("org/apache/tapestry5/ioc/", new File(url.getPath()).parentFile)
while (!scannerJob.queue.isEmpty())
{
def queued = scannerJob.queue.pop();
queued.run();
}
def classes = scannerJob.matches
then:
classes.contains(InternalUtils.class.getName().replaceAll(/\./, "/")+'.class')
}
}