require 'rdoc/test_case' class TestRDocParserSimple < RDoc::TestCase def setup super @tempfile = Tempfile.new self.class.name filename = @tempfile.path @top_level = @store.add_file filename @fn = filename @options = RDoc::Options.new @stats = RDoc::Stats.new @store, 0 end def teardown super @tempfile.close! end def test_initialize_metadata parser = util_parser ":unhandled: \n" assert_includes @top_level.metadata, 'unhandled' assert_equal ":unhandled: \n", parser.content end def test_remove_coding_comment parser = util_parser <<-TEXT # -*- mode: rdoc; coding: utf-8; fill-column: 74; -*- Regular expressions (regexps) are patterns which describe the contents of a string. TEXT parser.scan expected = <<-TEXT.strip Regular expressions (regexps) are patterns which describe the contents of a string. TEXT assert_equal expected, @top_level.comment.text end # RDoc stops processing comments if it finds a comment line CONTAINING # '#--'. This can be used to separate external from internal # comments, or to stop a comment being associated with a method, # class, or module. Commenting CAN be turned back on with # a line that STARTS '#++'. # # I've seen guys that comment their code like this: # # This method.... # #----------------- # def method # # => either we do it only in ruby code, or we require the leading # # (to avoid conflict with rules). # # TODO: require the leading #, to provide the feature in simple text files. # Note: in ruby & C code, we require '#--' & '#++' or '*--' & '*++', # to allow rules: # # # this is a comment # #--- # # private text # #+++ # # this is a rule: # # --- def test_remove_private_comments parser = util_parser "foo\n\n--\nbar\n++\n\nbaz\n" parser.scan expected = "foo\n\n\nbaz" assert_equal expected, @top_level.comment.text end def test_remove_private_comments_rule parser = util_parser "foo\n---\nbar" parser.scan expected = "foo\n---\nbar" assert_equal expected, @top_level.comment.text end def test_remove_private_comments_star parser = util_parser "* foo\n* bar\n" parser.scan assert_equal "* foo\n* bar", @top_level.comment.text end def test_scan parser = util_parser 'it *really* works' parser.scan assert_equal 'it *really* works', @top_level.comment.text end def util_parser(content) RDoc::Parser::Simple.new @top_level, @fn, content, @options, @stats end end