Skip to content

Commit

Permalink
Ensure classpath roots are directories
Browse files Browse the repository at this point in the history
  • Loading branch information
sbrannen committed May 31, 2016
1 parent 6b46df0 commit e3416fe
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 23 deletions.
Expand Up @@ -10,12 +10,12 @@


package org.junit.gen5.engine.discovery; package org.junit.gen5.engine.discovery;


import static java.util.stream.Collectors.toList;
import static org.junit.gen5.commons.meta.API.Usage.Experimental; import static org.junit.gen5.commons.meta.API.Usage.Experimental;


import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;


import org.junit.gen5.commons.meta.API; import org.junit.gen5.commons.meta.API;
import org.junit.gen5.commons.util.Preconditions; import org.junit.gen5.commons.util.Preconditions;
Expand All @@ -33,20 +33,21 @@
public class ClasspathSelector implements DiscoverySelector { public class ClasspathSelector implements DiscoverySelector {


/** /**
* Create a list of {@code ClasspathSelectors} for the supplied {@code paths}. * Create a list of {@code ClasspathSelectors} for the supplied {@code directories}.
* *
* @param paths the paths to classpath roots in the filesystem; never {@code null} * @param directories set of directories in the filesystem that represent classpath roots;
* @return a list of selectors for the supplied paths; paths which * never {@code null}
* do not exist in the filesystem will be filtered out * @return a list of selectors for the supplied directories; directories which
* do not physically exist in the filesystem will be filtered out
*/ */
public static List<DiscoverySelector> selectClasspathRoots(Set<File> paths) { public static List<DiscoverySelector> selectClasspathRoots(Set<File> directories) {
Preconditions.notNull(paths, "paths must not be null"); Preconditions.notNull(directories, "directories must not be null");


// @formatter:off // @formatter:off
return paths.stream() return directories.stream()
.filter(File::exists) .filter(File::isDirectory)
.map(ClasspathSelector::new) .map(ClasspathSelector::new)
.collect(Collectors.toList()); .collect(toList());
// @formatter:on // @formatter:on
} }


Expand All @@ -57,7 +58,7 @@ private ClasspathSelector(File classpathRoot) {
} }


/** /**
* Get the selected classpath root. * Get the selected classpath root directory.
*/ */
public File getClasspathRoot() { public File getClasspathRoot() {
return this.classpathRoot; return this.classpathRoot;
Expand Down
Expand Up @@ -10,11 +10,13 @@


package org.junit.gen5.engine.junit5.discovery; package org.junit.gen5.engine.junit5.discovery;


import static java.util.Collections.singleton;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.gen5.api.Assertions.assertEquals; import static org.junit.gen5.api.Assertions.assertEquals;
import static org.junit.gen5.api.Assertions.assertSame; import static org.junit.gen5.api.Assertions.assertSame;
import static org.junit.gen5.api.Assertions.assertTrue; import static org.junit.gen5.api.Assertions.assertTrue;
import static org.junit.gen5.api.Assertions.expectThrows; import static org.junit.gen5.api.Assertions.expectThrows;
import static org.junit.gen5.engine.discovery.ClasspathSelector.selectClasspathRoots;
import static org.junit.gen5.engine.junit5.discovery.JUnit5UniqueIdBuilder.engineId; import static org.junit.gen5.engine.junit5.discovery.JUnit5UniqueIdBuilder.engineId;
import static org.junit.gen5.engine.junit5.discovery.JUnit5UniqueIdBuilder.uniqueIdForClass; import static org.junit.gen5.engine.junit5.discovery.JUnit5UniqueIdBuilder.uniqueIdForClass;
import static org.junit.gen5.engine.junit5.discovery.JUnit5UniqueIdBuilder.uniqueIdForMethod; import static org.junit.gen5.engine.junit5.discovery.JUnit5UniqueIdBuilder.uniqueIdForMethod;
Expand All @@ -24,7 +26,6 @@
import java.io.File; import java.io.File;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
Expand All @@ -40,7 +41,6 @@
import org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
import org.junit.gen5.engine.UniqueId; import org.junit.gen5.engine.UniqueId;
import org.junit.gen5.engine.discovery.ClassSelector; import org.junit.gen5.engine.discovery.ClassSelector;
import org.junit.gen5.engine.discovery.ClasspathSelector;
import org.junit.gen5.engine.discovery.MethodSelector; import org.junit.gen5.engine.discovery.MethodSelector;
import org.junit.gen5.engine.discovery.PackageSelector; import org.junit.gen5.engine.discovery.PackageSelector;
import org.junit.gen5.engine.discovery.UniqueIdSelector; import org.junit.gen5.engine.discovery.UniqueIdSelector;
Expand All @@ -53,7 +53,7 @@
public class DiscoverySelectorResolverTests { public class DiscoverySelectorResolverTests {


private final JUnit5EngineDescriptor engineDescriptor = new JUnit5EngineDescriptor(engineId()); private final JUnit5EngineDescriptor engineDescriptor = new JUnit5EngineDescriptor(engineId());
private DiscoverySelectorResolver resolver = new DiscoverySelectorResolver(); private final DiscoverySelectorResolver resolver = new DiscoverySelectorResolver();


@Test @Test
public void singleClassResolution() { public void singleClassResolution() {
Expand Down Expand Up @@ -366,9 +366,9 @@ public void classpathResolution() {
File classpath = new File( File classpath = new File(
DiscoverySelectorResolverTests.class.getProtectionDomain().getCodeSource().getLocation().getPath()); DiscoverySelectorResolverTests.class.getProtectionDomain().getCodeSource().getLocation().getPath());


List<DiscoverySelector> selector = ClasspathSelector.selectClasspathRoots(Collections.singleton(classpath)); List<DiscoverySelector> selectors = selectClasspathRoots(singleton(classpath));


resolver.resolveSelectors(request().selectors(selector).build(), engineDescriptor); resolver.resolveSelectors(request().selectors(selectors).build(), engineDescriptor);


assertTrue(engineDescriptor.allDescendants().size() > 500, "Too few test descriptors in classpath"); assertTrue(engineDescriptor.allDescendants().size() > 500, "Too few test descriptors in classpath");


Expand Down
Expand Up @@ -10,12 +10,14 @@


package org.junit.gen5.launcher.main; package org.junit.gen5.launcher.main;


import static java.util.Collections.singleton;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.gen5.api.Assertions.assertEquals; import static org.junit.gen5.api.Assertions.assertEquals;
import static org.junit.gen5.api.Assertions.expectThrows; import static org.junit.gen5.api.Assertions.expectThrows;
import static org.junit.gen5.engine.FilterResult.excluded; import static org.junit.gen5.engine.FilterResult.excluded;
import static org.junit.gen5.engine.discovery.ClassSelector.selectClass; import static org.junit.gen5.engine.discovery.ClassSelector.selectClass;
import static org.junit.gen5.engine.discovery.ClasspathSelector.selectClasspathRoots;
import static org.junit.gen5.engine.discovery.MethodSelector.selectMethod; import static org.junit.gen5.engine.discovery.MethodSelector.selectMethod;
import static org.junit.gen5.engine.discovery.PackageSelector.selectPackage; import static org.junit.gen5.engine.discovery.PackageSelector.selectPackage;
import static org.junit.gen5.engine.discovery.UniqueIdSelector.selectUniqueId; import static org.junit.gen5.engine.discovery.UniqueIdSelector.selectUniqueId;
Expand All @@ -24,7 +26,6 @@


import java.io.File; import java.io.File;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;


Expand Down Expand Up @@ -128,14 +129,11 @@ public void unavailableFoldersAreNotStoredInDiscoveryRequest() throws Exception
// @formatter:off // @formatter:off
TestDiscoveryRequest discoveryRequest = request() TestDiscoveryRequest discoveryRequest = request()
.selectors( .selectors(
ClasspathSelector.selectClasspathRoots(Collections.singleton(new File("/some/local/path"))) selectClasspathRoots(singleton(new File("/some/local/path")))
).build(); ).build();
// @formatter:on // @formatter:on


List<String> folders = discoveryRequest.getSelectorsByType(ClasspathSelector.class).stream().map( assertThat(discoveryRequest.getSelectorsByType(ClasspathSelector.class).size()).isEqualTo(0);
ClasspathSelector::getClasspathRoot).map(File::getAbsolutePath).collect(toList());

assertThat(folders).isEmpty();
} }


@Test @Test
Expand All @@ -145,7 +143,7 @@ public void availableFoldersAreStoredInDiscoveryRequest() throws Exception {
// @formatter:off // @formatter:off
TestDiscoveryRequest discoveryRequest = request() TestDiscoveryRequest discoveryRequest = request()
.selectors( .selectors(
ClasspathSelector.selectClasspathRoots(Collections.singleton(temporaryFolder)) selectClasspathRoots(singleton(temporaryFolder))
).build(); ).build();
// @formatter:on // @formatter:on


Expand Down

0 comments on commit e3416fe

Please sign in to comment.