package net.sourceforge.cobertura.ant; import groovy.util.Node; import java.io.File; import net.sourceforge.cobertura.test.util.TestUtils; import org.apache.tools.ant.BuildLogger; import org.apache.tools.ant.DefaultLogger; import org.apache.tools.ant.MagicNames; import org.apache.tools.ant.Project; import org.apache.tools.ant.ProjectHelper; import org.junit.Rule; import org.junit.rules.TestName; /** * Tutorial on how to add a new Ant Test unit. * * In this case we are creating a new argument called IgnoreMethodAnnotations. * * 1. Copy src/test/resources/ant/basic and rename the folder. In this case we rename to IgnoreMethodAnnotations. * 2. Make a new test unit (call it IgnoreMethodAnnotationAntTest) and extend this class. * 3. In test unit, set buildXmlFile = src/test/resources/ant/IgnoreMethodAnnotations/build.xml. * 4. Make modification to the build.xml file accordingly. * 5. To execute ant, call super.executeAntTarget(TARGET_NAME) * 6. To verify execution there are helper methods that can do verification for you. * If you would like to obtain the xml document it is public groovy.util.Node dom. * * * @author schristou88 * */ public class AbstractCoberturaAntTestCase { public File buildXmlFile; @Rule public TestName name = new TestName(); public Node dom; /** * NOTE: Must set the baseDir before executing this command. * * @param target Name of the target * @throws Exception */ public void executeAntTarget(String target) throws Exception { Exception error = null; Project project = new Project(); BuildLogger buildLogger = new DefaultLogger(); buildLogger.setErrorPrintStream(System.err); buildLogger.setOutputPrintStream(System.out); try { System.out.println(buildXmlFile.getAbsolutePath()); project.addBuildListener(buildLogger); project.fireBuildStarted(); project.init(); project.setUserProperty(MagicNames.ANT_FILE, buildXmlFile .getAbsolutePath()); ProjectHelper.configureProject(project, buildXmlFile); project.executeTarget(target); } catch (Exception e) { error = e; throw e; } finally { project.fireBuildFinished(error); } dom = TestUtils.getXMLReportDOM(new File(buildXmlFile.getParentFile(), "reports/cobertura-xml/coverage.xml")); } }