blob: db69e66ae33dddcb2a900886e609f1c5c70b7b2a [file] [log] [blame]
package test.failures;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Pattern;
import org.testng.Assert;
import org.testng.TestNG;
import org.testng.reporters.FailedReporter;
public class BaseFailuresTest {
// protected TestNG run(Class[] classes, String outputDir) {
// return run(new TestNG(), classes, outputDir);
// }
protected String getSuiteName() {
return "TmpSuite";
}
protected TestNG run(TestNG result, Class[] classes, String outputDir) {
result.setVerbose(0);
result.setOutputDirectory(outputDir);
result.setTestClasses(classes);
result.run();
return result;
}
/**
* @param f
* @param regexps
* @return true if the file contains at least one occurrence of each regexp
*/
protected boolean containsRegularExpressions(File f, String[] strRegexps) {
Pattern[] matchers = new Pattern[strRegexps.length];
boolean[] results = new boolean[strRegexps.length];
for (int i = 0; i < strRegexps.length; i++) {
matchers[i] = Pattern.compile(".*" + strRegexps[i] + ".*");
results[i] = false;
}
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
for (int i = 0; i < strRegexps.length; i++) {
if (matchers[i].matcher(line).matches()) results[i] = true;
}
line = br.readLine();
}
fr.close();
br.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
return false;
}
catch (IOException e) {
e.printStackTrace();
return false;
}
for (int i = 0; i < results.length; i++) {
boolean result = results[i];
if (! result) throw new AssertionError("Couldn't find " + strRegexps[i]);
}
return true;
}
protected void verify(String outputDir, String[] expected) {
File f = new File(outputDir +
File.separatorChar + getSuiteName() +
File.separator + FailedReporter.TESTNG_FAILED_XML);
boolean passed = containsRegularExpressions(f, expected);
Assert.assertTrue(passed);
File tmpDir = new File(outputDir);
tmpDir.delete();
}
}