Home | History | Annotate | Download | only in failures
      1 package test.failures;
      2 
      3 import org.testng.Assert;
      4 import org.testng.TestNG;
      5 import org.testng.reporters.FailedReporter;
      6 
      7 import java.io.BufferedReader;
      8 import java.io.File;
      9 import java.io.FileNotFoundException;
     10 import java.io.FileReader;
     11 import java.io.IOException;
     12 import java.util.regex.Pattern;
     13 
     14 public class BaseFailuresTest {
     15 
     16 //  protected TestNG run(Class[] classes, String outputDir) {
     17 //    return run(new TestNG(), classes, outputDir);
     18 //  }
     19 
     20   protected String getSuiteName() {
     21     return "TmpSuite";
     22   }
     23 
     24   protected TestNG run(TestNG result, Class[] classes, String outputDir) {
     25      result.setVerbose(0);
     26      result.setOutputDirectory(outputDir);
     27      result.setTestClasses(classes);
     28      result.run();
     29 
     30      return result;
     31   }
     32 
     33   /**
     34    * @param f
     35    * @param regexps
     36    * @return true if the file contains at least one occurrence of each regexp
     37    */
     38   protected boolean containsRegularExpressions(File f, String[] strRegexps) {
     39     Pattern[] matchers = new Pattern[strRegexps.length];
     40     boolean[] results = new boolean[strRegexps.length];
     41     for (int i = 0; i < strRegexps.length; i++) {
     42       matchers[i] = Pattern.compile(".*" + strRegexps[i] + ".*");
     43       results[i] = false;
     44     }
     45 
     46     try {
     47       FileReader fr = new FileReader(f);
     48       BufferedReader br = new BufferedReader(fr);
     49       String line = br.readLine();
     50       while (line != null) {
     51         for (int i = 0; i < strRegexps.length; i++) {
     52           if (matchers[i].matcher(line).matches()) {
     53             results[i] = true;
     54           }
     55         }
     56         line = br.readLine();
     57       }
     58       fr.close();
     59       br.close();
     60     }
     61     catch (FileNotFoundException e) {
     62       e.printStackTrace();
     63       return false;
     64     }
     65     catch (IOException e) {
     66       e.printStackTrace();
     67       return false;
     68     }
     69 
     70     for (int i = 0; i < results.length; i++) {
     71       boolean result = results[i];
     72       if (! result) {
     73         throw new AssertionError("Couldn't find " + strRegexps[i]);
     74       }
     75     }
     76 
     77     return true;
     78   }
     79 
     80   protected void verify(String outputDir, String[] expected) {
     81     File f = new File(outputDir +
     82         File.separatorChar + getSuiteName() +
     83         File.separator + FailedReporter.TESTNG_FAILED_XML);
     84      boolean passed = containsRegularExpressions(f, expected);
     85      Assert.assertTrue(passed);
     86 
     87      File tmpDir = new File(outputDir);
     88      tmpDir.delete();
     89   }
     90 
     91 }
     92