Mercurial > hg > graal-jvmci-8
diff mx/JUnitWrapper.java @ 16304:12f2b3baa163
JUnit Reporting
author | Stefan Anzinger <stefan.anzinger@gmail.com> |
---|---|
date | Sat, 19 Apr 2014 15:32:02 +0200 |
parents | f38f746f4980 |
children | 151fe6b1e511 |
line wrap: on
line diff
--- a/mx/JUnitWrapper.java Sat Apr 19 15:29:48 2014 +0200 +++ b/mx/JUnitWrapper.java Sat Apr 19 15:32:02 2014 +0200 @@ -21,24 +21,30 @@ * questions. */ - /* Execute testcases by reading names from a given file, due to limits of * the operating system regarding command line size (windows: 32k, * linux [depending on the settings]: ~2097k) * see http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx */ +import org.apache.tools.ant.*; +import org.apache.tools.ant.taskdefs.optional.junit.*; +import org.apache.tools.ant.taskdefs.optional.junit.FormatterElement.TypeAttribute; +import org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.*; +import org.apache.tools.ant.types.*; +import org.apache.tools.ant.types.selectors.*; import org.junit.runner.*; + import java.io.*; import java.util.*; public class JUnitWrapper { /** - * @param args - * args[0] is the path where to read the names of the testclasses. + * @param args args[0] is the path where to read the names of the testclasses. + * @throws Exception */ - public static void main(String[] args) { + public static void main(String[] args) throws Exception { if (args.length == 0) { System.err.printf("wrong usage. provide a filename\n"); System.exit(1); @@ -72,6 +78,69 @@ } else { System.out.printf("executing junit tests now... (%d test classes)\n", strargs.length); } - JUnitCore.main(strargs); + + JUnitTask task = new JUnitTask(); + task.setCloneVm(true); + task.setProject(new Project()); + task.getProject().setSystemProperties(); + + task.getProject().setBasedir("."); + TypeAttribute ta = new TypeAttribute(); + ta.setValue("xml"); + FormatterElement fe = new FormatterElement(); + fe.setType(ta); + task.addFormatter(fe); + + File reportDir = new File("report"); + reportDir.mkdirs(); + File xmldir = new File(reportDir, "xml"); + xmldir.mkdirs(); + Set<String> ignore = new HashSet<>(); + ignore.add("com.oracle.truffle.api.dsl.test.BinaryNodeTest"); + ignore.add("com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTest"); + ignore.add("com.oracle.truffle.api.test.FrameTest"); + ignore.add("com.oracle.truffle.api.dsl.test.UnsupportedSpecializationTest"); + ignore.add("com.oracle.truffle.sl.test.SLSimpleTestSuite"); + ignore.add("com.oracle.graal.compiler.test.ea.UnsafeEATest"); + ignore.add("com.oracle.graal.hotspot.test.HotSpotNmethodTest"); + ignore.add("com.oracle.graal.hotspot.test.WriteBarrierAdditionTest"); + ignore.add("com.oracle.graal.hotspot.test.CompressedOopTest"); + ignore.add("com.oracle.graal.compiler.test.deopt.MonitorDeoptTest"); // Probably CString problem + for (String name : tests) { + JUnitTest t = new JUnitTest(); + t.setName(name); + t.setTodir(xmldir); + if (new File(xmldir, "TEST-" + name + ".xml").exists() || ignore.contains(name) + ) { + System.out.println("Ignoring testclass " + name); + t.setIf("run.all"); + } + t.setFork(false); + t.setHaltonerror(false); + t.setHaltonfailure(false); + task.addTest(t); + } + SummaryAttribute sa = new SummaryAttribute(); + sa.setValue("withOutAndErr"); + task.setPrintsummary(sa); + task.setFork(false); + task.setShowOutput(true); + task.setOutputToFormatters(true); + task.setHaltonerror(false); + + task.execute(); + XMLResultAggregator report = new XMLResultAggregator(); + report.setProject(task.getProject()); + report.setTofile(new File(reportDir, "unittest-report-merged.xml").getPath()); + FileSet resultFileSet = new FileSet(); + resultFileSet.setDir(xmldir); + resultFileSet.setIncludes("*"); + report.addFileSet(resultFileSet); + report.execute(); + AggregateTransformer at = report.createReport(); + File htmlDir = new File(reportDir, "html"); + htmlDir.mkdirs(); + at.setTodir(htmlDir); + at.transform(); } }