import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
/**
* TestWrapper is a class that examines JUnit test results and outputs reports
* only if one or more tests failed.
*/
public class TestWrapper {
/**
* Prints each file listed in args to standard out, only if it
* contained a failed JUnit test.
* @param args the file names of the test results to examine
*/
public static void main(String[] args) {
for (String filename : args) {
try {
if (containsJUnitFailure(filename)) {
System.out.println();
System.out.println("Failed tests in: " + filename);
print(filename);
}
} catch (Exception e) {
System.out.println("Problem reading file " + filename);
e.printStackTrace(System.out);
}
}
}
/**
* Examines the given file and displays it if there are failed tests.
*
* @param filename the name of the file to examine.
*/
private static boolean containsJUnitFailure(String filename) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(filename));
String line = in.readLine();
while (line != null) {
if (line.contains("FAILED")) {
in.close();
return true;
}
line = in.readLine();
}
in.close();
return false;
}
/**
* Prints the specified file.
* @param filename the name of the file to print
* @throws Exception if an error occurs
*/
private static void print(String filename) throws IOException {
BufferedReader in = new BufferedReader(new FileReader(filename));
String line = in.readLine();
while (line != null) {
System.out.println(line);
line = in.readLine();
}
in.close();
}
}