You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2010/01/04 15:09:48 UTC

svn commit: r895630 - /incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java

Author: tillw
Date: Mon Jan  4 14:09:47 2010
New Revision: 895630

URL: http://svn.apache.org/viewvc?rev=895630&view=rev
Log:
- write test results to files and add a links to these files to the HTML report

Modified:
    incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java

Modified: incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java?rev=895630&r1=895629&r2=895630&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java (original)
+++ incubator/vxquery/trunk/vxquery/src/test/java/org/apache/vxquery/xtest/HTMLFileReporterImpl.java Mon Jan  4 14:09:47 2010
@@ -17,6 +17,7 @@
 package org.apache.vxquery.xtest;
 
 import java.io.File;
+import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -47,6 +48,8 @@
     private long endTime;
 
     private PrintWriter out;
+    
+    private File resultsDir;
 
     public HTMLFileReporterImpl(File file) throws IOException {
         results = new ArrayList<TestCaseResult>();
@@ -56,7 +59,16 @@
         startTime = -1;
         exDistribution = new HashMap<Class<?>, Integer>();
         stDistribution = new HashMap<TestCaseResult.State, Integer>();
-        out = file != null ? new PrintWriter(file) : null;
+        if (file != null) {
+            out = new PrintWriter(file);
+            String fileName = file.getName();
+            int dot = file.getName().lastIndexOf('.');
+            String dirName = (dot < 0 ? fileName : fileName.substring(0, dot)) + "_results";
+            resultsDir = file.getParent() != null 
+                ? new File(file.getParent() + File.separator + dirName)
+                : new File(dirName);
+            ensureDir(resultsDir);
+        }
     }
 
     @Override
@@ -104,7 +116,7 @@
         out.println("<hl>");
         writeExceptionDistribution(out, exDistribution);
         out.println("<hl>");
-        writeResults(out, results);
+        writeResults(out, results, resultsDir);
         out.println("</body></html>");
     }
 
@@ -169,7 +181,7 @@
         out.println("</table>");
     }
 
-    private static void writeResults(PrintWriter out, List<TestCaseResult> results) {
+    private static void writeResults(PrintWriter out, List<TestCaseResult> results, File resultsDir) {
         out.println("<table>");
         int len = results.size();
         for (int i = 0; i < len; ++i) {
@@ -181,13 +193,51 @@
             out.print("</td><td><a href=\"");
             out.print(res.testCase.getXQueryFile().toURI());
             out.print("\">");
-            out.print(res.testCase.getXQueryDisplayName());
+            String queryDisplayName = res.testCase.getXQueryDisplayName();
+            out.print(queryDisplayName);
             out.print("</a></td><td>");
             out.print(res.time);
             out.print("</td><td>");
-            out.print(res.report);
+            File resultFile = createResultFile(resultsDir, res, queryDisplayName);
+            if (resultFile != null) {
+                out.print("<a href=\"");
+                out.print(resultFile.toURI());
+                out.print("\">");
+                out.print(res.report);
+                out.print("</a>");
+            } else {
+                out.print(res.report);
+            }
             out.println("</td></tr>");
         }
         out.println("</table>");
     }
+
+    private static File createResultFile(File resultsDir, TestCaseResult res, String queryDisplayName) {
+        if (resultsDir == null) {
+            return null;
+        }
+        try {
+            File resultFile = new File(resultsDir + File.separator + queryDisplayName + ".res");
+            ensureDir(resultFile.getParentFile());
+            FileWriter fw = new FileWriter(resultFile);
+            if (res.result != null) {
+                fw.write(res.result);
+            } else {
+                PrintWriter pw = new PrintWriter(fw);
+                res.error.printStackTrace(pw);
+            }
+            fw.close();
+            return resultFile;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+    
+    private static void ensureDir(File dir) throws IOException {
+        if (!dir.isDirectory() && !dir.mkdirs()) {
+            throw new IOException("could not create dir " + dir);
+        }
+    }
 }
\ No newline at end of file