From 28918eac58eb6e2681d10839ac0d1430b2a4f1f9 Mon Sep 17 00:00:00 2001 From: drbrain Date: Wed, 16 Oct 2013 00:14:16 +0000 Subject: * 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 --- test/rubygems/test_gem_ext_builder.rb | 89 ++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 7 deletions(-) (limited to 'test/rubygems/test_gem_ext_builder.rb') 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 -- cgit v1.2.3