diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-27 01:30:18 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-27 01:30:18 +0000 |
commit | 95e213d3542034e0fd2613de6990a7ddfe5718ca (patch) | |
tree | 76ec64fccb338dbcbc4d3f07c2f494ef9b7fe1ff /test | |
parent | 41fb243684f60e231fc77ec54752fe4e844523d5 (diff) |
Merge rdoc-6.1.0.beta1.
* https://github.com/ruby/rdoc/compare/v6.0.4...v6.1.0.beta1
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/rdoc/test_rdoc_any_method.rb | 31 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_class_module.rb | 1 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_context.rb | 2 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_cross_reference.rb | 29 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_markup_to_html_crossref.rb | 15 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_parser_ruby.rb | 205 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_ri_driver.rb | 15 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_store.rb | 4 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_tom_doc.rb | 60 | ||||
-rw-r--r-- | test/rdoc/xref_data.rb | 14 | ||||
-rw-r--r-- | test/rdoc/xref_test_case.rb | 15 |
11 files changed, 360 insertions, 31 deletions
diff --git a/test/rdoc/test_rdoc_any_method.rb b/test/rdoc/test_rdoc_any_method.rb index b5281f611d..6dd46b0b46 100644 --- a/test/rdoc/test_rdoc_any_method.rb +++ b/test/rdoc/test_rdoc_any_method.rb @@ -85,6 +85,33 @@ method(a, b) { |c, d| ... } assert_equal expected, @c2_a.markup_code end + def test_markup_code_with_line_numbers + position_comment = "# File #{@file_name}, line 1" + tokens = [ + { :line_no => 1, :char_no => 0, :kind => :on_comment, :text => position_comment }, + { :line_no => 1, :char_no => position_comment.size, :kind => :on_nl, :text => "\n" }, + { :line_no => 2, :char_no => 0, :kind => :on_const, :text => 'A' }, + { :line_no => 2, :char_no => 1, :kind => :on_nl, :text => "\n" }, + { :line_no => 3, :char_no => 0, :kind => :on_const, :text => 'B' } + ] + + @c2_a.collect_tokens + @c2_a.add_tokens(*tokens) + + assert_equal <<-EXPECTED.chomp, @c2_a.markup_code +<span class="ruby-comment"># File xref_data.rb, line 1</span> +<span class="ruby-constant">A</span> +<span class="ruby-constant">B</span> + EXPECTED + + @options.line_numbers = true + assert_equal <<-EXPECTED.chomp, @c2_a.markup_code + <span class="ruby-comment"># File xref_data.rb</span> +<span class="line-num">1</span> <span class="ruby-constant">A</span> +<span class="line-num">2</span> <span class="ruby-constant">B</span> + EXPECTED + end + def test_markup_code_empty assert_equal '', @c2_a.markup_code end @@ -165,7 +192,7 @@ method(a, b) { |c, d| ... } end def test_marshal_load_class_method - class_method = Marshal.load Marshal.dump(@c1.method_list.first) + class_method = Marshal.load Marshal.dump(@c1.find_class_method_named 'm') assert_equal 'C1::m', class_method.full_name assert_equal 'C1', class_method.parent_name @@ -174,7 +201,7 @@ method(a, b) { |c, d| ... } end def test_marshal_load_instance_method - instance_method = Marshal.load Marshal.dump(@c1.method_list.last) + instance_method = Marshal.load Marshal.dump(@c1.find_instance_method_named 'm') assert_equal 'C1#m', instance_method.full_name assert_equal 'C1', instance_method.parent_name diff --git a/test/rdoc/test_rdoc_class_module.rb b/test/rdoc/test_rdoc_class_module.rb index 3dc2a42cf4..cc53a13528 100644 --- a/test/rdoc/test_rdoc_class_module.rb +++ b/test/rdoc/test_rdoc_class_module.rb @@ -91,6 +91,7 @@ class TestRDocClassModule < XrefTestCase assert @c1.document_self_or_methods + @c1_plus.document_self = false @c1_m.document_self = false assert @c1.document_self_or_methods diff --git a/test/rdoc/test_rdoc_context.rb b/test/rdoc/test_rdoc_context.rb index 5a9c5db39e..be17496f40 100644 --- a/test/rdoc/test_rdoc_context.rb +++ b/test/rdoc/test_rdoc_context.rb @@ -660,7 +660,7 @@ class TestRDocContext < XrefTestCase 'instance' => { :private => [], :protected => [], - :public => [@c1_m], + :public => [@c1_plus, @c1_m], }, 'class' => { :private => [], diff --git a/test/rdoc/test_rdoc_cross_reference.rb b/test/rdoc/test_rdoc_cross_reference.rb index a294553704..8233fe3f61 100644 --- a/test/rdoc/test_rdoc_cross_reference.rb +++ b/test/rdoc/test_rdoc_cross_reference.rb @@ -107,18 +107,24 @@ class TestRDocCrossReference < XrefTestCase end def test_resolve_method - assert_ref @c1__m, 'm' - assert_ref @c1_m, '#m' - assert_ref @c1__m, '::m' - - assert_ref @c1_m, 'C1#m' - assert_ref @c1__m, 'C1.m' - assert_ref @c1__m, 'C1::m' + assert_ref @c1__m, 'm' + assert_ref @c1__m, '::m' + assert_ref @c1_m, '#m' + assert_ref @c1_plus, '#+' + + assert_ref @c1_m, 'C1#m' + assert_ref @c1_plus, 'C1#+' + assert_ref @c1__m, 'C1.m' + assert_ref @c1__m, 'C1::m' assert_ref @c1_m, 'C1#m' assert_ref @c1_m, 'C1#m()' assert_ref @c1_m, 'C1#m(*)' + assert_ref @c1_plus, 'C1#+' + assert_ref @c1_plus, 'C1#+()' + assert_ref @c1_plus, 'C1#+(*)' + assert_ref @c1__m, 'C1.m' assert_ref @c1__m, 'C1.m()' assert_ref @c1__m, 'C1.m(*)' @@ -139,6 +145,15 @@ class TestRDocCrossReference < XrefTestCase assert_ref @c2_c3_m, '::C2::C3#m(*)' end + def test_resolve_the_same_name_in_instance_and_class_method + assert_ref @c9_a_i_foo, 'C9::A#foo' + assert_ref @c9_a_c_bar, 'C9::A::bar' + assert_ref @c9_b_c_foo, 'C9::B::foo' + assert_ref @c9_b_i_bar, 'C9::B#bar' + assert_ref @c9_b_c_foo, 'C9::B.foo' + assert_ref @c9_a_c_bar, 'C9::B.bar' + end + def test_resolve_method_equals3 m = RDoc::AnyMethod.new '', '===' @c1.add_method m diff --git a/test/rdoc/test_rdoc_markup_to_html_crossref.rb b/test/rdoc/test_rdoc_markup_to_html_crossref.rb index 73b76de4d9..63fc95ff51 100644 --- a/test/rdoc/test_rdoc_markup_to_html_crossref.rb +++ b/test/rdoc/test_rdoc_markup_to_html_crossref.rb @@ -59,7 +59,7 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase def test_convert_RDOCLINK_rdoc_ref_method result = @to.convert 'rdoc-ref:C1#m' - assert_equal para("<a href=\"C1.html#method-i-m\">#m</a>"), result + assert_equal para("<a href=\"C1.html#method-i-m\">C1#m</a>"), result end def test_convert_RDOCLINK_rdoc_ref_method_label @@ -75,13 +75,13 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase result = @to.convert 'rdoc-ref:C1#%' - assert_equal para("<a href=\"C1.html#method-i-25\">#%</a>"), result + assert_equal para("<a href=\"C1.html#method-i-25\">C1#%</a>"), result m.singleton = true result = @to.convert 'rdoc-ref:C1::%' - assert_equal para("<a href=\"C1.html#method-c-25\">::%</a>"), result + assert_equal para("<a href=\"C1.html#method-c-25\">C1::%</a>"), result end def test_convert_RDOCLINK_rdoc_ref_method_percent_label @@ -200,11 +200,16 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase def test_link assert_equal 'n', @to.link('n', 'n') - assert_equal '<a href="C1.html#method-c-m">::m</a>', @to.link('m', 'm') + assert_equal '<a href="C1.html#method-c-m">m</a>', @to.link('m', 'm') + end + + def test_link_for_method_traverse + @to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c9 + assert_equal '<a href="C9/A.html#method-i-foo">C9::B#foo</a>', @to.link('C9::B#foo', 'C9::B#foo') end def test_link_class_method_full - assert_equal '<a href="Parent.html#method-c-m">Parent.m</a>', + assert_equal '<a href="Parent.html#method-c-m">Parent::m</a>', @to.link('Parent::m', 'Parent::m') end diff --git a/test/rdoc/test_rdoc_parser_ruby.rb b/test/rdoc/test_rdoc_parser_ruby.rb index eb9c6b2455..8e31141f59 100644 --- a/test/rdoc/test_rdoc_parser_ruby.rb +++ b/test/rdoc/test_rdoc_parser_ruby.rb @@ -73,7 +73,7 @@ class C; end comment = parser.collect_first_comment - assert_equal RDoc::Comment.new("=begin\nfirst\n=end\n", @top_level), comment + assert_equal RDoc::Comment.new("first\n", @top_level), comment end def test_get_class_or_module @@ -1313,8 +1313,16 @@ EOF { :line_no => 0, :char_no => 0, :kind => :on_nl, :text => "\n" }, { :line_no => 1, :char_no => 1, :kind => :on_sp, :text => '' } ] + parsed_stream = foo.token_stream.map { |t| + { + :line_no => t[:line_no], + :char_no => t[:char_no], + :kind => t[:kind], + :text => t[:text] + } + } - assert_equal stream, foo.token_stream + assert_equal stream, parsed_stream end def test_parse_comment_method_args @@ -2310,6 +2318,31 @@ end assert_equal 'C#bar', methods[1].full_name end + def test_parse_statements_postfix_if_unless_with_expr_mid + util_parser <<-CODE +class A + class B + def foo + return if nil + end + end + + class C + end +end + CODE + + @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil + + a = @top_level.classes.first + assert_equal 'A', a.full_name, 'class A' + assert_equal 2, a.classes.length + b = a.classes[0] + assert_equal 'A::B', b.full_name, 'class A::B' + c = a.classes[1] + assert_equal 'A::C', c.full_name, 'class A::C' + end + def test_parse_statements_class_nested comment = RDoc::Comment.new "##\n# my method\n", @top_level @@ -3349,11 +3382,11 @@ end foo = @top_level.classes.first - assert_equal "=begin rdoc\nFoo comment\n=end", foo.comment.text + assert_equal 'Foo comment', foo.comment.text m = foo.method_list.first - assert_equal "=begin\nm comment\n=end", m.comment.text + assert_equal 'm comment', m.comment.text end def test_scan_block_comment_nested # Issue #41 @@ -3375,7 +3408,7 @@ end foo = @top_level.modules.first assert_equal 'Foo', foo.full_name - assert_equal "=begin rdoc\nfindmeindoc\n=end", foo.comment.text + assert_equal 'findmeindoc', foo.comment.text bar = foo.classes.first @@ -3386,9 +3419,10 @@ end def test_scan_block_comment_notflush ## # - # The previous test assumes that between the =begin/=end blocs that there is - # only one line, or minima formatting directives. This test tests for those - # who use the =begin bloc with longer / more advanced formatting within. + # The previous test assumes that between the =begin/=end blocks that there + # is only one line, or minima formatting directives. This test tests for + # those who use the =begin bloc with longer / more advanced formatting + # within. # ## content = <<-CONTENT @@ -3422,12 +3456,12 @@ end foo = @top_level.classes.first - assert_equal "=begin rdoc\n\n= DESCRIPTION\n\nThis is a simple test class\n\n= RUMPUS\n\nIs a silly word\n\n=end", + assert_equal "= DESCRIPTION\n\nThis is a simple test class\n\n= RUMPUS\n\nIs a silly word", foo.comment.text m = foo.method_list.first - assert_equal "=begin rdoc\nA nice girl\n=end", m.comment.text + assert_equal 'A nice girl', m.comment.text end def test_scan_class_nested_nodoc @@ -4018,4 +4052,155 @@ end assert_equal ['A', 'B', 'B::C'], visible end + def test_parse_include_by_dynamic_definition + util_parser <<-CLASS +module A + class B + include(Module.new do + def e(m) + end + end) + end + + class C + end + + class D + end +end + CLASS + + @parser.scan + + a = @store.find_module_named 'A' + assert_equal 'A', a.full_name + a_b = a.find_class_named 'B' + assert_equal 'A::B', a_b.full_name + a_c = a.find_class_named 'C' + assert_equal 'A::C', a_c.full_name + a_d = a.find_class_named 'D' + assert_equal 'A::D', a_d.full_name + end + + def test_parse_include_by_dynamic_definition_without_paren + util_parser <<-CLASS +module A + class B + include(Module.new do + def e m + end + end) + end + + class C + end + + class D + end +end + CLASS + + @parser.scan + + a = @store.find_module_named 'A' + assert_equal 'A', a.full_name + a_b = a.find_class_named 'B' + assert_equal 'A::B', a_b.full_name + a_c = a.find_class_named 'C' + assert_equal 'A::C', a_c.full_name + a_d = a.find_class_named 'D' + assert_equal 'A::D', a_d.full_name + end + + def test_parse_include_by_dynamic_definition_via_variable + util_parser <<-CLASS +module A + class B + m = Module.new do + def e(m) + end + end + include m + end + + class C + end + + class D + end +end + CLASS + + @parser.scan + + a = @store.find_module_named 'A' + assert_equal 'A', a.full_name + a_b = a.find_class_named 'B' + assert_equal 'A::B', a_b.full_name + a_c = a.find_class_named 'C' + assert_equal 'A::C', a_c.full_name + a_d = a.find_class_named 'D' + assert_equal 'A::D', a_d.full_name + end + + def test_parse_include_by_dynamic_definition_with_brace + util_parser <<-CLASS +module A + class B + extend(e { + def f(g) + end + }) + end + + class C + end + + class D + end +end + CLASS + + @parser.scan + + a = @store.find_module_named 'A' + assert_equal 'A', a.full_name + a_b = a.find_class_named 'B' + assert_equal 'A::B', a_b.full_name + a_c = a.find_class_named 'C' + assert_equal 'A::C', a_c.full_name + a_d = a.find_class_named 'D' + assert_equal 'A::D', a_d.full_name + end + + def test_parse_include_by_dynamic_definition_directly + util_parser <<-CLASS +module A + class B + include Module.new do + def e m + end + end + end + + class C + end + + class D + end +end + CLASS + + @parser.scan + + a = @store.find_module_named 'A' + assert_equal 'A', a.full_name + a_b = a.find_class_named 'B' + assert_equal 'A::B', a_b.full_name + a_c = a.find_class_named 'C' + assert_equal 'A::C', a_c.full_name + a_d = a.find_class_named 'D' + assert_equal 'A::D', a_d.full_name + end + end diff --git a/test/rdoc/test_rdoc_ri_driver.rb b/test/rdoc/test_rdoc_ri_driver.rb index 590c10906d..f636c6346f 100644 --- a/test/rdoc/test_rdoc_ri_driver.rb +++ b/test/rdoc/test_rdoc_ri_driver.rb @@ -699,6 +699,21 @@ class TestRDocRIDriver < RDoc::TestCase refute_match %r%must not be displayed%, out end + def test_display_name + util_store + + out, = capture_io do + assert_equal true, @driver.display_name('home:README.rdoc') + end + + expected = <<-EXPECTED += README +This is a README + EXPECTED + + assert_equal expected, out + end + def test_display_name_not_found_class util_store diff --git a/test/rdoc/test_rdoc_store.rb b/test/rdoc/test_rdoc_store.rb index 4246b4cbbf..e5cf75203f 100644 --- a/test/rdoc/test_rdoc_store.rb +++ b/test/rdoc/test_rdoc_store.rb @@ -162,7 +162,7 @@ class TestRDocStore < XrefTestCase def test_all_classes_and_modules expected = %w[ - C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C8::S1 + C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C8::S1 C9 C9::A C9::B Child M1 M1::M2 Parent @@ -213,7 +213,7 @@ class TestRDocStore < XrefTestCase def test_classes expected = %w[ - C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C8::S1 + C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 C5 C5::C1 C6 C7 C8 C8::S1 C9 C9::A C9::B Child Parent ] diff --git a/test/rdoc/test_rdoc_tom_doc.rb b/test/rdoc/test_rdoc_tom_doc.rb index 6a6822d50d..27a3e6f178 100644 --- a/test/rdoc/test_rdoc_tom_doc.rb +++ b/test/rdoc/test_rdoc_tom_doc.rb @@ -301,6 +301,44 @@ Returns another thing assert_equal expected, @TD.parse(text) end + def test_parse_returns_with_raises + text = <<-TEXT +Do some stuff + +Returns a thing +Raises ArgumentError when stuff +Raises StandardError when stuff + TEXT + expected = + doc( + para('Do some stuff'), + blank_line, + head(3, 'Returns'), + blank_line, + para('Returns a thing'), + para('Raises ArgumentError when stuff'), + para('Raises StandardError when stuff')) + + assert_equal expected, @TD.parse(text) + end + + def test_parse_raises_without_returns + text = <<-TEXT +Do some stuff + +Raises ArgumentError when stuff + TEXT + expected = + doc( + para('Do some stuff'), + blank_line, + head(3, 'Returns'), + blank_line, + para('Raises ArgumentError when stuff')) + + assert_equal expected, @TD.parse(text) + end + def test_parse_returns_multiline text = <<-TEXT Do some stuff @@ -320,6 +358,27 @@ Returns a thing assert_equal expected, @TD.parse(text) end + def test_parse_returns_multiline_and_raises + text = <<-TEXT +Do some stuff + +Returns a thing + that is multiline +Raises ArgumentError + TEXT + + expected = + doc( + para('Do some stuff'), + blank_line, + head(3, 'Returns'), + blank_line, + para('Returns a thing', ' ', 'that is multiline'), + para('Raises ArgumentError')) + + assert_equal expected, @TD.parse(text) + end + def test_parse_signature text = <<-TEXT Do some stuff @@ -518,4 +577,3 @@ Returns a thing end end - diff --git a/test/rdoc/xref_data.rb b/test/rdoc/xref_data.rb index d002b422f9..aa9faaecd9 100644 --- a/test/rdoc/xref_data.rb +++ b/test/rdoc/xref_data.rb @@ -20,6 +20,8 @@ class C1 def m foo end + def + + end end class C2 @@ -101,6 +103,18 @@ class C8 end end +class C9 + class A + def foo() end + def self.bar() end + end + + class B < A + def self.foo() end + def bar() end + end +end + module M1 def m end diff --git a/test/rdoc/xref_test_case.rb b/test/rdoc/xref_test_case.rb index 70b7df4222..d42cf398e7 100644 --- a/test/rdoc/xref_test_case.rb +++ b/test/rdoc/xref_test_case.rb @@ -31,9 +31,10 @@ class XrefTestCase < RDoc::TestCase @rdoc.options = @options @rdoc.generator = generator - @c1 = @xref_data.find_module_named 'C1' - @c1_m = @c1.method_list.last # C1#m - @c1__m = @c1.method_list.first # C1::m + @c1 = @xref_data.find_module_named 'C1' + @c1__m = @c1.find_class_method_named 'm' # C1::m + @c1_m = @c1.find_instance_method_named 'm' # C1#m + @c1_plus = @c1.find_instance_method_named '+' @c2 = @xref_data.find_module_named 'C2' @c2_a = @c2.method_list.last @@ -56,6 +57,14 @@ class XrefTestCase < RDoc::TestCase @c8 = @xref_data.find_module_named 'C8' @c8_s1 = @xref_data.find_module_named 'C8::S1' + @c9 = @xref_data.find_module_named 'C9' + @c9_a = @xref_data.find_module_named 'C9::A' + @c9_a_i_foo = @c9_a.method_list.first + @c9_a_c_bar = @c9_a.method_list.last + @c9_b = @xref_data.find_module_named 'C9::B' + @c9_b_c_foo = @c9_b.method_list.first + @c9_b_i_bar = @c9_b.method_list.last + @m1 = @xref_data.find_module_named 'M1' @m1_m = @m1.method_list.first |