diff --git a/test/rubygems/helper.rb b/test/rubygems/helper.rb index 8014548b2c..17f7350f13 100644 --- a/test/rubygems/helper.rb +++ b/test/rubygems/helper.rb @@ -825,10 +825,6 @@ class Gem::TestCase < Test::Unit::TestCase Gem::Specification.unresolved_deps.values.map(&:to_s).sort end - def save_loaded_features - yield - end - def new_default_spec(name, version, deps = nil, *files) spec = util_spec name, version, deps diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index da6fdc54fa..3c95982d4b 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb @@ -25,72 +25,66 @@ class TestGem < Gem::TestCase end def test_self_finish_resolve - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" - b2 = util_spec "b", "2", "c" => ">= 2" - c1 = util_spec "c", "1" - c2 = util_spec "c", "2" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" + b2 = util_spec "b", "2", "c" => ">= 2" + c1 = util_spec "c", "1" + c2 = util_spec "c", "2" - install_specs c1, c2, b1, b2, a1 + install_specs c1, c2, b1, b2, a1 - a1.activate + a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + assert_equal %w[a-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - Gem.finish_resolve + Gem.finish_resolve - assert_equal %w[a-1 b-2 c-2], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-1 b-2 c-2], loaded_spec_names + assert_equal [], unresolved_names end def test_self_finish_resolve_wtf - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this - b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb" # this - b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb" - c1 = util_spec "c", "1" # this - c2 = util_spec "c", "2" - d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d.rb" - d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d.rb" # this + a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this + b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb" # this + b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb" + c1 = util_spec "c", "1" # this + c2 = util_spec "c", "2" + d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d.rb" + d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d.rb" # this - install_specs c1, c2, b1, b2, d1, d2, a1 + install_specs c1, c2, b1, b2, d1, d2, a1 - a1.activate + a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal ["b (> 0)", "d (> 0)"], unresolved_names + assert_equal %w[a-1], loaded_spec_names + assert_equal ["b (> 0)", "d (> 0)"], unresolved_names - Gem.finish_resolve + Gem.finish_resolve - assert_equal %w[a-1 b-1 c-1 d-2], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-1 b-1 c-1 d-2], loaded_spec_names + assert_equal [], unresolved_names end def test_self_finish_resolve_respects_loaded_specs - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" - b2 = util_spec "b", "2", "c" => ">= 2" - c1 = util_spec "c", "1" - c2 = util_spec "c", "2" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" + b2 = util_spec "b", "2", "c" => ">= 2" + c1 = util_spec "c", "1" + c2 = util_spec "c", "2" - install_specs c1, c2, b1, b2, a1 + install_specs c1, c2, b1, b2, a1 - a1.activate - c1.activate + a1.activate + c1.activate - assert_equal %w[a-1 c-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + assert_equal %w[a-1 c-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - Gem.finish_resolve + Gem.finish_resolve - assert_equal %w[a-1 b-1 c-1], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-1 b-1 c-1], loaded_spec_names + assert_equal [], unresolved_names end def test_self_install @@ -210,25 +204,21 @@ class TestGem < Gem::TestCase end def test_require_missing - save_loaded_features do - assert_raise ::LoadError do - require "test_require_missing" - end + assert_raise ::LoadError do + require "test_require_missing" end end def test_require_does_not_glob - save_loaded_features do - a1 = util_spec "a", "1", nil, "lib/a1.rb" + a1 = util_spec "a", "1", nil, "lib/a1.rb" - install_specs a1 + install_specs a1 - assert_raise ::LoadError do - require "a*" - end - - assert_equal [], loaded_spec_names + assert_raise ::LoadError do + require "a*" end + + assert_equal [], loaded_spec_names end def test_self_bin_path_active @@ -1444,24 +1434,22 @@ class TestGem < Gem::TestCase end def test_self_needs_picks_up_unresolved_deps - save_loaded_features do - a = util_spec "a", "1" - b = util_spec "b", "1", "c" => nil - c = util_spec "c", "2" - d = util_spec "d", "1", {'e' => '= 1'}, "lib/d#{$$}.rb" - e = util_spec "e", "1" + a = util_spec "a", "1" + b = util_spec "b", "1", "c" => nil + c = util_spec "c", "2" + d = util_spec "d", "1", {'e' => '= 1'}, "lib/d#{$$}.rb" + e = util_spec "e", "1" - install_specs a, c, b, e, d + install_specs a, c, b, e, d - Gem.needs do |r| - r.gem "a" - r.gem "b", "= 1" + Gem.needs do |r| + r.gem "a" + r.gem "b", "= 1" - require "d#{$$}" - end - - assert_equal %w[a-1 b-1 c-2 d-1 e-1], loaded_spec_names + require "d#{$$}" end + + assert_equal %w[a-1 b-1 c-2 d-1 e-1], loaded_spec_names end def test_self_gunzip diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 336fcf000e..582813c01d 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -127,265 +127,241 @@ end end def test_self_activate_ambiguous_direct - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec("b", "1", { "c" => ">= 1" }, "lib/d#{$$}.rb") - b2 = util_spec("b", "2", { "c" => ">= 2" }, "lib/d#{$$}.rb") - c1 = util_spec "c", "1" - c2 = util_spec "c", "2" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec("b", "1", { "c" => ">= 1" }, "lib/d#{$$}.rb") + b2 = util_spec("b", "2", { "c" => ">= 2" }, "lib/d#{$$}.rb") + c1 = util_spec "c", "1" + c2 = util_spec "c", "2" - Gem::Specification.reset - install_specs c1, c2, b1, b2, a1 + Gem::Specification.reset + install_specs c1, c2, b1, b2, a1 - a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + a1.activate + assert_equal %w[a-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-1 b-2 c-2], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-1 b-2 c-2], loaded_spec_names + assert_equal [], unresolved_names end def test_find_in_unresolved_tree_is_not_exponentiental - save_loaded_features do - num_of_pkg = 7 - num_of_version_per_pkg = 3 - packages = (0..num_of_pkg).map do |pkgi| - (0..num_of_version_per_pkg).map do |pkg_version| - deps = Hash[((pkgi + 1)..num_of_pkg).map do |deppkgi| - ["pkg#{deppkgi}", ">= 0"] - end] - util_spec "pkg#{pkgi}", pkg_version.to_s, deps - end + num_of_pkg = 7 + num_of_version_per_pkg = 3 + packages = (0..num_of_pkg).map do |pkgi| + (0..num_of_version_per_pkg).map do |pkg_version| + deps = Hash[((pkgi + 1)..num_of_pkg).map do |deppkgi| + ["pkg#{deppkgi}", ">= 0"] + end] + util_spec "pkg#{pkgi}", pkg_version.to_s, deps end - base = util_spec "pkg_base", "1", {"pkg0" => ">= 0"} - - Gem::Specification.reset - install_specs(*packages.flatten.reverse) - install_specs base - base.activate - - tms = Benchmark.measure do - assert_raise(LoadError) { require 'no_such_file_foo' } - end - assert_operator tms.total, :<=, 10 end + base = util_spec "pkg_base", "1", {"pkg0" => ">= 0"} + + Gem::Specification.reset + install_specs(*packages.flatten.reverse) + install_specs base + base.activate + + tms = Benchmark.measure do + assert_raise(LoadError) { require 'no_such_file_foo' } + end + assert_operator tms.total, :<=, 10 end def test_self_activate_ambiguous_indirect - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" - b2 = util_spec "b", "2", "c" => ">= 2" - c1 = util_spec "c", "1", nil, "lib/d#{$$}.rb" - c2 = util_spec "c", "2", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" + b2 = util_spec "b", "2", "c" => ">= 2" + c1 = util_spec "c", "1", nil, "lib/d#{$$}.rb" + c2 = util_spec "c", "2", nil, "lib/d#{$$}.rb" - install_specs c1, c2, b1, b2, a1 + install_specs c1, c2, b1, b2, a1 - a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + a1.activate + assert_equal %w[a-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-1 b-2 c-2], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-1 b-2 c-2], loaded_spec_names + assert_equal [], unresolved_names end def test_self_activate_ambiguous_indirect_conflict - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - a2 = util_spec "a", "2", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" - b2 = util_spec "b", "2", "c" => ">= 2" - c1 = util_spec "c", "1", nil, "lib/d#{$$}.rb" - c2 = util_spec("c", "2", { "a" => "1" }, "lib/d#{$$}.rb") # conflicts with a-2 + a1 = util_spec "a", "1", "b" => "> 0" + a2 = util_spec "a", "2", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" + b2 = util_spec "b", "2", "c" => ">= 2" + c1 = util_spec "c", "1", nil, "lib/d#{$$}.rb" + c2 = util_spec("c", "2", { "a" => "1" }, "lib/d#{$$}.rb") # conflicts with a-2 - install_specs c1, b1, a1, a2, c2, b2 + install_specs c1, b1, a1, a2, c2, b2 - a2.activate - assert_equal %w[a-2], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + a2.activate + assert_equal %w[a-2], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-2 b-1 c-1], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-2 b-1 c-1], loaded_spec_names + assert_equal [], unresolved_names end def test_self_activate_ambiguous_unrelated - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" - b2 = util_spec "b", "2", "c" => ">= 2" - c1 = util_spec "c", "1" - c2 = util_spec "c", "2" - d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" + b2 = util_spec "b", "2", "c" => ">= 2" + c1 = util_spec "c", "1" + c2 = util_spec "c", "2" + d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" - install_specs d1, c1, c2, b1, b2, a1 + install_specs d1, c1, c2, b1, b2, a1 - a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + a1.activate + assert_equal %w[a-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-1 d-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names - end + assert_equal %w[a-1 d-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names end def test_require_should_prefer_latest_gem_level1 - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 0" # unresolved - b2 = util_spec "b", "2", "c" => ">= 0" - c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level - c2 = util_spec "c", "2", nil, "lib/c#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 0" # unresolved + b2 = util_spec "b", "2", "c" => ">= 0" + c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level + c2 = util_spec "c", "2", nil, "lib/c#{$$}.rb" - install_specs c1, c2, b1, b2, a1 + install_specs c1, c2, b1, b2, a1 - a1.activate + a1.activate - require "c#{$$}" + require "c#{$$}" - assert_equal %w[a-1 b-2 c-2], loaded_spec_names - end + assert_equal %w[a-1 b-2 c-2], loaded_spec_names end def test_require_should_prefer_latest_gem_level2 - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 0" # unresolved - b2 = util_spec "b", "2", "c" => ">= 0" - c1 = util_spec "c", "1", "d" => ">= 0" # 1st level - c2 = util_spec "c", "2", "d" => ">= 0" - d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level - d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 0" # unresolved + b2 = util_spec "b", "2", "c" => ">= 0" + c1 = util_spec "c", "1", "d" => ">= 0" # 1st level + c2 = util_spec "c", "2", "d" => ">= 0" + d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level + d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" - install_specs d1, d2, c1, c2, b1, b2, a1 + install_specs d1, d2, c1, c2, b1, b2, a1 - a1.activate + a1.activate - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names - end + assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names end def test_require_finds_in_2nd_level_indirect - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 0" # unresolved - b2 = util_spec "b", "2", "c" => ">= 0" - c1 = util_spec "c", "1", "d" => "<= 2" # 1st level - c2 = util_spec "c", "2", "d" => "<= 2" - d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level - d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" - d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 0" # unresolved + b2 = util_spec "b", "2", "c" => ">= 0" + c1 = util_spec "c", "1", "d" => "<= 2" # 1st level + c2 = util_spec "c", "2", "d" => "<= 2" + d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level + d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" + d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" - install_specs d1, d2, d3, c1, c2, b1, b2, a1 + install_specs d1, d2, d3, c1, c2, b1, b2, a1 - a1.activate + a1.activate - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names - end + assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names end def test_require_should_prefer_reachable_gems - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 0" # unresolved - b2 = util_spec "b", "2", "c" => ">= 0" - c1 = util_spec "c", "1", "d" => "<= 2" # 1st level - c2 = util_spec "c", "2", "d" => "<= 2" - d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level - d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" - d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" - e = util_spec "anti_d", "1", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 0" # unresolved + b2 = util_spec "b", "2", "c" => ">= 0" + c1 = util_spec "c", "1", "d" => "<= 2" # 1st level + c2 = util_spec "c", "2", "d" => "<= 2" + d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level + d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" + d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" + e = util_spec "anti_d", "1", nil, "lib/d#{$$}.rb" - install_specs d1, d2, d3, e, c1, c2, b1, b2, a1 + install_specs d1, d2, d3, e, c1, c2, b1, b2, a1 - a1.activate + a1.activate - require "d#{$$}" + require "d#{$$}" - assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names - end + assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names end def test_require_should_not_conflict - save_loaded_features do - base = util_spec "0", "1", "A" => ">= 1" - a1 = util_spec "A", "1", {"c" => ">= 2", "b" => "> 0"}, "lib/a.rb" - a2 = util_spec "A", "2", {"c" => ">= 2", "b" => "> 0"}, "lib/a.rb" - b1 = util_spec "b", "1", {"c" => "= 1"}, "lib/d#{$$}.rb" - b2 = util_spec "b", "2", {"c" => "= 2"}, "lib/d#{$$}.rb" - c1 = util_spec "c", "1", {}, "lib/c.rb" - c2 = util_spec "c", "2", {}, "lib/c.rb" - c3 = util_spec "c", "3", {}, "lib/c.rb" + base = util_spec "0", "1", "A" => ">= 1" + a1 = util_spec "A", "1", {"c" => ">= 2", "b" => "> 0"}, "lib/a.rb" + a2 = util_spec "A", "2", {"c" => ">= 2", "b" => "> 0"}, "lib/a.rb" + b1 = util_spec "b", "1", {"c" => "= 1"}, "lib/d#{$$}.rb" + b2 = util_spec "b", "2", {"c" => "= 2"}, "lib/d#{$$}.rb" + c1 = util_spec "c", "1", {}, "lib/c.rb" + c2 = util_spec "c", "2", {}, "lib/c.rb" + c3 = util_spec "c", "3", {}, "lib/c.rb" - install_specs c1, c2, c3, b1, b2, a1, a2, base + install_specs c1, c2, c3, b1, b2, a1, a2, base - base.activate - assert_equal %w[0-1], loaded_spec_names - assert_equal ["A (>= 1)"], unresolved_names + base.activate + assert_equal %w[0-1], loaded_spec_names + assert_equal ["A (>= 1)"], unresolved_names - require "d#{$$}" + require "d#{$$}" - assert_equal %w[0-1 A-2 b-2 c-2], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[0-1 A-2 b-2 c-2], loaded_spec_names + assert_equal [], unresolved_names end def test_inner_clonflict_in_indirect_gems - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" # unresolved - b2 = util_spec "b", "2", "c" => ">= 1", "d" => "< 3" - c1 = util_spec "c", "1", "d" => "<= 2" # 1st level - c2 = util_spec "c", "2", "d" => "<= 2" - c3 = util_spec "c", "3", "d" => "<= 3" - d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level - d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" - d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" # unresolved + b2 = util_spec "b", "2", "c" => ">= 1", "d" => "< 3" + c1 = util_spec "c", "1", "d" => "<= 2" # 1st level + c2 = util_spec "c", "2", "d" => "<= 2" + c3 = util_spec "c", "3", "d" => "<= 3" + d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level + d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" + d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" - install_specs d1, d2, d3, c1, c2, c3, b1, b2, a1 + install_specs d1, d2, d3, c1, c2, c3, b1, b2, a1 - a1.activate + a1.activate - require "d#{$$}" + require "d#{$$}" - assert_includes [%w[a-1 b-2 c-3 d-2],%w[a-1 b-2 d-2]], loaded_spec_names - end + assert_includes [%w[a-1 b-2 c-3 d-2],%w[a-1 b-2 d-2]], loaded_spec_names end def test_inner_clonflict_in_indirect_gems_reversed - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - b1 = util_spec "b", "1", "xc" => ">= 1" # unresolved - b2 = util_spec "b", "2", "xc" => ">= 1", "d" => "< 3" - c1 = util_spec "xc", "1", "d" => "<= 3" # 1st level - c2 = util_spec "xc", "2", "d" => "<= 2" - c3 = util_spec "xc", "3", "d" => "<= 3" - d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level - d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" - d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", "b" => "> 0" + b1 = util_spec "b", "1", "xc" => ">= 1" # unresolved + b2 = util_spec "b", "2", "xc" => ">= 1", "d" => "< 3" + c1 = util_spec "xc", "1", "d" => "<= 3" # 1st level + c2 = util_spec "xc", "2", "d" => "<= 2" + c3 = util_spec "xc", "3", "d" => "<= 3" + d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level + d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb" + d3 = util_spec "d", "3", nil, "lib/d#{$$}.rb" - install_specs d1, d2, d3, c1, c2, c3, b1, b2, a1 + install_specs d1, d2, d3, c1, c2, c3, b1, b2, a1 - a1.activate + a1.activate - require "d#{$$}" + require "d#{$$}" - assert_includes [%w[a-1 b-2 d-2 xc-3], %w[a-1 b-2 d-2]], loaded_spec_names - end + assert_includes [%w[a-1 b-2 d-2 xc-3], %w[a-1 b-2 d-2]], loaded_spec_names end ## @@ -509,41 +485,37 @@ end install_specs b1, b2, a1 a1.activate - save_loaded_features do - require "b/c" - end + require "b/c" assert_equal %w[a-1 b-1], loaded_spec_names end def test_self_activate_via_require_wtf - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this - b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b#{$$}.rb" - b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b#{$$}.rb" # this - c1 = util_spec "c", "1" - c2 = util_spec "c", "2" # this - d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d#{$$}.rb" - d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d#{$$}.rb" # this + a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this + b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b#{$$}.rb" + b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b#{$$}.rb" # this + c1 = util_spec "c", "1" + c2 = util_spec "c", "2" # this + d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d#{$$}.rb" + d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d#{$$}.rb" # this - install_specs c1, c2, b1, b2, d1, d2, a1 + install_specs c1, c2, b1, b2, d1, d2, a1 - a1.activate + a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal ["b (> 0)", "d (> 0)"], unresolved_names + assert_equal %w[a-1], loaded_spec_names + assert_equal ["b (> 0)", "d (> 0)"], unresolved_names - require "b#{$$}" + require "b#{$$}" - e = assert_raise Gem::LoadError do - require "d#{$$}" - end - - assert_equal "unable to find a version of 'd' to activate", e.message - - assert_equal %w[a-1 b-2 c-2], loaded_spec_names - assert_equal ["d (> 0)"], unresolved_names + e = assert_raise Gem::LoadError do + require "d#{$$}" end + + assert_equal "unable to find a version of 'd' to activate", e.message + + assert_equal %w[a-1 b-2 c-2], loaded_spec_names + assert_equal ["d (> 0)"], unresolved_names end def test_self_activate_deep_unambiguous @@ -2146,43 +2118,39 @@ dependencies: [] end def test_require_already_activated - save_loaded_features do - a1 = util_spec "a", "1", nil, "lib/d#{$$}.rb" + a1 = util_spec "a", "1", nil, "lib/d#{$$}.rb" - install_specs a1 # , a2, b1, b2, c1, c2 + install_specs a1 # , a2, b1, b2, c1, c2 - a1.activate - assert_equal %w[a-1], loaded_spec_names - assert_equal [], unresolved_names + a1.activate + assert_equal %w[a-1], loaded_spec_names + assert_equal [], unresolved_names - assert require "d#{$$}" + assert require "d#{$$}" - assert_equal %w[a-1], loaded_spec_names - assert_equal [], unresolved_names - end + assert_equal %w[a-1], loaded_spec_names + assert_equal [], unresolved_names end def test_require_already_activated_indirect_conflict - save_loaded_features do - a1 = util_spec "a", "1", "b" => "> 0" - a2 = util_spec "a", "2", "b" => "> 0" - b1 = util_spec "b", "1", "c" => ">= 1" - b2 = util_spec "b", "2", "c" => ">= 2" - c1 = util_spec "c", "1", nil, "lib/d#{$$}.rb" - c2 = util_spec("c", "2", { "a" => "1" }, "lib/d#{$$}.rb") # conflicts with a-2 + a1 = util_spec "a", "1", "b" => "> 0" + a2 = util_spec "a", "2", "b" => "> 0" + b1 = util_spec "b", "1", "c" => ">= 1" + b2 = util_spec "b", "2", "c" => ">= 2" + c1 = util_spec "c", "1", nil, "lib/d#{$$}.rb" + c2 = util_spec("c", "2", { "a" => "1" }, "lib/d#{$$}.rb") # conflicts with a-2 - install_specs c1, b1, a1, a2, c2, b2 + install_specs c1, b1, a1, a2, c2, b2 - a1.activate - c1.activate - assert_equal %w[a-1 c-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names + a1.activate + c1.activate + assert_equal %w[a-1 c-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names - assert require "d#{$$}" + assert require "d#{$$}" - assert_equal %w[a-1 c-1], loaded_spec_names - assert_equal ["b (> 0)"], unresolved_names - end + assert_equal %w[a-1 c-1], loaded_spec_names + assert_equal ["b (> 0)"], unresolved_names end def test_requirements