From 810008293fd8ce3a9d3d62dcf2f2229b98c2bd49 Mon Sep 17 00:00:00 2001 From: drbrain Date: Sun, 16 Dec 2012 23:07:49 +0000 Subject: * lib/rdoc.rb: Updated VERSION. * lib/rdoc/markup/attribute_manager.rb: Removed useless empty check. * lib/rdoc/markup/to_markdown.rb: Support links from other formats. * lib/rdoc/markup/formatter.rb: ditto. * lib/rdoc/markup/to_html.rb: ditto. * test/rdoc/test_rdoc_markup_formatter.rb: Test for above. * test/rdoc/test_rdoc_markup_to_html.rb: ditto. * test/rdoc/test_rdoc_markup_to_markdown.rb: ditto. * lib/rdoc/rd/block_parser.rb: Improved footnote display. Worked around bug in footnote conversion to Markdown. * test/rdoc/test_rdoc_rd_block_parser.rb: Test for above. * lib/rdoc/rd/inline_parser.rb: Fixed bug with emphasis inside verbatim. * test/rdoc/test_rdoc_rd_inline_parser.rb: Test for above. * test/rdoc/test_rdoc_parser_rd.rb: Use mu_pp, use shortcut methods. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rdoc/test_rdoc_markup_formatter.rb | 91 ++++++++++ test/rdoc/test_rdoc_markup_to_html.rb | 13 -- test/rdoc/test_rdoc_markup_to_markdown.rb | 31 ++++ test/rdoc/test_rdoc_parser_rd.rb | 11 +- test/rdoc/test_rdoc_rd_block_parser.rb | 264 ++++++++++++++++-------------- test/rdoc/test_rdoc_rd_inline_parser.rb | 7 +- 6 files changed, 277 insertions(+), 140 deletions(-) (limited to 'test') diff --git a/test/rdoc/test_rdoc_markup_formatter.rb b/test/rdoc/test_rdoc_markup_formatter.rb index 9512babce3..c0dde757cb 100644 --- a/test/rdoc/test_rdoc_markup_formatter.rb +++ b/test/rdoc/test_rdoc_markup_formatter.rb @@ -48,6 +48,97 @@ class TestRDocMarkupFormatter < RDoc::TestCase @tt = @attributes.bitmap_for :TT end + def test_class_gen_relative_url + def gen(from, to) + RDoc::Markup::ToHtml.gen_relative_url from, to + end + + assert_equal 'a.html', gen('a.html', 'a.html') + assert_equal 'b.html', gen('a.html', 'b.html') + + assert_equal 'd.html', gen('a/c.html', 'a/d.html') + assert_equal '../a.html', gen('a/c.html', 'a.html') + assert_equal 'a/c.html', gen('a.html', 'a/c.html') + end + + def special_names + @attribute_manager.special.map do |_, mask| + @attributes.as_string mask + end + end + + def test_add_special_RDOCLINK + @to.add_special_RDOCLINK + + assert_includes special_names, 'RDOCLINK' + end + + def test_add_special_TIDYLINK + @to.add_special_TIDYLINK + + assert_includes special_names, 'TIDYLINK' + end + + def test_parse_url + scheme, url, id = @to.parse_url 'example/foo' + + assert_equal 'http', scheme + assert_equal 'http://example/foo', url + assert_equal nil, id + end + + def test_parse_url_anchor + scheme, url, id = @to.parse_url '#foottext-1' + + assert_equal nil, scheme + assert_equal '#foottext-1', url + assert_equal nil, id + end + + def test_parse_url_link + scheme, url, id = @to.parse_url 'link:README.txt' + + assert_equal 'link', scheme + assert_equal 'README.txt', url + assert_equal nil, id + end + + def test_parse_url_link_id + scheme, url, id = @to.parse_url 'link:README.txt#label-foo' + + assert_equal 'link', scheme + assert_equal 'README.txt#label-foo', url + assert_equal nil, id + end + + def test_parse_url_rdoc_label + scheme, url, id = @to.parse_url 'rdoc-label:foo' + + assert_equal 'link', scheme + assert_equal '#foo', url + assert_equal nil, id + + scheme, url, id = @to.parse_url 'rdoc-label:foo:bar' + + assert_equal 'link', scheme + assert_equal '#foo', url + assert_equal ' id="bar"', id + end + + def test_parse_url_scheme + scheme, url, id = @to.parse_url 'http://example/foo' + + assert_equal 'http', scheme + assert_equal 'http://example/foo', url + assert_equal nil, id + + scheme, url, id = @to.parse_url 'https://example/foo' + + assert_equal 'https', scheme + assert_equal 'https://example/foo', url + assert_equal nil, id + end + def test_convert_tt_special converted = @to.convert 'AAA' diff --git a/test/rdoc/test_rdoc_markup_to_html.rb b/test/rdoc/test_rdoc_markup_to_html.rb index cb444a531f..ffff6895d1 100644 --- a/test/rdoc/test_rdoc_markup_to_html.rb +++ b/test/rdoc/test_rdoc_markup_to_html.rb @@ -10,19 +10,6 @@ class TestRDocMarkupToHtml < RDoc::Markup::FormatterTestCase @to = RDoc::Markup::ToHtml.new @options end - def test_class_gen_relative_url - def gen(from, to) - RDoc::Markup::ToHtml.gen_relative_url from, to - end - - assert_equal 'a.html', gen('a.html', 'a.html') - assert_equal 'b.html', gen('a.html', 'b.html') - - assert_equal 'd.html', gen('a/c.html', 'a/d.html') - assert_equal '../a.html', gen('a/c.html', 'a.html') - assert_equal 'a/c.html', gen('a.html', 'a/c.html') - end - def accept_blank_line assert_empty @to.res.join end diff --git a/test/rdoc/test_rdoc_markup_to_markdown.rb b/test/rdoc/test_rdoc_markup_to_markdown.rb index 56f84b41db..6d09ca62ea 100644 --- a/test/rdoc/test_rdoc_markup_to_markdown.rb +++ b/test/rdoc/test_rdoc_markup_to_markdown.rb @@ -348,5 +348,36 @@ words words words words assert_equal expected, @to.end_accepting end + def test_convert_RDOCLINK + result = @to.convert 'rdoc-garbage:C' + + assert_equal "C\n", result + end + + def test_convert_TIDYLINK + result = @to.convert \ + '{DSL}[http://en.wikipedia.org/wiki/Domain-specific_language]' + + expected = "[DSL](http://en.wikipedia.org/wiki/Domain-specific_language)\n" + + assert_equal expected, result + end + + def test_handle_rdoc_link_label_footmark + assert_equal '[^1]:', @to.handle_rdoc_link('rdoc-label:footmark-1:x') + end + + def test_handle_rdoc_link_label_foottext + assert_equal '[^1]', @to.handle_rdoc_link('rdoc-label:foottext-1:x') + end + + def test_handle_rdoc_link_label_label + assert_equal '[x](#label-x)', @to.handle_rdoc_link('rdoc-label:label-x') + end + + def test_handle_rdoc_link_ref + assert_equal 'x', @to.handle_rdoc_link('rdoc-ref:x') + end + end diff --git a/test/rdoc/test_rdoc_parser_rd.rb b/test/rdoc/test_rdoc_parser_rd.rb index b94280f497..7f979a8346 100644 --- a/test/rdoc/test_rdoc_parser_rd.rb +++ b/test/rdoc/test_rdoc_parser_rd.rb @@ -22,6 +22,13 @@ class TestRDocParserRd < RDoc::TestCase @tempfile.close end + def mu_pp obj + s = '' + s = PP.pp obj, s + s = s.force_encoding Encoding.default_external if defined? Encoding + s.chomp + end + def test_file assert_kind_of RDoc::Parser::Text, util_parser('') end @@ -34,9 +41,7 @@ class TestRDocParserRd < RDoc::TestCase def test_scan parser = util_parser 'it ((*really*)) works' - expected = - @RM::Document.new( - @RM::Paragraph.new('it really works')) + expected = doc(para('it really works')) expected.file = @top_level parser.scan diff --git a/test/rdoc/test_rdoc_rd_block_parser.rb b/test/rdoc/test_rdoc_rd_block_parser.rb index 541c26fd89..8bb1c27c2d 100644 --- a/test/rdoc/test_rdoc_rd_block_parser.rb +++ b/test/rdoc/test_rdoc_rd_block_parser.rb @@ -15,6 +15,23 @@ class TestRDocRdBlockParser < RDoc::TestCase s.chomp end + def test_add_footnote + index = @block_parser.add_footnote 'context' + + assert_equal 1, index + + expected = [ + para('{^1}[rdoc-label:footmark-1:foottext-1]', ' ', 'context'), + blank_line, + ] + + assert_equal expected, @block_parser.footnotes + + index = @block_parser.add_footnote 'other' + + assert_equal 2, index + end + def test_parse_desclist list = <<-LIST :one @@ -25,9 +42,9 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NOTE, - @RM::ListItem.new("one", @RM::Paragraph.new("desc one")), - @RM::ListItem.new("two", @RM::Paragraph.new("desc two")))) + list(:NOTE, + item("one", para("desc one")), + item("two", para("desc two")))) assert_equal expected, parse(list) end @@ -40,9 +57,9 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new("one")), - @RM::ListItem.new(nil, @RM::Paragraph.new("two")))) + list(:NUMBER, + item(nil, para("one")), + item(nil, para("two")))) assert_equal expected, parse(list) end @@ -56,10 +73,10 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, - @RM::Paragraph.new("one"), - @RM::Paragraph.new("two")))) + list(:NUMBER, + item(nil, + para("one"), + para("two")))) assert_equal expected, parse(list) end @@ -74,8 +91,8 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new(*contents)))) + list(:NUMBER, + item(nil, para(*contents)))) assert_equal expected, parse(list) end @@ -88,10 +105,10 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, - @RM::Paragraph.new("item"), - @RM::Verbatim.new("verbatim\n")))) + list(:NUMBER, + item(nil, + para("item"), + verb("verbatim\n")))) assert_equal expected, parse(list) end @@ -105,11 +122,11 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, - @RM::Paragraph.new("one"), - @RM::Verbatim.new("verbatim\n"), - @RM::Paragraph.new("two")))) + list(:NUMBER, + item(nil, + para("one"), + verb("verbatim\n"), + para("two")))) assert_equal expected, parse(list) end @@ -117,9 +134,10 @@ class TestRDocRdBlockParser < RDoc::TestCase def test_parse_footnote expected = doc( - @RM::Paragraph.new("{*1}[rdoc-label:foottext-1:footmark-1]"), - @RM::Rule.new(1), - @RM::Paragraph.new("{^1}[rdoc-label:footmark-1:foottext-1]", "text")) + para("{*1}[rdoc-label:foottext-1:footmark-1]"), + rule(1), + para("{^1}[rdoc-label:footmark-1:foottext-1]", " ", "text"), + blank_line) assert_equal expected, parse("((-text-))") end @@ -137,10 +155,10 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::BlankLine.new, - @RM::Paragraph.new("include worked"), - @RM::BlankLine.new, - @RM::BlankLine.new) + blank_line, + para("include worked"), + blank_line, + blank_line) Tempfile.open %w[parse_include .rd] do |io| io.puts "=begin\ninclude ((*worked*))\n=end" @@ -155,12 +173,12 @@ class TestRDocRdBlockParser < RDoc::TestCase end def test_parse_heading - assert_equal doc(@RM::Heading.new(1, "H")), parse("= H") - assert_equal doc(@RM::Heading.new(2, "H")), parse("== H") - assert_equal doc(@RM::Heading.new(3, "H")), parse("=== H") - assert_equal doc(@RM::Heading.new(4, "H")), parse("==== H") - assert_equal doc(@RM::Heading.new(5, "H")), parse("+ H") - assert_equal doc(@RM::Heading.new(6, "H")), parse("++ H") + assert_equal doc(head(1, "H")), parse("= H") + assert_equal doc(head(2, "H")), parse("== H") + assert_equal doc(head(3, "H")), parse("=== H") + assert_equal doc(head(4, "H")), parse("==== H") + assert_equal doc(head(5, "H")), parse("+ H") + assert_equal doc(head(6, "H")), parse("++ H") end def test_parse_itemlist @@ -171,9 +189,9 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new("one")), - @RM::ListItem.new(nil, @RM::Paragraph.new("two")))) + list(:BULLET, + item(nil, para("one")), + item(nil, para("two")))) assert_equal expected, parse(list) end @@ -188,8 +206,8 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new(*contents)))) + list(:BULLET, + item(nil, para(*contents)))) assert_equal expected, parse(list) end @@ -203,13 +221,13 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, - @RM::Paragraph.new("one"), - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new("inner")))), - @RM::ListItem.new(nil, - @RM::Paragraph.new("two")))) + list(:BULLET, + item(nil, + para("one"), + list(:BULLET, + item(nil, para("inner")))), + item(nil, + para("two")))) assert_equal expected, parse(list) end @@ -223,10 +241,10 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, - @RM::Paragraph.new("one"), - @RM::Paragraph.new("two")))) + list(:BULLET, + item(nil, + para("one"), + para("two")))) assert_equal expected, parse(list) end @@ -239,10 +257,10 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, - @RM::Paragraph.new("item"), - @RM::Verbatim.new("verbatim\n")))) + list(:BULLET, + item(nil, + para("item"), + verb("verbatim\n")))) assert_equal expected, parse(list) end @@ -256,11 +274,11 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, - @RM::Paragraph.new("one"), - @RM::Verbatim.new("verbatim\n"), - @RM::Paragraph.new("two")))) + list(:BULLET, + item(nil, + para("one"), + verb("verbatim\n"), + para("two")))) assert_equal expected, parse(list) end @@ -277,15 +295,15 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new("one")), - @RM::ListItem.new(nil, @RM::Paragraph.new("two"))), - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new("three")), - @RM::ListItem.new(nil, @RM::Paragraph.new("four"))), - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new("five")), - @RM::ListItem.new(nil, @RM::Paragraph.new("six")))) + list(:NUMBER, + item(nil, para("one")), + item(nil, para("two"))), + list(:BULLET, + item(nil, para("three")), + item(nil, para("four"))), + list(:NUMBER, + item(nil, para("five")), + item(nil, para("six")))) assert_equal expected, parse(list) end @@ -302,15 +320,15 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new("one")), - @RM::ListItem.new(nil, - @RM::Paragraph.new("two"), - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new("three")), - @RM::ListItem.new(nil, @RM::Paragraph.new("four")))), - @RM::ListItem.new(nil, @RM::Paragraph.new("five")), - @RM::ListItem.new(nil, @RM::Paragraph.new("six")))) + list(:NUMBER, + item(nil, para("one")), + item(nil, + para("two"), + list(:BULLET, + item(nil, para("three")), + item(nil, para("four")))), + item(nil, para("five")), + item(nil, para("six")))) assert_equal expected, parse(list) end @@ -328,16 +346,16 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new("one")), - @RM::ListItem.new(nil, - @RM::Paragraph.new("two"), - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new("three")), - @RM::ListItem.new(nil, @RM::Paragraph.new("four"))), - @RM::Verbatim.new("verbatim\n")), - @RM::ListItem.new(nil, @RM::Paragraph.new("five")), - @RM::ListItem.new(nil, @RM::Paragraph.new("six")))) + list(:NUMBER, + item(nil, para("one")), + item(nil, + para("two"), + list(:BULLET, + item(nil, para("three")), + item(nil, para("four"))), + verb("verbatim\n")), + item(nil, para("five")), + item(nil, para("six")))) assert_equal expected, parse(list) end @@ -355,16 +373,16 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:NUMBER, - @RM::ListItem.new(nil, @RM::Paragraph.new("one")), - @RM::ListItem.new(nil, - @RM::Paragraph.new("two"), - @RM::List.new(:BULLET, - @RM::ListItem.new(nil, @RM::Paragraph.new("three")), - @RM::ListItem.new(nil, @RM::Paragraph.new("four"))), - @RM::Verbatim.new("verbatim\n")), - @RM::ListItem.new(nil, @RM::Paragraph.new("five")), - @RM::ListItem.new(nil, @RM::Paragraph.new("six")))) + list(:NUMBER, + item(nil, para("one")), + item(nil, + para("two"), + list(:BULLET, + item(nil, para("three")), + item(nil, para("four"))), + verb("verbatim\n")), + item(nil, para("five")), + item(nil, para("six")))) assert_equal expected, parse(list) end @@ -380,13 +398,13 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:LABEL, - @RM::ListItem.new( + list(:LABEL, + item( "Array#each {|i| ... }", - @RM::Paragraph.new("yield block for each item.")), - @RM::ListItem.new( + para("yield block for each item.")), + item( "Array#index(val)", - @RM::Paragraph.new("return index of first item which equals with val. if it hasn't same item, return nil.")))) + para("return index of first item which equals with val. if it hasn't same item, return nil.")))) assert_equal expected, parse(list) end @@ -399,8 +417,8 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:LABEL, - @RM::ListItem.new("A#b"))) + list(:LABEL, + item("A#b"))) assert_equal expected, parse(list) end @@ -414,10 +432,10 @@ class TestRDocRdBlockParser < RDoc::TestCase expected = doc( - @RM::List.new(:LABEL, - @RM::ListItem.new( + list(:LABEL, + item( "A#b", - @RM::Paragraph.new("one")))) + para("one")))) assert_equal expected, parse(list) end @@ -432,11 +450,11 @@ two expected = doc( - @RM::List.new(:LABEL, - @RM::ListItem.new( + list(:LABEL, + item( "A#b", - @RM::Paragraph.new("one"))), - @RM::Paragraph.new("two")) + para("one"))), + para("two")) assert_equal expected, parse(list) end @@ -451,21 +469,21 @@ two expected = doc( - @RM::List.new(:LABEL, - @RM::ListItem.new( + list(:LABEL, + item( "A#b", - @RM::Paragraph.new("text"), - @RM::Verbatim.new("verbatim\n")))) + para("text"), + verb("verbatim\n")))) assert_equal expected, parse(list) end def test_parse_verbatim - assert_equal doc(@RM::Verbatim.new("verbatim\n")), parse(" verbatim") + assert_equal doc(verb("verbatim\n")), parse(" verbatim") end def test_parse_verbatim_blankline - expected = doc(@RM::Verbatim.new("one\n", "\n", "two\n")) + expected = doc(verb("one\n", "\n", "two\n")) verbatim = <<-VERBATIM one @@ -477,7 +495,7 @@ two end def test_parse_verbatim_indent - expected = doc(@RM::Verbatim.new("one\n", " two\n")) + expected = doc(verb("one\n", " two\n")) verbatim = <<-VERBATIM one @@ -488,7 +506,7 @@ two end def test_parse_verbatim_multi - expected = doc(@RM::Verbatim.new("one\n", "two\n")) + expected = doc(verb("one\n", "two\n")) verbatim = <<-VERBATIM one @@ -499,11 +517,11 @@ two end def test_parse_textblock - assert_equal doc(@RM::Paragraph.new("text")), parse("text") + assert_equal doc(para("text")), parse("text") end def test_parse_textblock_multi - expected = doc(@RM::Paragraph.new("one two")) + expected = doc(para("one two")) assert_equal expected, parse("one\ntwo") end @@ -513,8 +531,8 @@ two doc = @block_parser.parse text.lines.to_a - assert_equal @RM::BlankLine.new, doc.parts.shift, "=begin blankline" - assert_equal @RM::BlankLine.new, doc.parts.pop, "=end blankline" + assert_equal blank_line, doc.parts.shift, "=begin blankline" + assert_equal blank_line, doc.parts.pop, "=end blankline" doc end diff --git a/test/rdoc/test_rdoc_rd_inline_parser.rb b/test/rdoc/test_rdoc_rd_inline_parser.rb index 6b6c00f886..6f8c9557c4 100644 --- a/test/rdoc/test_rdoc_rd_inline_parser.rb +++ b/test/rdoc/test_rdoc_rd_inline_parser.rb @@ -26,7 +26,8 @@ class TestRDocRdInlineParser < RDoc::TestCase assert_equal '{*1}[rdoc-label:foottext-1:footmark-1]', parse('((-text-))') expected = [ - @RM::Paragraph.new('{^1}[rdoc-label:footmark-1:foottext-1]', 'text') + @RM::Paragraph.new('{^1}[rdoc-label:footmark-1:foottext-1]', ' ', 'text'), + blank_line, ] assert_equal expected, @block_parser.footnotes @@ -161,6 +162,10 @@ class TestRDocRdInlineParser < RDoc::TestCase assert_equal 'text "', parse("(('text \\\"'))") end + def test_parse_verb_emphasis + assert_equal '((*emphasis*))', parse("(('((*emphasis*))'))") + end + def test_parse_verb_multiple assert_equal '((*text*))', parse("(('((*text*))'))") end -- cgit v1.2.3