You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by bo...@apache.org on 2010/11/28 01:16:24 UTC
svn commit: r1039804 - in /buildr/trunk: lib/buildr/java/bdd.rb
lib/buildr/java/jtestr_runner.rb.erb lib/buildr/java/test_result.rb
spec/java/bdd_spec.rb
Author: boisvert
Date: Sun Nov 28 00:16:24 2010
New Revision: 1039804
URL: http://svn.apache.org/viewvc?rev=1039804&view=rev
Log:
JtestR specs now passing
Modified:
buildr/trunk/lib/buildr/java/bdd.rb
buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb
buildr/trunk/lib/buildr/java/test_result.rb
buildr/trunk/spec/java/bdd_spec.rb
Modified: buildr/trunk/lib/buildr/java/bdd.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/java/bdd.rb?rev=1039804&r1=1039803&r2=1039804&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/java/bdd.rb (original)
+++ buildr/trunk/lib/buildr/java/bdd.rb Sun Nov 28 00:16:24 2010
@@ -17,7 +17,6 @@
require 'buildr/java/tests'
require 'buildr/java/test_result'
-
module Buildr
# Mixin for test frameworks using src/spec/{lang}
@@ -373,7 +372,11 @@ module Buildr
# so the rspec version used depends on the jtestr jar.
runner.requires.unshift 'jtestr'
runner.gems.update 'rspec' => '=1.3.0'
- runner.requires.unshift 'rspec'
+ runner.requires.unshift 'spec'
+ runner.requires.unshift File.join(File.dirname(__FILE__), 'jtestr_result')
+ runner.rspec = ['--format', 'progress', '--format', "html:#{runner.html_report}"]
+ runner.format.each { |format| runner.rspec << '--format' << format } if runner.format
+ runner.rspec.push '--format', "Buildr::JtestR::YamlFormatter:#{runner.result}"
runner
end
@@ -381,10 +384,8 @@ module Buildr
runner_erb = File.join(File.dirname(__FILE__), 'jtestr_runner.rb.erb')
Filter::Mapper.new(:erb, binding).transform(File.read(runner_erb), runner_erb)
end
-
end
-
# JBehave is a Java BDD framework. To use in your project:
# test.using :jbehave
#
@@ -456,3 +457,4 @@ end
Buildr::TestFramework << Buildr::RSpec
Buildr::TestFramework << Buildr::JtestR
Buildr::TestFramework << Buildr::JBehave
+
Modified: buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb?rev=1039804&r1=1039803&r2=1039804&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb (original)
+++ buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb Sun Nov 28 00:16:24 2010
@@ -26,7 +26,6 @@
# <%= user_config %>
begin
-
<%= jruby_gem %>
<%= dependencies.map(&:to_s).inspect %>.each { |dep| $CLASSPATH << dep }
<%= runner.gems.inspect %>.each { |ary| JRuby.gem(*ary.flatten) }
@@ -87,21 +86,20 @@ begin
output = STDOUT
<% end %>
-
args = [ '<%= spec_dir %>', # the directory to search for jtestr files
JtestR::SimpleLogger::ERR, # log level (DEBUG/WARN/ERR)
JtestR::GenericResultHandler::QUIET, #output level (QUIET/VERBOSE)
fake_out, # output STDOUT
[], # groups to run
# Use JtestR::GenericResultHandler for debugging
- Buildr::TestFramework::TestResult::RSpecResultHandler, # result handler
+ Buildr::JtestR::ResultHandler, # result handler
[] # classpath
]
argv = <%= runner.rspec.inspect %> || []
argv.push *<%= tests.inspect %>
- Buildr::TestFramework::TestResult::RSpecResultHandler.init(argv, output, output)
- Buildr::TestFramework::TestResult::RSpecResultHandler.test_files = <%= tests.inspect %>
+ Buildr::JtestR::ResultHandler.init(argv, output, output)
+ Buildr::JtestR::ResultHandler.test_files = <%= tests.inspect %>
jtestr.run *args
@@ -110,7 +108,7 @@ rescue => e
puts "-[--- ERROR ---]-", e.class, e.message, *e.backtrace
end
-exit 0 # let buildr find the erros from the result yaml
+exit 0 # let buildr find the errors from the result yaml
# Local Variables:
# mode: ruby
Modified: buildr/trunk/lib/buildr/java/test_result.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/java/test_result.rb?rev=1039804&r1=1039803&r2=1039804&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/java/test_result.rb (original)
+++ buildr/trunk/lib/buildr/java/test_result.rb Sun Nov 28 00:16:24 2010
@@ -96,224 +96,6 @@ module Buildr #:nodoc:
end
end # YamlFormatter
- # A JtestR ResultHandler
- # Using this handler we can use RSpec formatters, like html/ci_reporter with JtestR
- # Created for YamlFormatter
- class RSpecResultHandler
-
- # Workaround for http://jira.codehaus.org/browse/JTESTR-68
- module TestNGResultHandlerMixin
- def onTestSuccess(test_result)
- @result_handler.succeed_single(test_result.name)
- end
- end
-
- class BacktraceTweaker
- attr_reader :ignore_patterns
- def initialize
- @ignore_patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS.dup
- # ignore jruby/jtestr backtrace
- ignore_patterns << /org\.jruby\.javasupport\.JavaMethod\./
- ignore_patterns << /jtestr.*\.jar!/i << /runner\.rb/
- end
-
- def clean_up_double_slashes(line)
- line.gsub!('//','/')
- end
-
- def tweak_backtrace(error)
- return if error.backtrace.nil?
- error.backtrace.collect! do |line|
- clean_up_double_slashes(line)
- ignore_patterns.each do |ignore|
- if line =~ ignore
- line = nil
- break
- end
- end
- line
- end
- error.backtrace.compact!
- end
- end
-
- class << self
- # an rspec reporter used to proxy events to rspec formatters
- attr_reader :reporter
- attr_accessor :test_files
-
- def init(argv = [], out = STDOUT, err = STDERR)
- ::JtestR::TestNGResultHandler.module_eval { include TestNGResultHandlerMixin }
- rspec_parser = ::Spec::Runner::OptionParser.new(err, out)
- rspec_parser.order!(argv)
- rspec_parser.options.backtrace_tweaker = BacktraceTweaker.new
- @reporter = Spec::Runner::Reporter.new(rspec_parser.options)
- end
-
- def before
- reporter.start(reporter.options.files.size)
- end
-
- def after
- reporter.end
- reporter.dump
- end
-
- end
-
- module ExampleMethods
- attr_accessor :name, :description, :__full_description, :location
- end
-
- def reporter
- self.class.reporter
- end
-
- attr_accessor :example_group, :current_example, :current_failure
-
- def initialize(name, desc, *args)
- self.example_group = ::Spec::Example::ExampleGroup.new(desc)
- example_group.extend ExampleMethods
- example_group.name = name.to_s
- if example_group.name[/Spec/]
- example_group.description = desc.to_s
- else
- example_group.description = name.to_s
- end
- reporter.example_group_started(example_group)
- end
-
-
- def starting
- end
-
- def ending
- end
-
- def add_fault(fault)
- self.current_failure = fault
- end
-
- def add_pending(pending)
- end
-
- def starting_single(name = nil)
- self.current_failure = nil
- self.current_example = Object.new
- current_example.extend ::Spec::Example::ExampleMethods
- current_example.extend ExampleMethods
- name = name.to_s
- current_example.location = name.to_s
- current_example.name = name.gsub(/(.*)\((.+)\)/, '\2')
- current_example.description = name
- if example_group.name[/Spec/]
- current_example.__full_description = "#{example_group.description} #{name}"
- else
- current_example.__full_description = "#{example_group.name}: #{name}"
- end
- reporter.example_started(current_example)
- end
-
- def succeed_single(name = nil)
- reporter.example_finished(current_example, nil)
- end
-
- def fail_single(name = nil)
- current_example.name = current_name
- reporter.example_finished(current_example, current_error)
- end
-
- def error_single(name = nil)
- current_example.name = current_name
- reporter.example_finished(current_example, current_error)
- end
-
- def pending_single(name = nil)
- error = ::Spec::Example::ExamplePendingError.new(name)
- reporter.example_finished(current_example, error)
- end
-
- private
- def detect_file(trace)
- # find first matching test file in stacktrace
- file = nil
- first_pos = nil
- RSpecResultHandler.test_files.each do |f|
- pos = trace.index(f)
- if pos && (first_pos.nil? || pos < first_pos)
- file = f
- first_pos = pos
- end
- end
- file || fail("RSpecResultHandler.detect_file failed: #{trace}")
- end
-
- def current_name(example = current_example, fault = current_failure)
- return example.name unless fault
- case fault
- when Test::Unit::Error
- detect_file(fault.long_display)
- when Test::Unit::Failure
- detect_file(fault.location.to_s)
- when Spec::Runner::Reporter::Failure
- detect_file(fault.exception.backtrace.to_s)
- else
- example.name
- end
- end
-
- def current_error(fault = current_failure)
- case fault
- when nil
- nil
- when Test::Unit::Failure
- Error.new(fault.message, fault.location)
- when Test::Unit::Error
- if fault.exception.is_a?(NativeException)
- exception = fault.exception.cause
- bt = exception.stack_trace.to_a
- else
- exception = fault.exception
- bt = exception.backtrace
- end
- Error.new(exception.message, bt)
- when Expectations::Results::Error
- fault.exception
- when Spec::Runner::Reporter::Failure
- ex = fault.exception
- Error.new(ex.message, ex.backtrace)
- when Expectations::Results
- file = fault.file
- line = fault.line
- Error.new(fault.message, ["#{fault.file}:#{fault.line}"])
- else
- if fault.respond_to?(:test_header)
- fault.test_header[/\((.+)\)/]
- test_cls, test_meth = $1.to_s, $`.to_s
- exception = fault.exception
- (class << exception; self; end).module_eval do
- define_method(:backtrace) do
- (["#{test_cls}:in `#{test_meth}'"] + stackTrace).map { |s| s.to_s }
- end
- end
- exception
- elsif fault.respond_to?(:method)
- test_cls, test_meth = fault.method.test_class.name, fault.method.method_name
- exception = fault.throwable
- (class << exception; self; end).module_eval do
- define_method(:backtrace) do
- (["#{test_cls}:in `#{test_meth}'"] + stackTrace).map { |s| s.to_s }
- end
- end
- exception
- else
- raise "Cannot handle fault #{fault.class}: #{fault.inspect}"
- end
- end
- end
-
- end # RSpecResultHandler
-
end # TestResult
end
end
Modified: buildr/trunk/spec/java/bdd_spec.rb
URL: http://svn.apache.org/viewvc/buildr/trunk/spec/java/bdd_spec.rb?rev=1039804&r1=1039803&r2=1039804&view=diff
==============================================================================
--- buildr/trunk/spec/java/bdd_spec.rb (original)
+++ buildr/trunk/spec/java/bdd_spec.rb Sun Nov 28 00:16:24 2010
@@ -29,7 +29,7 @@ describe Buildr::RSpec do
it 'should read passed specs from result yaml' do
write('src/spec/ruby/success_spec.rb', 'describe("success") { it("is true") { nil.should be_nil } }')
-
+
project('foo').test.invoke
project('foo').test.passed_tests.should eql([File.expand_path('src/spec/ruby/success_spec.rb')])
end
@@ -41,7 +41,7 @@ describe Buildr::RSpec do
write(failure, 'describe("failure") { it("is false") { true.should == false } }')
error = File.expand_path('src/spec/ruby/error_spec.rb')
write(error, 'describe("error") { it("raises") { lambda; } }')
-
+
lambda { project('foo').test.invoke }.should raise_error(/Tests failed/)
project('foo').test.tests.should include(success, failure, error)
project('foo').test.failed_tests.sort.should eql([failure, error].sort)
@@ -234,7 +234,7 @@ describe Buildr::JtestR do
failure = File.expand_path('src/spec/ruby/failure_expect.rb')
write(failure, 'Expectations { expect(true) { false } }')
error = File.expand_path('src/spec/ruby/error_expect.rb')
- write(error, 'Expectations { expect(nil) { lambda; } }')
+ write(error, 'Expectations { expect(nil) { lambda {}; } }')
foo do
lambda { test.invoke }.should raise_error(/Tests failed/)
test.tests.should include(success, failure, error)