diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-27 04:28:14 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-11-27 04:28:14 +0000 |
commit | 1c279a7d2753949c725754e1302f791b76358114 (patch) | |
tree | 36aa3bdde250e564445eba5f2e25fcb96bcb6cef /test/rdoc/test_rdoc_context.rb | |
parent | c72f0daa877808e4fa5018b3191ca09d4b97c03d (diff) | |
download | ruby-1c279a7d2753949c725754e1302f791b76358114.tar.gz |
* lib/rdoc*: Updated to RDoc 4.0 (pre-release)
* bin/rdoc: ditto
* test/rdoc: ditto
* NEWS: Updated with RDoc 4.0 information
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/rdoc/test_rdoc_context.rb')
-rw-r--r-- | test/rdoc/test_rdoc_context.rb | 230 |
1 files changed, 196 insertions, 34 deletions
diff --git a/test/rdoc/test_rdoc_context.rb b/test/rdoc/test_rdoc_context.rb index 2fb8ef7bb7..bd0baaa725 100644 --- a/test/rdoc/test_rdoc_context.rb +++ b/test/rdoc/test_rdoc_context.rb @@ -1,5 +1,3 @@ -require 'rubygems' -require 'minitest/autorun' require File.expand_path '../xref_test_case', __FILE__ class TestRDocContext < XrefTestCase @@ -8,6 +6,10 @@ class TestRDocContext < XrefTestCase super @context = RDoc::Context.new + @context.store = @store + + @enumerator = # 1.8 vs 1.9 + Object.const_defined?(:Enumerator) ? Enumerator : Enumerable::Enumerator end def test_initialize @@ -40,7 +42,7 @@ class TestRDocContext < XrefTestCase end def test_add_alias_method_attr - top_level = RDoc::TopLevel.new 'file.rb' + top_level = @store.add_file 'file.rb' attr = RDoc::Attr.new nil, 'old_name', 'R', '' @@ -60,7 +62,7 @@ class TestRDocContext < XrefTestCase end def test_add_alias_method - top_level = RDoc::TopLevel.new 'file.rb' + top_level = @store.add_file 'file.rb' meth = RDoc::AnyMethod.new nil, 'old_name' meth.singleton = false @@ -103,7 +105,7 @@ class TestRDocContext < XrefTestCase @c1.add_class RDoc::NormalClass, 'Klass', 'Object' assert_includes @c1.classes.map { |k| k.full_name }, 'C1::Klass' - assert_includes RDoc::TopLevel.classes.map { |k| k.full_name }, 'C1::Klass' + assert_includes @store.all_classes.map { |k| k.full_name }, 'C1::Klass' end def test_add_class_basic_object @@ -142,7 +144,7 @@ class TestRDocContext < XrefTestCase @c1.add_class RDoc::NormalClass, 'Klass', 'Object' assert_includes @c1.classes.map { |k| k.full_name }, 'C1::Klass' - assert_includes RDoc::TopLevel.classes.map { |k| k.full_name }, 'C1::Klass' + assert_includes @store.all_classes.map { |k| k.full_name }, 'C1::Klass' end def test_add_class_superclass @@ -163,9 +165,9 @@ class TestRDocContext < XrefTestCase refute_includes @c1.modules.map { |k| k.full_name }, 'C1::Klass', 'c1 modules' - assert_includes RDoc::TopLevel.classes.map { |k| k.full_name }, 'C1::Klass', + assert_includes @store.all_classes.map { |k| k.full_name }, 'C1::Klass', 'TopLevel classes' - refute_includes RDoc::TopLevel.modules.map { |k| k.full_name }, 'C1::Klass', + refute_includes @store.all_modules.map { |k| k.full_name }, 'C1::Klass', 'TopLevel modules' end @@ -176,6 +178,13 @@ class TestRDocContext < XrefTestCase assert_equal [const], @context.constants end + def test_add_extend + ext = RDoc::Extend.new 'Name', 'comment' + @context.add_extend ext + + assert_equal [ext], @context.extends + end + def test_add_include incl = RDoc::Include.new 'Name', 'comment' @context.add_include incl @@ -183,16 +192,6 @@ class TestRDocContext < XrefTestCase assert_equal [incl], @context.includes end - def test_add_include_twice - incl1 = RDoc::Include.new 'Name', 'comment' - @context.add_include incl1 - - incl2 = RDoc::Include.new 'Name', 'comment' - @context.add_include incl2 - - assert_equal [incl1], @context.includes - end - def test_add_method meth = RDoc::AnyMethod.new nil, 'old_name' meth.visibility = nil @@ -217,6 +216,34 @@ class TestRDocContext < XrefTestCase assert_equal %w[old_name new_name], @context.method_list.map { |m| m.name } end + def test_add_method_duplicate + @store.rdoc.options.verbosity = 2 + + meth1 = RDoc::AnyMethod.new nil, 'name' + meth1.record_location @store.add_file 'first.rb' + meth1.visibility = nil + meth1.comment = comment 'first' + + @context.add_method meth1 + + meth2 = RDoc::AnyMethod.new nil, 'name' + meth2.record_location @store.add_file 'second.rb' + meth2.comment = comment 'second' + + _, err = capture_io do + @context.add_method meth2 + end + + expected = 'Duplicate method (unknown)#name in file second.rb, ' \ + 'previously in file first.rb' + + assert_equal expected, err.chomp + + method = @context.method_list.first + + assert_equal 'first', method.comment.text + end + def test_add_module @c1.add_module RDoc::NormalModule, 'Mod' @@ -224,18 +251,35 @@ class TestRDocContext < XrefTestCase end def test_add_module_alias - tl = RDoc::TopLevel.new 'file.rb' + tl = @store.add_file 'file.rb' c3_c4 = @c2.add_module_alias @c2_c3, 'C4', tl - c4 = @c2.find_module_named('C4') - alias_constant = @c2.constants.first - assert_equal c4, c3_c4 + assert_equal 'C2::C4', c3_c4.full_name assert_equal tl, alias_constant.file end + def test_add_module_alias_top_level + store = RDoc::Store.new + + top_level = store.add_file 'file.rb' + + klass = top_level.add_class RDoc::NormalClass, 'Klass' + klass.comment = 'klass comment' + + object = top_level.add_class RDoc::NormalClass, 'Object' + + top_level.add_module_alias klass, 'A', top_level + + refute_empty object.constants + + constant = object.constants.first + + assert_equal 'klass comment', constant.comment + end + def test_add_module_class k = @c1.add_class RDoc::NormalClass, 'Klass', nil m = @c1.add_module RDoc::NormalModule, 'Klass' @@ -255,18 +299,20 @@ class TestRDocContext < XrefTestCase def test_add_section default_section = @context.sections.first - @context.add_section nil, '# comment' + @context.add_section nil, comment('comment', @top_level) assert_equal 1, @context.sections.length - assert_equal '# comment', @context.sections.first.comment + assert_equal [comment("comment", @top_level)], + @context.sections.first.comments - @context.add_section nil, '# new comment' + @context.add_section nil, comment('new comment', @top_level) assert_equal 1, @context.sections.length - assert_equal "# comment\n# ---\n# new comment", - @context.sections.first.comment + assert_equal [comment('comment', @top_level), + comment('new comment', @top_level)], + @context.sections.first.comments - @context.add_section 'other', '' + @context.add_section 'other', comment('', @top_level) assert_equal 2, @context.sections.length @@ -275,6 +321,23 @@ class TestRDocContext < XrefTestCase assert_equal default_section, @context.current_section end + def test_add_section_no_comment + default_section = @context.sections.first + + @context.add_section nil + + assert_equal 1, @context.sections.length + + @context.add_section 'other' + + assert_equal 2, @context.sections.length + + new_section = @context.sections.find { |section| section.title == 'other' } + + assert new_section + assert_equal default_section, @context.current_section + end + def test_add_to incl = RDoc::Include.new 'Name', 'comment' arr = [] @@ -288,7 +351,8 @@ class TestRDocContext < XrefTestCase def test_add_to_temporary_section incl = RDoc::Include.new 'Name', 'comment' arr = [] - section = @context.add_section 'temporary', '' + section = + @context.add_section 'temporary', RDoc::Comment.new('', @top_level) @context.temporary_section = section @context.add_to arr, incl @@ -316,19 +380,30 @@ class TestRDocContext < XrefTestCase refute_includes arr, incl end + def bench_add_include + cm = RDoc::ClassModule.new 'Klass' + + assert_performance_linear 0.9 do |count| + count.times do |i| + cm.add_include RDoc::Include.new("N::M#{i}", nil) + end + end + end + def test_child_name assert_equal 'C1::C1', @c1.child_name('C1') end def test_classes assert_equal %w[C2::C3], @c2.classes.map { |k| k.full_name } - assert_equal %w[C3::H1 C3::H2], @c3.classes.map { |k| k.full_name } + assert_equal %w[C3::H1 C3::H2], @c3.classes.map { |k| k.full_name }.sort end def test_current_section default_section = @context.current_section - new_section = @context.add_section 'other', '' + new_section = + @context.add_section 'other', RDoc::Comment.new('', @top_level) @context.temporary_section = new_section assert_equal new_section, @context.current_section @@ -338,7 +413,7 @@ class TestRDocContext < XrefTestCase def test_defined_in_eh assert @c1.defined_in?(@c1.top_level) - refute @c1.defined_in?(RDoc::TopLevel.new('name.rb')) + refute @c1.defined_in?(@store.add_file('name.rb')) end def test_equals2 @@ -347,6 +422,10 @@ class TestRDocContext < XrefTestCase refute_equal @c2_c3, @c3 end + def test_each_method_enumerator + assert_kind_of @enumerator, @c1.each_method + end + def test_each_section sects = [] consts = [] @@ -375,6 +454,10 @@ class TestRDocContext < XrefTestCase assert_equal expected_attrs, attrs end + def test_each_section_enumerator + assert_kind_of @enumerator, @c1.each_section + end + def test_find_attribute_named assert_equal nil, @c1.find_attribute_named('none') assert_equal 'R', @c1.find_attribute_named('attr').rw @@ -448,6 +531,16 @@ class TestRDocContext < XrefTestCase assert_equal @c1__m, @c1.find_symbol('::m') end + def test_find_symbol_module + assert_nil @m1_m2.find_symbol_module 'N' + assert_nil @m1_m2.find_symbol_module 'M2::M1' + + @m1_m2.parent = nil # loaded from legacy ri store + + assert_nil @m1_m2.find_symbol_module 'N' + assert_nil @m1_m2.find_symbol_module 'M2::M1' + end + def test_fully_documented_eh context = RDoc::Context.new @@ -650,14 +743,51 @@ class TestRDocContext < XrefTestCase assert_equal [@pub, @prot, @priv], methods end + def test_section_contents + default = @context.sections.first + @context.add_method RDoc::AnyMethod.new(nil, 'm1') + + b = @context.add_section 'B' + m = @context.add_method RDoc::AnyMethod.new(nil, 'm2') + m.section = b + + assert_equal [default, b], @context.section_contents + end + + def test_section_contents_no_default + @context = RDoc::Context.new + b = @context.add_section 'B' + m = @context.add_method RDoc::AnyMethod.new(nil, 'm') + m.section = b + + assert_equal [b], @context.section_contents + end + + def test_section_contents_only_default + @context = RDoc::Context.new + + @context.add_method RDoc::AnyMethod.new(nil, 'm') + + assert_empty @context.section_contents + end + + def test_section_contents_unused + @context = RDoc::Context.new + + @context.add_method RDoc::AnyMethod.new(nil, 'm') + @context.add_section 'B' + + assert_empty @context.section_contents + end + def test_set_current_section default_section = @context.sections.first - @context.set_current_section nil, '' + @context.set_current_section nil, RDoc::Comment.new('', @top_level) assert_equal default_section, @context.current_section - @context.set_current_section 'other', '' + @context.set_current_section 'other', RDoc::Comment.new('', @top_level) new_section = @context.sections.find { |section| section != default_section @@ -666,6 +796,38 @@ class TestRDocContext < XrefTestCase assert_equal new_section, @context.current_section end + def test_sort_sections + c = RDoc::Context.new + c.add_section 'C' + c.add_section 'A' + c.add_section 'B' + + titles = c.sort_sections.map { |section| section.title } + + assert_equal [nil, 'A', 'B', 'C'], titles + end + + def test_sort_sections_tomdoc + c = RDoc::Context.new + c.add_section 'Public' + c.add_section 'Internal' + c.add_section 'Deprecated' + + titles = c.sort_sections.map { |section| section.title } + + assert_equal [nil, 'Public', 'Internal', 'Deprecated'], titles + end + + def test_sort_sections_tomdoc_missing + c = RDoc::Context.new + c.add_section 'Internal' + c.add_section 'Public' + + titles = c.sort_sections.map { |section| section.title } + + assert_equal [nil, 'Public', 'Internal'], titles + end + def util_visibilities @pub = RDoc::AnyMethod.new nil, 'pub' @prot = RDoc::AnyMethod.new nil, 'prot' |