Skip to content

Commit

Permalink
[playframework#463] Generate Surefire report when generating Unit tes…
Browse files Browse the repository at this point in the history
…ts reports
  • Loading branch information
Jean-Philippe Briend authored and guillaumebort committed Dec 7, 2010
1 parent 26af83c commit 02c89b4
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -120,4 +120,5 @@ samples-and-tests/zencontact/precompiled
!modules/console
!modules/grizzly
!modules/secure
!modules/testrunner
!framework/src/play/db
16 changes: 15 additions & 1 deletion framework/src/play/test/TestEngine.java
Expand Up @@ -152,17 +152,31 @@ public void testFailure(Failure failure) throws Exception {
@Override
public void testFinished(Description description) throws Exception {
current.time = System.currentTimeMillis() - current.time;
results.results.add(current);
results.add(current);
}
}

public static class TestResults {

public List<TestResult> results = new ArrayList<TestResult>();
public boolean passed = true;
public int success = 0;
public int errors = 0;
public int failures = 0;
public long time = 0;

public void add(TestResult result) {
time = result.time + time;
this.results.add(result);
if (result.passed) {
success++;
} else {
if (result.error.startsWith("Failure")) {
failures++;
} else {
errors++;
}
}
}
}

Expand Down
5 changes: 5 additions & 0 deletions modules/testrunner/app/controllers/TestRunner.java
Expand Up @@ -71,8 +71,13 @@ public static void run(String test) throws Exception {
options.put("test", test);
options.put("results", results);
String result = resultTemplate.render(options);
options.remove("out");
resultTemplate = TemplateLoader.load("TestRunner/results-xunit.xml");
String resultXunit = resultTemplate.render(options);
File testResults = Play.getFile("test-result/" + test + (results.passed ? ".passed" : ".failed") + ".html");
File testXunitResults = Play.getFile("test-result/TEST-" + test.substring(0, test.length()-6) + ".xml");
IO.writeContent(result, testResults);
IO.writeContent(resultXunit, testXunitResults);
response.contentType = "text/html";
renderText(result);
}
Expand Down
36 changes: 36 additions & 0 deletions modules/testrunner/app/views/TestRunner/results-xunit.xml
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>

<testsuite failures="${results.failures}" time="${results.time/1000}" errors="${results.errors}" skipped="0" tests="${results.success}" name="${test.cut(".class")}">
#{list items:results.results, as:'result'}
<testcase classname="${test.cut(".class")}" name="${result.name}" time="${result.time/1000}">
#{if !result.passed}
#{if result.error?.startsWith("Failure")}
<failure type="" message="${result.error}">
${result.sourceInfos}
${play.utils.Utils.open(result.sourceFile, result.sourceLine) ? ('<a href="' + play.utils.Utils.open(result.sourceFile, result.sourceLine) + '">').raw() : ''}
${result.sourceCode} :
${play.utils.Utils.open(result.sourceFile, result.sourceLine) ? '</a>'.raw() : ''}
</failure>
#{if result.trace}
<system-err>
${result.trace.raw()}
</system-err>
#{/if}}
#{/if}
#{else}
<error type="" message="${result.error}">
${result.sourceInfos}
${play.utils.Utils.open(result.sourceFile, result.sourceLine) ? ('<a href="' + play.utils.Utils.open(result.sourceFile, result.sourceLine) + '">').raw() : ''}
${result.sourceCode} :
${play.utils.Utils.open(result.sourceFile, result.sourceLine) ? '</a>'.raw() : ''}
</error>
#{if result.trace}
<system-err>
${result.trace.raw()}
</system-err>
#{/if}}
#{/else}
#{/if}
</testcase>
#{/list}
</testsuite>

0 comments on commit 02c89b4

Please sign in to comment.