From 4bf8c87101217056257508d76e7787ded0d76849 Mon Sep 17 00:00:00 2001 From: drbrain Date: Sat, 14 May 2011 03:07:38 +0000 Subject: * lib/rdoc/context.rb (class RDoc): Fix infinite loop caused by re-encountering BasicObject. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31561 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rdoc/test_rdoc_context.rb | 32 ++++++++++++++++++++++++++++++++ test/rdoc/test_rdoc_ri_store.rb | 10 ++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) (limited to 'test/rdoc') diff --git a/test/rdoc/test_rdoc_context.rb b/test/rdoc/test_rdoc_context.rb index 02f7311d01..55c6c6e6e3 100644 --- a/test/rdoc/test_rdoc_context.rb +++ b/test/rdoc/test_rdoc_context.rb @@ -105,6 +105,38 @@ class TestRDocContext < XrefTestCase assert_includes RDoc::TopLevel.classes.map { |k| k.full_name }, 'C1::Klass' end + def test_add_class_basic_object + skip 'BasicObject is 1.9 only' unless defined?(BasicObject) + + @xref_data.add_class RDoc::NormalClass, 'BasicObject' + + basic = @xref_data.find_module_named 'BasicObject' + + assert_nil basic.superclass + + @c1.add_class RDoc::NormalClass, 'BasicObject' + + basic = @c1.find_module_named 'BasicObject' + + assert_equal 'Object', basic.superclass + end + + def test_add_class_object + root_class = defined?(BasicObject) ? 'BasicObject' : nil + + @xref_data.add_class RDoc::NormalClass, 'Object' + + object = @xref_data.find_module_named 'Object' + + assert_equal root_class, object.superclass + + @c1.add_class RDoc::NormalClass, 'Object' + + object = @c1.find_module_named 'Object' + + assert_equal 'Object', object.superclass.full_name + end + def test_add_class_superclass @c1.add_class RDoc::NormalClass, 'Klass', 'Object' @c1.add_class RDoc::NormalClass, 'Klass', 'Other' diff --git a/test/rdoc/test_rdoc_ri_store.rb b/test/rdoc/test_rdoc_ri_store.rb index 7c9f4ec80b..83aebf009b 100644 --- a/test/rdoc/test_rdoc_ri_store.rb +++ b/test/rdoc/test_rdoc_ri_store.rb @@ -215,6 +215,8 @@ class TestRDocRIStore < MiniTest::Unit::TestCase }, } + expected[:ancestors]['Object'] = %w[BasicObject] if defined?(::BasicObject) + open File.join(@tmpdir, 'cache.ri'), 'rb' do |io| cache = Marshal.load io.read @@ -250,8 +252,10 @@ class TestRDocRIStore < MiniTest::Unit::TestCase assert_directory File.join(@tmpdir, 'Object') assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri') + object_ancestors = defined?(::BasicObject) ? %w[BasicObject] : [] + assert_cache({}, {}, { 'Object' => ['attr_accessor attr'] }, %w[Object], - 'Object' => %w[]) + 'Object' => object_ancestors) assert_equal @klass, @s.load_class('Object') end @@ -303,8 +307,10 @@ class TestRDocRIStore < MiniTest::Unit::TestCase assert_directory File.join(@tmpdir, 'Object') assert_file File.join(@tmpdir, 'Object', 'cdesc-Object.ri') + object_ancestors = defined?(::BasicObject) ? %w[BasicObject] : [] + assert_cache({}, {}, { 'Object' => ['attr_accessor attr'] }, %w[Object], - 'Object' => %w[]) + 'Object' => object_ancestors) assert_equal @klass, @s.load_class('Object') end -- cgit v1.2.3