X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2FSimpleResultPart.java;h=e114e1f6d15c34b7eb68aa4dd8e13cfb9d0813cf;hb=7ffec52c590ce511b476f55be4ad123418268aa0;hp=eae7f4067e632ab503067ef7f8f335a232305816;hpb=b2d63165e30499440a4c4f118faf9e98e8741702;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java index eae7f4067..e114e1f6d 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java @@ -8,14 +8,18 @@ package org.argeo.slc.core.test; * * @see TestStatus */ -public class SimpleResultPart implements TestResultPart, TestStatus { +public class SimpleResultPart implements TestResultPart, TestStatus, + TestRunAware { - /** For ORM */ + /** @deprecated */ private Long tid; - private Integer status; + private String testRunUuid; + + /** The status. Default to ERROR since it should always be explicitely set. */ + private Integer status = ERROR; private String message; - private Exception exception; + private String exceptionMessage; public SimpleResultPart() { } @@ -27,7 +31,7 @@ public class SimpleResultPart implements TestResultPart, TestStatus { public SimpleResultPart(Integer status, String message, Exception exception) { this.status = status; this.message = message; - this.exception = exception; + setException(exception); } public String getMessage() { @@ -46,37 +50,79 @@ public class SimpleResultPart implements TestResultPart, TestStatus { return status; } - public Exception getException() { - return exception; + public String getExceptionMessage() { + return exceptionMessage; } public void setException(Exception exception) { - this.exception = exception; + if (exception == null) + return; + + StringBuffer buf = new StringBuffer(""); + buf.append(exception.toString()); + buf.append('\n'); + for (StackTraceElement elem : exception.getStackTrace()) { + buf.append('\t').append(elem.toString()).append('\n'); + } + + if (exception.getCause() != null) + addRootCause(buf, exception.getCause()); + + this.exceptionMessage = buf.toString(); + } + + protected void addRootCause(StringBuffer buf, Throwable cause) { + if (cause == null) + return; + + buf.append("Caused by: " + cause.getMessage()); + for (StackTraceElement elem : cause.getStackTrace()) { + buf.append('\t').append(elem.toString()).append('\n'); + } + + if (cause.getCause() != null) { + addRootCause(buf, cause.getCause()); + } } @Override public String toString() { StringBuffer buf = new StringBuffer(""); - if (status == PASSED) { - buf.append("PASSED "); - } else if (status == FAILED) { - buf.append("FAILED "); + buf.append(SlcTestUtils.statusToString(status)); + if (status == PASSED || status == FAILED) { + buf.append(' '); } else if (status == ERROR) { - buf.append("ERROR "); + buf.append(" "); } buf.append(message); - if (exception != null) { - buf.append("(").append(exception.getMessage()).append(")"); - } return buf.toString(); } + /** @deprecated */ Long getTid() { return tid; } + /** @deprecated */ void setTid(Long tid) { this.tid = tid; } + public String getTestRunUuid() { + return testRunUuid; + } + + /** For ORM */ + public void setTestRunUuid(String testRunUuid) { + this.testRunUuid = testRunUuid; + } + + public void notifyTestRun(TestRun testRun) { + testRunUuid = testRun.getUuid(); + } + + public void setExceptionMessage(String exceptionMessage) { + this.exceptionMessage = exceptionMessage; + } + }