blob: 6ce0d51494c371b5f991a20587c1c8469dbc0399 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.codehaus.groovy.vmplugin.v9
import org.codehaus.groovy.control.ResolveVisitor
import org.codehaus.groovy.vmplugin.VMPluginFactory
import org.junit.Test
import java.util.stream.Collectors
class ClassFinderTest {
@Test
void findGroovyClass() {
Map<String, Set<String>> result = ClassFinder.find(GroovySystem.location.toURI(), "groovy/lang")
assert ["groovy/lang"] == result.get("GString")?.toList()
assert null == result.get("GroovydocHolder")
}
@Test
void findGroovyClass2() {
Map<String, Set<String>> result = ClassFinder.find(GroovySystem.location.toURI(), "groovy/util")
assert ["groovy/util"] == result.get("NodeBuilder")?.toList()
}
@Test
void findGroovyClass3() {
Map<String, Set<String>> result = ClassFinder.find(org.codehaus.groovy.control.ResolveVisitor.location.toURI(), "org/codehaus/groovy/control")
assert ["org/codehaus/groovy/control"] == result.get("ResolveVisitor")?.toList()
}
@Test
void findGroovyClassRecursive() {
Map<String, Set<String>> result = ClassFinder.find(GroovySystem.location.toURI(), "groovy/lang", true)
assert ["groovy/lang"] == result.get("GString")?.toList()
assert ["groovy/lang/groovydoc"] == result.get("GroovydocHolder")?.toList()
}
@Test
void findJavaClass() {
Map<String, Set<String>> result = ClassFinder.find(URI.create("jrt:/modules/java.base/"), "java/lang")
assert ["java/lang"] == result.get("String")?.toList()
assert null == result.get("MethodHandle")
}
@Test
void findJavaClass2() {
Map<String, Set<String>> result = ClassFinder.find(URI.create("jrt:/modules/java.base/"), "java/util")
assert ["java/util"] == result.get("Map")?.toList()
}
@Test
void findJavaClass3() {
Map<String, Set<String>> result = ClassFinder.find(URI.create("jrt:/modules/java.base/"), "java/io")
assert ["java/io"] == result.get("InputStream")?.toList()
}
@Test
void findJavaClass4() {
Map<String, Set<String>> result = ClassFinder.find(URI.create("jrt:/modules/java.base/"), "java/net")
assert ["java/net"] == result.get("Inet4Address")?.toList()
}
@Test
void findJavaClassRecursive() {
Map<String, Set<String>> result = ClassFinder.find(URI.create("jrt:/modules/java.base/"), "java/lang", true)
assert ["java/lang/invoke"] == result.get("MethodHandle")?.toList()
}
@Test
void findJarClass() {
Map<String, Set<String>> result = ClassFinder.find(org.antlr.v4.runtime.tree.ParseTree.location.toURI(), "org/antlr/v4/runtime/tree")
assert ["org/antlr/v4/runtime/tree"] == result.get("ParseTree")?.toList()
assert null == result.get("ParseTreePattern")
}
@Test
void findJarClassRecursive() {
Map<String, Set<String>> result = ClassFinder.find(org.antlr.v4.runtime.tree.ParseTree.location.toURI(), "org/antlr/v4/runtime/tree", true)
assert ["org/antlr/v4/runtime/tree"] == result.get("ParseTree")?.toList()
assert ["org/antlr/v4/runtime/tree/pattern"] == result.get("ParseTreePattern")?.toList()
}
@Test
void defaultImportClasses() {
Map<String, Set<String>> r1 = VMPluginFactory.getPlugin().getDefaultImportClasses(ResolveVisitor.DEFAULT_IMPORTS) as TreeMap<String, Set<String>>
assert (ResolveVisitor.DEFAULT_IMPORTS as List).sort() == r1.values().stream().flatMap(e -> e.stream()).collect(Collectors.toSet()).sort()
}
@Test
void testGroovy9480() {
try {
ClassFinder.find(URI.create("file:/"), "NOT_EXISTS", "org/", false, true)
} catch (ClassFindFailedException e) {
assert e.message.contains('Failed to find classes')
}
}
}