diff options
Diffstat (limited to 'jni/ruby/test/rake/helper.rb')
-rw-r--r-- | jni/ruby/test/rake/helper.rb | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/jni/ruby/test/rake/helper.rb b/jni/ruby/test/rake/helper.rb new file mode 100644 index 0000000..ac1205a --- /dev/null +++ b/jni/ruby/test/rake/helper.rb @@ -0,0 +1,129 @@ +require 'rubygems' +$:.unshift File.expand_path('../../lib', __FILE__) + +begin + gem 'minitest', '~> 5' +rescue Gem::LoadError +end + +require 'minitest/autorun' +require 'rake' +require 'tmpdir' +require File.expand_path('../file_creation', __FILE__) + + +begin + require_relative 'support/ruby_runner' + require_relative 'support/rakefile_definitions' +rescue NoMethodError, LoadError + # ruby 1.8 + require 'test/support/ruby_runner' + require 'test/support/rakefile_definitions' +end + +class Rake::TestCase < Minitest::Test + include FileCreation + + include Rake::DSL + + class TaskManager + include Rake::TaskManager + end + + RUBY = defined?(EnvUtil) ? EnvUtil.rubybin : Gem.ruby + + def setup + ARGV.clear + + test_dir = File.basename File.dirname File.expand_path __FILE__ + + @rake_root = + if test_dir == 'test' + # rake repository + File.expand_path '../../', __FILE__ + else + # ruby repository + File.expand_path '../../../', __FILE__ + end + + @verbose = ENV['VERBOSE'] + + @rake_exec = File.join @rake_root, 'bin', 'rake' + @rake_lib = File.join @rake_root, 'lib' + @ruby_options = ["-I#{@rake_lib}", "-I."] + + @orig_pwd = Dir.pwd + @orig_appdata = ENV['APPDATA'] + @orig_home = ENV['HOME'] + @orig_homedrive = ENV['HOMEDRIVE'] + @orig_homepath = ENV['HOMEPATH'] + @orig_rake_columns = ENV['RAKE_COLUMNS'] + @orig_rake_system = ENV['RAKE_SYSTEM'] + @orig_rakeopt = ENV['RAKEOPT'] + @orig_userprofile = ENV['USERPROFILE'] + ENV.delete 'RAKE_COLUMNS' + ENV.delete 'RAKE_SYSTEM' + ENV.delete 'RAKEOPT' + + tmpdir = Dir.chdir Dir.tmpdir do Dir.pwd end + @tempdir = File.join tmpdir, "test_rake_#{$$}" + + FileUtils.mkdir_p @tempdir + + Dir.chdir @tempdir + + Rake.application = Rake::Application.new + Rake::TaskManager.record_task_metadata = true + RakeFileUtils.verbose_flag = false + end + + def teardown + Dir.chdir @orig_pwd + FileUtils.rm_rf @tempdir + + if @orig_appdata + ENV['APPDATA'] = @orig_appdata + else + ENV.delete 'APPDATA' + end + + ENV['HOME'] = @orig_home + ENV['HOMEDRIVE'] = @orig_homedrive + ENV['HOMEPATH'] = @orig_homepath + ENV['RAKE_COLUMNS'] = @orig_rake_columns + ENV['RAKE_SYSTEM'] = @orig_rake_system + ENV['RAKEOPT'] = @orig_rakeopt + ENV['USERPROFILE'] = @orig_userprofile + end + + def ignore_deprecations + Rake.application.options.ignore_deprecate = true + yield + ensure + Rake.application.options.ignore_deprecate = false + end + + def rake_system_dir + @system_dir = 'system' + + FileUtils.mkdir_p @system_dir + + open File.join(@system_dir, 'sys1.rake'), 'w' do |io| + io << <<-SYS +task "sys1" do + puts "SYS1" +end + SYS + end + + ENV['RAKE_SYSTEM'] = @system_dir + end + + def rakefile(contents) + open 'Rakefile', 'w' do |io| + io << contents + end + end + + include RakefileDefinitions +end |