summaryrefslogtreecommitdiff
path: root/jni/ruby/test/rubygems/test_gem_ext_rake_builder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'jni/ruby/test/rubygems/test_gem_ext_rake_builder.rb')
-rw-r--r--jni/ruby/test/rubygems/test_gem_ext_rake_builder.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/jni/ruby/test/rubygems/test_gem_ext_rake_builder.rb b/jni/ruby/test/rubygems/test_gem_ext_rake_builder.rb
new file mode 100644
index 0000000..0f4789a
--- /dev/null
+++ b/jni/ruby/test/rubygems/test_gem_ext_rake_builder.rb
@@ -0,0 +1,64 @@
+require 'rubygems/test_case'
+require 'rubygems/ext'
+
+class TestGemExtRakeBuilder < Gem::TestCase
+ def setup
+ super
+
+ @ext = File.join @tempdir, 'ext'
+ @dest_path = File.join @tempdir, 'prefix'
+
+ FileUtils.mkdir_p @ext
+ FileUtils.mkdir_p @dest_path
+ end
+
+ def test_class_build
+ File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf|
+ mkrf_conf.puts <<-EO_MKRF
+ File.open("Rakefile","w") do |f|
+ f.puts "task :default"
+ end
+ EO_MKRF
+ end
+
+ output = []
+ realdir = nil # HACK /tmp vs. /private/tmp
+
+ build_rake_in do |rake|
+ Dir.chdir @ext do
+ realdir = Dir.pwd
+ Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', nil, @dest_path, output
+ end
+
+ output = output.join "\n"
+
+ refute_match %r%^rake failed:%, output
+ assert_match %r%^#{Regexp.escape @@ruby} mkrf_conf\.rb%, output
+ assert_match %r%^#{Regexp.escape rake} RUBYARCHDIR=#{Regexp.escape @dest_path} RUBYLIBDIR=#{Regexp.escape @dest_path}%, output
+ end
+ end
+
+ def test_class_build_fail
+ File.open File.join(@ext, 'mkrf_conf.rb'), 'w' do |mkrf_conf|
+ mkrf_conf.puts <<-EO_MKRF
+ File.open("Rakefile","w") do |f|
+ f.puts "task :default do abort 'fail' end"
+ end
+ EO_MKRF
+ end
+
+ output = []
+
+ build_rake_in(false) do |rake|
+ error = assert_raises Gem::InstallError do
+ Dir.chdir @ext do
+ Gem::Ext::RakeBuilder.build "mkrf_conf.rb", nil, @dest_path, output
+ end
+ end
+
+ assert_match %r%^rake failed%, error.message
+ end
+ end
+
+end
+