8175336: [TESTBUG] aot junit tests added by 8169588 are not executed

Reviewed-by: kvn
This commit is contained in:
Rickard Bäckman 2017-02-23 10:08:51 +01:00
parent f889b5119c
commit 5b097b494d
8 changed files with 182 additions and 35 deletions

View File

@ -20,10 +20,19 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @modules jdk.aot/jdk.tools.jaotc
* jdk.aot/jdk.tools.jaotc.collect
* @run junit/othervm jdk.tools.jaotc.test.collect.ClassSearchTest
*/
package jdk.tools.jaotc.test.collect;
import jdk.tools.jaotc.LoadedClass;
import jdk.tools.jaotc.collect.*;
import org.junit.Assert;
import org.junit.Test;
@ -32,45 +41,90 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
public class ClassSearchTest {
@Test(expected = InternalError.class)
public void itShouldThrowExceptionIfNoProvidersAvailable() {
ClassSearch target = new ClassSearch();
SearchPath searchPath = new SearchPath();
target.search(list("foo"), searchPath);
target.search(list(new SearchFor("foo")), searchPath);
}
@Test
public void itShouldFindAProviderForEachEntry() {
Set<String> searched = new HashSet<>();
ClassSearch target = new ClassSearch();
target.addProvider(new SourceProvider() {
@Override
public ClassSource findSource(String name, SearchPath searchPath) {
target.addProvider(provider("", (name, searchPath) -> {
searched.add(name);
return new NoopSource();
}
});
target.search(list("foo", "bar", "foobar"), null);
}));
target.search(searchForList("foo", "bar", "foobar"), null);
Assert.assertEquals(hashset("foo", "bar", "foobar"), searched);
}
private SourceProvider provider(String supports, BiFunction<String, SearchPath, ClassSource> fn) {
return new SourceProvider() {
@Override
public ClassSource findSource(String name, SearchPath searchPath) {
return fn.apply(name, searchPath);
}
@Override
public boolean supports(String type) {
return supports.equals(type);
}
};
}
@Test
public void itShouldSearchAllProviders() {
public void itShouldOnlySearchSupportedProvidersForKnownType() {
Set<String> visited = new HashSet<>();
ClassSearch target = new ClassSearch();
target.addProvider((name, searchPath) -> {
visited.add("1");
target.addProvider(provider("jar", (name, searchPath) -> {
visited.add("jar");
return null;
});
target.addProvider((name, searchPath) -> {
visited.add("2");
}));
target.addProvider(provider("dir", (name, searchPath) -> {
visited.add("dir");
return null;
});
}));
try {
target.search(list("foo"), null);
target.search(list(new SearchFor("some", "dir")), null);
} catch (InternalError e) {
// throws because no provider gives a source
}
Assert.assertEquals(hashset("dir"), visited);
}
@Test(expected = InternalError.class)
public void itShouldThrowErrorIfMultipleSourcesAreAvailable() {
ClassSearch target = new ClassSearch();
target.addProvider(provider("", (name, searchPath) -> consumer -> Assert.fail()));
target.addProvider(provider("", (name, searchPath) -> consumer -> Assert.fail()));
target.search(searchForList("somethign"), null);
}
@Test
public void itShouldSearchAllProvidersForUnknownType() {
Set<String> visited = new HashSet<>();
ClassSearch target = new ClassSearch();
target.addProvider(provider("", (name, searchPath) -> {
visited.add("1");
return null;
}));
target.addProvider(provider("", (name, searchPath) -> {
visited.add("2");
return null;
}));
try {
target.search(searchForList("foo"), null);
} catch (InternalError e) {
// throws because no provider gives a source
}
@ -84,6 +138,11 @@ public class ClassSearchTest {
ClassSearch target = new ClassSearch();
target.addProvider(new SourceProvider() {
@Override
public boolean supports(String type) {
return true;
}
@Override
public ClassSource findSource(String name, SearchPath searchPath) {
return new ClassSource() {
@ -101,7 +160,7 @@ public class ClassSearchTest {
}
});
java.util.List<LoadedClass> search = target.search(list("/tmp/something"), null);
java.util.List<LoadedClass> search = target.search(searchForList("/tmp/something"), null);
Assert.assertEquals(list(new LoadedClass("foo.Bar", null)), search);
}
@ -115,8 +174,16 @@ public class ClassSearchTest {
};
ClassSearch target = new ClassSearch();
target.addProvider((name, searchPath) -> consumer -> consumer.accept("foo.Bar", classLoader));
target.search(list("foobar"), null);
target.addProvider(provider("", (name, searchPath) -> consumer -> consumer.accept("foo.Bar", classLoader)));
target.search(searchForList("foobar"), null);
}
private List<SearchFor> searchForList(String... entries) {
List<SearchFor> list = new ArrayList<>();
for (String entry : entries) {
list.add(new SearchFor(entry));
}
return list;
}
private <T> List<T> list(T... entries) {

View File

@ -20,6 +20,14 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @modules jdk.aot/jdk.tools.jaotc
* jdk.aot/jdk.tools.jaotc.collect
* @run junit/othervm jdk.tools.jaotc.test.collect.ClassSourceTest
*/
package jdk.tools.jaotc.test.collect;
import org.junit.Assert;

View File

@ -27,6 +27,8 @@ import java.nio.file.Path;
import java.util.HashSet;
import java.util.Set;
import jdk.tools.jaotc.collect.FileSupport;
public class FakeFileSupport extends FileSupport {
private final Set<String> exists = new HashSet<>();
private final Set<String> directories = new HashSet<>();

View File

@ -22,6 +22,8 @@
*/
package jdk.tools.jaotc.test.collect;
import jdk.tools.jaotc.collect.SearchPath;
import java.nio.file.FileSystem;
import java.nio.file.Path;
import java.nio.file.Paths;

View File

@ -20,6 +20,17 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @modules jdk.aot/jdk.tools.jaotc
* jdk.aot/jdk.tools.jaotc.collect
*
* @build jdk.tools.jaotc.test.collect.Utils
* @build jdk.tools.jaotc.test.collect.FakeFileSupport
* @run junit/othervm jdk.tools.jaotc.test.collect.SearchPathTest
*/
package jdk.tools.jaotc.test.collect;
import org.junit.Before;
@ -30,6 +41,8 @@ import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import jdk.tools.jaotc.collect.*;
import static jdk.tools.jaotc.test.collect.Utils.set;
import static org.junit.Assert.*;

View File

@ -21,11 +21,22 @@
* questions.
*/
/**
* @test
* @modules jdk.aot/jdk.tools.jaotc
* jdk.aot/jdk.tools.jaotc.collect
* jdk.aot/jdk.tools.jaotc.collect.directory
* @compile ../Utils.java
* @compile ../FakeFileSupport.java
* @run junit/othervm jdk.tools.jaotc.test.collect.directory.DirectorySourceProviderTest
*/
package jdk.tools.jaotc.test.collect.directory;
import jdk.tools.jaotc.collect.ClassSource;
import jdk.tools.jaotc.collect.directory.DirectorySourceProvider;
import jdk.tools.jaotc.test.collect.FakeFileSupport;
import jdk.tools.jaotc.test.collect.FileSupport;
import jdk.tools.jaotc.collect.FileSupport;
import org.junit.Assert;
import org.junit.Test;

View File

@ -20,9 +20,23 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @modules jdk.aot/jdk.tools.jaotc
* jdk.aot/jdk.tools.jaotc.collect
* jdk.aot/jdk.tools.jaotc.collect.jar
* @compile ../Utils.java
* @compile ../FakeFileSupport.java
* @compile ../FakeSearchPath.java
*
* @run junit/othervm jdk.tools.jaotc.test.collect.jar.JarSourceProviderTest
*/
package jdk.tools.jaotc.test.collect.jar;
import jdk.tools.jaotc.collect.ClassSource;
import jdk.tools.jaotc.collect.jar.JarSourceProvider;
import jdk.tools.jaotc.test.collect.FakeFileSupport;
import jdk.tools.jaotc.test.collect.FakeSearchPath;
import org.junit.Assert;

View File

@ -20,15 +20,31 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @modules jdk.aot/jdk.tools.jaotc
* jdk.aot/jdk.tools.jaotc.collect
* jdk.aot/jdk.tools.jaotc.collect.module
* @compile ../Utils.java
* @run junit/othervm jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest
*/
package jdk.tools.jaotc.test.collect.module;
import jdk.tools.jaotc.*;
import jdk.tools.jaotc.test.collect.FakeSearchPath;
import jdk.tools.jaotc.collect.FileSupport;
import jdk.tools.jaotc.collect.module.ModuleSource;
import jdk.tools.jaotc.collect.module.ModuleSourceProvider;
import jdk.tools.jaotc.test.collect.Utils;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.function.BiFunction;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@ -36,28 +52,42 @@ import static org.junit.Assert.assertNull;
public class ModuleSourceProviderTest {
private ClassLoader classLoader;
private ModuleSourceProvider target;
private FileSupport fileSupport;
private BiFunction<Path, Path, Path> getSubDirectory = null;
@Before
public void setUp() {
classLoader = new FakeClassLoader();
target = new ModuleSourceProvider(FileSystems.getDefault(), classLoader);
fileSupport = new FileSupport() {
@Override
public boolean isDirectory(Path path) {
return true;
}
@Override
public Path getSubDirectory(FileSystem fileSystem, Path root, Path path) throws IOException {
if (getSubDirectory == null) {
throw new IOException("Nope");
}
return getSubDirectory.apply(root, path);
}
};
target = new ModuleSourceProvider(FileSystems.getDefault(), classLoader, fileSupport);
}
@Test
public void itShouldUseSearchPath() {
FakeSearchPath searchPath = new FakeSearchPath("blah/java.base");
ModuleSource source = (ModuleSource) target.findSource("java.base", searchPath);
assertEquals(Utils.set("java.base"), searchPath.entries);
assertEquals("blah/java.base", source.getModulePath().toString());
assertEquals("module:blah/java.base", source.toString());
}
public void itShouldUseFileSupport() {
getSubDirectory = (root, path) -> {
if (root.toString().equals("modules") && path.toString().equals("test.module")) {
return Paths.get("modules/test.module");
}
return null;
};
@Test
public void itShouldReturnNullIfSearchPathReturnsNull() {
FakeSearchPath searchPath = new FakeSearchPath(null);
ModuleSource source = (ModuleSource) target.findSource("jdk.base", searchPath);
assertEquals(Utils.set("jdk.base"), searchPath.entries);
assertNull(source);
ModuleSource source = (ModuleSource) target.findSource("test.module", null);
assertEquals("modules/test.module", source.getModulePath().toString());
assertEquals("module:modules/test.module", source.toString());
}
private static class FakeClassLoader extends ClassLoader {