Skip to content

Commit

Permalink
Support for PackageSelector
Browse files Browse the repository at this point in the history
  • Loading branch information
luontola committed Mar 17, 2016
1 parent 1217d68 commit 511588d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
Expand Up @@ -8,19 +8,22 @@
import org.junit.gen5.engine.*;
import org.junit.gen5.engine.discovery.ClassSelector;
import org.junit.gen5.engine.discovery.ClasspathSelector;
import org.junit.gen5.engine.discovery.PackageSelector;
import org.junit.gen5.engine.discovery.UniqueIdSelector;
import org.junit.gen5.engine.support.descriptor.EngineDescriptor;
import org.specsy.Specsy;
import org.specsy.bootstrap.ClassSpec;
import org.specsy.core.Path;
import org.specsy.core.SpecRun;

import java.io.File;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
import java.util.stream.Stream;

import static org.junit.gen5.commons.util.ReflectionUtils.findAllClassesInClasspathRoot;
import static org.junit.gen5.commons.util.ReflectionUtils.findAllClassesInPackage;
import static org.junit.gen5.engine.TestExecutionResult.Status.SUCCESSFUL;

public class SpecsyTestEngine implements TestEngine {
Expand All @@ -36,7 +39,6 @@ public String getId() {
public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest) {
EngineDescriptor engineDescriptor = new EngineDescriptor(getId(), "Specsy");

// TODO: support PackageSelector
for (ClassSelector selector : discoveryRequest.getSelectorsByType(ClassSelector.class)) {
Class<?> testClass = selector.getTestClass();
if (isSpecsyClass(testClass)) {
Expand All @@ -45,7 +47,15 @@ public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest) {
}

for (ClasspathSelector selector : discoveryRequest.getSelectorsByType(ClasspathSelector.class)) {
for (Class<?> testClass : findAllClassesInClasspathRoot(selector.getClasspathRoot(), SpecsyTestEngine::isSpecsyClass)) {
File classpathRoot = selector.getClasspathRoot();
for (Class<?> testClass : findAllClassesInClasspathRoot(classpathRoot, SpecsyTestEngine::isSpecsyClass)) {
engineDescriptor.addChild(new ClassTestDescriptor(engineDescriptor, testClass));
}
}

for (PackageSelector selector : discoveryRequest.getSelectorsByType(PackageSelector.class)) {
String packageName = selector.getPackageName();
for (Class<?> testClass : findAllClassesInPackage(packageName, SpecsyTestEngine::isSpecsyClass)) {
engineDescriptor.addChild(new ClassTestDescriptor(engineDescriptor, testClass));
}
}
Expand Down
Expand Up @@ -27,6 +27,7 @@
import static org.hamcrest.Matchers.*;
import static org.junit.gen5.engine.discovery.ClassSelector.forClass;
import static org.junit.gen5.engine.discovery.ClasspathSelector.forPath;
import static org.junit.gen5.engine.discovery.PackageSelector.forPackageName;
import static org.junit.gen5.engine.discovery.UniqueIdSelector.forUniqueId;
import static org.junit.gen5.launcher.EngineIdFilter.byEngineId;

Expand Down Expand Up @@ -102,6 +103,15 @@ public void select_tests_by_classpath() {
assertUniqueId(tests, 1, "specsy", "org.specsy.junit5.SpecsyTestEngineTest$DummySpec");
}

@Test
public void select_tests_by_package() {
List<TestIdentifier> tests = runTests(forPackageName(getClass().getPackage().getName()));

assertThat("tests", tests, hasSize(6));
assertUniqueId(tests, 0, "specsy");
assertUniqueId(tests, 1, "specsy", "org.specsy.junit5.SpecsyTestEngineTest$DummySpec");
}


// guinea pigs

Expand Down

0 comments on commit 511588d

Please sign in to comment.