1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++
require 'test/unit'
require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
require 'rubygems/indexer'
unless ''.respond_to? :to_xs then
warn "Gem::Indexer tests are being skipped. Install builder gem."
end
class TestGemIndexer < RubyGemTestCase
def setup
super
util_make_gems
gems = File.join(@tempdir, 'gems')
FileUtils.mkdir_p gems
cache_gems = File.join @gemhome, 'cache', '*.gem'
FileUtils.mv Dir[cache_gems], gems
@indexer = Gem::Indexer.new @tempdir
end
def test_initialize
assert_equal @tempdir, @indexer.dest_directory
assert_equal File.join(Dir.tmpdir, "gem_generate_index_#{$$}"),
@indexer.directory
end
def test_generate_index
use_ui @ui do
@indexer.generate_index
end
assert File.exist?(File.join(@tempdir, 'yaml'))
assert File.exist?(File.join(@tempdir, 'yaml.Z'))
assert File.exist?(File.join(@tempdir, "Marshal.#{@marshal_version}"))
assert File.exist?(File.join(@tempdir, "Marshal.#{@marshal_version}.Z"))
quickdir = File.join @tempdir, 'quick'
marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
assert File.directory?(quickdir)
assert File.directory?(marshal_quickdir)
assert_indexed quickdir, "index"
assert_indexed quickdir, "index.rz"
assert_indexed quickdir, "#{@a1.full_name}.gemspec.rz"
assert_indexed quickdir, "#{@a2.full_name}.gemspec.rz"
assert_indexed quickdir, "#{@b2.full_name}.gemspec.rz"
assert_indexed quickdir, "#{@c1_2.full_name}.gemspec.rz"
assert_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
deny_indexed quickdir, "#{@pl1.full_name}.gemspec.rz"
assert_indexed marshal_quickdir, "#{@a1.full_name}.gemspec.rz"
assert_indexed marshal_quickdir, "#{@a2.full_name}.gemspec.rz"
deny_indexed quickdir, "#{@c1_2.full_name}.gemspec"
deny_indexed marshal_quickdir, "#{@c1_2.full_name}.gemspec"
end
def test_generate_index_ui
use_ui @ui do
@indexer.generate_index
end
expected = <<-EOF
Generating index for 5 gems in #{@tempdir}
.....
Loaded all gems
Generating master indexes (this may take a while)
EOF
assert_equal expected, @ui.output
assert_equal '', @ui.error
end
def test_generate_index_contents
use_ui @ui do
@indexer.generate_index
end
yaml_path = File.join(@tempdir, 'yaml')
dump_path = File.join(@tempdir, "Marshal.#{@marshal_version}")
yaml_index = YAML.load_file(yaml_path)
dump_str = nil
File.open dump_path, 'rb' do |fp| dump_str = fp.read end
dump_index = Marshal.load dump_str
dump_index.each do |_,gem|
gem.send :remove_instance_variable, :@loaded
end
assert_equal yaml_index, dump_index,
"expected YAML and Marshal to produce identical results"
end
def assert_indexed(dir, name)
file = File.join dir, name
assert File.exist?(file), "#{file} does not exist"
end
def deny_indexed(dir, name)
file = File.join dir, name
assert !File.exist?(file), "#{file} exists"
end
end if ''.respond_to? :to_xs
|