diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-10-20 00:31:12 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-10-20 00:31:12 +0000 |
commit | 8552f7aa680e1f1a31d76dc9038d80248a445960 (patch) | |
tree | 29de125ca8389a65e44d42b269a19274b8846b11 /test/rubygems/test_gem_dependency_resolver.rb | |
parent | 347e748bddd42e5a39dcb5c55ac37704a14b9374 (diff) | |
download | ruby-8552f7aa680e1f1a31d76dc9038d80248a445960.tar.gz |
* lib/rubygems: Update to RubyGems master 3de7e0f. Changes:
Only attempt to build extensions for newly-installed gems. This
prevents compilation attempts at gem activation time for gems that
already have extensions built.
Fix crash in the dependency resolver for dependencies that cannot be
resolved.
* test/rubygems: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_dependency_resolver.rb')
-rw-r--r-- | test/rubygems/test_gem_dependency_resolver.rb | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/test/rubygems/test_gem_dependency_resolver.rb b/test/rubygems/test_gem_dependency_resolver.rb index 47eef8cc55..bd349996c1 100644 --- a/test/rubygems/test_gem_dependency_resolver.rb +++ b/test/rubygems/test_gem_dependency_resolver.rb @@ -11,13 +11,17 @@ class TestGemDependencyResolver < Gem::TestCase StaticSet.new(specs) end - def assert_set(expected, actual) + def assert_resolves_to expected, resolver + actual = resolver.resolve + exp = expected.sort_by { |s| s.full_name } act = actual.map { |a| a.spec }.sort_by { |s| s.full_name } msg = "Set of gems was not the same: #{exp.map { |x| x.full_name}.inspect} != #{act.map { |x| x.full_name}.inspect}" assert_equal exp, act, msg + rescue Gem::DependencyResolutionError => e + flunk "#{e.message}\n#{e.conflict.explanation}" end def test_no_overlap_specificly @@ -33,7 +37,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new(deps, s) - assert_set [a, b], res.resolve + assert_resolves_to [a, b], res end def test_pulls_in_dependencies @@ -50,7 +54,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new(deps, s) - assert_set [a, b, c], res.resolve + assert_resolves_to [a, b, c], res end def test_picks_highest_version @@ -63,7 +67,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new([ad], s) - assert_set [a2], res.resolve + assert_resolves_to [a2], res end def test_picks_best_platform @@ -89,7 +93,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new([ad], s) - assert_set [a2_p1], res.resolve + assert_resolves_to [a2_p1], res end def test_only_returns_spec_once @@ -105,7 +109,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new([ad, bd], s) - assert_set [a1, b1, c1], res.resolve + assert_resolves_to [a1, b1, c1], res end def test_picks_lower_version_when_needed @@ -122,7 +126,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new([ad, bd], s) - assert_set [a1, b1, c1], res.resolve + assert_resolves_to [a1, b1, c1], res cons = res.conflicts @@ -150,7 +154,7 @@ class TestGemDependencyResolver < Gem::TestCase res = Gem::DependencyResolver.new([ad, bd], s) - assert_set [a1, b1, c1, d4], res.resolve + assert_resolves_to [a1, b1, c1, d4], res cons = res.conflicts @@ -266,7 +270,7 @@ class TestGemDependencyResolver < Gem::TestCase r = Gem::DependencyResolver.new([ad, bd], s) - assert_set [a1, b1, c1], r.resolve + assert_resolves_to [a1, b1, c1], r end def test_common_rack_activation_scenario @@ -285,13 +289,13 @@ class TestGemDependencyResolver < Gem::TestCase r = Gem::DependencyResolver.new([d1, d2], s) - assert_set [rails, ap, rack101, lib1], r.resolve + assert_resolves_to [rails, ap, rack101, lib1], r # check it with the deps reverse too r = Gem::DependencyResolver.new([d2, d1], s) - assert_set [lib1, rack101, rails, ap], r.resolve + assert_resolves_to [lib1, rack101, rails, ap], r end def test_backtracks_to_the_first_conflict @@ -313,6 +317,24 @@ class TestGemDependencyResolver < Gem::TestCase end end + def test_resolve_conflict + a1 = util_spec 'a', 1 + a2 = util_spec 'a', 2 + + b2 = util_spec 'b', 2, 'a' => '~> 2.0' + + s = set a1, a2, b2 + + a_dep = dep 'a', '~> 1.0' + b_dep = dep 'b' + + r = Gem::DependencyResolver.new [a_dep, b_dep], s + + assert_raises Gem::DependencyResolutionError do + r.resolve + end + end + # actionmailer 2.3.4 # activemerchant 1.5.0 # activesupport 2.3.5, 2.3.4 @@ -333,7 +355,7 @@ class TestGemDependencyResolver < Gem::TestCase r = Gem::DependencyResolver.new([d1, d2], s) - assert_set [merch, mail, sup1], r.resolve + assert_resolves_to [merch, mail, sup1], r end def test_second_level_backout @@ -351,7 +373,7 @@ class TestGemDependencyResolver < Gem::TestCase r = Gem::DependencyResolver.new([p1, p2], s) - assert_set [b1, c1, d2], r.resolve + assert_resolves_to [b1, c1, d2], r end def test_select_local_platforms |