in src/main/java/org/apache/sling/junit/scriptable/ScriptableTestsProvider.java [200:233]
private List<String> maybeQueryTestResources() throws RepositoryException {
if(lastModified <= lastReloaded) {
log.debug("No changes detected, keeping existing list of {} test resources", testPaths.size());
return testPaths;
}
log.info("Changes detected, reloading list of test resources");
final long reloadTime = System.currentTimeMillis();
final List<String> newList = new LinkedList<>();
for(String root : allowedRoots) {
final String statement = "/jcr:root" + root + "/element(*, " + SLING_TEST_NODETYPE + ")";
log.debug("Querying for test nodes: {}", statement);
session.refresh(true);
final Query q = session.getWorkspace().getQueryManager().createQuery(statement, Query.XPATH);
final NodeIterator it = q.execute().getNodes();
while(it.hasNext()) {
final String path = it.nextNode().getPath();
newList.add(path);
log.debug("Test resource found: {}", path);
}
}
log.info("List of test resources updated, {} resource(s) found under {}",
newList.size(), Arrays.asList(allowedRoots));
synchronized (testPaths) {
testPaths.clear();
testPaths.addAll(newList);
}
lastReloaded = reloadTime;
return testPaths;
}