diff --git a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/StdCyclomaticComplexityTest.java b/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/StdCyclomaticComplexityTest.java deleted file mode 100644 index 421d5c45e5..0000000000 --- a/pmd-apex/src/test/java/net/sourceforge/pmd/lang/apex/rule/design/StdCyclomaticComplexityTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.apex.rule.design; - -import java.io.StringReader; -import java.util.Arrays; - -import org.junit.Assert; -import org.junit.Test; - -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.Parser; -import net.sourceforge.pmd.lang.ParserOptions; -import net.sourceforge.pmd.lang.apex.ApexLanguageModule; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.testframework.PmdRuleTst; - -public class StdCyclomaticComplexityTest extends PmdRuleTst { - /** - * Make sure the entry stack is empty, if show classes complexity is - * disabled. - * - * @see bug #1501 - */ - @Test - public void entryStackMustBeEmpty() { - StdCyclomaticComplexityRule rule = new StdCyclomaticComplexityRule(); - rule.setProperty(StdCyclomaticComplexityRule.SHOW_CLASSES_COMPLEXITY_DESCRIPTOR, Boolean.FALSE); - - RuleContext ctx = new RuleContext(); - LanguageVersion javaLanguageVersion = LanguageRegistry.getLanguage(ApexLanguageModule.NAME).getDefaultVersion(); - ParserOptions parserOptions = javaLanguageVersion.getLanguageVersionHandler().getDefaultParserOptions(); - Parser parser = javaLanguageVersion.getLanguageVersionHandler().getParser(parserOptions); - Node node = parser.parse("test", new StringReader("public class SampleClass {}")); - - rule.apply(Arrays.asList(node), ctx); - - Assert.assertTrue(rule.entryStack.isEmpty()); - } -} diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java index 52e66d9a93..ae1ff2deeb 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/JavaRuleViolationTest.java @@ -6,28 +6,24 @@ package net.sourceforge.pmd.lang.java.rule; import static org.junit.Assert.assertEquals; -import java.io.StringReader; import java.util.List; import org.junit.Test; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.ParserOptions; -import net.sourceforge.pmd.lang.java.JavaLanguageModule; +import net.sourceforge.pmd.lang.java.JavaParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTFormalParameter; import net.sourceforge.pmd.lang.java.ast.ASTImportDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; -import net.sourceforge.pmd.lang.java.symboltable.ScopeAndDeclarationFinder; /** * @author Philip Graf */ public class JavaRuleViolationTest { + /** * Verifies that {@link JavaRuleViolation} sets the variable name for an * {@link ASTFormalParameter} node. @@ -42,14 +38,7 @@ public class JavaRuleViolationTest { } private ASTCompilationUnit parse(final String code) { - final LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME) - .getDefaultVersion().getLanguageVersionHandler(); - final ParserOptions options = languageVersionHandler.getDefaultParserOptions(); - final ASTCompilationUnit ast = (ASTCompilationUnit) languageVersionHandler.getParser(options).parse(null, - new StringReader(code)); - // set scope of AST nodes - ast.jjtAccept(new ScopeAndDeclarationFinder(), null); - return ast; + return JavaParsingHelper.WITH_PROCESSING.parse(code); } /** diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java index 4a74a42e91..6716fa8f6b 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/XPathRuleTest.java @@ -26,10 +26,9 @@ import net.sourceforge.pmd.RuleViolation; import net.sourceforge.pmd.RulesetsFactoryUtils; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.Parser; -import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.JavaLanguageModule; +import net.sourceforge.pmd.lang.java.JavaParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.rule.XPathRule; import net.sourceforge.pmd.lang.rule.xpath.JaxenXPathRuleQuery; @@ -122,7 +121,7 @@ public class XPathRuleTest extends RuleTst { /** * Test for problem reported in bug #1219 PrimarySuffix/@Image does not work * in some cases in xpath 2.0 - * + * * @throws Exception * any error */ @@ -132,9 +131,7 @@ public class XPathRuleTest extends RuleTst { + " public static void main(String args[]) {\n" + " new File(\"subdirectory\").list();\n" + " }\n" + "}"; LanguageVersion language = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getDefaultVersion(); - ParserOptions parserOptions = language.getLanguageVersionHandler().getDefaultParserOptions(); - Parser parser = language.getLanguageVersionHandler().getParser(parserOptions); - ASTCompilationUnit cu = (ASTCompilationUnit) parser.parse("test", new StringReader(SUFFIX)); + ASTCompilationUnit cu = JavaParsingHelper.WITH_PROCESSING.parse(SUFFIX); RuleContext ruleContext = new RuleContext(); ruleContext.setLanguageVersion(language); @@ -167,7 +164,7 @@ public class XPathRuleTest extends RuleTst { /** * Following sibling check: See https://sourceforge.net/p/pmd/bugs/1209/ - * + * * @throws Exception * any error */ @@ -176,9 +173,7 @@ public class XPathRuleTest extends RuleTst { final String SOURCE = "public class dummy {\n" + " public String toString() {\n" + " String test = \"bad example\";\n" + " test = \"a\";\n" + " return test;\n" + " }\n" + "}"; LanguageVersion language = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getDefaultVersion(); - ParserOptions parserOptions = language.getLanguageVersionHandler().getDefaultParserOptions(); - Parser parser = language.getLanguageVersionHandler().getParser(parserOptions); - ASTCompilationUnit cu = (ASTCompilationUnit) parser.parse("test", new StringReader(SOURCE)); + ASTCompilationUnit cu = JavaParsingHelper.WITH_PROCESSING.parse(SOURCE); RuleContext ruleContext = new RuleContext(); ruleContext.setLanguageVersion(language); diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/StdCyclomaticComplexityTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/StdCyclomaticComplexityTest.java deleted file mode 100644 index a3bbd6602f..0000000000 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/design/StdCyclomaticComplexityTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.java.rule.design; - -import java.io.StringReader; -import java.util.Arrays; - -import org.junit.Assert; -import org.junit.Test; - -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.Parser; -import net.sourceforge.pmd.lang.ParserOptions; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.java.JavaLanguageModule; -import net.sourceforge.pmd.testframework.PmdRuleTst; - -public class StdCyclomaticComplexityTest extends PmdRuleTst { - /** - * Make sure the entry stack is empty, if show classes complexity is - * disabled. - * - * @see bug #1501 - */ - @Test - public void entryStackMustBeEmpty() { - StdCyclomaticComplexityRule rule = new StdCyclomaticComplexityRule(); - rule.setProperty(StdCyclomaticComplexityRule.SHOW_CLASSES_COMPLEXITY_DESCRIPTOR, Boolean.FALSE); - - RuleContext ctx = new RuleContext(); - LanguageVersion javaLanguageVersion = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.8"); - ParserOptions parserOptions = javaLanguageVersion.getLanguageVersionHandler().getDefaultParserOptions(); - Parser parser = javaLanguageVersion.getLanguageVersionHandler().getParser(parserOptions); - Node node = parser.parse("test", new StringReader("public class SampleClass {}")); - - rule.apply(Arrays.asList(node), ctx); - - Assert.assertTrue(rule.entryStack.isEmpty()); - } -} diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/AbstractCommentRuleTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/AbstractCommentRuleTest.java index 19f80eeac1..514a75abef 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/AbstractCommentRuleTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/rule/documentation/AbstractCommentRuleTest.java @@ -6,18 +6,14 @@ package net.sourceforge.pmd.lang.java.rule.documentation; import static org.junit.Assert.assertEquals; -import java.io.Reader; -import java.io.StringReader; import java.util.List; import org.junit.Assert; import org.junit.Test; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken; -import net.sourceforge.pmd.lang.java.JavaLanguageModule; +import net.sourceforge.pmd.lang.java.JavaParsingHelper; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; import net.sourceforge.pmd.lang.java.ast.FormalComment; @@ -63,12 +59,9 @@ public class AbstractCommentRuleTest { @Test public void testCommentAssignments() { - LanguageVersionHandler handler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion("1.8") - .getLanguageVersionHandler(); - Reader source = new StringReader("public class Foo {" + " /** Comment 1 */\n" - + " public void method1() {}\n" + " \n" + " /** Comment 2 */\n" + " \n" - + " /** Comment 3 */\n" + " public void method2() {}" + "}"); - Node node = handler.getParser(handler.getDefaultParserOptions()).parse("test", source); + Node node = JavaParsingHelper.WITH_PROCESSING.parse("public class Foo {" + " /** Comment 1 */\n" + + " public void method1() {}\n" + " \n" + " /** Comment 2 */\n" + " \n" + + " /** Comment 3 */\n" + " public void method2() {}" + "}"); testSubject.assignCommentsToDeclarations((ASTCompilationUnit) node); List methods = node.findDescendantsOfType(ASTMethodDeclaration.class); diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParserTest.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParserTest.java index a9827b4984..2579564476 100644 --- a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParserTest.java +++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/ast/EcmascriptParserTest.java @@ -8,8 +8,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import java.io.Reader; -import java.io.StringReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -20,7 +18,6 @@ import org.mozilla.javascript.ast.AstRoot; import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.ecmascript.Ecmascript3Parser; import net.sourceforge.pmd.lang.ecmascript.EcmascriptParserOptions; import net.sourceforge.pmd.lang.ecmascript.rule.AbstractEcmascriptRule; @@ -142,18 +139,13 @@ public class EcmascriptParserTest extends EcmascriptParserTestBase { */ @Test public void testSuppressionComment() { - Ecmascript3Parser parser = new Ecmascript3Parser(new EcmascriptParserOptions()); - Reader sourceCode = new StringReader("function(x) {\n" + "x = x; //NOPMD I know what I'm doing\n" + "}\n"); - ASTAstRoot root = parser.parse("foo", sourceCode); + ASTAstRoot root = js.parse("function(x) {\n" + "x = x; //NOPMD I know what I'm doing\n" + "}\n"); assertEquals(" I know what I'm doing", root.getNoPmdComments().get(2)); assertEquals(1, root.getNoPmdComments().size()); EcmascriptParserOptions parserOptions = new EcmascriptParserOptions(); parserOptions.setSuppressMarker("FOOOO"); - parser = new Ecmascript3Parser(parserOptions); - sourceCode = new StringReader( - "function(x) {\n" + "y = y; //NOPMD xyz\n" + "x = x; //FOOOO I know what I'm doing\n" + "}\n"); - root = parser.parse("foo", sourceCode); + root = js.withParserOptions(parserOptions).parse("function(x) {\n" + "y = y; //NOPMD xyz\n" + "x = x; //FOOOO I know what I'm doing\n" + "}\n"); assertEquals(" I know what I'm doing", root.getNoPmdComments().get(3)); assertEquals(1, root.getNoPmdComments().size()); } diff --git a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/JspParserTest.java b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/JspParserTest.java index 6f4cae6f8b..0a1c3ff5d2 100644 --- a/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/JspParserTest.java +++ b/pmd-jsp/src/test/java/net/sourceforge/pmd/lang/jsp/JspParserTest.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.jsp; import java.io.File; -import java.io.StringReader; import java.nio.file.Paths; import org.junit.Assert; @@ -14,38 +13,29 @@ import org.junit.Test; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.LanguageVersionDiscoverer; -import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.Parser; -import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.jsp.ast.AbstractJspNodesTst; /** * Unit test for JSP parsing. * */ -public class JspParserTest { +public class JspParserTest extends AbstractJspNodesTst { /** * Verifies bug #939 Jsp parser fails on $ */ @Test public void testParseDollar() { - Node node = parse( - "$129.00"); - Assert.assertNotNull(node); } @Test public void testParseELAttribute() { - Node node = parse( - "
Div content here.
"); - Assert.assertNotNull(node); + jsp.parse("
Div content here.
"); } @Test public void testParseELAttributeValue() { - Node node = parse( - "
Div content here.
"); - Assert.assertNotNull(node); + jsp.parse("
Div content here.
"); } /** @@ -53,9 +43,7 @@ public class JspParserTest { */ @Test public void testParseBooleanAttribute() { - Node node = parse( - ""); - Assert.assertNotNull(node); + jsp.parse(""); } @Test @@ -81,11 +69,4 @@ public class JspParserTest { LanguageRegistry.getLanguage(JspLanguageModule.NAME).getDefaultVersion(), languageVersion); } - private Node parse(String code) { - LanguageVersionHandler jspLang = LanguageRegistry.getLanguage(JspLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler(); - Parser parser = jspLang.getParser(jspLang.getDefaultParserOptions()); - Node node = parser.parse(null, new StringReader(code)); - return node; - } } diff --git a/pmd-modelica/src/test/kotlin/net/sourceforge/pmd/lang/modelica/ast/ModelicaCoordsTest.kt b/pmd-modelica/src/test/kotlin/net/sourceforge/pmd/lang/modelica/ast/ModelicaCoordsTest.kt index 6ad15f5bb4..798e24cec7 100644 --- a/pmd-modelica/src/test/kotlin/net/sourceforge/pmd/lang/modelica/ast/ModelicaCoordsTest.kt +++ b/pmd-modelica/src/test/kotlin/net/sourceforge/pmd/lang/modelica/ast/ModelicaCoordsTest.kt @@ -7,11 +7,10 @@ package net.sourceforge.pmd.lang.modelica.ast import io.kotlintest.should import io.kotlintest.shouldBe import io.kotlintest.specs.FunSpec -import net.sourceforge.pmd.lang.LanguageRegistry import net.sourceforge.pmd.lang.ast.Node import net.sourceforge.pmd.lang.ast.test.matchNode import net.sourceforge.pmd.lang.ast.test.shouldBe -import java.io.StringReader +import net.sourceforge.pmd.lang.modelica.ModelicaParsingHelper class ModelicaCoordsTest : FunSpec({ @@ -108,12 +107,8 @@ end TestPackage; } }) -fun String.parseModelica(): ASTStoredDefinition { - val ver = LanguageRegistry.getLanguage("Modelica").defaultVersion.languageVersionHandler - val parser = ver.getParser(ver.defaultParserOptions) - - return parser.parse(":dummy:", StringReader(this)) as ASTStoredDefinition -} +fun String.parseModelica(): ASTStoredDefinition = + ModelicaParsingHelper.DEFAULT.parse(this) fun Node.assertBounds(bline: Int, bcol: Int, eline: Int, ecol: Int) { this::getBeginLine shouldBe bline diff --git a/pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt b/pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt index 21825ff9ea..fba7025046 100644 --- a/pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt +++ b/pmd-scala/src/test/kotlin/net/sourceforge/pmd/lang/scala/ast/ScalaTreeTests.kt @@ -6,11 +6,9 @@ package net.sourceforge.pmd.lang.scala.ast import io.kotlintest.should import io.kotlintest.specs.FunSpec -import net.sourceforge.pmd.lang.LanguageRegistry import net.sourceforge.pmd.lang.ast.Node import net.sourceforge.pmd.lang.ast.test.matchNode import net.sourceforge.pmd.lang.ast.test.shouldBe -import java.io.StringReader class ScalaTreeTests : FunSpec({ @@ -80,12 +78,7 @@ class Foo { } }) -fun String.parseScala(): ASTSource { - val ver = LanguageRegistry.getLanguage("Scala").defaultVersion.languageVersionHandler - val parser = ver.getParser(ver.defaultParserOptions) - - return parser.parse(":dummy:", StringReader(this)) as ASTSource -} +fun String.parseScala(): ASTSource = ScalaParsingHelper.DEFAULT.parse(this) fun Node.assertBounds(bline: Int, bcol: Int, eline: Int, ecol: Int) { this::getBeginLine shouldBe bline diff --git a/pmd-vm/pom.xml b/pmd-vm/pom.xml index f8effb5cf7..820acc3225 100644 --- a/pmd-vm/pom.xml +++ b/pmd-vm/pom.xml @@ -106,5 +106,10 @@ pmd-test test + + net.sourceforge.pmd + pmd-lang-test + test + diff --git a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/VmParserTest.java b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/VmParserTest.java index 2c5da25ff3..5956adfa63 100644 --- a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/VmParserTest.java +++ b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/VmParserTest.java @@ -4,31 +4,24 @@ package net.sourceforge.pmd.lang.vm; -import java.io.StringReader; - -import org.junit.Assert; import org.junit.Test; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.Parser; -import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.vm.ast.VmParsingHelper; /** * Unit test for VM parsing. - * */ public class VmParserTest { private static final String VM_SRC = "Hello $customer.Name " - + "#foreach($mud in $mudsOnSpecial)" + " #if ( $customer.hasPurchased($mud) )" + " " + " " + " " + " #elseif ($customer.broke) do stuff #end" - + "\n " + "#end " + "
" - + " $flogger.getPromo( $mud )" + "
"; + + "#foreach($mud in $mudsOnSpecial)" + " #if ( $customer.hasPurchased($mud) )" + " " + " " + + " $flogger.getPromo( $mud )" + " " + " " + " #elseif ($customer.broke) do stuff #end" + + "\n " + "#end " + ""; private static final String SRC2 = "#macro(tablerows $color $values ) " + "#foreach( $value in $values ) " - + "$value " + "#end " + "#end " - + "#set( $greatlakes = [\"Superior\",\"Michigan\",\"Huron\",\"Erie\",\"Ontario\"] ) " - + "#set( $color = \"blue\" ) " + " " + " #tablerows( $color $greatlakes ) " + "
"; + + "$value " + "#end " + "#end " + + "#set( $greatlakes = [\"Superior\",\"Michigan\",\"Huron\",\"Erie\",\"Ontario\"] ) " + + "#set( $color = \"blue\" ) " + " " + " #tablerows( $color $greatlakes ) " + "
"; private static final String SRC3 = "#if ( $c1 ) #if ( $c2)#end #end"; @@ -37,27 +30,17 @@ public class VmParserTest { @Test public void testParser() { - final Node node = parse(VM_SRC); - Assert.assertNotNull(node); + VmParsingHelper.DEFAULT.parse(VM_SRC); } @Test public void testParser2() { - final Node node = parse(SRC2); - Assert.assertNotNull(node); + VmParsingHelper.DEFAULT.parse(SRC2); } @Test public void testParser3() { - final Node node = parse(SRC3); - Assert.assertNotNull(node); + VmParsingHelper.DEFAULT.parse(SRC3); } - private Node parse(final String code) { - final LanguageVersionHandler vmLang = LanguageRegistry.getLanguage(VmLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler(); - final Parser parser = vmLang.getParser(vmLang.getDefaultParserOptions()); - final Node node = parser.parse(null, new StringReader(code)); - return node; - } } diff --git a/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java new file mode 100644 index 0000000000..2753b20fde --- /dev/null +++ b/pmd-vm/src/test/java/net/sourceforge/pmd/lang/vm/ast/VmParsingHelper.java @@ -0,0 +1,22 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.vm.ast; + +import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper; +import net.sourceforge.pmd.lang.vm.VmLanguageModule; + +public final class VmParsingHelper extends BaseParsingHelper { + + public static final VmParsingHelper DEFAULT = new VmParsingHelper(Params.getDefaultProcess()); + + private VmParsingHelper(Params params) { + super(VmLanguageModule.NAME, ASTprocess.class, params); + } + + @Override + protected VmParsingHelper clone(Params params) { + return new VmParsingHelper(params); + } +} diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/wsdl/rule/AbstractWsdlRuleTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/wsdl/rule/AbstractWsdlRuleTest.java index d1a2daee7a..f6ba2361d6 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/wsdl/rule/AbstractWsdlRuleTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/wsdl/rule/AbstractWsdlRuleTest.java @@ -6,18 +6,14 @@ package net.sourceforge.pmd.lang.wsdl.rule; import static org.junit.Assert.assertEquals; -import java.io.StringReader; import java.util.ArrayList; import java.util.List; import org.junit.Test; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.Parser; import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.wsdl.WsdlLanguageModule; -import net.sourceforge.pmd.lang.xml.XmlParserOptions; +import net.sourceforge.pmd.lang.xml.XmlParsingHelper; import net.sourceforge.pmd.lang.xml.ast.XmlNode; public class AbstractWsdlRuleTest { @@ -25,10 +21,7 @@ public class AbstractWsdlRuleTest { @Test public void testVisit() throws Exception { String source = ""; - XmlParserOptions parserOptions = new XmlParserOptions(); - Parser parser = LanguageRegistry.getLanguage(WsdlLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler().getParser(parserOptions); - XmlNode xmlNode = (XmlNode) parser.parse(null, new StringReader(source)); + XmlNode xmlNode = XmlParsingHelper.WSDL.parse(source); List nodes = new ArrayList<>(); nodes.add(xmlNode); diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParserTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParserTest.java index eb7875d8b2..01bbe874eb 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParserTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/XmlParserTest.java @@ -8,7 +8,6 @@ import static net.sourceforge.pmd.lang.xml.XmlParsingHelper.XML; import java.io.ByteArrayOutputStream; import java.io.PrintStream; -import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.Locale; @@ -16,9 +15,6 @@ import java.util.Locale; import org.junit.Assert; import org.junit.Test; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.Parser; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.xpath.Attribute; import net.sourceforge.pmd.lang.xml.ast.XmlNode; @@ -329,12 +325,9 @@ public class XmlParserTest { @Test public void testWithProcessingInstructions() { String xml = "]>TEXT>&myentity;<"; - LanguageVersionHandler xmlVersionHandler = LanguageRegistry.getLanguage(XmlLanguageModule.NAME) - .getDefaultVersion().getLanguageVersionHandler(); - XmlParserOptions options = (XmlParserOptions) xmlVersionHandler.getDefaultParserOptions(); + XmlParserOptions options = new XmlParserOptions(); options.setExpandEntityReferences(false); - Parser parser = xmlVersionHandler.getParser(options); - Node document = parser.parse(null, new StringReader(xml)); + Node document = XmlParsingHelper.XML.withParserOptions(options).parse(xml); Assert.assertNotNull(document); assertNode(document.getChild(0), "mypi", 0); assertLineNumbers(document.getChild(0), 1, 22, 1, 29); diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractDomXmlRuleTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractDomXmlRuleTest.java index aabe64256b..c1ec90dea2 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractDomXmlRuleTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractDomXmlRuleTest.java @@ -7,7 +7,6 @@ package net.sourceforge.pmd.lang.xml.rule; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import java.io.StringReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -27,11 +26,9 @@ import org.w3c.dom.ProcessingInstruction; import org.w3c.dom.Text; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.Parser; import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.xml.XmlLanguageModule; import net.sourceforge.pmd.lang.xml.XmlParserOptions; +import net.sourceforge.pmd.lang.xml.XmlParsingHelper; import net.sourceforge.pmd.lang.xml.ast.XmlNode; public class AbstractDomXmlRuleTest { @@ -41,9 +38,8 @@ public class AbstractDomXmlRuleTest { String source = "]>TEXT>&entity;<"; XmlParserOptions parserOptions = new XmlParserOptions(); parserOptions.setExpandEntityReferences(false); - Parser parser = LanguageRegistry.getLanguage(XmlLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler().getParser(parserOptions); - XmlNode xmlNode = (XmlNode) parser.parse(null, new StringReader(source)); + + XmlNode xmlNode = XmlParsingHelper.XML.withParserOptions(parserOptions).parse(source); List nodes = new ArrayList<>(); nodes.add(xmlNode); @@ -108,9 +104,7 @@ public class AbstractDomXmlRuleTest { + " \"http://jakarta.inexistinghost.org/struts/dtds/struts-config_1_1.dtd\" >" + ""; XmlParserOptions parserOptions = new XmlParserOptions(); parserOptions.setLookupDescriptorDoc(false); - Parser parser = LanguageRegistry.getLanguage(XmlLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler().getParser(parserOptions); - XmlNode xmlNode = (XmlNode) parser.parse(null, new StringReader(source)); + XmlNode xmlNode = XmlParsingHelper.XML.withParserOptions(parserOptions).parse(source); // no exception should be thrown MyRule rule = new MyRule(); @@ -130,10 +124,7 @@ public class AbstractDomXmlRuleTest { + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " + "xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.inexisting.com/xml/ns/javaee/web-app_2_5.xsd\" " + "version=\"2.5\">" + ""; - XmlParserOptions parserOptions = new XmlParserOptions(); - Parser parser = LanguageRegistry.getLanguage(XmlLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler().getParser(parserOptions); - XmlNode xmlNode = (XmlNode) parser.parse(null, new StringReader(source)); + XmlNode xmlNode = XmlParsingHelper.XML.parse(source); // no exception should be thrown // first element is still parsed MyRule rule = new MyRule(); diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRuleTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRuleTest.java index 25b3137d79..cd7058af7d 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRuleTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRuleTest.java @@ -6,18 +6,14 @@ package net.sourceforge.pmd.lang.xml.rule; import static org.junit.Assert.assertEquals; -import java.io.StringReader; import java.util.ArrayList; import java.util.List; import org.junit.Test; import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.LanguageRegistry; -import net.sourceforge.pmd.lang.Parser; import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.xml.XmlLanguageModule; -import net.sourceforge.pmd.lang.xml.XmlParserOptions; +import net.sourceforge.pmd.lang.xml.XmlParsingHelper; import net.sourceforge.pmd.lang.xml.ast.XmlNode; public class AbstractXmlRuleTest { @@ -25,10 +21,7 @@ public class AbstractXmlRuleTest { @Test public void testVisit() throws Exception { String source = ""; - XmlParserOptions parserOptions = new XmlParserOptions(); - Parser parser = LanguageRegistry.getLanguage(XmlLanguageModule.NAME).getDefaultVersion() - .getLanguageVersionHandler().getParser(parserOptions); - XmlNode xmlNode = (XmlNode) parser.parse(null, new StringReader(source)); + XmlNode xmlNode = XmlParsingHelper.XML.parse(source); List nodes = new ArrayList<>(); nodes.add(xmlNode);