diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:02:05 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:02:05 +0000 |
commit | 0dc342de848a642ecce8db697b8fecd83a63e117 (patch) | |
tree | 2b7ed4724aff1f86073e4740134bda9c4aac1a39 /trunk/test/rdoc/test_rdoc_info_sections.rb | |
parent | ef70cf7138ab8034b5b806f466e4b484b24f0f88 (diff) |
added tag v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/test/rdoc/test_rdoc_info_sections.rb')
-rw-r--r-- | trunk/test/rdoc/test_rdoc_info_sections.rb | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/trunk/test/rdoc/test_rdoc_info_sections.rb b/trunk/test/rdoc/test_rdoc_info_sections.rb new file mode 100644 index 0000000000..cceba186c1 --- /dev/null +++ b/trunk/test/rdoc/test_rdoc_info_sections.rb @@ -0,0 +1,136 @@ +require 'fileutils' +require 'tempfile' +require 'test/unit' +require 'tmpdir' + +require 'rdoc/generator/texinfo' + +# give us access to check this stuff before it's rendered +class RDoc::Generator::Texinfo; attr_reader :files, :classes; end +class RDoc::RDoc; attr_reader :options; attr_reader :gen; end + +class TestRdocInfoSections < Test::Unit::TestCase + + def setup + @output_dir = File.join Dir.tmpdir, "test_rdoc_info_sections_#{$$}" + @output_file = File.join @output_dir, 'rdoc.texinfo' + + @input_file = Tempfile.new 'my_file.rb' + + open @input_file.path, 'w' do |io| + io.write TEST_DOC + end + + RDoc::Parser.alias_extension '.rb', File.extname(@input_file.path) + + @rdoc = RDoc::RDoc.new + @rdoc.document(['--fmt=texinfo', '--quiet', @input_file.path, + "--op=#{@output_dir}"]) + + @text = File.read @output_file + end + + def teardown + @input_file.close + FileUtils.rm_rf @output_dir + end + + def test_output_exists + assert ! @text.empty? + end + + def test_each_class_has_a_chapter + assert_section "Class MyClass", '@chapter' + end + + def test_class_descriptions_are_given + assert_match(/Documentation for my class/, @text.gsub("\n", ' ')) + end + + def test_included_modules_are_given + assert_match(/Includes.* MyModule/m, @text) + end + + def test_class_methods_are_given + assert_match(/my_class_method\(my_first_argument\)/, @text) + end + + def test_classes_instance_methods_are_given + assert_section 'Class MyClass#my_method' + assert_match(/my_method\(my_first_argument\)/, @text) + end + + def test_each_module_has_a_chapter + assert_section 'MyModule', '@chapter' + end + + def test_methods_are_shown_only_once + methods = @rdoc.gen.classes.map do |c| + c.methods.map do |m| + c.name + '#' + m.name + end + end.flatten + + assert_equal methods, methods.uniq + end + +# if system "makeinfo --version > /dev/null" +# def test_compiles_to_info +# makeinfo_output = `cd #{@output_dir} && makeinfo rdoc.texinfo` +# assert(File.exist?(File.join(@output_dir, 'rdoc.info')), +# "Info file was not compiled: #{makeinfo_output}") +# end +# end + +# def test_constants_are_documented_somehow +# assert_section 'DEFAULT_FILENAME' # what kind of section? +# assert_section 'DEFAULT_INFO_FILENAME' +# end + +# def test_oh_yeah_dont_forget_files +# end + + def assert_section(name, command = '@section') + assert_match Regexp.new("^#{command}.*#{Regexp.escape name}"), @text, "Could not find a #{command} #{name}" + end + + TEST_DOC = <<-DOC +## +# Documentation for my module + +module MyModule + + ## + # Documentation for my included method + + def my_included_method() end + +end + +## +# Documentation for my class + +class MyClass + + include MyModule + + ## + # Documentation for my constant + + MY_CONSTANT = 'my value' + + ## + # Documentation for my class method + + def self.my_class_method(my_first_argument) end + + ## + # Documentation for my method + + def my_method(my_first_argument) end + +end + + DOC + +end |