~ubuntu-branches/ubuntu/quantal/ruby1.9.1/quantal

« back to all changes in this revision

Viewing changes to test/rubygems/test_gem_spec_fetcher.rb

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2011-09-24 19:16:17 UTC
  • mfrom: (1.1.8 upstream) (13.1.7 experimental)
  • Revision ID: james.westby@ubuntu.com-20110924191617-o1qz4rcmqjot8zuy
Tags: 1.9.3~rc1-1
* New upstream release: 1.9.3 RC1.
  + Includes load.c fixes. Closes: #639959.
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
require_relative 'gemutilities'
 
1
require 'rubygems/test_case'
2
2
require 'rubygems/spec_fetcher'
3
3
 
4
 
class TestGemSpecFetcher < RubyGemTestCase
 
4
class TestGemSpecFetcher < Gem::TestCase
5
5
 
6
6
  def setup
7
7
    super
10
10
 
11
11
    util_setup_fake_fetcher
12
12
 
13
 
    @a_pre = quick_gem 'a', '1.a'
14
 
    @source_index.add_spec @pl1
15
 
    @source_index.add_spec @a_pre
16
 
 
17
 
    @specs = @source_index.gems.sort.map do |name, spec|
18
 
      [spec.name, spec.version, spec.original_platform]
19
 
    end.sort
20
 
 
21
 
    @latest_specs = @source_index.latest_specs.sort.map do |spec|
22
 
      [spec.name, spec.version, spec.original_platform]
23
 
    end
24
 
 
25
 
    @prerelease_specs = @source_index.prerelease_gems.sort.map do |name, spec|
26
 
      [spec.name, spec.version, spec.original_platform]
27
 
    end.sort
28
 
 
29
 
    @fetcher.data["#{@gem_repo}specs.#{Gem.marshal_version}.gz"] =
30
 
      util_gzip(Marshal.dump(@specs))
31
 
 
32
 
    @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] =
33
 
      util_gzip(Marshal.dump(@latest_specs))
34
 
 
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'
 
14
 
 
15
    install_specs @a_pre
 
16
 
 
17
    Gem::Specification.remove_spec @b2
 
18
 
 
19
    @specs = Gem::Specification.map { |spec|
 
20
      [spec.name, spec.version, spec.original_platform]
 
21
    }.sort
 
22
 
 
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]
 
26
    }
 
27
 
 
28
    prerelease = Gem::Specification.find_all { |s| s.version.prerelease? }
 
29
    @prerelease_specs = prerelease.map { |spec|
 
30
      [spec.name, spec.version, spec.original_platform]
 
31
    }.sort
 
32
 
 
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
37
40
 
38
41
    @sf = Gem::SpecFetcher.new
39
42
  end
40
43
 
41
44
  def test_fetch_all
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))
50
50
 
51
51
    dep = Gem::Dependency.new 'a', 1
52
52
 
64
64
  end
65
65
 
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))
73
71
 
74
72
    dep = Gem::Dependency.new 'a', 1
75
73
    specs_and_sources = @sf.fetch dep
82
80
  end
83
81
 
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))
91
87
 
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
94
89
 
95
90
    spec_names = specs_and_sources.map do |spec, source_uri|
96
91
      [spec.full_name, source_uri]
287
282
 
288
283
    assert_equal [@uri], specs.keys
289
284
 
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)
296
291
  end
297
292
 
341
336
  end
342
337
 
343
338
  def test_load_specs
344
 
    specs = @sf.load_specs @uri, 'specs'
345
 
 
346
339
    expected = [
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'],
354
347
    ]
355
348
 
356
 
    assert_equal expected, specs
 
349
    assert_equal expected, @sf.load_specs(@uri, 'specs')
357
350
 
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"
406
399
    assert_equal @latest_specs, latest_specs
407
400
  end
408
401
 
 
402
  def test_cache_dir_escapes_windows_paths
 
403
    uri = URI.parse("file:///C:/WINDOWS/Temp/gem_repo")
 
404
    cache_dir = @sf.cache_dir(uri).gsub(@sf.dir, '')
 
405
    assert cache_dir !~ /:/, "#{cache_dir} should not contain a :"
 
406
  end
409
407
end
410
408