summaryrefslogtreecommitdiff
path: root/test/rdoc/test_rdoc_parser_ruby.rb
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/rdoc/test_rdoc_parser_ruby.rb
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/rdoc/test_rdoc_parser_ruby.rb')
-rw-r--r--test/rdoc/test_rdoc_parser_ruby.rb205
1 files changed, 195 insertions, 10 deletions
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