Fix ant tests - PMDTaskTest is moved partly to java,

javascript and xml
This commit is contained in:
Andreas Dangel
2014-10-06 22:46:01 +02:00
parent a36239bbc1
commit 17b573ef81
18 changed files with 413 additions and 258 deletions

View File

@ -0,0 +1,81 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.ant;
import org.junit.Test;
public class PMDTaskTest extends AbstractAntTestHelper {
public PMDTaskTest() {
super.antTestScriptFilename = "pmdtasktest.xml";
}
@Test
public void testNoFormattersValidation() {
executeTarget("testNoFormattersValidation");
assertOutputContaining("Fields should be declared at the top of the class");
}
@Test
public void testNestedRuleset() {
executeTarget("testNestedRuleset");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testFormatterWithProperties() {
executeTarget("testFormatterWithProperties");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
assertOutputContaining("link_prefix");
assertOutputContaining("line_prefix");
}
@Test
public void testAbstractNames() {
executeTarget("testAbstractNames");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testAbstractNamesInNestedRuleset() {
executeTarget("testAbstractNamesInNestedRuleset");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testCommaInRulesetfiles() {
executeTarget("testCommaInRulesetfiles");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testRelativeRulesets() {
executeTarget("testRelativeRulesets");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testRelativeRulesetsInRulesetfiles() {
executeTarget("testRelativeRulesetsInRulesetfiles");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at");
}
@Test
public void testExplicitRuleInRuleSet() {
executeTarget("testExplicitRuleInRuleSet");
assertOutputContaining("Avoid really long methods");
}
@Test
public void testClasspath() {
executeTarget("testClasspath");
}
}

View File

@ -0,0 +1,110 @@
package ant.java;
public class PMDTaskTestExample {
// must be 100+ lines long
public void veryLongMethod() {
int a;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
a -= 1;
a += 1;
}
private int testField; // this will trigger a "Fields should be declared at top"
}

View File

@ -0,0 +1,110 @@
<project name="pmdtasktest" default="all">
<property name="pmd.home" value="${user.dir}"/>
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<target name="testNestedRuleset">
<pmd>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/codesize.xml</ruleset>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/design.xml</ruleset>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testFormatterWithProperties">
<pmd>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/codesize.xml</ruleset>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/design.xml</ruleset>
<formatter type="summaryhtml" toConsole="true">
<param name="linkPrefix" value="link_prefix"/>
<param name="linePrefix" value="line_prefix"/>
</formatter>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testAbstractNames">
<pmd rulesetfiles="java-codesize,java-design">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testAbstractNamesInNestedRuleset">
<pmd>
<ruleset>java-codesize</ruleset>
<ruleset>java-design</ruleset>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testCommaInRulesetfiles">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/codesize.xml,${pmd.home}/src/main/resources/rulesets/java/design.xml">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testRelativeRulesets">
<pmd>
<ruleset>custom_ruleset.xml</ruleset>
<ruleset>rulesets/java/design.xml</ruleset>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testRelativeRulesetsInRulesetfiles">
<pmd rulesetfiles="custom_ruleset.xml,src/main/resources/rulesets/java/design.xml">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testNoFormattersValidation">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/design.xml">
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testExplicitRuleInRuleSet">
<pmd rulesetfiles="src/main/resources/rulesets/java/codesize.xml/ExcessiveMethodLength">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/java">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testClasspath">
<pmd>
<ruleset>classpathtest/ruleset.xml</ruleset>
<classpath>
<pathelement path="${pmd.home}/target/classes"/>
<pathelement path="${pmd.home}/target/test-classes"/>
<pathelement path="${pmd.home}/target/test-classes/net/sourceforge/pmd/ant"/>
<pathelement path="${pmd.home}/target/clover/test-classes"/>
<pathelement path="${pmd.home}/target/clover/test-classes/net/sourceforge/pmd/ant"/>
</classpath>
</pmd>
</target>
</project>

View File

@ -0,0 +1,21 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.ant;
import org.junit.Test;
public class PMDTaskTest extends AbstractAntTestHelper {
public PMDTaskTest() {
super.antTestScriptFilename = "pmdtasktest.xml";
}
@Test
public void testEcmascript() {
executeTarget("testEcmascript");
assertOutputContaining("A 'return', 'break', 'continue', or 'throw' statement should be the last in a block.");
assertOutputContaining("Avoid using global variables");
assertOutputContaining("Use ===/!== to compare with true/false or Numbers");
}
}

View File

@ -0,0 +1,19 @@
<project name="pmdtasktest" default="all">
<property name="pmd.home" value="${user.dir}" />
<property name="src" value="src/main/java" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
<target name="testEcmascript">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/ecmascript/basic.xml">
<sourceLanguage name="ecmascript" version="3" />
<formatter type="text" toConsole="true" />
<fileset dir="${pmd.home}/src/test/resources/ant/ecmascript/">
<include name="*.js" />
</fileset>
</pmd>
</target>
</project>

View File

@ -20,5 +20,9 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-testutil</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,19 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.ant;
import org.junit.Test;
public class PMDTaskTest extends AbstractAntTestHelper {
public PMDTaskTest() {
super.antTestScriptFilename = "pmdtasktest.xml";
}
@Test
public void testXML() {
executeTarget("testXML");
assertOutputContaining("Potentialy mistyped CDATA section with extra [ at beginning or ] at the end.");
}
}

View File

@ -0,0 +1,17 @@
<project name="pmdtasktest" default="all">
<property name="pmd.home" value="${user.dir}" />
<property name="src" value="src/main/java" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
<target name="testXML">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/xml/basic.xml">
<sourceLanguage name="xml" version="" />
<formatter type="text" toConsole="true" />
<fileset dir="${pmd.home}/src/test/resources/ant/xml/">
<include name="*.xml" />
</fileset>
</pmd>
</target>
</project>

View File

@ -1,20 +0,0 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.ant;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
/**
* Tests for the net.sourceforge.pmd.ant package
*
* @author Boris Gruschko ( boris at gruschko.org )
*/
@RunWith(Suite.class)
@SuiteClasses({FormatterTest.class, PMDTaskTest.class, CPDTaskTest.class})
public class AntTests {
}

View File

@ -5,6 +5,7 @@ package net.sourceforge.pmd.ant;
import java.io.File;
import org.apache.tools.ant.BuildFileTest;
import org.junit.Test;
/**
@ -12,18 +13,20 @@ import org.junit.Test;
* @author Romain Pelisse <belaran@gmail.com>
*
*/
public class CPDTaskTest extends AbstractAntTestHelper {
public class CPDTaskTest extends BuildFileTest {
public CPDTaskTest() {
super.antTestScriptFilename = "cpdtasktest.xml";
}
@Override
protected void setUp() throws Exception {
super.setUp();
configureProject("src/test/resources/net/sourceforge/pmd/ant/xml/cpdtasktest.xml");
}
@Test
public void testBasic() {
executeTarget("testBasic");
// FIXME: This clearly needs to be improved - but I don't like to write test,
// so feel free to contribute :)
// FIXME: This clearly needs to be improved - but I don't like to write
// test,
// so feel free to contribute :)
assertTrue(new File("target/cpd.ant.tests").exists());
}
}

View File

@ -3,18 +3,15 @@
*/
package net.sourceforge.pmd.ant;
import org.apache.tools.ant.BuildFileTest;
import org.junit.Test;
public class PMDTaskTest extends AbstractAntTestHelper {
public class PMDTaskTest extends BuildFileTest {
public PMDTaskTest() {
super.antTestScriptFilename = "pmdtasktest.xml";
}
@Test
public void testNoFormattersValidation() {
executeTarget("testNoFormattersValidation");
assertOutputContaining("Fields should be declared at the top of the class");
@Override
protected void setUp() throws Exception {
super.setUp();
configureProject("src/test/resources/net/sourceforge/pmd/ant/xml/pmdtasktest.xml");
}
@Test
@ -27,57 +24,6 @@ public class PMDTaskTest extends AbstractAntTestHelper {
expectBuildExceptionContaining("testNoRuleSets", "Valid Error Message", "No rulesets specified");
}
@Test
public void testNestedRuleset() {
executeTarget("testNestedRuleset");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testFormatterWithProperties() {
executeTarget("testFormatterWithProperties");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
assertOutputContaining("link_prefix");
assertOutputContaining("line_prefix");
}
@Test
public void testAbstractNames() {
executeTarget("testAbstractNames");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testAbstractNamesInNestedRuleset() {
executeTarget("testAbstractNamesInNestedRuleset");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testCommaInRulesetfiles() {
executeTarget("testCommaInRulesetfiles");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testRelativeRulesets() {
executeTarget("testRelativeRulesets");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at the");
}
@Test
public void testRelativeRulesetsInRulesetfiles() {
executeTarget("testRelativeRulesetsInRulesetfiles");
assertOutputContaining("Avoid really long methods");
assertOutputContaining("Fields should be declared at");
}
@Test
public void testBasic() {
executeTarget("testBasic");
@ -87,33 +33,4 @@ public class PMDTaskTest extends AbstractAntTestHelper {
public void testInvalidLanguageVersion() {
expectBuildExceptionContaining("testInvalidLanguageVersion", "Fail requested.", "The following language is not supported:<language name=\"java\" version=\"42\" />.");
}
@Test
public void testExplicitRuleInRuleSet() {
executeTarget("testExplicitRuleInRuleSet");
assertOutputContaining("Avoid really long methods");
}
@Test
public void testEcmascript() {
executeTarget("testEcmascript");
assertOutputContaining("A 'return', 'break', 'continue', or 'throw' statement should be the last in a block.");
assertOutputContaining("Avoid using global variables");
assertOutputContaining("Use ===/!== to compare with true/false or Numbers");
}
@Test
public void testXML() {
executeTarget("testXML");
assertOutputContaining("Potentialy mistyped CDATA section with extra [ at beginning or ] at the end.");
}
@Test
public void testClasspath() {
executeTarget("testClasspath");
}
public static junit.framework.Test suite() {
return new junit.framework.JUnit4TestAdapter(PMDTaskTest.class);
}
}

View File

@ -1,153 +1,27 @@
<project name="pmdtasktest" default="all">
<property name="pmd.home" value="${user.dir}"/>
<property name="src" value="src/main/java"/>
<property name="pmd.home" value="${user.dir}" />
<property name="src" value="src/main/java" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
<target name="all" depends="testBasic, testInvalidLanguageVersion, testFormatterWithNoToFileAttribute, testNoRuleSets, testNestedRuleset, testFormatterWithProperties, testCommaInRulesetfiles, testRelativeRulesets, testRelativeRulesetsInRulesetfiles, testNoFormattersValidation"/>
<target name="testBasic">
<pmd rulesetfiles="${pmd.home}/src/test/resources/rulesets/dummy/basic.xml" />
</target>
<target name="testBasic">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/basic.xml"/>
</target>
<target name="testInvalidLanguageVersion">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/design.xml">
<sourceLanguage name="java" version="42"/>
</pmd>
</target>
<target name="testFormatterWithNoToFileAttribute">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/design.xml">
<formatter/>
</pmd>
</target>
<target name="testNoRuleSets">
<pmd/>
</target>
<target name="testNestedRuleset">
<pmd>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/codesize.xml</ruleset>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/design.xml</ruleset>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testFormatterWithProperties">
<pmd>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/codesize.xml</ruleset>
<ruleset>${pmd.home}/src/main/resources/rulesets/java/design.xml</ruleset>
<formatter type="summaryhtml" toConsole="true">
<param name="linkPrefix" value="link_prefix"/>
<param name="linePrefix" value="line_prefix"/>
</formatter>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testAbstractNames">
<pmd rulesetfiles="java-codesize,java-design">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testAbstractNamesInNestedRuleset">
<pmd>
<ruleset>java-codesize</ruleset>
<ruleset>java-design</ruleset>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testCommaInRulesetfiles">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/codesize.xml,${pmd.home}/src/main/resources/rulesets/java/design.xml">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testRelativeRulesets">
<pmd>
<ruleset>custom_ruleset.xml</ruleset>
<ruleset>rulesets/java/design.xml</ruleset>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testRelativeRulesetsInRulesetfiles">
<pmd rulesetfiles="custom_ruleset.xml,src/main/resources/rulesets/java/design.xml">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testNoFormattersValidation">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/java/design.xml">
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testExplicitRuleInRuleSet">
<pmd rulesetfiles="src/main/resources/rulesets/java/codesize.xml/ExcessiveMethodLength">
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/${src}/net/sourceforge/pmd/ant">
<include name="*.java"/>
</fileset>
</pmd>
</target>
<target name="testEcmascript">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/ecmascript/basic.xml">
<sourceLanguage name="ecmascript" version="3"/>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/ecmascript/">
<include name="*.js"/>
</fileset>
</pmd>
</target>
<target name="testXML">
<pmd rulesetfiles="${pmd.home}/src/main/resources/rulesets/xml/basic.xml">
<sourceLanguage name="xml" version=""/>
<formatter type="text" toConsole="true"/>
<fileset dir="${pmd.home}/src/test/resources/ant/xml/">
<include name="*.xml"/>
</fileset>
<target name="testInvalidLanguageVersion">
<pmd rulesetfiles="${pmd.home}/src/test/resources/rulesets/dummy/basic.xml">
<sourceLanguage name="java" version="42" />
</pmd>
</target>
<target name="testClasspath">
<pmd>
<ruleset>classpathtest/ruleset.xml</ruleset>
<classpath>
<pathelement path="${pmd.home}/target/classes"/>
<pathelement path="${pmd.home}/target/test-classes"/>
<pathelement path="${pmd.home}/target/test-classes/net/sourceforge/pmd/ant"/>
<pathelement path="${pmd.home}/target/clover/test-classes"/>
<pathelement path="${pmd.home}/target/clover/test-classes/net/sourceforge/pmd/ant"/>
</classpath>
<target name="testFormatterWithNoToFileAttribute">
<pmd rulesetfiles="${pmd.home}/src/test/resources/rulesets/dummy/basic.xml">
<formatter />
</pmd>
</target>
<target name="testNoRuleSets">
<pmd />
</target>
</project>