diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-12 00:16:41 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-12 00:16:41 +0000 |
commit | 44d0a6dcd7563526a8b05ccdfa21d9425b94e62b (patch) | |
tree | e3bc8e5f1284e65a70c61de9a9d349d5fc8a8640 /lib/rubygems/test_case.rb | |
parent | 8f3934261ad4a7f486d2fffa9c961d7535675d8f (diff) |
* lib/rubygems: Update to RubyGems master b9213d7. Changes include:
Fixed tests on Windows (I hope) by forcing platform for
platform-dependent tests.
Fixed File.exists? warnings.
Improved testing infrastructure.
* test/rubygems: ditto.
* test/rdoc/test_rdoc_rubygems_hook.rb: Switch to util_spec like
RubyGems.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/test_case.rb')
-rw-r--r-- | lib/rubygems/test_case.rb | 120 |
1 files changed, 48 insertions, 72 deletions
diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index 08109c6405..b04cbfc1f3 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -30,7 +30,6 @@ require 'fileutils' require 'tmpdir' require 'uri' require 'rubygems/package' -require 'rubygems/test_utilities' require 'pp' require 'zlib' require 'pathname' @@ -84,6 +83,8 @@ end class Gem::TestCase < MiniTest::Unit::TestCase + attr_accessor :fetcher # :nodoc: + def assert_activate expected, *specs specs.each do |spec| case spec @@ -197,7 +198,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase @orig_gem_path = ENV['GEM_PATH'] @current_dir = Dir.pwd - @ui = Gem::MockGemUi.new + @fetcher = nil + @ui = Gem::MockGemUi.new tmpdir = File.expand_path Dir.tmpdir tmpdir.untaint @@ -378,7 +380,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase gem = File.join @tempdir, "gems", "#{spec.full_name}.gem" - unless File.exists? gem + unless File.exist? gem then use_ui Gem::MockGemUi.new do Dir.chdir @tempdir do Gem::Package.build spec @@ -503,28 +505,11 @@ class Gem::TestCase < MiniTest::Unit::TestCase return spec end - def quick_spec name, version = '2' - # TODO: deprecate - require 'rubygems/specification' - - spec = Gem::Specification.new do |s| - s.platform = Gem::Platform::RUBY - s.name = name - s.version = version - s.author = 'A User' - s.email = '[email protected]' - s.homepage = 'http://example.com' - s.summary = "this is a summary" - s.description = "This is a test description" - - yield(s) if block_given? - end - - spec.loaded_from = spec.spec_file - - Gem::Specification.add_spec spec + ## + # TODO: remove in RubyGems 3.0 - return spec + def quick_spec name, version = '2' # :nodoc: + util_spec name, version end ## @@ -561,7 +546,9 @@ class Gem::TestCase < MiniTest::Unit::TestCase def util_clear_gems FileUtils.rm_rf File.join(@gemhome, "gems") # TODO: use Gem::Dirs + FileUtils.mkdir File.join(@gemhome, "gems") FileUtils.rm_rf File.join(@gemhome, "specifications") + FileUtils.mkdir File.join(@gemhome, "specifications") Gem::Specification.reset end @@ -612,10 +599,11 @@ class Gem::TestCase < MiniTest::Unit::TestCase end ## - # Create a new spec (or gem if passed an array of files) and set it - # up properly. Use this instead of util_spec and util_gem. + # new_spec is deprecated as it is never used. + # + # TODO: remove in RubyGems 3.0 - def new_spec name, version, deps = nil, *files + def new_spec name, version, deps = nil, *files # :nodoc: require 'rubygems/specification' spec = Gem::Specification.new do |s| @@ -656,7 +644,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase end def new_default_spec(name, version, deps = nil, *files) - spec = new_spec(name, version, deps) + spec = util_spec name, version, deps + spec.loaded_from = File.join(@default_spec_dir, spec.spec_name) spec.files = files @@ -674,24 +663,38 @@ class Gem::TestCase < MiniTest::Unit::TestCase end ## - # Creates a spec with +name+, +version+ and +deps+. + # Creates a spec with +name+, +version+. +deps+ can specify the dependency + # or a +block+ can be given for full customization of the specification. - def util_spec(name, version, deps = nil, &block) - # TODO: deprecate - raise "deps or block, not both" if deps and block + def util_spec name, version = 2, deps = nil # :yields: specification + raise "deps or block, not both" if deps and block_given? + + spec = Gem::Specification.new do |s| + s.platform = Gem::Platform::RUBY + s.name = name + s.version = version + s.author = 'A User' + s.email = '[email protected]' + s.homepage = 'http://example.com' + s.summary = "this is a summary" + s.description = "This is a test description" + + yield s if block_given? + end if deps then - block = proc do |s| - # Since Hash#each is unordered in 1.8, sort - # the keys and iterate that way so the tests are - # deteriminstic on all implementations. - deps.keys.sort.each do |n| - s.add_dependency n, (deps[n] || '>= 0') - end + # Since Hash#each is unordered in 1.8, sort the keys and iterate that + # way so the tests are deterministic on all implementations. + deps.keys.sort.each do |n| + spec.add_dependency n, (deps[n] || '>= 0') end end - quick_spec(name, version, &block) + spec.loaded_from = spec.spec_file + + Gem::Specification.add_spec spec + + return spec end ## @@ -1132,38 +1135,8 @@ Also, a list: # end def spec_fetcher - gems = {} - - fetcher = Object.new - fetcher.instance_variable_set :@test, self - fetcher.instance_variable_set :@gems, gems - - def fetcher.gem name, version, dependencies = nil, &block - spec, gem = @test.util_gem name, version, dependencies, &block - - @gems[spec] = gem - - spec - end - - def fetcher.spec name, version, dependencies = nil, &block - spec = @test.util_spec name, version, dependencies, &block - - @gems[spec] = nil - - spec - end - - yield fetcher - - util_setup_fake_fetcher unless @fetcher - util_setup_spec_fetcher(*gems.keys) - - gems.each do |spec, gem| - next unless gem - - @fetcher.data["http://gems.example.com/gems/#{spec.file_name}"] = - Gem.read_binary(gem) + Gem::TestCase::SpecFetcherSetup.declare self do |spec_fetcher_setup| + yield spec_fetcher_setup if block_given? end end @@ -1318,3 +1291,6 @@ Also, a list: end if defined?(OpenSSL::SSL) end + +require 'rubygems/test_utilities' + |