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 156 157 158
|
# frozen_string_literal: true
require_relative 'helper'
class TestRDocRIPaths < RDoc::TestCase
def setup
super
@orig_env = ENV.to_hash
@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
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
Gem.use_paths(*@orig_gem_path)
Gem::Specification.reset
FileUtils.rm_rf @tempdir
ENV.replace(@orig_env)
super
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 if RDoc::RI::Paths.home_dir
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 if RDoc::RI::Paths.home_dir
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 if RDoc::RI::Paths.home_dir
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
|