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 {