package de.saumya.mojo.cucumber;
import de.saumya.mojo.tests.AbstractMavenTestScriptFactory;
public class CucumberMavenTestScriptFactory extends AbstractMavenTestScriptFactory {
@Override
protected void getRunnerScript(StringBuilder builder) {
builder.append("cucumber_report_path = REPORT_PATH + '_tmp'\n");
builder.append("at_exit do\n");
builder.append(" # create test like result files\n");
builder.append("\n");
builder.append(" require 'rexml/document'\n");
builder.append(" require 'fileutils'\n");
builder.append(" FileUtils.mkdir_p(REPORT_PATH)\n");
builder.append(" tests, errors, failures, skips, time = 0, 0, 0, 0, 0.0\n");
builder.append(" Dir[File.join(cucumber_report_path, '*xml')].each do |report|\n");
builder.append(" doc = REXML::Document.new(File.new(report))\n");
builder.append(" suite = REXML::XPath.first(doc, '//testsuite')\n");
builder.append(" tests += suite.attributes['tests'].to_i\n");
builder.append(" errors += suite.attributes['errors'].to_i\n");
builder.append(" failures += suite.attributes['failures'].to_i\n");
builder.append(" skips += suite.attributes['skips'].to_i\n");
builder.append(" time += suite.attributes['time'].to_f\n");
builder.append(" FileUtils.move(report, File.join(REPORT_PATH, " +
"File.basename(report).sub(/\\.xml/, \"-#{JRUBY_VERSION}--#{RUBY_VERSION.sub(/([0-9]\\.[0-9])\\..*$/) { $1 }}.xml\")))\n");
builder.append(" end\n");
builder.append(" FileUtils.rm_rf(cucumber_report_path)\n");
builder.append(" cucumber_summary = File.join(TARGET_DIR, 'cucumber.txt')\n");
builder.append(" File.open(cucumber_summary, 'w') do |f|\n");
builder.append(" f.puts \"Finished tests in #{time}s.\"\n");
builder.append(" f.puts \"#{tests} tests, 0 assertions, #{failures} failures, #{errors} errors, #{skips} skips\"\n");
builder.append(" end\n");
builder.append("end\n");
builder.append("\n");
builder.append("require 'rubygems'\n");
builder.append("gem 'cucumber'\n");
builder.append("argv = ['-f', 'pretty', '-f', 'junit', '-o', cucumber_report_path] + ARGV\n");
builder.append("ARGV.replace(argv)\n");
builder.append("load Gem.bin_path('cucumber', 'cucumber')\n");
builder.append("\n");
}
@Override
protected void getResultsScript(StringBuilder builder) {
}
@Override
protected String getScriptName() {
return "cucumber-runner.rb";
}
}