diff --git a/test/helper.rb b/test/helper.rb index af3d7c4..825b404 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -4,17 +4,17 @@ $LOAD_PATH.unshift "#{rootdir}/lib" require 'test/unit' begin; require 'turn'; rescue LoadError; end begin - require 'rdiscount' + require 'rdiscount' rescue LoadError - if !defined?(Gem) - require 'rubygems' - retry - end + if !defined?(Gem) + require 'rubygems' + retry + end end require 'rocco' def roccoize( filename, contents, options = {} ) - Rocco.new( filename, [ filename ], options ) { - contents - } + Rocco.new( filename, [ filename ], options ) { + contents + } end diff --git a/test/test_reported_issues.rb b/test/test_reported_issues.rb index e94b57a..64085ca 100644 --- a/test/test_reported_issues.rb +++ b/test/test_reported_issues.rb @@ -2,81 +2,85 @@ require File.expand_path('../helper', __FILE__) class RoccoIssueTests < Test::Unit::TestCase - def test_issue07_incorrect_parsing_in_c_mode - # Precursor to issue #13 below, Rocco incorrectly parsed C/C++ - # http://github.com/rtomayko/rocco/issues#issue/7 - r = Rocco.new( 'issue7.c', [], { :language => 'c' } ) { - "// *stdio.h* declares *puts*\n#include \n\n//### code hello world\n\n// every C program contains function *main*.\nint main (int argc, char *argv[]) {\n puts('hello world');\n return 0;\n}\n\n// that's it!" - } - r.sections.each do | section | - if not section[1].nil? - assert( - !section[1].include?("# DIVIDER"), - "`# DIVIDER` present in code text, which means the highligher screwed up somewhere." - ) - end - end - end - def test_issue10_utf8_processing - # Rocco has issues with strange UTF-8 characters: need to explicitly set the encoding for Pygments - # http://github.com/rtomayko/rocco/issues#issue/10 - r = Rocco.new( File.dirname(__FILE__) + "/fixtures/issue10.utf-8.rb" ) - assert_equal( - "

hello ąćęłńóśźż

\n", - r.sections[0][0], - "UTF-8 input files ought behave correctly." - ) - # and, just for grins, ensure that iso-8859-1 works too. - # @TODO: Is this really the correct behavior? Converting text - # to UTF-8 on the way out is probably preferable. - r = Rocco.new( File.dirname(__FILE__) + "/fixtures/issue10.iso-8859-1.rb" ) - assert_equal( - "

hello w\366rld

\n", - r.sections[0][0], - "ISO-8859-1 input should probably also behave correctly." - ) - end - def test_issue12_css_octothorpe_classname_change - # Docco changed some CSS classes. Rocco needs to update its default template. - # http://github.com/rtomayko/rocco/issues#issue/12 - r = Rocco.new( 'issue12.sh' ) { - "# Comment 1\n# Comment 1\nprint 'omg!'" - } - html = r.to_html + def test_issue07_incorrect_parsing_in_c_mode + # Precursor to issue #13 below, Rocco incorrectly parsed C/C++ + # http://github.com/rtomayko/rocco/issues#issue/7 + r = Rocco.new( 'issue7.c', [], { :language => 'c' } ) { + "// *stdio.h* declares *puts*\n#include \n\n//### code hello world\n\n// every C program contains function *main*.\nint main (int argc, char *argv[]) {\n puts('hello world');\n return 0;\n}\n\n// that's it!" + } + r.sections.each do | section | + if not section[1].nil? assert( - !html.include?( "
" ), - "`octowrap` wrapper is present in rendered HTML. This ought be replaced with `pilwrap`." + !section[1].include?("# DIVIDER"), + "`# DIVIDER` present in code text, which means the highligher screwed up somewhere." ) + end + end + end + + def test_issue10_utf8_processing + # Rocco has issues with strange UTF-8 characters: need to explicitly set the encoding for Pygments + # http://github.com/rtomayko/rocco/issues#issue/10 + r = Rocco.new( File.dirname(__FILE__) + "/fixtures/issue10.utf-8.rb" ) + assert_equal( + "

hello ąćęłńóśźż

\n", + r.sections[0][0], + "UTF-8 input files ought behave correctly." + ) + # and, just for grins, ensure that iso-8859-1 works too. + # @TODO: Is this really the correct behavior? Converting text + # to UTF-8 on the way out is probably preferable. + r = Rocco.new( File.dirname(__FILE__) + "/fixtures/issue10.iso-8859-1.rb" ) + assert_equal( + "

hello w\366rld

\n", + r.sections[0][0], + "ISO-8859-1 input should probably also behave correctly." + ) + end + + def test_issue12_css_octothorpe_classname_change + # Docco changed some CSS classes. Rocco needs to update its default template. + # http://github.com/rtomayko/rocco/issues#issue/12 + r = Rocco.new( 'issue12.sh' ) { + "# Comment 1\n# Comment 1\nprint 'omg!'" + } + html = r.to_html + assert( + !html.include?( "
" ), + "`octowrap` wrapper is present in rendered HTML. This ought be replaced with `pilwrap`." + ) + assert( + !html.include?( "" ), + "`octothorpe` link is present in rendered HTML. This ought be replaced with `pilcrow`." + ) + end + + def test_issue13_incorrect_code_divider_parsing + # In `bash` mode (among others), the comment class is `c`, not `c1`. + # http://github.com/rtomayko/rocco/issues#issue/13 + r = Rocco.new( 'issue13.sh', [], { :language => 'bash' } ) { + "# Comment 1\necho 'code';\n# Comment 2\necho 'code';\n# Comment 3\necho 'code';\n" + } + r.sections.each do | section | + if not section[1].nil? assert( - !html.include?( "" ), - "`octothorpe` link is present in rendered HTML. This ought be replaced with `pilcrow`." + !section[1].include?("# DIVIDER"), + "`# DIVIDER` present in code text, which means the highligher screwed up somewhere." ) + end end - def test_issue13_incorrect_code_divider_parsing - # In `bash` mode (among others), the comment class is `c`, not `c1`. - # http://github.com/rtomayko/rocco/issues#issue/13 - r = Rocco.new( 'issue13.sh', [], { :language => 'bash' } ) { - "# Comment 1\necho 'code';\n# Comment 2\necho 'code';\n# Comment 3\necho 'code';\n" - } - r.sections.each do | section | - if not section[1].nil? - assert( - !section[1].include?("# DIVIDER"), - "`# DIVIDER` present in code text, which means the highligher screwed up somewhere." - ) - end - end - end - def test_issue15_extra_space_after_comment_character_remains - # After the comment character, a single space should be removed. - # http://github.com/rtomayko/rocco/issues#issue/15 - r = Rocco.new( 'issue15.sh') { - "# Comment 1\n# ---------\necho 'code';" - } - assert( - !r.sections[0][0].include?( "
" ), - "`
` present in rendered documentation text. It should be a header, not text followed by a horizontal rule." - ) - assert_equal( "

Comment 1

\n", r.sections[0][0] ) - end + end + + def test_issue15_extra_space_after_comment_character_remains + # After the comment character, a single space should be removed. + # http://github.com/rtomayko/rocco/issues#issue/15 + r = Rocco.new( 'issue15.sh') { + "# Comment 1\n# ---------\necho 'code';" + } + assert( + !r.sections[0][0].include?( "
" ), + "`
` present in rendered documentation text. It should be a header, not text followed by a horizontal rule." + ) + assert_equal("

Comment 1

\n", r.sections[0][0]) + end end