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(); } }