1require 'rubygems/test_case' 2require 'rubygems/available_set' 3require 'rubygems/security' 4 5class TestGemAvailableSet < Gem::TestCase 6 def setup 7 super 8 9 @source = Gem::Source.new(@gem_repo) 10 end 11 12 def test_add_and_empty 13 a1, _ = util_gem 'a', '1' 14 15 set = Gem::AvailableSet.new 16 assert set.empty? 17 18 set.add a1, @source 19 20 refute set.empty? 21 22 assert_equal [a1], set.all_specs 23 end 24 25 def test_match_platform 26 a1, _ = util_gem 'a', '1' do |g| 27 g.platform = "something-weird-yep" 28 end 29 30 a1c, _ = util_gem 'a', '2' do |g| 31 g.platform = Gem::Platform.local 32 end 33 34 a2, _ = util_gem 'a', '2' 35 36 set = Gem::AvailableSet.new 37 set.add a1, @source 38 set.add a1c, @source 39 set.add a2, @source 40 41 set.match_platform! 42 43 assert_equal [a1c, a2], set.all_specs 44 end 45 46 def test_best 47 a1, _ = util_gem 'a', '1' 48 a2, _ = util_gem 'a', '2' 49 50 set = Gem::AvailableSet.new 51 set.add a1, @source 52 set.add a2, @source 53 54 set.pick_best! 55 56 assert_equal [a2], set.all_specs 57 end 58 59 def test_remove_installed_bang 60 a1, _ = util_gem 'a', '1' 61 62 a1.activate 63 64 set = Gem::AvailableSet.new 65 set.add a1, @source 66 67 dep = Gem::Dependency.new "a", ">= 0" 68 69 set.remove_installed! dep 70 71 assert set.empty? 72 end 73 74 def test_sorted_normal_versions 75 a1, _ = util_gem 'a', '1' 76 a2, _ = util_gem 'a', '2' 77 78 set = Gem::AvailableSet.new 79 set.add a1, @source 80 set.add a2, @source 81 82 g = set.sorted 83 84 assert_equal a2, g[0].spec 85 assert_equal a1, g[1].spec 86 end 87 88 def test_sorted_respect_pre 89 a1a, _ = util_gem 'a', '1.a' 90 a1, _ = util_gem 'a', '1' 91 a2a, _ = util_gem 'a', '2.a' 92 a2, _ = util_gem 'a', '2' 93 a3a, _ = util_gem 'a', '3.a' 94 95 set = Gem::AvailableSet.new 96 set.add a1, @source 97 set.add a1a, @source 98 set.add a3a, @source 99 set.add a2a, @source 100 set.add a2, @source 101 102 g = set.sorted.map { |t| t.spec } 103 104 assert_equal [a3a, a2, a2a, a1, a1a], g 105 end 106end 107