diff options
Diffstat (limited to 'test/rubygems/test_gem_resolver_installer_set.rb')
-rw-r--r-- | test/rubygems/test_gem_resolver_installer_set.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/test/rubygems/test_gem_resolver_installer_set.rb b/test/rubygems/test_gem_resolver_installer_set.rb index 76c9c04a3c..928a16b9d3 100644 --- a/test/rubygems/test_gem_resolver_installer_set.rb +++ b/test/rubygems/test_gem_resolver_installer_set.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -require 'rubygems/test_case' +require_relative 'helper' class TestGemResolverInstallerSet < Gem::TestCase def test_add_always_install @@ -16,7 +16,7 @@ class TestGemResolverInstallerSet < Gem::TestCase assert_equal %w[a-2], set.always_install.map {|s| s.full_name } - e = assert_raises Gem::UnsatisfiableDependencyError do + e = assert_raise Gem::UnsatisfiableDependencyError do set.add_always_install dep('b') end @@ -29,7 +29,7 @@ class TestGemResolverInstallerSet < Gem::TestCase set = Gem::Resolver::InstallerSet.new :both - e = assert_raises Gem::UnsatisfiableDependencyError do + e = assert_raise Gem::UnsatisfiableDependencyError do set.add_always_install dep 'a' end @@ -64,6 +64,24 @@ class TestGemResolverInstallerSet < Gem::TestCase assert_equal %w[a-1], set.always_install.map {|s| s.full_name } end + def test_add_always_install_prerelease_github_problem + spec_fetcher do |fetcher| + fetcher.gem 'a', 1 + end + + # Github has an issue in which it will generate a misleading prerelease output in its RubyGems server API and + # returns a 0 version for the gem while it doesn't exist. + @fetcher.data["#{@gem_repo}prerelease_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([ + Gem::NameTuple.new('a', Gem::Version.new(0), 'ruby'), + ])) + + set = Gem::Resolver::InstallerSet.new :both + + set.add_always_install dep('a') + + assert_equal %w[a-1], set.always_install.map {|s| s.full_name } + end + def test_add_always_install_prerelease_only spec_fetcher do |fetcher| fetcher.gem 'a', '3.a' @@ -71,7 +89,7 @@ class TestGemResolverInstallerSet < Gem::TestCase set = Gem::Resolver::InstallerSet.new :both - assert_raises Gem::UnsatisfiableDependencyError do + assert_raise Gem::UnsatisfiableDependencyError do set.add_always_install dep('a') end end @@ -192,7 +210,7 @@ class TestGemResolverInstallerSet < Gem::TestCase def (set.remote_set).prefetch(_) raise "called" end - assert_raises(RuntimeError){ set.prefetch(nil) } + assert_raise(RuntimeError){ set.prefetch(nil) } set = Gem::Resolver::InstallerSet.new :local def (set.remote_set).prefetch(_) |