package de.saumya.mojo.rspec; import de.saumya.mojo.tests.AbstractMavenTestScriptFactory; public class RSpecMavenTestScriptFactory extends AbstractMavenTestScriptFactory { @Override protected void getRunnerScript(StringBuilder builder) { builder.append("# Use reasonable default arguments or ARGV is passed in from command-line\n"); builder.append("\n"); builder.append(getPluginClasspathScript()); builder.append("\n"); builder.append("run_args = [ SOURCE_DIR ]\n"); builder.append("if ( ! ARGV.empty? )\n"); builder.append(" run_args = ARGV\n"); builder.append("end\n"); builder.append("\n"); builder.append("require %q(rubygems)\n"); builder.append("\n"); builder.append("require %q(rspec)\n"); builder.append("require %q(rspec/core/formatters/html_formatter)\n"); builder.append("\n"); builder.append("if RSpec::Core::Formatters.respond_to? :register\n"); builder.append(" require %q(de/saumya/mojo/rspec/rspec3/maven_surefire_reporter)\n"); builder.append("::RSpec.configure do |config|\n"); builder.append(" config.add_formatter RSpec::Core::Formatters::ProgressFormatter\n"); builder.append(" config.add_formatter RSpec::Core::Formatters::HtmlFormatter, File.open( \"#{REPORT_PATH}\", 'w' )\n"); builder.append(" config.add_formatter MavenSurefireReporter\n"); builder.append("end\n"); builder.append("else\n"); builder.append(" require %q(de/saumya/mojo/rspec/rspec2/multi_formatter)\n"); builder.append(" require %q(de/saumya/mojo/rspec/rspec2/maven_console_progress_formatter)\n"); builder.append(" require %q(de/saumya/mojo/rspec/rspec2/maven_surefire_reporter)\n"); builder.append(" require %q(de/saumya/mojo/rspec/rspec2/monkey_patch)\n"); builder.append("::MultiFormatter.formatters << [ MavenConsoleProgressFormatter, nil ]\n"); builder.append("::MultiFormatter.formatters << [ MavenSurefireReporter, \"#{TARGET_DIR}\" ] \n"); builder.append("::MultiFormatter.formatters << [ RSpec::Core::Formatters::HtmlFormatter, File.open( \"#{REPORT_PATH}\", 'w' ) ] \n"); builder.append("\n"); builder.append("::RSpec.configure do |config|\n"); builder.append(" config.formatter = ::MultiFormatter\n"); builder.append("end\n"); builder.append("end\n"); builder.append("\n"); builder.append("::RSpec::Core::Runner.disable_autorun!\n"); builder.append("RESULT = ::RSpec::Core::Runner.run( run_args, STDERR, STDOUT)\n"); builder.append("\n"); } @Override protected String getScriptName() { return "rspec-runner.rb"; } }