[前][次][番号順一覧][スレッド一覧]

ruby-changes:6615

From: drbrain <ko1@a...>
Date: Sat, 19 Jul 2008 06:11:02 +0900 (JST)
Subject: [ruby-changes:6615] Ruby:r18131 (trunk): Import RDoc r104. Various test fixes.

drbrain	2008-07-19 06:10:47 +0900 (Sat, 19 Jul 2008)

  New Revision: 18131

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18131

  Log:
    Import RDoc r104.  Various test fixes.

  Modified files:
    trunk/ChangeLog
    trunk/lib/rdoc/options.rb
    trunk/lib/rdoc/parser/ruby.rb
    trunk/lib/rdoc/parser.rb
    trunk/test/rdoc/test_rdoc_info_sections.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18130)
+++ ChangeLog	(revision 18131)
@@ -1,3 +1,7 @@
+Sat Jul 19 06:08:43 2008  Eric Hodel  <drbrain@s...>
+
+	* lib/rdoc*:  Import RDoc r104.  Various make test-all fixes.
+
 Sat Jul 19 00:27:58 2008  NAKAMURA Usaku  <usa@r...>
 
 	* numeric.c (check_uint, rb_num2uint, rb_fix2uint): fixed wrong check
Index: lib/rdoc/parser/ruby.rb
===================================================================
--- lib/rdoc/parser/ruby.rb	(revision 18130)
+++ lib/rdoc/parser/ruby.rb	(revision 18131)
@@ -540,8 +540,10 @@
       begin
         tk = @OP.match(self)
         @space_seen = TkSPACE === tk
-      rescue SyntaxError
-        abort if @exception_on_syntax_error
+      rescue SyntaxError => e
+        raise RDoc::Error, "syntax error: #{e.message}" if
+          @exception_on_syntax_error
+
         tk = TkError.new(line_no, char_no)
       end
     end while @skip_space and TkSPACE === tk
Index: lib/rdoc/options.rb
===================================================================
--- lib/rdoc/options.rb	(revision 18130)
+++ lib/rdoc/options.rb	(revision 18131)
@@ -154,7 +154,7 @@
 
   attr_reader :webcvs
 
-  def initialize(generators) # :nodoc:
+  def initialize(generators = {}) # :nodoc:
     @op_dir = "doc"
     @op_name = nil
     @show_all = false
@@ -613,8 +613,8 @@
 
   def check_files
     @files.each do |f|
-      stat = File.stat f rescue abort("File not found: #{f}")
-      abort("File '#{f}' not readable") unless stat.readable?
+      stat = File.stat f
+      raise RDoc::Error, "file '#{f}' not readable" unless stat.readable?
     end
   end
 
Index: lib/rdoc/parser.rb
===================================================================
--- lib/rdoc/parser.rb	(revision 18130)
+++ lib/rdoc/parser.rb	(revision 18131)
@@ -53,10 +53,13 @@
   # "new_ext" will be parsed using the same parser as "old_ext"
 
   def self.alias_extension(old_ext, new_ext)
+    old_ext = old_ext.sub(/^\.(.*)/, '\1')
+    new_ext = new_ext.sub(/^\.(.*)/, '\1')
+
     parser = can_parse "xxx.#{old_ext}"
     return false unless parser
 
-    RDoc::Parser.parsers.unshift [/\.#{new_ext}$/, parser.last]
+    RDoc::Parser.parsers.unshift [/\.#{new_ext}$/, parser]
 
     true
   end
Index: test/rdoc/test_rdoc_info_sections.rb
===================================================================
--- test/rdoc/test_rdoc_info_sections.rb	(revision 18130)
+++ test/rdoc/test_rdoc_info_sections.rb	(revision 18131)
@@ -1,33 +1,38 @@
-$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib/'
 require 'fileutils'
+require 'tempfile'
 require 'test/unit'
+require 'tmpdir'
+
 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')
+    @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',
-                    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')
+    @rdoc.document(['--fmt=texinfo', '--quiet', @input_file.path,
+                    "--op=#{@output_dir}"])
+
+    @text = File.read @output_file
   end
 
   def teardown
-    $stdout = STDOUT
-    $stderr = STDERR
-    FileUtils.rm_rf OUTPUT_DIR
+    @input_file.close
+    FileUtils.rm_rf @output_dir
   end
 
   def test_output_exists
@@ -35,34 +40,37 @@
   end
 
   def test_each_class_has_a_chapter
-    assert_section "Class RDoc::Generator::Texinfo", '@chapter'
-    assert_section "Class RDoc::Generator::TexinfoTemplate", '@chapter'
+    assert_section "Class MyClass", '@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", ' '))
+    assert_match(/Documentation for my class/, @text.gsub("\n", ' '))
   end
 
   def test_included_modules_are_given
-    assert_match(/Includes.* Generator::MarkUp/m, @text)
+    assert_match(/Includes.* MyModule/m, @text)
   end
 
   def test_class_methods_are_given
-    assert_match(/new\(options\)/, @text)
+    assert_match(/my_class_method\(my_first_argument\)/, @text)
   end
 
   def test_classes_instance_methods_are_given
-    assert_section 'Class RDoc::Generator::Texinfo#generate'
-    assert_match(/generate\(toplevels\)/, @text)
+    assert_section 'Class MyClass#my_method'
+    assert_match(/my_method\(my_first_argument\)/, @text)
   end
 
   def test_each_module_has_a_chapter
-    assert_section "RDoc", '@chapter'
-    assert_section "Generator", '@chapter'
+    assert_section 'MyModule', '@chapter'
   end
 
   def test_methods_are_shown_only_once
-    methods = @rdoc.gen.classes.map { |c| c.methods.map{ |m| c.name + '#' + m.name } }.flatten
+    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
 
@@ -82,12 +90,47 @@
 #   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
+  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

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]