Change soft-fail to use the config, rather than env
[rbx.git] / test / rubygems / test_gem_ext_rake_builder.rb
blobcd631060774f32a1c1e73ca7f10de68fddde3907
1 require 'test/unit'
2 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
3 require 'rubygems/ext'
5 class TestGemExtRakeBuilder < RubyGemTestCase
7   def setup
8     super
10     @ext = File.join @tempdir, 'ext'
11     @dest_path = File.join @tempdir, 'prefix'
13     FileUtils.mkdir_p @ext
14     FileUtils.mkdir_p @dest_path
15   end
17   def test_class_build
18     File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf|
19       mkrf_conf.puts <<-EO_MKRF
20         File.open("Rakefile","w") do |f|
21           f.puts "task :default"
22         end
23       EO_MKRF
24     end
26     output = []
27     realdir = nil # HACK /tmp vs. /private/tmp
29     Dir.chdir @ext do
30       realdir = Dir.pwd
31       Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output
32     end
34     expected = [
35       "#{Gem.ruby} mkrf_conf.rb",
36       "",
37       "rake RUBYARCHDIR=#{@dest_path} RUBYLIBDIR=#{@dest_path}",
38       "(in #{realdir})\n"
39     ]
41     assert_equal expected, output
42   end
44   def test_class_build_fail
45     File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf|
46       mkrf_conf.puts <<-EO_MKRF
47         File.open("Rakefile","w") do |f|
48           f.puts "task :default do abort 'fail' end"
49         end
50         EO_MKRF
51     end
53     output = []
55     error = assert_raise Gem::InstallError do
56       Dir.chdir @ext do
57         Gem::Ext::RakeBuilder.build "mkrf_conf.rb", nil, @dest_path, output
58       end
59     end
61     expected = <<-EOF.strip
62 rake failed:
64 #{Gem.ruby} mkrf_conf.rb
66 rake RUBYARCHDIR=#{@dest_path} RUBYLIBDIR=#{@dest_path}
67     EOF
69     assert_equal expected, error.message.split("\n")[0..4].join("\n")
70   end
72 end