Author: boisvert
Date: Tue Jun 21 18:44:56 2011
New Revision: 1138131
URL: http://svn.apache.org/viewvc?rev=1138131&view=rev
Log:
Fix JtestR support on C-Ruby; JRuby still doesn't work due to rspec
incompatibility
Modified:
buildr/trunk/lib/buildr/java/bdd.rb
buildr/trunk/lib/buildr/java/jtestr_result.rb
buildr/trunk/spec/sandbox.rb
Modified: buildr/trunk/lib/buildr/java/bdd.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/java/bdd.rb?rev=1138131&r1=1138130&r2=1138131&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/java/bdd.rb (original)
+++ buildr/trunk/lib/buildr/java/bdd.rb Tue Jun 21 18:44:56 2011
@@ -47,7 +47,7 @@ module Buildr
module TestFramework::JRubyBased
extend self
- VERSION = '1.6.2'
+ VERSION = '1.5.4' # Note: JtestR 0.6.0 only works up to 1.5.4
class << self
def version
@@ -75,7 +75,7 @@ module Buildr
def dependencies
unless @dependencies
super
- unless RUBY_PLATFORM[/java/] &&
TestFramework::JRubyBased.jruby_installed?
+ if !RUBY_PLATFORM[/java/] &&
!TestFramework::JRubyBased.jruby_installed?
@dependencies |= TestFramework::JRubyBased.dependencies
end
end
@@ -146,11 +146,13 @@ module Buildr
cmd_options = java_args.last
project = cmd_options.delete(:project)
cmd_options[:classpath] ||= []
- Dir.glob(File.join(jruby_home, 'lib', '*.jar')) { |jar|
cmd_options[:classpath] << jar }
+ if jruby_home && jruby_home != ''
+ Dir.glob(File.join(jruby_home, 'lib', '*.jar')) { |jar|
cmd_options[:classpath] << jar }
+ cmd_options[:properties]['jruby.home'] = jruby_home
+ end
cmd_options[:java_args] ||= []
cmd_options[:java_args] << '-Xmx512m' unless
cmd_options[:java_args].detect {|a| a =~ /^-Xmx/}
cmd_options[:properties] ||= {}
- cmd_options[:properties]['jruby.home'] = jruby_home
Java::Commands.java(*java_args)
end
@@ -370,8 +372,9 @@ module Buildr
runner = super
# JtestR 0.6.0 comes with rspec 1.3.0 (and any other jtestr dependency)
included,
# so the rspec version used depends on the jtestr jar.
- runner.requires.unshift 'jtestr'
runner.gems.update 'rspec' => '=1.3.0'
+ runner.requires.clear
+ runner.requires.unshift 'jtestr'
runner.requires.unshift 'spec'
runner.requires.unshift File.join(File.dirname(__FILE__),
'jtestr_result')
runner.rspec = ['--format', 'progress', '--format',
"html:#{runner.html_report}"]
Modified: buildr/trunk/lib/buildr/java/jtestr_result.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/java/jtestr_result.rb?rev=1138131&r1=1138130&r2=1138131&view=diff
==============================================================================
--- buildr/trunk/lib/buildr/java/jtestr_result.rb (original)
+++ buildr/trunk/lib/buildr/java/jtestr_result.rb Tue Jun 21 18:44:56 2011
@@ -19,6 +19,42 @@ require 'fileutils'
module Buildr #:nodoc:
+ module TestFramework
+
+ # A class used by buildr for jruby based frameworks, so that buildr can
know
+ # which tests succeeded/failed.
+ class TestResult
+
+ class Error < ::Exception
+ attr_reader :message, :backtrace
+ def initialize(message, backtrace)
+ @message = message
+ @backtrace = backtrace
+ set_backtrace backtrace
+ end
+
+ def self.dump_yaml(file, e)
+ FileUtils.mkdir_p File.dirname(file)
+ File.open(file, 'w') { |f| f.puts(YAML.dump(Error.new(e.message,
e.backtrace))) }
+ end
+
+ def self.guard(file)
+ begin
+ yield
+ rescue => e
+ dump_yaml(file, e)
+ end
+ end
+ end
+
+ attr_accessor :failed, :succeeded
+
+ def initialize
+ @failed, @succeeded = [], []
+ end
+ end
+ end
+
module JtestR
# An Rspec formatter used by JtestR
Modified: buildr/trunk/spec/sandbox.rb
URL:
http://svn.apache.org/viewvc/buildr/trunk/spec/sandbox.rb?rev=1138131&r1=1138130&r2=1138131&view=diff
==============================================================================
--- buildr/trunk/spec/sandbox.rb (original)
+++ buildr/trunk/spec/sandbox.rb Tue Jun 21 18:44:56 2011
@@ -124,6 +124,13 @@ module Sandbox
Buildr.application.instance_eval { @rakefile =
File.expand_path('buildfile') }
@_sandbox[:load_path] = $LOAD_PATH.clone
+
+ # clear RUBYOPT since bundler hooks into it
+ # e.g. RUBYOPT=-I/usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib
-rbundler/setup
+ # and so Buildr's own Gemfile configuration taints e.g., JRuby's
environment
+ @_sandbox[:ruby_opt] = ENV["RUBYOPT"]
+ ENV["RUBYOPT"] = nil
+
#@_sandbox[:loaded_features] = $LOADED_FEATURES.clone
# Later on we'll want to lose all the on_define created during the test.
@@ -174,6 +181,8 @@ module Sandbox
Layout.default = @_sandbox[:layout].clone
$LOAD_PATH.replace @_sandbox[:load_path]
+ ENV["RUBYOPT"] = @_sandbox[:ruby_opt]
+
FileUtils.rm_rf @temp
mkpath ENV['HOME']