1require 'rubygems/test_case' 2require 'rubygems/source_local' 3 4require 'fileutils' 5 6class TestGemSourceLocal < Gem::TestCase 7 def setup 8 super 9 10 @sl = Gem::Source::Local.new 11 12 @a, @a_gem = util_gem "a", '1' 13 @ap, @ap_gem = util_gem "a", '2.a' 14 @b, @b_gem = util_gem "b", '1' 15 16 FileUtils.mv @a_gem, @tempdir 17 FileUtils.mv @ap_gem, @tempdir 18 FileUtils.mv @b_gem, @tempdir 19 end 20 21 def test_load_specs_released 22 assert_equal [@a.name_tuple, @b.name_tuple].sort, 23 @sl.load_specs(:released).sort 24 end 25 26 def test_load_specs_prerelease 27 assert_equal [@ap.name_tuple], @sl.load_specs(:prerelease) 28 end 29 30 def test_load_specs_latest 31 a2, a2_gem = util_gem "a", "2" 32 33 FileUtils.mv a2_gem, @tempdir 34 35 assert_equal [a2.name_tuple, @b.name_tuple].sort, 36 @sl.load_specs(:latest).sort 37 end 38 39 def test_find_gem 40 assert_equal "a-1", @sl.find_gem("a").full_name 41 end 42 43 def test_find_gem_highest_version 44 _, a2_gem = util_gem "a", "2" 45 FileUtils.mv a2_gem, @tempdir 46 47 assert_equal "a-2", @sl.find_gem("a").full_name 48 end 49 50 def test_find_gem_specific_version 51 _, a2_gem = util_gem "a", "2" 52 FileUtils.mv a2_gem, @tempdir 53 54 req = Gem::Requirement.create("= 1") 55 56 assert_equal "a-1", @sl.find_gem("a", req).full_name 57 end 58 59 def test_find_gem_prerelease 60 req = Gem::Requirement.create(">= 0") 61 assert_equal "a-2.a", @sl.find_gem("a", req, true).full_name 62 end 63 64 def test_fetch_spec 65 s = @sl.fetch_spec @a.name_tuple 66 assert_equal s, @a 67 end 68 69 def test_download 70 path = @sl.download @a 71 72 assert_equal File.expand_path(@a.file_name), path 73 end 74 75 def test_compare 76 uri = URI.parse "http://gems.example/foo" 77 s = Gem::Source.new uri 78 79 assert_equal(-1, (@sl <=> s)) 80 assert_equal 1, (s <=> @sl) 81 assert_equal 0, (@sl <=> @sl) 82 end 83end 84