package be.nikiroo.utils.test;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
private class SetupException extends Exception {
private static final long serialVersionUID = 1L;
- public SetupException(Exception e) {
+ public SetupException(Throwable e) {
super(e);
}
}
private class TearDownException extends Exception {
private static final long serialVersionUID = 1L;
- public TearDownException(Exception e) {
+ public TearDownException(Throwable e) {
super(e);
}
}
protected int executed;
protected int total;
+ private int currentSeries = 0;
+
/**
* Create a new {@link TestLauncher} with default parameters.
*
System.out.println("");
}
+ currentSeries = 0;
for (TestLauncher serie : series) {
errors += serie.launch(depth + 1);
executed += serie.executed;
total += serie.total;
+ currentSeries++;
}
} catch (Exception e) {
print(depth, "__start");
for (TestCase test : tests) {
print(depth, test.getName());
- Exception ex = null;
+ Throwable ex = null;
try {
try {
test.setUp();
- } catch (Exception e) {
+ } catch (Throwable e) {
throw new SetupException(e);
}
test.test();
try {
test.tearDown();
- } catch (Exception e) {
+ } catch (Throwable e) {
throw new TearDownException(e);
}
- } catch (Exception e) {
+ } catch (Throwable e) {
ex = e;
}
System.out.println("[ Test suite: " + name + " ]");
System.out.println("");
} else {
- System.out.println(prefix(depth) + name + ":");
+ System.out.println(prefix(depth, false) + name + ":");
}
}
*
* @param depth
* the level at which is the launcher (0 = main launcher)
- * @param test
- * the {@link TestCase}
+ * @param name
+ * the {@link TestCase} name
*/
protected void print(int depth, String name) {
- name = prefix(depth) + (name == null ? "" : name).replace("\t", " ");
+ name = prefix(depth, false)
+ + (name == null ? "" : name).replace("\t", " ");
while (name.length() < columns - 11) {
name += ".";
* @param error
* the {@link Exception} it ran into if any
*/
- private void print(int depth, Exception error) {
+ private void print(int depth, Throwable error) {
if (error != null) {
System.out.println(" " + koString);
- for (String line : (error.getMessage() + "").split("\n")) {
- System.out.println(prefix(depth) + "\t\t" + line);
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ error.printStackTrace(pw);
+ String lines = sw.toString();
+ for (String line : lines.split("\n")) {
+ System.out.println(prefix(depth, false) + "\t\t" + line);
}
} else {
System.out.println(" " + okString);
if (depth == 0) {
System.out.println(resume);
} else {
- String arrow = "┗▶";
- if (series.isEmpty()) {
- arrow = "━▶";
- }
- System.out.println(prefix(depth) + arrow + resume);
+ String arrow = "┗▶ ";
+ System.out.println(prefix(depth, currentSeries == 0) + arrow
+ + resume);
+ System.out.println(prefix(depth, currentSeries == 0));
}
}
*
* @param depth
* the current depth
+ * @param first
+ * this line is the first of its tabulation level
*
* @return the prefix
*/
- private String prefix(int depth) {
+ private String prefix(int depth, boolean first) {
String space = tabs(depth - 1);
String line = "";
if (depth > 0) {
if (depth > 1) {
- if (depth != last) {
+ if (depth != last && first) {
line = "╻"; // first line
} else {
line = "┃"; // continuation
}
}
- space = space + line + tabs(1);
+
+ space += line + tabs(1);
}
last = depth;
* @return the string
*/
private String tabs(int depth) {
-
StringBuilder builder = new StringBuilder();
for (int i = 0; i < depth; i++) {
builder.append(" ");