11
11
util_setup_fake_fetcher
13
@a_pre = quick_gem 'a', '1.a'
14
@source_index.add_spec @pl1
15
@source_index.add_spec @a_pre
17
@specs = @source_index.gems.sort.map do |name, spec|
18
[spec.name, spec.version, spec.original_platform]
21
@latest_specs = @source_index.latest_specs.sort.map do |spec|
22
[spec.name, spec.version, spec.original_platform]
25
@prerelease_specs = @source_index.prerelease_gems.sort.map do |name, spec|
26
[spec.name, spec.version, spec.original_platform]
29
@fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] =
30
util_gzip(Marshal.dump(@specs))
32
@fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] =
33
util_gzip(Marshal.dump(@latest_specs))
35
@fetcher.data["#{@gem_repo}prerelease_specs.#{Gem.marshal_version}.gz"] =
36
util_gzip(Marshal.dump(@prerelease_specs))
13
@a_pre = new_spec 'a', '1.a'
17
Gem::Specification.remove_spec @b2
19
@specs = Gem::Specification.map { |spec|
20
[spec.name, spec.version, spec.original_platform]
23
# TODO: couldn't all of this come from the fake spec fetcher?
24
@latest_specs = Gem::Specification.latest_specs.sort.map { |spec|
25
[spec.name, spec.version, spec.original_platform]
28
prerelease = Gem::Specification.find_all { |s| s.version.prerelease? }
29
@prerelease_specs = prerelease.map { |spec|
30
[spec.name, spec.version, spec.original_platform]
33
v = Gem.marshal_version
34
s_zip = util_gzip(Marshal.dump(@specs))
35
l_zip = util_gzip(Marshal.dump(@latest_specs))
36
p_zip = util_gzip(Marshal.dump(@prerelease_specs))
37
@fetcher.data["#{@gem_repo}specs.#{v}.gz"] = s_zip
38
@fetcher.data["#{@gem_repo}latest_specs.#{v}.gz"] = l_zip
39
@fetcher.data["#{@gem_repo}prerelease_specs.#{v}.gz"] = p_zip
38
41
@sf = Gem::SpecFetcher.new
42
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
43
util_zip(Marshal.dump(@a1))
44
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.spec_name}.rz"] =
45
util_zip(Marshal.dump(@a2))
46
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.spec_name}.rz"] =
47
util_zip(Marshal.dump(@a_pre))
48
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a3a.spec_name}.rz"] =
49
util_zip(Marshal.dump(@a3a))
45
d = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}"
46
@fetcher.data["#{d}#{@a1.spec_name}.rz"] = util_zip(Marshal.dump(@a1))
47
@fetcher.data["#{d}#{@a2.spec_name}.rz"] = util_zip(Marshal.dump(@a2))
48
@fetcher.data["#{d}#{@a_pre.spec_name}.rz"] = util_zip(Marshal.dump(@a_pre))
49
@fetcher.data["#{d}#{@a3a.spec_name}.rz"] = util_zip(Marshal.dump(@a3a))
51
51
dep = Gem::Dependency.new 'a', 1
66
66
def test_fetch_latest
67
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
68
util_zip(Marshal.dump(@a1))
69
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.spec_name}.rz"] =
70
util_zip(Marshal.dump(@a2))
71
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.spec_name}.rz"] =
72
util_zip(Marshal.dump(@a_pre))
67
d = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}"
68
@fetcher.data["#{d}#{@a1.spec_name}.rz"] = util_zip(Marshal.dump(@a1))
69
@fetcher.data["#{d}#{@a2.spec_name}.rz"] = util_zip(Marshal.dump(@a2))
70
@fetcher.data["#{d}#{@a_pre.spec_name}.rz"] = util_zip(Marshal.dump(@a_pre))
74
72
dep = Gem::Dependency.new 'a', 1
75
73
specs_and_sources = @sf.fetch dep
84
82
def test_fetch_prerelease
85
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] =
86
util_zip(Marshal.dump(@a1))
87
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a2.spec_name}.rz"] =
88
util_zip(Marshal.dump(@a2))
89
@fetcher.data["#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{@a_pre.spec_name}.rz"] =
90
util_zip(Marshal.dump(@a_pre))
83
d = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}"
84
@fetcher.data["#{d}#{@a1.spec_name}.rz"] = util_zip(Marshal.dump(@a1))
85
@fetcher.data["#{d}#{@a2.spec_name}.rz"] = util_zip(Marshal.dump(@a2))
86
@fetcher.data["#{d}#{@a_pre.spec_name}.rz"] = util_zip(Marshal.dump(@a_pre))
92
dep = Gem::Dependency.new 'a', '1.a'
93
specs_and_sources = @sf.fetch dep, false, true, true
88
specs_and_sources = @sf.fetch dep('a', '1.a'), false, true, true
95
90
spec_names = specs_and_sources.map do |spec, source_uri|
96
91
[spec.full_name, source_uri]
288
283
assert_equal [@uri], specs.keys
290
assert_equal([["a", Gem::Version.new("1"), "ruby"],
291
["a", Gem::Version.new("2"), "ruby"],
292
["a_evil", Gem::Version.new("9"), "ruby"],
293
["c", Gem::Version.new("1.2"), "ruby"],
294
["pl", Gem::Version.new("1"), "i386-linux"]],
285
assert_equal([["a", Gem::Version.new("1"), "ruby"],
286
["a", Gem::Version.new("2"), "ruby"],
287
["a_evil", Gem::Version.new("9"), "ruby"],
288
["c", Gem::Version.new("1.2"), "ruby"],
289
["pl", Gem::Version.new("1"), "i386-linux"]],
295
290
specs[@uri].sort)
343
338
def test_load_specs
344
specs = @sf.load_specs @uri, 'specs'
347
['a', Gem::Version.new('1.a'), Gem::Platform::RUBY],
340
['a', Gem::Version.new('1.a'), Gem::Platform::RUBY],
348
341
['a', Gem::Version.new(1), Gem::Platform::RUBY],
349
342
['a', Gem::Version.new(2), Gem::Platform::RUBY],
350
['a', Gem::Version.new('3.a'), Gem::Platform::RUBY],
343
['a', Gem::Version.new('3.a'), Gem::Platform::RUBY],
351
344
['a_evil', Gem::Version.new(9), Gem::Platform::RUBY],
352
345
['c', Gem::Version.new('1.2'), Gem::Platform::RUBY],
353
346
['pl', Gem::Version.new(1), 'i386-linux'],
356
assert_equal expected, specs
349
assert_equal expected, @sf.load_specs(@uri, 'specs')
358
351
cache_dir = File.join Gem.user_home, '.gem', 'specs', 'gems.example.com%80'
359
352
assert File.exist?(cache_dir), "#{cache_dir} does not exist"