summaryrefslogtreecommitdiff
path: root/test/rdoc
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2021-05-22 14:51:13 +0900
committernagachika <nagachika@ruby-lang.org>2021-05-22 14:51:55 +0900
commit2a70d2148453aeb39443f4c84147ace722d53a9a (patch)
tree087960766130077e1fef3bb55c9a78b7bed47902 /test/rdoc
parent3e07a4edc92f18dec4806961c1b724ac5cf4d6b2 (diff)
merge revision(s) b1c73f239fe9af97de837331849f55d67c27561e,bb570ce6d80d28cfc7131dcb72885eed2f989b30,b88d1e6b44164bca0c2b85ea6639469813e1e1d8,127f735c1e5e0771076caf2a74390757a42fb177,f3f1a666c77f8c528b0adc9ccf78e4b9910bd6e0,fa048a0f8523cefde5428805dd334691486319e6,d5d1c41728d65acfb8aa2cf95f2d8ac88f271cd1,52ebaf718e6a78297ceb0dff49815eeed28eae45,7fe22152fc28084f4395fece84ff6e5eb2d6b288,19e6d271266eca5925e66fc8ec39b251a2fa6bcd,05898c5b9001c0b1e8bd7bf0d12b42a8e7c388b8,3651f678a719ae3a35825bcb4e0dabbc7c60d8df,10b082064e6ab0943cce4ef43e567d8044c7096d,de8e6218a3257fe19b46ff0aa157e66f452ac8b7,971a0cd246db6578e1ea8760a903e1a23e3681f3,61a29a41e1d0d11a9963315aa86d25ed690124c0,ff9a00887161840eb8a34d53749a7d7962181cfe,fad3412d475b57055f426cf4e86eafeab516672b,54aa11efa8b1be2c5d20402890d6d2fa90aa19a8,e84d275fe6d0c14ba58ce73b13323879c060b7ae,61e1cf23ac0d122fba3ad4cbaa402c7c94ad54d3,a6948329f8f89fb390215086fe4a888915fd589e,64b991b0cd98ee8f23266b8cbea0fa34bdaab1ec,b1c73f239fe9af97de837331849f55d67c27561e,0ee24b4fab1a1faef600a42c29863e1c3edd8c61: [Backport #17877]
Synchronize rdoc with upstream version v6.3.1. [ruby/rdoc] Use File.open to fix the OS Command Injection vulnerability in CVE-2021-31799 https://github.com/ruby/rdoc/commit/a7f5d6ab88 --- lib/rdoc/rdoc.rb | 2 +- test/rdoc/test_rdoc_rdoc.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) [ruby/rdoc] Support ChangeLog generated by `git log` https://github.com/ruby/rdoc/commit/5e0a123ca1 --- lib/rdoc/parser/changelog.rb | 35 +++++++++++++++++++++ test/rdoc/test_rdoc_parser_changelog.rb | 56 +++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) [ruby/rdoc] Make each commit entries h3 https://github.com/ruby/rdoc/commit/11eefb2ae9 --- lib/rdoc/parser/changelog.rb | 12 ++++++------ test/rdoc/test_rdoc_parser_changelog.rb | 12 ++++-------- 2 files changed, 10 insertions(+), 14 deletions(-) [ruby/rdoc] Tweak log entry markdown * add 3 levels to headings * prefix commit log to labels to make unique IDs https://github.com/ruby/rdoc/commit/5074c13209 --- lib/rdoc/parser/changelog.rb | 20 +++++++++++++++++- test/rdoc/test_rdoc_parser_changelog.rb | 36 ++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) [ruby/rdoc] Shorten commit hashes https://github.com/ruby/rdoc/commit/5d3e153963 --- lib/rdoc/parser/changelog.rb | 2 +- test/rdoc/test_rdoc_parser_changelog.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) [ruby/rdoc] Add links to the commits https://github.com/ruby/rdoc/commit/1821628076 --- lib/rdoc/parser/changelog.rb | 107 +++++++++++++++++++++++++------- test/rdoc/test_rdoc_parser_changelog.rb | 36 ++++++----- 2 files changed, 107 insertions(+), 36 deletions(-) [ruby/rdoc] Sort by CommitDate if available https://github.com/ruby/rdoc/commit/455715e930 --- lib/rdoc/parser/changelog.rb | 11 ++++++--- test/rdoc/test_rdoc_parser_changelog.rb | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) [ruby/rdoc] Skip non-date logs by git-log `RDoc::Parser::ChangeLog` mis-parses ChangeLog generated by git-log, because of too heuristic `Time.parse`. For instance, "commit 8187228de0142d3ac7950b7d977c2849e934c637" results in "8187-08-16", that is, day 228 in the year 8187. https://github.com/ruby/rdoc/commit/9711e6f6d9 --- lib/rdoc/parser/changelog.rb | 36 ++++++++++++++++++++------------- test/rdoc/test_rdoc_parser_changelog.rb | 2 ++ 2 files changed, 24 insertions(+), 14 deletions(-) [ruby/rdoc] Support other date formats in git-log https://github.com/ruby/rdoc/commit/ad8cf37d72 --- lib/rdoc/parser/changelog.rb | 6 +++--- test/rdoc/test_rdoc_parser_changelog.rb | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) [ruby/rdoc] Support iso-strict format in git-log https://github.com/ruby/rdoc/commit/2a6c22da63 --- lib/rdoc/parser/changelog.rb | 6 +++--- test/rdoc/test_rdoc_parser_changelog.rb | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) [ruby/rdoc] Update Rdoc.css sidebar panel. Updates css so the sidebar look like a panel instead of looking like chopped edges. https://github.com/ruby/rdoc/commit/b0098c6d72 --- lib/rdoc/generator/template/darkfish/css/rdoc.css | 1 + 1 file changed, 1 insertion(+) [ruby/rdoc] Support GFM table https://github.com/ruby/rdoc/commit/9dc933df16 --- lib/rdoc/markdown.rb | 349 +++++++++++++++++++++++++++++++- lib/rdoc/markup.rb | 1 + lib/rdoc/markup/table.rb | 47 +++++ lib/rdoc/markup/to_html.rb | 23 +++ lib/rdoc/markup/to_joined_paragraph.rb | 1 + lib/rdoc/markup/to_rdoc.rb | 28 +++ lib/rdoc/markup/to_table_of_contents.rb | 1 + test/rdoc/test_rdoc_markdown.rb | 23 +++ 8 files changed, 471 insertions(+), 2 deletions(-) create mode 100644 lib/rdoc/markup/table.rb [ruby/rdoc] Add table style https://github.com/ruby/rdoc/commit/2219c5ae80 --- lib/rdoc/generator/template/darkfish/css/rdoc.css | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) [ruby/rdoc] Fixed CodeFence without blank lines Currently a fenced code block needs a preceding blank line, it should not be required, as: https://github.github.com/gfm/#fenced-code-blocks > A fenced code block may interrupt a paragraph, and does not > require a blank line either before or after. Just recommended: https://docs.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks > We recommend placing a blank line before and after code blocks > to make the raw formatting easier to read. https://github.com/ruby/rdoc/commit/0e1776caf3 --- lib/rdoc/markdown.rb | 447 +++++++--------------------------------- test/rdoc/test_rdoc_markdown.rb | 36 +++- 2 files changed, 112 insertions(+), 371 deletions(-) [ruby/rdoc] Allow partial default values to be overridden with .rdoc_options https://github.com/ruby/rdoc/commit/e14800891f --- lib/rdoc/options.rb | 34 +++++++++++++++++++++++++++++++++- lib/rdoc/rdoc.rb | 7 ++++++- test/rdoc/test_rdoc_rdoc.rb | 12 ++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) [ruby/rdoc] Allow empty .rdoc_options https://github.com/ruby/rdoc/commit/0c8cb25b50 --- lib/rdoc/rdoc.rb | 2 ++ test/rdoc/test_rdoc_rdoc.rb | 11 +++++++++++ 2 files changed, 13 insertions(+) [ruby/rdoc] Suppress unused variable warning of "text" https://github.com/ruby/rdoc/commit/3a4120b155 --- lib/rdoc/markdown.rb | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 343 insertions(+), 2 deletions(-) [ruby/rdoc] Get rid of a trailing space https://github.com/ruby/rdoc/commit/7b7b91768e --- lib/rdoc/markdown.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) [ruby/rdoc] Disable other notations in <code> tags https://github.com/ruby/rdoc/commit/0cd3b55210 --- lib/rdoc/markup/attr_span.rb | 10 ++- lib/rdoc/markup/attribute_manager.rb | 102 ++++++++++++++++++------ test/rdoc/test_rdoc_markup_attribute_manager.rb | 24 +++++- test/rdoc/test_rdoc_markup_to_html.rb | 6 ++ 4 files changed, 114 insertions(+), 28 deletions(-) [ruby/rdoc] Treat other tags as word boundaries https://github.com/ruby/rdoc/commit/8222f85a17 --- lib/rdoc/markup/attribute_manager.rb | 17 +++++++++++++---- test/rdoc/test_rdoc_markup_to_html.rb | 5 +++++ 2 files changed, 18 insertions(+), 4 deletions(-) [ruby/rdoc] Treat emphasis tags as excluding other notations And exclusive notations don't exclude other exclusive notations. https://github.com/ruby/rdoc/commit/b8baa9a435 --- lib/rdoc/markup/attr_span.rb | 2 +- lib/rdoc/markup/attribute_manager.rb | 10 +++++----- test/rdoc/test_rdoc_markup_attribute_manager.rb | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) [ruby/rdoc] Clarify that dots in URL are replaced The dots in all path components from the document root are replaced with underscores, not only in the basename. https://github.com/ruby/rdoc/commit/7a3417ea4c --- test/rdoc/test_rdoc_top_level.rb | 3 +++ 1 file changed, 3 insertions(+) [ruby/rdoc] Links to document texts without "rdoc-ref:" prefix While links to generated HTML from RDoc file needs to be prefixed by "rdoc-ref:" currently, in case of explicit references this seems just redundant. Also GitHub RDoc support does not work with this prefix. This patch lets links to such document texts (".rb", ".rdoc" and ".md" now) refer URLs generated by `RDoc::TopLevel#http_url` without the prefix. https://github.com/ruby/rdoc/commit/f18b27b69d --- lib/rdoc/markup/to_html.rb | 4 ++++ test/rdoc/test_rdoc_markup_to_html.rb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) [ruby/rdoc] Use File.open to fix the OS Command Injection vulnerability in CVE-2021-31799 https://github.com/ruby/rdoc/commit/a7f5d6ab88 --- lib/rdoc/rdoc.rb | 2 +- test/rdoc/test_rdoc_rdoc.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) [ruby/rdoc] Version 6.3.1 https://github.com/ruby/rdoc/commit/9307f932b7 --- lib/rdoc/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Diffstat (limited to 'test/rdoc')
-rw-r--r--test/rdoc/test_rdoc_markdown.rb59
-rw-r--r--test/rdoc/test_rdoc_markup_attribute_manager.rb25
-rw-r--r--test/rdoc/test_rdoc_markup_to_html.rb32
-rw-r--r--test/rdoc/test_rdoc_parser_changelog.rb167
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb35
-rw-r--r--test/rdoc/test_rdoc_top_level.rb3
6 files changed, 314 insertions, 7 deletions
diff --git a/test/rdoc/test_rdoc_markdown.rb b/test/rdoc/test_rdoc_markdown.rb
index 9c7a406224..ad53e9473c 100644
--- a/test/rdoc/test_rdoc_markdown.rb
+++ b/test/rdoc/test_rdoc_markdown.rb
@@ -143,7 +143,7 @@ a block quote
end
def test_parse_code_github
- doc = parse <<-MD
+ doc = <<-MD
Example:
```
@@ -156,11 +156,25 @@ code goes here
para("Example:"),
verb("code goes here\n"))
- assert_equal expected, doc
+ assert_equal expected, parse(doc)
+ assert_equal expected, parse(doc.sub(/^\n/, ''))
+
+ @parser.github = false
+
+ expected =
+ doc(para("Example:"),
+ para("<code>\n""code goes here\n</code>"))
+
+ assert_equal expected, parse(doc)
+
+ expected =
+ doc(para("Example:\n<code>\n""code goes here\n</code>"))
+
+ assert_equal expected, parse(doc.sub(/^\n/, ''))
end
def test_parse_code_github_format
- doc = parse <<-MD
+ doc = <<-MD
Example:
``` ruby
@@ -176,7 +190,21 @@ code goes here
para("Example:"),
code)
- assert_equal expected, doc
+ assert_equal expected, parse(doc)
+ assert_equal expected, parse(doc.sub(/^\n/, ''))
+
+ @parser.github = false
+
+ expected =
+ doc(para("Example:"),
+ para("<code>ruby\n""code goes here\n</code>"))
+
+ assert_equal expected, parse(doc)
+
+ expected =
+ doc(para("Example:\n<code>ruby\n""code goes here\n</code>"))
+
+ assert_equal expected, parse(doc.sub(/^\n/, ''))
end
def test_parse_definition_list
@@ -1012,6 +1040,29 @@ and an extra note.[^2]
assert_equal expected, doc
end
+ def test_gfm_table
+ doc = parse <<~MD
+ | | |compare-ruby|built-ruby|
+ |------|:----------------|-----------:|---------:|
+ |test | 1 | 11.618M| 10.757M|
+ | | | 1.08x| -|
+ |test | 10 | 1.849M| 1.723M|
+ | | | 1.07x| -|
+ MD
+
+ head = ["", "", "compare-ruby", "built-ruby"]
+ align = [nil, :left, :right, :right]
+ body = [
+ ["test", "1", "11.618M", "10.757M"],
+ ["", "", "1.08x", "-"],
+ ["test", "10", "1.849M", "1.723M"],
+ ["", "", "1.07x", "-"],
+ ]
+ expected = doc(@RM::Table.new(head, align, body))
+
+ assert_equal expected, doc
+ end
+
def parse text
@parser.parse text
end
diff --git a/test/rdoc/test_rdoc_markup_attribute_manager.rb b/test/rdoc/test_rdoc_markup_attribute_manager.rb
index a180666867..944364ba89 100644
--- a/test/rdoc/test_rdoc_markup_attribute_manager.rb
+++ b/test/rdoc/test_rdoc_markup_attribute_manager.rb
@@ -172,22 +172,25 @@ class TestRDocMarkupAttributeManager < RDoc::TestCase
def test_convert_attrs
str = '+foo+'.dup
- attrs = RDoc::Markup::AttrSpan.new str.length
+ attrs = RDoc::Markup::AttrSpan.new str.length, @am.exclusive_bitmap
+ @am.convert_attrs str, attrs, true
@am.convert_attrs str, attrs
assert_equal "\000foo\000", str
str = '+:foo:+'.dup
- attrs = RDoc::Markup::AttrSpan.new str.length
+ attrs = RDoc::Markup::AttrSpan.new str.length, @am.exclusive_bitmap
+ @am.convert_attrs str, attrs, true
@am.convert_attrs str, attrs
assert_equal "\000:foo:\000", str
str = '+x-y+'.dup
- attrs = RDoc::Markup::AttrSpan.new str.length
+ attrs = RDoc::Markup::AttrSpan.new str.length, @am.exclusive_bitmap
+ @am.convert_attrs str, attrs, true
@am.convert_attrs str, attrs
assert_equal "\000x-y\000", str
@@ -243,6 +246,22 @@ class TestRDocMarkupAttributeManager < RDoc::TestCase
output('unhandled <p>tag</p> unchanged')
end
+ def test_exclude_tag
+ assert_equal '<CODE>aaa</CODE>[:symbol]', output('+aaa+[:symbol]')
+ assert_equal '<CODE>aaa[:symbol]</CODE>', output('+aaa[:symbol]+')
+ assert_equal 'aaa[:symbol]', output('aaa[:symbol]')
+ assert_equal '<B><CODE>index</CODE></B>', output('<b><tt>index</tt></b>')
+ end
+
+ def test_exclude_tag_flow
+ assert_equal [@tt_on, "aaa", @tt_off, "[:symbol]"],
+ @am.flow("+aaa+[:symbol]")
+ assert_equal [@tt_on, "aaa[:symbol]", @tt_off],
+ @am.flow("+aaa[:symbol]+")
+ assert_equal ["aaa[:symbol]"],
+ @am.flow("aaa[:symbol]")
+ end
+
def test_html_like_em_bold
assert_equal ["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off],
@am.flow("cat <i>and </i><b>dog</b>")
diff --git a/test/rdoc/test_rdoc_markup_to_html.rb b/test/rdoc/test_rdoc_markup_to_html.rb
index fb94269064..29da968abc 100644
--- a/test/rdoc/test_rdoc_markup_to_html.rb
+++ b/test/rdoc/test_rdoc_markup_to_html.rb
@@ -704,6 +704,17 @@ EXPECTED
assert_equal "\n<p><a href=\"irc://irc.freenode.net/#ruby-lang\">ruby-lang</a></p>\n", result
end
+ def test_convert_with_exclude_tag
+ assert_equal "\n<p><code>aaa</code>[:symbol]</p>\n", @to.convert('+aaa+[:symbol]')
+ assert_equal "\n<p><code>aaa[:symbol]</code></p>\n", @to.convert('+aaa[:symbol]+')
+ assert_equal "\n<p><a href=\":symbol\">aaa</a></p>\n", @to.convert('aaa[:symbol]')
+ end
+
+ def test_convert_underscore_adjacent_to_code
+ assert_equal "\n<p><code>aaa</code>_</p>\n", @to.convert(%q{+aaa+_})
+ assert_equal "\n<p>`<code>i386-mswin32_</code><em>MSRTVERSION</em>&#39;</p>\n", @to.convert(%q{`+i386-mswin32_+_MSRTVERSION_'})
+ end
+
def test_gen_url
assert_equal '<a href="example">example</a>',
@to.gen_url('link:example', 'example')
@@ -727,6 +738,27 @@ EXPECTED
assert_equal '<img src="https://example.com/image.png" />', @to.gen_url('https://example.com/image.png', 'ignored')
end
+ def test_gen_url_rdoc_file
+ assert_equal '<a href="doc/example_rdoc.html">example</a>',
+ @to.gen_url('doc/example.rdoc', 'example')
+ assert_equal '<a href="../ex_doc/example_rdoc.html">example</a>',
+ @to.gen_url('../ex.doc/example.rdoc', 'example')
+ end
+
+ def test_gen_url_md_file
+ assert_equal '<a href="doc/example_md.html">example</a>',
+ @to.gen_url('doc/example.md', 'example')
+ assert_equal '<a href="../ex_doc/example_md.html">example</a>',
+ @to.gen_url('../ex.doc/example.md', 'example')
+ end
+
+ def test_gen_url_rb_file
+ assert_equal '<a href="doc/example_rb.html">example</a>',
+ @to.gen_url('doc/example.rb', 'example')
+ assert_equal '<a href="../ex_doc/example_rb.html">example</a>',
+ @to.gen_url('../ex.doc/example.rb', 'example')
+ end
+
def test_handle_regexp_HYPERLINK_link
target = RDoc::Markup::RegexpHandling.new 0, 'link:README.txt'
diff --git a/test/rdoc/test_rdoc_parser_changelog.rb b/test/rdoc/test_rdoc_parser_changelog.rb
index d93cb7deca..6584840572 100644
--- a/test/rdoc/test_rdoc_parser_changelog.rb
+++ b/test/rdoc/test_rdoc_parser_changelog.rb
@@ -212,6 +212,8 @@ Mon Dec 3 20:28:02 2012 Koichi Sasada <ko1@atdot.net>
change condition of using `opt_send_simple'.
More method invocations can be simple.
+commit\ 8187228de0142d3ac7950b7d977c2849e934c637
+
Other note that will be ignored
ChangeLog
@@ -270,6 +272,24 @@ Other note that will be ignored
assert_equal expected, parser.parse_entries
end
+ def test_parse_entries_git
+ parser = util_parser <<-ChangeLog
+commit\ 709bed2afaee50e2ce803f87bf1ee8291bea41e3
+ Author: git <svn-admin@ruby-lang.org>
+ Date: 2021-01-21 01:03:52 +0900
+
+ * 2021-01-21 [ci skip]
+ChangeLog
+
+ expected = [
+ [ "709bed2afaee50e2ce80",
+ [ "git", "svn-admin@ruby-lang.org",
+ "2021-01-21 01:03:52 +0900",
+ "* 2021-01-21 [ci skip]\n"]]]
+
+ assert_equal expected, parser.parse_entries
+ end
+
def test_scan
parser = util_parser <<-ChangeLog
Tue Dec 4 08:32:10 2012 Eric Hodel <drbrain@segment7.net>
@@ -309,10 +329,157 @@ Mon Dec 3 20:37:22 2012 Koichi Sasada <ko1@atdot.net>
assert_equal expected, @top_level.comment
end
+ def test_scan_git
+ parser = util_parser <<-ChangeLog
+commit\ 38816887962ec167ee46acf500f68df5c3013163
+Author: git <svn-admin@ruby-lang.org>
+Date: Sun Jan 24 14:35:51 2021 +0900
+
+ * 2021-01-24 [ci skip]
+
+commit\ db7d0b89f6eca66cc7eb155c95f9123133da1ffc
+Author: git <svn-admin@ruby-lang.org>
+Date: Sat, 23 Jan 2021 06:01:39 +0900
+
+ * 2021-01-23 [ci skip]
+
+commit\ a3efbda7128ef20b55505b32d1608ea48f80af4a
+Author: git <svn-admin@ruby-lang.org>
+Date: 2021-01-22T02:49:39+09:00
+
+ * 2021-01-22 [ci skip]
+
+commit\ 709bed2afaee50e2ce803f87bf1ee8291bea41e3
+ Author: git <svn-admin@ruby-lang.org>
+ Date: 2021-01-21 01:03:52 +0900
+
+ * 2021-01-21 [ci skip]
+
+commit\ a8dc5156e183489c5121fb1759bda5d9406d9175
+ Author: git <svn-admin@ruby-lang.org>
+ Date: 2021-01-20 01:58:26 +0900
+
+ * 2021-01-20 [ci skip]
+
+commit\ de5f8a92d5001799bedb3b1a271a2d9b23c6c8fb
+ Author: Masataka Pocke Kuwabara <kuwabara@pocke.me>
+ Date: 2021-01-01 14:25:08 +0900
+
+ Make args info for RubyVM::AST to available on endless method without parens
+
+ Problem
+ ===
+
+ Arguments information is missing for endless method without parens.
+ For example:
+
+ ```ruby
+ # ok
+ ```
+
+ It causes an error if a program expects `args` node exists.
+
+ Solution
+ ===
+
+ Call `new_args` on this case.
+ChangeLog
+
+ parser.scan
+
+ expected = doc(
+ head(1, File.basename(@tempfile.path)),
+ blank_line,
+ head(2, '2021-01-24'),
+ blank_line,
+ log_entry(nil, '38816887962ec167ee46',
+ 'git', 'svn-admin@ruby-lang.org', 'Sun Jan 24 14:35:51 2021 +0900',
+ [list(:BULLET, item(nil, para('2021-01-24 [ci skip]')))]),
+ head(2, '2021-01-23'),
+ blank_line,
+ log_entry(nil, 'db7d0b89f6eca66cc7eb',
+ 'git', 'svn-admin@ruby-lang.org', 'Sat, 23 Jan 2021 06:01:39 +0900',
+ [list(:BULLET, item(nil, para('2021-01-23 [ci skip]')))]),
+ head(2, '2021-01-22'),
+ blank_line,
+ log_entry(nil, 'a3efbda7128ef20b5550',
+ 'git', 'svn-admin@ruby-lang.org', '2021-01-22T02:49:39+09:00',
+ [list(:BULLET, item(nil, para('2021-01-22 [ci skip]')))]),
+ head(2, '2021-01-21'),
+ blank_line,
+ log_entry(nil, '709bed2afaee50e2ce80',
+ 'git', 'svn-admin@ruby-lang.org', '2021-01-21 01:03:52 +0900',
+ [list(:BULLET, item(nil, para('2021-01-21 [ci skip]')))]),
+ head(2, '2021-01-20'),
+ blank_line,
+ log_entry(nil, 'a8dc5156e183489c5121',
+ 'git', 'svn-admin@ruby-lang.org', '2021-01-20 01:58:26 +0900',
+ [list(:BULLET, item(nil, para('2021-01-20 [ci skip]')))]),
+ head(2, '2021-01-01'),
+ blank_line,
+ log_entry(nil, 'de5f8a92d5001799bedb',
+ 'Masataka Pocke Kuwabara', 'kuwabara@pocke.me', '2021-01-01 14:25:08 +0900',
+ [head(4, 'Make args info for RubyVM::AST to available on endless method without parens'),
+ head(5, 'Problem'),
+ para("Arguments information is missing for endless method without parens.\n" +
+ "For example:"),
+ verb("# ok\n").tap {|v| v.format = :ruby},
+ para('It causes an error if a program expects <code>args</code> node exists.'),
+ head(5, 'Solution'),
+ para('Call <code>new_args</code> on this case.')]))
+
+ expected.file = @top_level
+
+ assert_equal expected, @top_level.comment
+ end
+
+ def test_scan_git_commit_date
+ parser = util_parser <<-ChangeLog
+commit\ ee1e690a2df901adb279d7a63fbd92c64e0a5ae6
+ Author: Igor Zubkov <igor.zubkov@gmail.com>
+ AuthorDate: 2016-10-25 03:56:11 +0900
+ Commit: Nobuyoshi Nakada <nobu@ruby-lang.org>
+ CommitDate: 2021-01-07 13:40:42 +0900
+
+ We don't need "require 'uri'" after "require 'net/http'".
+
+commit\ 4d0985a7bd8f591dff4b430e288bfd83af782e51
+ Author: git <svn-admin@ruby-lang.org>
+ AuthorDate: 2021-01-07 10:21:34 +0900
+ Commit: git <svn-admin@ruby-lang.org>
+ CommitDate: 2021-01-07 10:21:34 +0900
+
+ * 2021-01-07 [ci skip]
+ChangeLog
+
+ parser.scan
+
+ expected = doc(
+ head(1, File.basename(@tempfile.path)),
+ blank_line,
+ head(2, "2021-01-07"),
+ blank_line,
+ log_entry(nil, 'ee1e690a2df901adb279',
+ 'Igor Zubkov', 'igor.zubkov@gmail.com',
+ '2016-10-25 03:56:11 +0900',
+ [head(4, %[We don't need "require 'uri'" after "require 'net/http'".])]),
+ log_entry(nil, '4d0985a7bd8f591dff4b',
+ 'git', 'svn-admin@ruby-lang.org',
+ '2021-01-07 10:21:34 +0900',
+ [list(:BULLET, item(nil, para("2021-01-07 [ci skip]")))]))
+
+ expected.file = @top_level
+
+ assert_equal expected, @top_level.comment
+ end
+
def util_parser content = ''
RDoc::Parser::ChangeLog.new \
@top_level, @tempfile.path, content, @options, @stats
end
+ def log_entry(*a)
+ RDoc::Parser::ChangeLog::Git::LogEntry.new(*a)
+ end
end
diff --git a/test/rdoc/test_rdoc_rdoc.rb b/test/rdoc/test_rdoc_rdoc.rb
index f7d9b8659f..a83d5a1b88 100644
--- a/test/rdoc/test_rdoc_rdoc.rb
+++ b/test/rdoc/test_rdoc_rdoc.rb
@@ -133,6 +133,29 @@ class TestRDocRDoc < RDoc::TestCase
end
end
+ def test_load_options_empty_file
+ temp_dir do
+ File.open '.rdoc_options', 'w' do |io|
+ end
+
+ options = @rdoc.load_options
+
+ assert_equal 'rdoc', options.markup
+ end
+ end
+
+ def test_load_options_partial_override
+ temp_dir do
+ File.open '.rdoc_options', 'w' do |io|
+ io.write "markup: Markdown"
+ end
+
+ options = @rdoc.load_options
+
+ assert_equal 'Markdown', options.markup
+ end
+ end
+
def load_options_no_file
temp_dir do
options = @rdoc.load_options
@@ -433,6 +456,18 @@ class TestRDocRDoc < RDoc::TestCase
end
end
+ def test_remove_unparseable_CVE_2021_31799
+ temp_dir do
+ file_list = ['| touch evil.txt && echo tags']
+ file_list.each do |f|
+ FileUtils.touch f
+ end
+
+ assert_equal file_list, @rdoc.remove_unparseable(file_list)
+ assert_equal file_list, Dir.children('.')
+ end
+ end
+
def test_setup_output_dir
Dir.mktmpdir {|d|
path = File.join d, 'testdir'
diff --git a/test/rdoc/test_rdoc_top_level.rb b/test/rdoc/test_rdoc_top_level.rb
index e396791ab8..a954fde981 100644
--- a/test/rdoc/test_rdoc_top_level.rb
+++ b/test/rdoc/test_rdoc_top_level.rb
@@ -157,6 +157,9 @@ class TestRDocTopLevel < XrefTestCase
def test_http_url
assert_equal 'prefix/path/top_level_rb.html', @top_level.http_url('prefix')
+
+ other_level = @store.add_file 'path.other/level.rb'
+ assert_equal 'prefix/path_other/level_rb.html', other_level.http_url('prefix')
end
def test_last_modified