01: /*
02: This source file is part of Smyle, a database library.
03: For up-to-date information, see http://www.drjava.de/smyle
04: Copyright (C) 2001 Stefan Reich (doc@drjava.de)
05:
06: This library is free software; you can redistribute it and/or
07: modify it under the terms of the GNU Lesser General Public
08: License as published by the Free Software Foundation; either
09: version 2.1 of the License, or (at your option) any later version.
10:
11: This library is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public
17: License along with this library; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19:
20: For full license text, see doc/license/lgpl.txt in this distribution
21: */
22:
23: package drjava.tf.textui;
24:
25: import java.util.*;
26: import drjava.tf.*;
27:
28: public class TestRunner {
29: static String stripLineSeparator(String s) {
30: String linesep = System.getProperty("line.separator");
31: if (s.endsWith(linesep))
32: return s.substring(0, s.length() - linesep.length());
33: else
34: return s;
35: }
36:
37: static void printTestResult(String indent, TestResult result) {
38: // print test name
39: System.out.println(indent
40: + " == "
41: + result.getTestName()
42: + " == "
43: + (result.getTotalNumberOfFailures() != 0 ? result
44: .getTotalNumberOfFailures()
45: + " failure(s)" : "")
46: + (result.getTestName().startsWith("bench") ? " "
47: + result.getRuntime() + " ms" : ""));
48: if (result.getDescription() != null)
49: System.out.println(indent + " = "
50: + result.getDescription() + " =");
51:
52: // print events
53: List<TestEvent> events = result.getEvents();
54: for (int i = 0; i < events.size(); i++) {
55: TestEvent e = events.get(i);
56: System.out.println(indent + (e.isFailure() ? " !" : " ")
57: + stripLineSeparator(e.getText()));
58: if (e.getLineText() != null)
59: System.out.println(indent + " " + e.getLineText());
60: }
61:
62: // print subtests
63: indent += " ";
64: List<TestResult> subtests = result.getSubtests();
65: for (int i = 0; i < subtests.size(); i++)
66: printTestResult(indent, subtests.get(i));
67:
68: System.out.println();
69: }
70:
71: public static void main(String[] args) throws Exception {
72: if (args.length == 0) {
73: System.out
74: .println("Usage: drjava.tf.textui.TestRunner <scriptfiles>");
75: System.exit(2);
76: }
77:
78: int failures = 0;
79: long startTime = System.currentTimeMillis();
80:
81: for (int i = 0; i < args.length; i++) {
82: TestResult result = TF.runTest(args[i]);
83: printTestResult("", result);
84: failures += result.getTotalNumberOfFailures();
85: }
86:
87: long endTime = System.currentTimeMillis();
88: System.out.println("Tests took "
89: + ((endTime - startTime) / 1000.0f) + " sec");
90: System.out.println();
91:
92: if (failures != 0)
93: System.exit(1);
94: else
95: System.exit(0);
96: }
97: }
|