public Description getDescription() {
   if (description == null) {
     description = createSuiteDescription(suite.description());
     if (isEclipse() || isIDEA()) executeBehaviors(runNotifierReplay);
   }
   return description;
 }
  private List<ReportWriter> getReports(EasybSuite suite) {
    if (!suite.generateReports()) {
      return new ArrayList<ReportWriter>();
    }
    String reportsDir = suite.reportsDir().getPath();

    File html = new File(reportsDir, "html");
    html.mkdirs();
    File plain = new File(reportsDir, "plain");
    plain.mkdirs();

    List<ReportWriter> reports = new ArrayList<ReportWriter>();
    reports.add(new HtmlReportWriter(html.getAbsolutePath() + "/easyb.html"));
    reports.add(new TxtStoryReportWriter(plain.getAbsolutePath() + "/easyb-stories.txt"));
    reports.add(
        new TxtSpecificationReportWriter(plain.getAbsolutePath() + "/easyb-specifications.txt"));
    return reports;
  }
 public EasybJUnitRunner(Class<? extends EasybSuite> testClass) throws Exception {
   suite = testClass.newInstance();
   descriptionCreator = new DescriptionCreator(suite.baseDir());
   listenerRegistry = new JunitExecutionListenerRegistry();
   configuration = new Configuration(getFilePaths(), getReports(suite));
   ListenerFactory.registerBuilder(
       new ListenerBuilder() {
         public ExecutionListener get() {
           return listenerRegistry;
         }
       });
 }
 private String[] getFilePaths() {
   List<String> filePaths = new ArrayList<String>();
   listFiles(suite.searchDir(), filePaths);
   return filePaths.toArray(new String[filePaths.size()]);
 }
 public void run(RunNotifier notifier) {
   if (isEclipse() || isIDEA()) runNotifierReplay.replay(notifier, suite.trackTime());
   else executeBehaviors(notifier);
 }
 private boolean isBehavior(File file) {
   return suite.isBehavior(filenameExtension(file.getName()));
 }