Title: [40674] trunk/hudson/plugins/silktestsuite/src/main: STW:
Revision
40674
Author
tofuatjava
Date
2012-07-20 08:45:06 -0400 (Fri, 20 Jul 2012)

Log Message

STW:
* introduce a failure element for verification failed
* improve the playback error layout

classic:
* fix classname attribute (not include the test case name)
* introduce a system-out on test case level

Modified Paths

Diff

Modified: trunk/hudson/plugins/silktestsuite/src/main/java/org/jenkins/plugins/silktestsuite/workbench/STWTestResultConverter.java (40673 => 40674)


--- trunk/hudson/plugins/silktestsuite/src/main/java/org/jenkins/plugins/silktestsuite/workbench/STWTestResultConverter.java	2012-07-19 13:14:47 UTC (rev 40673)
+++ trunk/hudson/plugins/silktestsuite/src/main/java/org/jenkins/plugins/silktestsuite/workbench/STWTestResultConverter.java	2012-07-20 12:45:06 UTC (rev 40674)
@@ -27,21 +27,21 @@
     BufferedReader reader = null;
     OutputStream out = null;
     try {
-    reader = new BufferedReader(new InputStreamReader(source.read()));
-    out = target.write();
-    
-    Document targetDocument = new Document();
-    Element suite = addTestSuite(null, "SilkTestWorkbench");
-    targetDocument.setRootElement(suite);
-    String line = null;
-    do {
-      line = reader.readLine();
-      if (line != null)
-        convertLine(suite, line.split("\t"));
-    } while(line  != null);
-    
-    XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());
-    xmlOut.output(targetDocument, out);
+      reader = new BufferedReader(new InputStreamReader(source.read()));
+      out = target.write();
+      
+      Document targetDocument = new Document();
+      Element suite = addTestSuite(null, "SilkTestWorkbench");
+      targetDocument.setRootElement(suite);
+      String line = null;
+      do {
+        line = reader.readLine();
+        if (line != null)
+          convertLine(suite, line.split("\t"));
+      } while(line  != null);
+      
+      XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());
+      xmlOut.output(targetDocument, out);
     } finally {
       if (reader != null) reader.close();
       if (out != null) out.close();
@@ -77,21 +77,21 @@
     if (line.length == 8)
       playbackError = line[7];
     else
-      playbackError = "";
+      playbackError = "The script failed with playback errors.";
     
     switch (scriptStatus) {
     case 0:
       break;
     case 9:
-      addErrorElement(element, "The script did not complete execution. It may have stopped before it reached the end but not a result of a playback error.", null);
+      addErrorElement(element, "The script did not complete execution. It may have stopped before it reached the end but not a result of a playback error.");
       increaseCount(suite, "error");
       break;
     case 10:
-      addErrorElement(element, "The script failed with playback errors.", playbackError);
+      addErrorElement(element, playbackError);
       increaseCount(suite, "error");
       break;
     case 11:
-      addErrorElement(element, "The script failed to execute or the script contained verifications that failed.", null);
+      addFailureElement(element, "The script failed to execute or the script contained verifications that failed.");
       increaseCount(suite, "failures");
       break;
     default:
@@ -103,13 +103,18 @@
     increaseCount(suite, "tests");
   }
   
-  private static void addErrorElement(Element testcase, String message, String playbackError) {
+  private static void addFailureElement(Element testcase, String message) {
     StringBuilder msg = new StringBuilder(message);
-    if (Strings.isNullOrEmpty(playbackError)) {
-      msg.append("\n\n");
-      msg.append(playbackError);
-    }
     
+    Element failure = new Element("failure");
+    failure.setAttribute("message", msg.toString());
+    failure.setAttribute("type", "junit.framework.AssertionFailedError");
+    
+    testcase.addContent(failure);
+  }
+
+  private static void addErrorElement(Element testcase, String message) {
+    StringBuilder msg = new StringBuilder(message);    
     Element error = new Element("error");
     error.setAttribute("message", msg.toString());
     error.setAttribute("type", "Error");
@@ -119,7 +124,7 @@
 
 
   private void convertLine(Element suite, String[] line) {
-    if (line.length == 7) {
+    if (line.length >= 7) {
       String projectName = line[1];
       Element projectSuite = this.suites.get(projectName);
       if (projectSuite == null)
@@ -134,7 +139,7 @@
     if (suite != null) {
       String attributeValue = suite.getAttributeValue(attribute);
       int value = 0;
-      if (Strings.isNullOrEmpty(attributeValue))
+      if (!Strings.isNullOrEmpty(attributeValue))
         value = Integer.parseInt(attributeValue);
       
       suite.setAttribute(attribute, String.valueOf(value+1));

Modified: trunk/hudson/plugins/silktestsuite/src/main/java/org/jenkins/plugins/silktestsuite/workbench/SilkTestWorkbenchCLIBuilder.java (40673 => 40674)


--- trunk/hudson/plugins/silktestsuite/src/main/java/org/jenkins/plugins/silktestsuite/workbench/SilkTestWorkbenchCLIBuilder.java	2012-07-19 13:14:47 UTC (rev 40673)
+++ trunk/hudson/plugins/silktestsuite/src/main/java/org/jenkins/plugins/silktestsuite/workbench/SilkTestWorkbenchCLIBuilder.java	2012-07-20 12:45:06 UTC (rev 40674)
@@ -84,30 +84,25 @@
     String[] projects = projectsCsv.split(",");
     if (projects.length > 1) {
       for (String project : projects) {
-        FilePath resultFile = new FilePath(resultPath, generateResultName(resultPath)+".txt");
+        FilePath resultFile = generateResultFile(resultPath);
         listener.getLogger().println("[SilkTest Workbench] Launch test execution for project: "+project);
         result = result.combine(launchSilkTestWB(launcher, listener.getLogger(), environment, resultFile, project.trim(), null));
       }
     } else {
       assert(!projectsCsv.contains(","));
       for (String testscript : namesCsv.split(",")) {
-        FilePath resultFile = new FilePath(resultPath, generateResultName(resultPath)+".txt");
+        FilePath resultFile = generateResultFile(resultPath);
         listener.getLogger().println(MessageFormat.format("[SilkTest Workbench] Launch test execution for test script [{0}] in project [{1}]", testscript, projectsCsv));
-        result = result.combine(launchSilkTestWB(launcher, listener.getLogger(), environment, resultFile, projectsCsv, testscript.trim()));
+        result = result.combine(launchSilkTestWB(launcher, listener.getLogger(), environment, resultFile, projects[0], testscript.trim()));
       }
     }
     
-    FileFilter filter = new FileFilter() {
-      @Override
-      public boolean accept(File file) {
-        return file.getName().endsWith(".txt");
+    for (FilePath resultFile : resultPath.list()) {
+      if (resultFile.getName().endsWith(".txt")) {
+        String resultFileName = resultFile.getName().replace(".txt", ".xml");
+        FilePath junitResultFile = new FilePath(resultPath, resultFileName);
+        new STWTestResultConverter().convert(resultFile, junitResultFile);
       }
-    };
-    
-    for (FilePath resultFile : resultPath.list(filter)) {
-      String resultFileName = resultFile.getName().replace(".txt", ".xml");
-      FilePath junitResultFile = new FilePath(resultPath, resultFileName);
-      new STWTestResultConverter().convert(resultFile, junitResultFile);      
     }
 
     build.setResult(result);
@@ -115,14 +110,14 @@
     return result.isBetterThan(Result.FAILURE);
   }
 
-  private String generateResultName(FilePath resultPath) throws IOException, InterruptedException {
+  private FilePath generateResultFile(FilePath resultPath) throws IOException, InterruptedException {
     String fileName = "SilkTestWB_Result";
     int i=1;
-    while (new FilePath(resultPath, fileName+".xml").exists()) {
+    while (new FilePath(resultPath, fileName+".txt").exists()) {
       fileName = fileName + "_" + i;
       i++;
     }
-    return fileName;
+    return new FilePath(resultPath, fileName+".txt");
   }
 
   private Result launchSilkTestWB(Launcher launcher, PrintStream stdOut, Map<String, String> environment, FilePath resultFile, String project, String testscript) throws IOException, InterruptedException {

Modified: trunk/hudson/plugins/silktestsuite/src/main/webapp/silktestclassic-0.0.1-SNAPSHOT-jar-with-dependencies.jar


(Binary files differ)

Reply via email to