Title: [1405] trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters: html output to right directory now, one file per scenario

Diff

Modified: trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/TraderScenario.java (1404 => 1405)

--- trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/TraderScenario.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/TraderScenario.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -12,22 +12,23 @@
 import org.jbehave.scenario.reporters.PrintStreamScenarioReporter;
 import org.jbehave.scenario.reporters.ScenarioReporter;
 
+import java.io.File;
 
 public class TraderScenario extends JUnitScenario {
 
-    public TraderScenario() {
+    public TraderScenario(final Class thisClass) {
         super(new PropertyBasedConfiguration() {
             @Override
             public ScenarioDefiner forDefiningScenarios() {
                 return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(this));
             }
 
-			@Override
-			public ScenarioReporter forReportingScenarios() {
-				return new CollectingScenarioReporter(new PrintStreamScenarioReporter(), new HtmlPrintStreamScenarioReporter(new FilePrintStreamFactory()));
-			}
-            
-        }, new TraderSteps()); 
+            @Override
+            public ScenarioReporter forReportingScenarios() {
+                return new CollectingScenarioReporter(new PrintStreamScenarioReporter(), new HtmlPrintStreamScenarioReporter(new FilePrintStreamFactory(thisClass)));
+            }
+
+        }, new TraderSteps());
     }
 
 }

Modified: trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderIsAlertedOfStatus.java (1404 => 1405)

--- trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderIsAlertedOfStatus.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderIsAlertedOfStatus.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -5,6 +5,8 @@
 public class TraderIsAlertedOfStatus extends TraderScenario {
 
     public TraderIsAlertedOfStatus() {
+        super(TraderIsAlertedOfStatus.class);
     }
 
+
 }

Modified: trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderSellsAllStocks.java (1404 => 1405)

--- trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderSellsAllStocks.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderSellsAllStocks.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -5,6 +5,7 @@
 public class TraderSellsAllStocks extends TraderScenario {
 
     public TraderSellsAllStocks() {
+        super(TraderSellsAllStocks.class);
     }
-    
+
 }

Modified: trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/WildcardSearch.java (1404 => 1405)

--- trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/WildcardSearch.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/WildcardSearch.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -5,6 +5,7 @@
 public class WildcardSearch extends TraderScenario {
 
     public WildcardSearch() {
+        super(WildcardSearch.class);
     }
     
 }

Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/FilePrintStreamFactory.java (1404 => 1405)

--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/FilePrintStreamFactory.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/FilePrintStreamFactory.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -2,6 +2,7 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.PrintStream;
 
 /**
@@ -10,31 +11,36 @@
  */
 public class FilePrintStreamFactory implements PrintStreamFactory {
 
-    private static final File DEFAULT_DIRECTORY = new File("target", "scenario-reports");
     private static final String HTML = "html";
-    private final File directory;
-    private final String extension;
+    private PrintStream printStream;
 
-    public FilePrintStreamFactory() {
-        this(DEFAULT_DIRECTORY, HTML);
+
+    public FilePrintStreamFactory(Class<?> scenarioClass) {
+        this(scenarioClass, HTML);
     }
 
-    public FilePrintStreamFactory(File directory, String extension) {
-        this.directory = directory;
-        this.extension = extension;
+    public FilePrintStreamFactory(Class<?> scenarioClass, String fileSuffix) {
+        this(makeDefaultOutputDirectory(scenarioClass), scenarioClass.getName() + "." + fileSuffix);
     }
 
-    public PrintStream createPrintStream(String storyName) {
+    public FilePrintStreamFactory(File outputDirectory, String fileName) {
+        outputDirectory.mkdirs();
         try {
-            return new PrintStream(fileFor(directory, storyName, extension));
+            printStream = new PrintStream(new FileOutputStream(new File(outputDirectory, fileName), true));
         } catch (FileNotFoundException e) {
             throw new RuntimeException(e);
         }
     }
 
-    private File fileFor(File dir, String name, String ext) {
-        dir.mkdirs();
-        return new File(dir, name + "." + ext);
+    public PrintStream getPrintStream(String storyName) {
+        return printStream;
     }
 
+    public static File makeDefaultOutputDirectory(Class<?> scenarioClass) {
+        String classesDir = scenarioClass.getProtectionDomain().getCodeSource().getLocation().getFile();
+        File targetDirectory = new File(classesDir).getParentFile();
+        return new File(targetDirectory, "scenario-reports");
+    }
+
+
 }

Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/HtmlPrintStreamScenarioReporter.java (1404 => 1405)

--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/HtmlPrintStreamScenarioReporter.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/HtmlPrintStreamScenarioReporter.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -27,62 +27,67 @@
 
     public HtmlPrintStreamScenarioReporter(PrintStreamFactory printStreamFactory) {
         this.printStreamFactory = printStreamFactory;
-        usePrintStream(printStreamFactory.createPrintStream("Story"));
+        usePrintStream(printStreamFactory.getPrintStream("Story"));
     }
 
     public void successful(String step) {
         String defaultPattern = "<div class=\"step.successful\">{0}</div>\n";
-        output.print(format("successful.html", defaultPattern, escapeHtml(step)));
+        String s = format("successful.html", defaultPattern, escapeHtml(step));
+        prt(s);
     }
 
+    private void prt(String s) {
+        output.print(s);
+    }
+
     public void pending(String step) {
         String defaultPattern = "<div class=\"step.pending\">{0}<span class=\"keyword.pending\">({1})</span></div>\n";
-        output.print(format("pending.html", defaultPattern, escapeHtml(step), keywords.pending()));
+        prt(format("pending.html", defaultPattern, escapeHtml(step), keywords.pending()));
     }
 
     public void notPerformed(String step) {
         String defaultPattern = "<div class=\"step.notPerformed\">{0}<span class=\"keyword.notPerformed\">({1})</span></div>\n";
-        output.print(format("notPerformed.html", defaultPattern, escapeHtml(step), keywords.notPerformed()));
+        prt(format("notPerformed.html", defaultPattern, escapeHtml(step), keywords.notPerformed()));
     }
 
     public void failed(String step, Throwable cause) {
         this.cause = cause;
         String defaultPattern = "<div class=\"step.failed\">{0}<span class=\"keyword.failed\">({1})</span></div>\n";
-        output.print(format("failed.html", defaultPattern, escapeHtml(step), keywords.failed()));
+        prt(format("failed.html", defaultPattern, escapeHtml(step), keywords.failed()));
     }
 
     public void beforeStory(StoryDefinition story, boolean embeddedStory) {
-        usePrintStream(printStreamFactory.createPrintStream(story.getName()));
+        usePrintStream(printStreamFactory.getPrintStream(story.getName()));
         beforeStory(story.getBlurb());
     }
 
     public void beforeStory(Blurb blurb) {
         String defaultPattern = "<div class=\"story\">\n<h1>{0}</h1>\n";
-        output.print(format("beforeStory.html", defaultPattern, blurb.asString()));
+        prt(format("beforeStory.html", defaultPattern, blurb.asString()));
     }
 
     public void afterStory(boolean embeddedStory) {
-        output.print(format("afterStory.html", "</div>\n"));
+        prt(format("afterStory.html", "</div>\n"));
     }
     
     public void beforeScenario(String title) {
         cause = null;
         String defaultPattern = "<div class=\"scenario\">\n<h2>{0} {1}</h2>\n";
-        output.print(format("beforeScenario.html", defaultPattern, keywords.scenario(), escapeHtml(title)));
+        prt(format("beforeScenario.html", defaultPattern, keywords.scenario(), escapeHtml(title)));
     }
 
     public void afterScenario() {
-        output.print(format("afterScenario.html", "</div>\n"));
+        prt(format("afterScenario.html", "</div>\n"));
     }
 
     public void givenScenarios(List<String> givenScenarios) {
         String defaultPattern = "<span class=\"givenScenarios\">{0} {1}</span>\n";
-        output.print(format("givenScenarios.html", defaultPattern, keywords.givenScenarios(), escapeHtml(givenScenarios.toString())));
+        prt(format("givenScenarios.html", defaultPattern, keywords.givenScenarios(), escapeHtml(givenScenarios.toString())));
     }
 
     public void examplesTable(ExamplesTable table) {
         String defaultPattern = "<h3 class=\"examplesTable\">{0}</h3>\n<table class=\"examplesTable\">\n";
-        output.print(format("examplesTable.html", defaultPattern, keywords.examplesTable()));
+        prt(format("examplesTable.html", defaultPattern, keywords.examplesTable()));
         final List<Map<String, String>> rows = table.getRows();
         final Set<String> columnNames = rows.get(0).keySet();
         output.println("<thead>\n<tr>");
@@ -104,7 +109,7 @@
 
     public void examplesTableRow(Map<String, String> tableRow) {
         String defaultPattern = "\n<h3 class=\"examplesTableRow\">{0} {1}</h3>\n";
-        output.print(format("examplesTableRow.html", defaultPattern, keywords.examplesTableRow(), escapeHtml(tableRow.toString())));
+        prt(format("examplesTableRow.html", defaultPattern, keywords.examplesTableRow(), escapeHtml(tableRow.toString())));
     }
 
 }

Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PrintStreamFactory.java (1404 => 1405)

--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PrintStreamFactory.java	2009-12-11 07:54:16 UTC (rev 1404)
+++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PrintStreamFactory.java	2009-12-12 04:52:29 UTC (rev 1405)
@@ -7,6 +7,6 @@
  */
 public interface PrintStreamFactory {
 
-    PrintStream createPrintStream(String storyName);
+    PrintStream getPrintStream(String storyName);
 
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to