diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-29 06:52:18 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-29 06:52:18 +0000 |
commit | 9694bb8cac12969300692dac5a1cf7aa4e3a46cd (patch) | |
tree | c3cb423d701f7049ba9382de052e2a937cd1302d /test/rubygems/test_gem_rdoc.rb | |
parent | 3f606b7063fc7a8b191556365ad343a314719a8d (diff) | |
download | ruby-9694bb8cac12969300692dac5a1cf7aa4e3a46cd.tar.gz |
* lib/rubygems*: Updated to RubyGems 2.0
* test/rubygems*: ditto.
* common.mk (prelude): Updated for RubyGems 2.0 source rearrangement.
* tool/change_maker.rb: Allow invalid UTF-8 characters in source
files.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rubygems/test_gem_rdoc.rb')
-rw-r--r-- | test/rubygems/test_gem_rdoc.rb | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_rdoc.rb b/test/rubygems/test_gem_rdoc.rb new file mode 100644 index 0000000000..f75d15b117 --- /dev/null +++ b/test/rubygems/test_gem_rdoc.rb @@ -0,0 +1,245 @@ +require 'rubygems/test_case' +require 'rubygems' +require 'rubygems/rdoc' + +class TestGemRDoc < Gem::TestCase + + def setup + super + + @a = quick_spec 'a' + + @rdoc = Gem::RDoc.new @a + + begin + Gem::RDoc.load_rdoc + rescue Gem::DocumentError => e + skip e.message + end + + Gem.configuration[:rdoc] = nil + end + + ## + # RDoc 4 ships with its own Gem::RDoc which overrides this one which is + # shipped for backwards compatibility. + + def rdoc_3? + Gem::Requirement.new('~> 3.0').satisfied_by? @rdoc.class.rdoc_version + end + + def rdoc_3_8_or_better? + Gem::Requirement.new('>= 3.8').satisfied_by? @rdoc.class.rdoc_version + end + + def test_initialize + assert @rdoc.generate_rdoc + assert @rdoc.generate_ri + + rdoc = Gem::RDoc.new @a, false, false + + refute rdoc.generate_rdoc + refute rdoc.generate_ri + end + + def test_delete_legacy_args + args = %w[ + --inline-source + --one-file + --promiscuous + -p + ] + + @rdoc.delete_legacy_args args + + assert_empty args + end + + def test_document + skip 'RDoc 3 required' unless rdoc_3? + + options = RDoc::Options.new + options.files = [] + + @rdoc.instance_variable_set :@rdoc, @rdoc.new_rdoc + @rdoc.instance_variable_set :@file_info, [] + + @rdoc.document 'darkfish', options, @a.doc_dir('rdoc') + + assert @rdoc.rdoc_installed? + end + + def test_generate + skip 'RDoc 3 required' unless rdoc_3? + + FileUtils.mkdir_p @a.doc_dir + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.generate + + assert @rdoc.rdoc_installed? + assert @rdoc.ri_installed? + + rdoc = @rdoc.instance_variable_get :@rdoc + + refute rdoc.options.hyperlink_all + end + + def test_generate_configuration_rdoc_array + skip 'RDoc 3 required' unless rdoc_3? + + Gem.configuration[:rdoc] = %w[-A] + + FileUtils.mkdir_p @a.doc_dir + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.generate + + rdoc = @rdoc.instance_variable_get :@rdoc + + assert rdoc.options.hyperlink_all + end + + def test_generate_configuration_rdoc_string + skip 'RDoc 3 required' unless rdoc_3? + + Gem.configuration[:rdoc] = '-A' + + FileUtils.mkdir_p @a.doc_dir + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.generate + + rdoc = @rdoc.instance_variable_get :@rdoc + + assert rdoc.options.hyperlink_all + end + + def test_generate_disabled + @rdoc.generate_rdoc = false + @rdoc.generate_ri = false + + @rdoc.generate + + refute @rdoc.rdoc_installed? + refute @rdoc.ri_installed? + end + + def test_generate_force + skip 'RDoc 3 required' unless rdoc_3? + + FileUtils.mkdir_p @a.doc_dir 'ri' + FileUtils.mkdir_p @a.doc_dir 'rdoc' + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.force = true + + @rdoc.generate + + assert_path_exists File.join(@a.doc_dir('rdoc'), 'index.html') + assert_path_exists File.join(@a.doc_dir('ri'), 'cache.ri') + end + + def test_generate_no_overwrite + skip 'RDoc 3 required' unless rdoc_3? + + FileUtils.mkdir_p @a.doc_dir 'ri' + FileUtils.mkdir_p @a.doc_dir 'rdoc' + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.generate + + refute_path_exists File.join(@a.doc_dir('rdoc'), 'index.html') + refute_path_exists File.join(@a.doc_dir('ri'), 'cache.ri') + end + + def test_generate_legacy + skip 'RDoc < 3.8 required' if rdoc_3_8_or_better? + + FileUtils.mkdir_p @a.doc_dir + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.generate_legacy + + assert @rdoc.rdoc_installed? + assert @rdoc.ri_installed? + end + + def test_legacy_rdoc + skip 'RDoc < 3.8 required' if rdoc_3_8_or_better? + + FileUtils.mkdir_p @a.doc_dir + FileUtils.mkdir_p File.join(@a.gem_dir, 'lib') + + @rdoc.legacy_rdoc '--op', @a.doc_dir('rdoc') + + assert @rdoc.rdoc_installed? + end + + def test_new_rdoc + assert_kind_of RDoc::RDoc, @rdoc.new_rdoc + end + + def test_rdoc_installed? + refute @rdoc.rdoc_installed? + + FileUtils.mkdir_p @a.doc_dir 'rdoc' + + assert @rdoc.rdoc_installed? + end + + def test_remove + FileUtils.mkdir_p @a.doc_dir 'rdoc' + FileUtils.mkdir_p @a.doc_dir 'ri' + + @rdoc.remove + + refute @rdoc.rdoc_installed? + refute @rdoc.ri_installed? + + assert_path_exists @a.doc_dir + end + + def test_remove_unwritable + skip 'chmod not supported' if Gem.win_platform? + FileUtils.mkdir_p @a.base_dir + FileUtils.chmod 0, @a.base_dir + + e = assert_raises Gem::FilePermissionError do + @rdoc.remove + end + + assert_equal @a.base_dir, e.directory + ensure + FileUtils.chmod(0755, @a.base_dir) if File.directory?(@a.base_dir) + end + + def test_ri_installed? + refute @rdoc.ri_installed? + + FileUtils.mkdir_p @a.doc_dir 'ri' + + assert @rdoc.ri_installed? + end + + def test_setup + @rdoc.setup + + assert_path_exists @a.doc_dir + end + + def test_setup_unwritable + skip 'chmod not supported' if Gem.win_platform? + FileUtils.mkdir_p @a.doc_dir + FileUtils.chmod 0, @a.doc_dir + + e = assert_raises Gem::FilePermissionError do + @rdoc.setup + end + + assert_equal @a.doc_dir, e.directory + ensure + FileUtils.chmod(0755, @a.doc_dir) if File.directory?(@a.doc_dir) + end + +end |