diff --git a/src/etc/testcases/taskdefs/optional/junitreport.xml b/src/etc/testcases/taskdefs/optional/junitreport.xml
index 0b0ce2039..1d5e8494f 100644
--- a/src/etc/testcases/taskdefs/optional/junitreport.xml
+++ b/src/etc/testcases/taskdefs/optional/junitreport.xml
@@ -115,6 +115,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -126,7 +136,7 @@
format="frames"/>
-
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
index b99783d4e..ed6e9d2e3 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/AggregateTransformer.java
@@ -224,12 +224,6 @@ public class AggregateTransformer {
TempFile tempFileTask = new TempFile();
tempFileTask.bindToOwner(task);
- String tempFileProperty = getClass().getName() + String.valueOf(counter++);
- File tmp = FILE_UTILS.resolveFile(project.getBaseDir(),
- project.getProperty("java.io.tmpdir"));
- tempFileTask.setDestDir(tmp);
- tempFileTask.setProperty(tempFileProperty);
- tempFileTask.execute();
XSLTProcess xsltTask = new XSLTProcess();
xsltTask.bindToOwner(task);
@@ -237,8 +231,19 @@ public class AggregateTransformer {
xsltTask.addConfigured(getStylesheet());
// acrobatic cast.
xsltTask.setIn(((XMLResultAggregator) task).getDestinationFile());
- File dummyFile = new File(project.getProperty(tempFileProperty));
- xsltTask.setOut(dummyFile);
+ File outputFile = null;
+ if (format.equals(FRAMES)) {
+ String tempFileProperty = getClass().getName() + String.valueOf(counter++);
+ File tmp = FILE_UTILS.resolveFile(project.getBaseDir(),
+ project.getProperty("java.io.tmpdir"));
+ tempFileTask.setDestDir(tmp);
+ tempFileTask.setProperty(tempFileProperty);
+ tempFileTask.execute();
+ outputFile = new File(project.getProperty(tempFileProperty));
+ } else {
+ outputFile = new File(toDir, "junit-noframes.html");
+ }
+ xsltTask.setOut(outputFile);
for (Iterator i = params.iterator(); i.hasNext();) {
XSLTProcess.Param param = (XSLTProcess.Param) i.next();
XSLTProcess.Param newParam = xsltTask.createParam();
@@ -259,10 +264,12 @@ public class AggregateTransformer {
}
final long dt = System.currentTimeMillis() - t0;
task.log("Transform time: " + dt + "ms");
- Delete delete = new Delete();
- delete.bindToOwner(task);
- delete.setFile(dummyFile);
- delete.execute();
+ if (format.equals(FRAMES)) {
+ Delete delete = new Delete();
+ delete.bindToOwner(task);
+ delete.setFile(outputFile);
+ delete.execute();
+ }
}
/**
diff --git a/src/main/org/apache/tools/ant/types/resources/FileResource.java b/src/main/org/apache/tools/ant/types/resources/FileResource.java
index 7381fbf4e..8dbba8596 100644
--- a/src/main/org/apache/tools/ant/types/resources/FileResource.java
+++ b/src/main/org/apache/tools/ant/types/resources/FileResource.java
@@ -38,7 +38,7 @@ public class FileResource extends Resource implements Touchable {
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
private static final int NULL_FILE
= Resource.getMagicNumber("null file".getBytes());
-
+
private File file;
private File baseDir;
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java
index 8500d484d..cd147ef5d 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java
@@ -150,6 +150,19 @@ public class JUnitReportTest extends BuildFileTest {
assertTrue("This shouldnt be an empty stream.", reportStream.available() > 0);
}
+ //Bugzilla Report 40021
+ public void testNoFrames() throws Exception {
+ executeTarget("testNoFrames");
+ File reportFile = new File(System.getProperty("root"), "src/etc/testcases/taskdefs/optional/junitreport/test/html/junit-noframes.html");
+ // tests one the file object
+ assertTrue("No junit-noframes.html present. Not generated?", reportFile.exists() );
+ assertTrue("Cant read the report file.", reportFile.canRead() );
+ assertTrue("File shouldnt be empty.", reportFile.length() > 0 );
+ // conversion to URL via FileUtils like in XMLResultAggregator, not as suggested in the bug report
+ URL reportUrl = new URL( FileUtils.getFileUtils().toURI(reportFile.getAbsolutePath()) );
+ InputStream reportStream = reportUrl.openStream();
+ assertTrue("This shouldnt be an empty stream.", reportStream.available() > 0);
+ }
//Bugzilla Report 39708
public void testWithStyleFromDirAndXslImport() throws Exception {
executeTarget("testWithStyleFromDirAndXslImport");