summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-27 01:30:18 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-27 01:30:18 +0000
commit95e213d3542034e0fd2613de6990a7ddfe5718ca (patch)
tree76ec64fccb338dbcbc4d3f07c2f494ef9b7fe1ff /test
parent41fb243684f60e231fc77ec54752fe4e844523d5 (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.rb31
-rw-r--r--test/rdoc/test_rdoc_class_module.rb1
-rw-r--r--test/rdoc/test_rdoc_context.rb2
-rw-r--r--test/rdoc/test_rdoc_cross_reference.rb29
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_crossref.rb15
-rw-r--r--test/rdoc/test_rdoc_parser_ruby.rb205
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb15
-rw-r--r--test/rdoc/test_rdoc_store.rb4
-rw-r--r--test/rdoc/test_rdoc_tom_doc.rb60
-rw-r--r--test/rdoc/xref_data.rb14
-rw-r--r--test/rdoc/xref_test_case.rb15
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