aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems/test_gem_ext_builder.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-16 00:14:16 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-16 00:14:16 +0000
commit28918eac58eb6e2681d10839ac0d1430b2a4f1f9 (patch)
tree3c2c9e36118efe1d9406acdd14c186788879bea3 /test/rubygems/test_gem_ext_builder.rb
parentcfe1458078b8cf36e490c516977c52e1faa9e88a (diff)
downloadruby-28918eac58eb6e2681d10839ac0d1430b2a4f1f9.tar.gz
* lib/rubygems: Update to RubyGems master commit 2a74263. This fixes
several bugs in RubyGems 2.2.0.preview.1. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_ext_builder.rb')
-rw-r--r--test/rubygems/test_gem_ext_builder.rb89
1 files changed, 82 insertions, 7 deletions
diff --git a/test/rubygems/test_gem_ext_builder.rb b/test/rubygems/test_gem_ext_builder.rb
index 8383040f88..ccd1af9d87 100644
--- a/test/rubygems/test_gem_ext_builder.rb
+++ b/test/rubygems/test_gem_ext_builder.rb
@@ -36,6 +36,9 @@ class TestGemExtBuilder < Gem::TestCase
all:
\t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}"
+clean:
+\t@#{Gem.ruby} -e "puts %Q{clean: \#{ENV['DESTDIR']}}"
+
install:
\t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}"
MAKEFILE
@@ -46,21 +49,49 @@ install:
results = results.join "\n"
-
if RUBY_VERSION > '2.0' then
+ assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
else
+ refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
refute_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
refute_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
end
if /nmake/ !~ results
+ assert_match %r%^clean: destination$%, results
assert_match %r%^all: destination$%, results
assert_match %r%^install: destination$%, results
end
end
+ def test_build_extensions
+ @spec.extensions << 'extconf.rb'
+
+ FileUtils.mkdir_p @spec.gem_dir
+
+ extconf_rb = File.join @spec.gem_dir, 'extconf.rb'
+
+ open extconf_rb, 'w' do |f|
+ f.write <<-'RUBY'
+ open 'Makefile', 'w' do |f|
+ f.puts "clean:\n\techo cleaned"
+ f.puts "default:\n\techo built"
+ f.puts "install:\n\techo installed"
+ end
+ RUBY
+ end
+
+ use_ui @ui do
+ @builder.build_extensions
+ end
+
+ assert_path_exists @spec.extension_install_dir
+ assert_path_exists @spec.gem_build_complete_path
+ assert_path_exists File.join @spec.extension_install_dir, 'gem_make.out'
+ end
+
def test_build_extensions_none
use_ui @ui do
@builder.build_extensions
@@ -69,13 +100,30 @@ install:
assert_equal '', @ui.output
assert_equal '', @ui.error
- refute File.exist?('gem_make.out')
+ refute_path_exists File.join @spec.extension_install_dir, 'gem_make.out'
+ end
+
+ def test_build_extensions_rebuild_failure
+ FileUtils.mkdir_p @spec.extension_install_dir
+ FileUtils.touch @spec.gem_build_complete_path
+
+ @spec.extensions << nil
+
+ assert_raises Gem::Ext::BuildError do
+ use_ui @ui do
+ @builder.build_extensions
+ end
+ end
+
+ refute_path_exists @spec.gem_build_complete_path
end
def test_build_extensions_extconf_bad
@spec.extensions << 'extconf.rb'
- e = assert_raises Gem::Installer::ExtensionBuildError do
+ FileUtils.mkdir_p @spec.gem_dir
+
+ e = assert_raises Gem::Ext::BuildError do
use_ui @ui do
@builder.build_extensions
end
@@ -87,20 +135,22 @@ install:
@ui.output
assert_equal '', @ui.error
- gem_make_out = File.join @gemhome, 'gems', @spec.full_name, 'gem_make.out'
+ gem_make_out = File.join @spec.extension_install_dir, 'gem_make.out'
assert_match %r%#{Regexp.escape Gem.ruby} extconf\.rb%,
File.read(gem_make_out)
assert_match %r%#{Regexp.escape Gem.ruby}: No such file%,
File.read(gem_make_out)
+
+ refute_path_exists @spec.gem_build_complete_path
end
def test_build_extensions_unsupported
FileUtils.mkdir_p @spec.gem_dir
- gem_make_out = File.join @spec.gem_dir, 'gem_make.out'
+ gem_make_out = File.join @spec.extension_install_dir, 'gem_make.out'
@spec.extensions << nil
- e = assert_raises Gem::Installer::ExtensionBuildError do
+ e = assert_raises Gem::Ext::BuildError do
use_ui @ui do
@builder.build_extensions
end
@@ -113,6 +163,8 @@ install:
assert_equal '', @ui.error
assert_equal "No builder for extension ''\n", File.read(gem_make_out)
+
+ refute_path_exists @spec.gem_build_complete_path
ensure
FileUtils.rm_f gem_make_out
end
@@ -133,6 +185,7 @@ install:
end
File.open 'Makefile', 'w' do |f|
+ f.puts "clean:\n\techo cleaned"
f.puts "default:\n\techo built"
f.puts "install:\n\techo installed"
end
@@ -146,7 +199,29 @@ install:
path = File.join @spec.gem_dir, "extconf_args"
assert_equal args.inspect, File.read(path).strip
- assert File.directory? File.join(@spec.gem_dir, 'lib')
+ assert_path_exists @spec.extension_install_dir
+ end
+
+ def test_initialize
+ build_info_dir = File.join @gemhome, 'build_info'
+
+ FileUtils.mkdir_p build_info_dir
+
+ build_info_file = File.join build_info_dir, "#{@spec.full_name}.info"
+
+ open build_info_file, 'w' do |io|
+ io.puts '--with-foo-dir=/nonexistent'
+ end
+
+ builder = Gem::Ext::Builder.new @spec
+
+ assert_equal %w[--with-foo-dir=/nonexistent], builder.build_args
+ end
+
+ def test_initialize_build_args
+ builder = Gem::Ext::Builder.new @spec, %w[--with-foo-dir=/nonexistent]
+
+ assert_equal %w[--with-foo-dir=/nonexistent], builder.build_args
end
end