From 076d7f885ed808a061c1d161f00fc81465b3b4da Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 13 Sep 2009 16:37:30 -0500 Subject: AP tests: detect missing dependencies and automatically run bundler --- actionpack/test/abstract_unit.rb | 4 ++-- actionpack/test/abstract_unit2.rb | 4 ++-- actionpack/test/bundler_helper.rb | 30 ++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 actionpack/test/bundler_helper.rb diff --git a/actionpack/test/abstract_unit.rb b/actionpack/test/abstract_unit.rb index d88e5cea82..f1914217f4 100644 --- a/actionpack/test/abstract_unit.rb +++ b/actionpack/test/abstract_unit.rb @@ -6,8 +6,8 @@ $:.unshift(File.dirname(__FILE__) + '/lib') $:.unshift(File.dirname(__FILE__) + '/fixtures/helpers') $:.unshift(File.dirname(__FILE__) + '/fixtures/alternate_helpers') -bundler = File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'environment') -require bundler if File.exist?("#{bundler}.rb") +require 'bundler_helper' +ensure_requirable %w( rack rack/test sqlite3 builder memcache tzinfo ) ENV['TMPDIR'] = File.join(File.dirname(__FILE__), 'tmp') diff --git a/actionpack/test/abstract_unit2.rb b/actionpack/test/abstract_unit2.rb index 5bda38243c..0a98d8edc2 100644 --- a/actionpack/test/abstract_unit2.rb +++ b/actionpack/test/abstract_unit2.rb @@ -5,8 +5,8 @@ $:.unshift(File.dirname(__FILE__) + '/../../activesupport/lib') $:.unshift(File.dirname(__FILE__) + '/../lib') $:.unshift(File.dirname(__FILE__) + '/lib') -bundler = File.join(File.dirname(__FILE__), '..', '..', 'vendor', 'gems', 'environment') -require bundler if File.exist?("#{bundler}.rb") +require 'bundler_helper' +ensure_requirable %w( rack rack/test ) require 'test/unit' require 'active_support' diff --git a/actionpack/test/bundler_helper.rb b/actionpack/test/bundler_helper.rb new file mode 100644 index 0000000000..5f3e982f19 --- /dev/null +++ b/actionpack/test/bundler_helper.rb @@ -0,0 +1,30 @@ +BUNDLER_ENV_FILE = File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'environment') + +def load_bundled_gems + load_bundled_gems! if File.exist?("#{BUNDLER_ENV_FILE}.rb") +end + +def load_bundled_gems! + puts "Checking if the bundled testing requirements are up to date..." + + result = system "gem bundle" + unless result + puts "The gem bundler is not installed. Installing." + system "gem install bundler" + system "gem bundle" + end + + require BUNDLER_ENV_FILE +end + +def ensure_requirable(libs) + load_bundled_gems + + begin + libs.each { |lib| require lib } + rescue LoadError => e + puts "Missing required libs to run test" + puts e.message + load_bundled_gems! + end +end -- cgit v1.2.3