From fd25f74d64c69d636764ea11aa5a809b85e58f69 Mon Sep 17 00:00:00 2001 From: drbrain Date: Fri, 18 Jul 2008 00:46:16 +0000 Subject: Import RDoc r101. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rdoc/test_rdoc_info_sections.rb | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 test/rdoc/test_rdoc_info_sections.rb (limited to 'test/rdoc/test_rdoc_info_sections.rb') diff --git a/test/rdoc/test_rdoc_info_sections.rb b/test/rdoc/test_rdoc_info_sections.rb new file mode 100644 index 0000000000..2b6ff6adcb --- /dev/null +++ b/test/rdoc/test_rdoc_info_sections.rb @@ -0,0 +1,93 @@ +$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib/' +require 'fileutils' +require 'test/unit' +require 'rdoc/generator/texinfo' +require 'yaml' + +# 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 + OUTPUT_DIR = "/tmp/rdoc-#{$$}" + + def setup + # supress stdout + $stdout = File.new('/dev/null','w') + $stderr = File.new('/dev/null','w') + + @rdoc = RDoc::RDoc.new + @rdoc.document(['--fmt=texinfo', + File.expand_path(File.dirname(__FILE__) + '/../lib/rdoc/generator/texinfo.rb'), + File.expand_path(File.dirname(__FILE__) + '/../README.txt'), + "--op=#{OUTPUT_DIR}"]) + @text = File.read(OUTPUT_DIR + '/rdoc.texinfo') + end + + def teardown + $stdout = STDOUT + $stderr = STDERR + FileUtils.rm_rf OUTPUT_DIR + end + + def test_output_exists + assert ! @text.empty? + end + + def test_each_class_has_a_chapter + assert_section "Class RDoc::Generator::Texinfo", '@chapter' + assert_section "Class RDoc::Generator::TexinfoTemplate", '@chapter' + end + + def test_class_descriptions_are_given + assert_match(/This generates .*Texinfo.* files for viewing with GNU Info or Emacs from .*RDoc.* extracted from Ruby source files/, @text.gsub("\n", ' ')) + end + + def test_included_modules_are_given + assert_match(/Includes.* Generator::MarkUp/m, @text) + end + + def test_class_methods_are_given + assert_match(/new\(options\)/, @text) + end + + def test_classes_instance_methods_are_given + assert_section 'Class RDoc::Generator::Texinfo#generate' + assert_match(/generate\(toplevels\)/, @text) + end + + def test_each_module_has_a_chapter + assert_section "RDoc", '@chapter' + assert_section "Generator", '@chapter' + end + + def test_methods_are_shown_only_once + methods = @rdoc.gen.classes.map { |c| c.methods.map{ |m| c.name + '#' + m.name } }.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 + + private + def assert_section(name, command = '@section') + assert_match Regexp.new("^#{command}.*#{Regexp.escape name}"), @text, "Could not find a #{command} #{name}" + end + +# def puts(*args) +# @real_stdout.puts(*args) +# end +end -- cgit v1.2.3