diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ParserTstUtil.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ParserTstUtil.java index 2b2385a7bd..9a45ef1479 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ParserTstUtil.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ParserTstUtil.java @@ -120,75 +120,92 @@ public class ParserTstUtil { return cu; } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava13(String code) { - return parseJava("1.3", code); + return parseJava(getLanguageVersionHandler("1.3"), code); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava14(String code) { - return parseJava("1.4", code); + return parseJava(getLanguageVersionHandler("1.4"), code); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava15(String code) { - return parseJava("1.5", code); + return parseJava(getLanguageVersionHandler("1.5"), code); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava17(String code) { - return parseJava("1.7", code); + return parseJava(getLanguageVersionHandler("1.7"), code); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava18(String code) { - return parseJava("1.8", code); + return parseJava(getLanguageVersionHandler("1.8"), code); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava13(Class source) { return parseJava13(getSourceFromClass(source)); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava14(Class source) { return parseJava14(getSourceFromClass(source)); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava15(Class source) { return parseJava15(getSourceFromClass(source)); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava17(Class source) { return parseJava17(getSourceFromClass(source)); } - /** @see #parseJava(String, String) */ + /** @see #parseJava(LanguageVersionHandler, String) */ public static ASTCompilationUnit parseJava18(Class source) { return parseJava18(getSourceFromClass(source)); } + /** @see #parseJava(LanguageVersionHandler, String) */ + public static ASTCompilationUnit parseJavaDefaultVersion(String source) { + return parseJava(getDefaultLanguageVersionHandler(), source); + } + + /** @see #parseJava(LanguageVersionHandler, String) */ + public static ASTCompilationUnit parseJavaDefaultVersion(Class source) { + return parseJavaDefaultVersion(getSourceFromClass(source)); + } + + + public static LanguageVersionHandler getLanguageVersionHandler(String version) { + return LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion(version).getLanguageVersionHandler(); + } + + public static LanguageVersionHandler getDefaultLanguageVersionHandler() { + return LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getDefaultVersion().getLanguageVersionHandler(); + } + /** * Parses Java code and executes the symbol table visitor. * - * @param version The Java version to use - * @param code The source code + * @param languageVersionHandler The version handler for the wanted version + * @param code The source code * * @return The compilation unit */ - public static ASTCompilationUnit parseJava(String version, String code) { - LanguageVersion languageVersion = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion(version); - LanguageVersionHandler languageVersionHandler = languageVersion.getLanguageVersionHandler(); + public static ASTCompilationUnit parseJava(LanguageVersionHandler languageVersionHandler, String code) { ASTCompilationUnit rootNode = (ASTCompilationUnit) languageVersionHandler .getParser(languageVersionHandler.getDefaultParserOptions()).parse(null, new StringReader(code)); languageVersionHandler.getSymbolFacade().start(rootNode); return rootNode; } - private static String getSourceFromClass(Class clazz) { + public static String getSourceFromClass(Class clazz) { String sourceFile = clazz.getName().replace('.', '/') + ".java"; InputStream is = ParserTstUtil.class.getClassLoader().getResourceAsStream(sourceFile); if (is == null) { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsVisitorTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsVisitorTest.java index e6c2f749da..7807515397 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsVisitorTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/JavaMetricsVisitorTest.java @@ -8,16 +8,10 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; - -import org.apache.commons.io.IOUtils; import org.junit.Test; -import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.java.JavaLanguageModule; +import net.sourceforge.pmd.lang.java.ParserTstUtil; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter; @@ -27,7 +21,6 @@ import net.sourceforge.pmd.lang.java.metrics.signature.JavaOperationSigMask; import net.sourceforge.pmd.lang.java.metrics.signature.JavaOperationSignature.Role; import net.sourceforge.pmd.lang.java.metrics.signature.JavaSignature.Visibility; import net.sourceforge.pmd.lang.java.metrics.testdata.MetricsVisitorTestData; -import net.sourceforge.pmd.typeresolution.ClassTypeResolverTest; /** * Tests of the metrics visitor. @@ -45,7 +38,7 @@ public class JavaMetricsVisitorTest { @Test public void testOperationsAreThere() { - ASTCompilationUnit acu = parseAndVisitForClass15(MetricsVisitorTestData.class); + ASTCompilationUnit acu = parseAndVisitForClass(MetricsVisitorTestData.class); final JavaSignatureMatcher toplevel = JavaMetrics.getFacade().getTopLevelPackageStats(); @@ -64,7 +57,7 @@ public class JavaMetricsVisitorTest { @Test public void testFieldsAreThere() { - parseAndVisitForClass15(MetricsVisitorTestData.class); + parseAndVisitForClass(MetricsVisitorTestData.class); final JavaSignatureMatcher toplevel = JavaMetrics.getFacade().getTopLevelPackageStats(); @@ -88,7 +81,7 @@ public class JavaMetricsVisitorTest { // problem @Test public void testStaticOperationsSig() { - parseAndVisitForClass15(MetricsVisitorTestData.class); + parseAndVisitForClass(MetricsVisitorTestData.class); final JavaSignatureMatcher toplevel = JavaMetrics.getFacade().getTopLevelPackageStats(); @@ -108,42 +101,11 @@ public class JavaMetricsVisitorTest { } - /* default */ - static ASTCompilationUnit parseAndVisitForClass15(Class clazz) { - return parseAndVisitForClass(clazz, "1.5"); - } - - - // Note: If you're using Eclipse or some other IDE to run this test, you - // _must_ have the src/test/java folder in - // the classpath. Normally the IDE doesn't put source directories themselves - // directly in the classpath, only - // the output directories are in the classpath. - private static ASTCompilationUnit parseAndVisitForClass(Class clazz, String version) { - String sourceFile = clazz.getName().replace('.', '/') + ".java"; - InputStream is = ClassTypeResolverTest.class.getClassLoader().getResourceAsStream(sourceFile); - if (is == null) { - throw new IllegalArgumentException( - "Unable to find source file " + sourceFile + " for " + clazz); - } - String source; - try { - source = IOUtils.toString(is); - } catch (IOException e) { - throw new RuntimeException(e); - } - return parseAndVisitForString(source, version); - } - - - private static ASTCompilationUnit parseAndVisitForString(String source, String version) { - LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME) - .getVersion(version).getLanguageVersionHandler(); - ASTCompilationUnit acu = (ASTCompilationUnit) languageVersionHandler - .getParser(languageVersionHandler.getDefaultParserOptions()).parse(null, new StringReader(source)); - languageVersionHandler.getSymbolFacade().start(acu); - languageVersionHandler.getTypeResolutionFacade(JavaMetricsVisitorTest.class.getClassLoader()).start(acu); - languageVersionHandler.getMetricsVisitorFacade().start(acu); + static ASTCompilationUnit parseAndVisitForClass(Class clazz) { + ASTCompilationUnit acu = ParserTstUtil.parseJavaDefaultVersion(clazz); + LanguageVersionHandler handler = ParserTstUtil.getDefaultLanguageVersionHandler(); + handler.getTypeResolutionFacade(JavaMetricsVisitorTest.class.getClassLoader()).start(acu); + handler.getMetricsVisitorFacade().start(acu); return acu; } } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/ProjectMemoizerTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/ProjectMemoizerTest.java index 35e8f320ba..58f0c6977f 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/ProjectMemoizerTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/metrics/ProjectMemoizerTest.java @@ -4,7 +4,7 @@ package net.sourceforge.pmd.lang.java.metrics; -import static net.sourceforge.pmd.lang.java.metrics.JavaMetricsVisitorTest.parseAndVisitForClass15; +import static net.sourceforge.pmd.lang.java.metrics.JavaMetricsVisitorTest.parseAndVisitForClass; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -38,7 +38,7 @@ public class ProjectMemoizerTest { @Test public void memoizationTest() { - ASTCompilationUnit acu = parseAndVisitForClass15(MetricsVisitorTestData.class); + ASTCompilationUnit acu = parseAndVisitForClass(MetricsVisitorTestData.class); List expected = visitWith(acu, true); List real = visitWith(acu, false); @@ -49,7 +49,7 @@ public class ProjectMemoizerTest { @Test public void forceMemoizationTest() { - ASTCompilationUnit acu = parseAndVisitForClass15(MetricsVisitorTestData.class); + ASTCompilationUnit acu = parseAndVisitForClass(MetricsVisitorTestData.class); List reference = visitWith(acu, true); List real = visitWith(acu, true); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java index c805bebfd5..57a9467578 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java @@ -8,17 +8,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; -import java.io.IOException; -import java.io.InputStream; import java.io.StringReader; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.StringTokenizer; -import org.apache.commons.io.IOUtils; import org.jaxen.JaxenException; - import org.junit.Assert; import org.junit.Test; @@ -26,6 +22,7 @@ import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.JavaLanguageModule; +import net.sourceforge.pmd.lang.java.ParserTstUtil; import net.sourceforge.pmd.lang.java.ast.ASTAllocationExpression; import net.sourceforge.pmd.lang.java.ast.ASTBooleanLiteral; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration; @@ -1495,18 +1492,7 @@ public class ClassTypeResolverTest { // directly in the classpath, only // the output directories are in the classpath. private ASTCompilationUnit parseAndTypeResolveForClass(Class clazz, String version) { - String sourceFile = clazz.getName().replace('.', '/') + ".java"; - InputStream is = ClassTypeResolverTest.class.getClassLoader().getResourceAsStream(sourceFile); - if (is == null) { - throw new IllegalArgumentException("Unable to find source file " + sourceFile + " for " + clazz); - } - String source; - try { - source = IOUtils.toString(is); - } catch (IOException e) { - throw new RuntimeException(e); - } - return parseAndTypeResolveForString(source, version); + return parseAndTypeResolveForString(ParserTstUtil.getSourceFromClass(clazz), version); } private ASTCompilationUnit parseAndTypeResolveForString(String source, String version) {