From 4405312c1b1e5e8fcc0db367750a7b8a7684d8c8 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Thu, 5 May 2016 19:06:31 +0200 Subject: [PATCH] Refactor PMDTaskTest in java, too using BuildFileRule --- .../net/sourceforge/pmd/ant/PMDTaskTest.java | 6 +- .../pmd/ant/AbstractAntTestHelper.java | 76 +++++++++++-------- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java index 4fa812ff2b..7d2fbd5889 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/ant/PMDTaskTest.java @@ -7,9 +7,9 @@ import org.junit.Test; public class PMDTaskTest extends AbstractAntTestHelper { - public PMDTaskTest() { - super.antTestScriptFilename = "pmdtasktest.xml"; - } + public PMDTaskTest() { + super.antTestScriptFilename = "pmdtasktest.xml"; + } @Test public void testNoFormattersValidation() { diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/ant/AbstractAntTestHelper.java b/pmd-test/src/main/java/net/sourceforge/pmd/ant/AbstractAntTestHelper.java index 924dd0344a..70f4acca26 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/ant/AbstractAntTestHelper.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/ant/AbstractAntTestHelper.java @@ -7,7 +7,11 @@ import static java.io.File.separator; import java.io.File; -import org.apache.tools.ant.BuildFileTest; +import org.apache.tools.ant.BuildFileRule; +import org.apache.tools.ant.Project; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; /** * Quite an ugly classe, arguably useful for just 2 units test - nevertheless as @@ -17,39 +21,51 @@ import org.apache.tools.ant.BuildFileTest; * @author Romain Pelisse * */ -public abstract class AbstractAntTestHelper extends BuildFileTest { +public abstract class AbstractAntTestHelper { - protected String pathToTestScript; - protected String antTestScriptFilename; - public String mvnWorkaround; + @Rule + public final BuildFileRule buildRule = new BuildFileRule(); - public AbstractAntTestHelper() { - mvnWorkaround = "pmd/ant/xml"; - if (new File("target/clover/test-classes").exists()) { - pathToTestScript = "target/clover/test-classes/net/sourceforge/" + mvnWorkaround; - } else { + protected String pathToTestScript; + protected String antTestScriptFilename; + public String mvnWorkaround; + + public AbstractAntTestHelper() { + mvnWorkaround = "pmd/ant/xml"; + if (new File("target/clover/test-classes").exists()) { + pathToTestScript = "target/clover/test-classes/net/sourceforge/" + mvnWorkaround; + } else { pathToTestScript = "target/test-classes/net/sourceforge/" + mvnWorkaround; - } - } - - @Override - public void setUp() { - validatePostConstruct(); - // initialize Ant - configureProject(pathToTestScript + separator + antTestScriptFilename); - if (!project.getBaseDir().toString().endsWith(mvnWorkaround)) { - // when running from maven, the path needs to be adapted... - // FIXME: this is more a workaround than a good solution... - project.setBasedir(project.getBaseDir().toString() - + separator + pathToTestScript); } } - private void validatePostConstruct() { - if ( pathToTestScript == null || "".equals(pathToTestScript) || - antTestScriptFilename == null || "".equals(antTestScriptFilename) || - mvnWorkaround == null || "".equals(mvnWorkaround) ) { - throw new IllegalStateException("Unit tests for Ant script badly initialized"); - } - } + @Before + public void setUp() { + validatePostConstruct(); + // initialize Ant + buildRule.configureProject(pathToTestScript + separator + antTestScriptFilename); + + Project project = buildRule.getProject(); + if (!project.getBaseDir().toString().endsWith(mvnWorkaround)) { + // when running from maven, the path needs to be adapted... + // FIXME: this is more a workaround than a good solution... + project.setBasedir(project.getBaseDir().toString() + separator + pathToTestScript); + } + } + + private void validatePostConstruct() { + if (pathToTestScript == null || "".equals(pathToTestScript) || antTestScriptFilename == null + || "".equals(antTestScriptFilename) || mvnWorkaround == null || "".equals(mvnWorkaround)) { + throw new IllegalStateException("Unit tests for Ant script badly initialized"); + } + } + + public void executeTarget(String target) { + buildRule.executeTarget(target); + } + + public void assertOutputContaining(String text) { + Assert.assertTrue("Expected to find \"" + text + "\" in the output, but it's missing", + buildRule.getOutput().contains(text)); + } }