diff options
author | nagachika <nagachika@ruby-lang.org> | 2021-05-22 14:51:13 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2021-05-22 14:51:55 +0900 |
commit | 2a70d2148453aeb39443f4c84147ace722d53a9a (patch) | |
tree | 087960766130077e1fef3bb55c9a78b7bed47902 /test/rdoc | |
parent | 3e07a4edc92f18dec4806961c1b724ac5cf4d6b2 (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.rb | 59 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_markup_attribute_manager.rb | 25 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_markup_to_html.rb | 32 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_parser_changelog.rb | 167 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_rdoc.rb | 35 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_top_level.rb | 3 |
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>'</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 |