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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
require 'rdoc/test_case'
class TestRDocRIPaths < RDoc::TestCase
def setup
super
@orig_gem_path = Gem.path
@tempdir = File.join Dir.tmpdir, "test_rdoc_ri_paths_#{$$}"
Gem.use_paths @tempdir
Gem.ensure_gem_subdirectories @tempdir
specs = [
@rake_10 = Gem::Specification.new('rake', '10.0.1'),
@rdoc_4_0 = Gem::Specification.new('rdoc', '4.0'),
@rdoc_3_12 = Gem::Specification.new('rdoc', '3.12'),
@nodoc = Gem::Specification.new('nodoc', '1.0'),
]
specs.each do |spec|
spec.loaded_from = spec.spec_file
open spec.spec_file, 'w' do |file|
file.write spec.to_ruby_for_cache
end
FileUtils.mkdir_p File.join(spec.doc_dir, 'ri') unless
spec.name == 'nodoc'
end
Gem::Specification.reset
Gem::Specification.all = specs
end
def teardown
super
Gem.use_paths(*@orig_gem_path)
Gem::Specification.reset
FileUtils.rm_rf @tempdir
end
def test_class_each
enum = RDoc::RI::Paths.each true, true, true, :all
path = enum.map { |dir,| dir }
assert_equal RDoc::RI::Paths.system_dir, path.shift
assert_equal RDoc::RI::Paths.site_dir, path.shift
assert_equal RDoc::RI::Paths.home_dir, path.shift
assert_equal File.join(@nodoc.doc_dir, 'ri'), path.shift
assert_equal File.join(@rake_10.doc_dir, 'ri'), path.shift
assert_equal File.join(@rdoc_4_0.doc_dir, 'ri'), path.shift
assert_equal File.join(@rdoc_3_12.doc_dir, 'ri'), path.shift
assert_empty path
end
def test_class_gemdirs_latest
Dir.chdir @tempdir do
gemdirs = RDoc::RI::Paths.gemdirs :latest
expected = [
File.join(@rake_10.doc_dir, 'ri'),
File.join(@rdoc_4_0.doc_dir, 'ri'),
]
assert_equal expected, gemdirs
end
end
def test_class_gemdirs_legacy
Dir.chdir @tempdir do
gemdirs = RDoc::RI::Paths.gemdirs true
expected = [
File.join(@rake_10.doc_dir, 'ri'),
File.join(@rdoc_4_0.doc_dir, 'ri'),
]
assert_equal expected, gemdirs
end
end
def test_class_gemdirs_all
Dir.chdir @tempdir do
gemdirs = RDoc::RI::Paths.gemdirs :all
expected = [
File.join(@nodoc.doc_dir, 'ri'),
File.join(@rake_10.doc_dir, 'ri'),
File.join(@rdoc_4_0.doc_dir, 'ri'),
File.join(@rdoc_3_12.doc_dir, 'ri'),
]
assert_equal expected, gemdirs
end
end
def test_class_gem_dir
dir = RDoc::RI::Paths.gem_dir 'rake', '10.0.1'
expected = File.join @rake_10.doc_dir, 'ri'
assert_equal expected, dir
end
def test_class_home_dir
dir = RDoc::RI::Paths.home_dir
assert_equal RDoc::RI::Paths::HOMEDIR, dir
end
def test_class_path_nonexistent
temp_dir do |dir|
nonexistent = File.join dir, 'nonexistent'
dir = RDoc::RI::Paths.path true, true, true, true, nonexistent
refute_includes dir, nonexistent
end
end
def test_class_raw_path
path = RDoc::RI::Paths.raw_path true, true, true, true
assert_equal RDoc::RI::Paths.system_dir, path.shift
assert_equal RDoc::RI::Paths.site_dir, path.shift
assert_equal RDoc::RI::Paths.home_dir, path.shift
assert_equal File.join(@rake_10.doc_dir, 'ri'), path.shift
end
def test_class_raw_path_extra_dirs
path = RDoc::RI::Paths.raw_path true, true, true, true, '/nonexistent'
assert_equal '/nonexistent', path.shift
assert_equal RDoc::RI::Paths.system_dir, path.shift
assert_equal RDoc::RI::Paths.site_dir, path.shift
assert_equal RDoc::RI::Paths.home_dir, path.shift
assert_equal File.join(@rake_10.doc_dir, 'ri'), path.shift
end
def test_class_site_dir
dir = RDoc::RI::Paths.site_dir
assert_equal File.join(RDoc::RI::Paths::BASE, 'site'), dir
end
def test_class_system_dir
dir = RDoc::RI::Paths.system_dir
assert_equal File.join(RDoc::RI::Paths::BASE, 'system'), dir
end
end
|