Author: vborja
Date: Mon Oct 6 11:46:55 2008
New Revision: 702225
URL: http://svn.apache.org/viewvc?rev=702225&view=rev
Log:
Fix JtestR to work with rspec >=1.1.5 used by buildr
Modified:
incubator/buildr/trunk/lib/buildr/java/bdd.rb
incubator/buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb
incubator/buildr/trunk/lib/buildr/java/test_result.rb
incubator/buildr/trunk/spec/java/bdd_spec.rb
Modified: incubator/buildr/trunk/lib/buildr/java/bdd.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java/bdd.rb?rev=702225&r1=702224&r2=702225&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java/bdd.rb (original)
+++ incubator/buildr/trunk/lib/buildr/java/bdd.rb Mon Oct 6 11:46:55 2008
@@ -269,6 +269,7 @@
Buildr::TestFramework::TestResult::Error.guard('<%= runner.file %>') do
::Spec::Runner::CommandLine.run($rspec_options)
end
+ exit 0 # let buildr figure the result from the yaml file
}
Filter::Mapper.new(:erb, binding).transform(runner_erb)
end
@@ -365,7 +366,7 @@
def runner_config
runner = super
- runner.gems.update 'rspec' => '>0'
+ runner.gems.update 'rspec' => '>= 1.1.5'
runner.requires.unshift 'spec', 'jtestr'
runner
end
Modified: incubator/buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb?rev=702225&r1=702224&r2=702225&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb (original)
+++ incubator/buildr/trunk/lib/buildr/java/jtestr_runner.rb.erb Mon Oct 6
11:46:55 2008
@@ -100,6 +100,16 @@
argv = <%= runner.rspec.inspect %> || []
argv.push *<%= tests.inspect %>
Buildr::TestFramework::TestResult::RSpecResultHandler.init(argv, output,
output)
+
+ # JtestR uses this method, no longer on rspec
+ module ::Spec; def self.run=(flag); end; end
+ # JtestR uses a deprecated arity, so to complain with latest version we
override it
+ class ::JtestR::RSpecResultHandler
+ alias_method :deprecated_example_pending, :example_pending
+ def example_pending(example, message, pending_caller)
+ deprecated_example_pendng(example, message)
+ end
+ end
jtestr.run *args
@@ -107,6 +117,8 @@
Buildr::TestFramework::TestResult::Error.dump_yaml('<%= runner.result %>',
e) rescue \
puts "-[--- ERROR ---]-", e.class, e.message, *e.backtrace
end
+
+exit 0 # let buildr find the erros from the result yaml
# Local Variables:
# mode: ruby
Modified: incubator/buildr/trunk/lib/buildr/java/test_result.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/lib/buildr/java/test_result.rb?rev=702225&r1=702224&r2=702225&view=diff
==============================================================================
--- incubator/buildr/trunk/lib/buildr/java/test_result.rb (original)
+++ incubator/buildr/trunk/lib/buildr/java/test_result.rb Mon Oct 6 11:46:55
2008
@@ -27,6 +27,7 @@
def initialize(message, backtrace)
@message = message
@backtrace = backtrace
+ set_backtrace backtrace
end
def self.dump_yaml(file, e)
@@ -59,9 +60,12 @@
def initialize(options, where)
@options = options
@where = where
+ @result = Hash.new
+ @result[:succeeded] = []
+ @result[:failed] = []
end
- %w[ example_started example_passed example_failed example_pending
+ %w[ example_started
start_dump dump_failure dump_summary dump_pending ].each do |meth|
module_eval "def #{meth}(*args); end"
end
@@ -70,24 +74,38 @@
@example_group = example_group
end
+ def example_passed(example)
+ end
+
+ def example_pending(example, counter, failure)
+ end
+
+ def example_failed(example, counter, failure)
+ if example_group.respond_to?(:spec_path)
+ result.failed << example_group.spec_path.gsub(/:\d+$/, '')
+ else
+ path = path_from_bt(failure.exception.backtrace)
+ result.failed << path if path
+ end
+ end
+
def start(example_count)
@result = TestResult.new
end
- def close
+ def path_from_bt(ary)
files = options.files
- failure_from_bt = lambda do |ary|
- test = nil
- ary.find do |bt|
- bt = bt.split(':').first.strip
- test = bt if files.include?(bt)
- end
- test
- end
- options.reporter.instance_variable_get(:@failures).each do |failure|
- result.failed <<
files.delete(failure_from_bt[failure.exception.backtrace])
+ test = nil
+ ary.find do |bt|
+ bt = bt.split(':').first.strip
+ test = bt if files.include?(bt)
end
- result.succeeded |= files
+ test
+ end
+
+ def close
+ files = options.files
+ result.succeeded = files - result.failed
FileUtils.mkdir_p(File.dirname(where))
File.open(where, 'w') { |f| f.puts YAML.dump(result) }
@@ -238,8 +256,21 @@
nil
when Test::Unit::Failure
Error.new(fault.message, fault.location)
- when Test::Unit::Error, Expectations::Results::Error,
Spec::Runner::Reporter::Failure
+ 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
+ fault.example.instance_variable_get(:@_implementation).to_s =~
/@(.+:\d+)/
+ Error.new(ex.message, [$1.to_s] + ex.backtrace)
when Expectations::Results
file = fault.file
line = fault.line
Modified: incubator/buildr/trunk/spec/java/bdd_spec.rb
URL:
http://svn.apache.org/viewvc/incubator/buildr/trunk/spec/java/bdd_spec.rb?rev=702225&r1=702224&r2=702225&view=diff
==============================================================================
--- incubator/buildr/trunk/spec/java/bdd_spec.rb (original)
+++ incubator/buildr/trunk/spec/java/bdd_spec.rb Mon Oct 6 11:46:55 2008
@@ -38,7 +38,7 @@
failure = File.expand_path('src/spec/ruby/failure_spec.rb')
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") { eval("lambda") } }')
+ write(error, 'describe("error") { it("raises") { lambda; } }')
foo do
lambda { test.invoke }.should raise_error(/Tests failed/)
test.tests.should include(success, failure, error)
@@ -208,7 +208,7 @@
require 'test/unit'
class TC_Error < Test::Unit::TestCase
def test_error
- eval('lambda')
+ lambda;
end
end
TESTUNIT
@@ -226,7 +226,7 @@
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) { eval("lambda") } }')
+ write(error, 'Expectations { expect(nil) { lambda; } }')
foo do
lambda { test.invoke }.should raise_error(/Tests failed/)
test.tests.should include(success, failure, error)
@@ -241,7 +241,7 @@
failure = File.expand_path('src/spec/ruby/failure_spec.rb')
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") { eval("lambda") } }')
+ write(error, 'describe("error") { it("raises") { lambda; } }')
pending = File.expand_path('src/spec/ruby/pending_spec.rb')
write(pending, 'describe("peding") { it "is not implemented" }')
foo do