diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-04-27 03:45:22 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-04-27 03:45:22 +0000 |
commit | 336a8301f725bd8fbf5f1e0c4fee162382a76d0f (patch) | |
tree | 455c5fb8689d09e734a9ca13cdbe3ef9a7651a6e | |
parent | 3a87c3c5603fce8449f78faccaff5f4be6f372e1 (diff) | |
download | ruby-336a8301f725bd8fbf5f1e0c4fee162382a76d0f.tar.gz |
Import RDoc 2.5.7. Fixes #1318 and ruby-core:29780
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
28 files changed, 429 insertions, 145 deletions
@@ -1,3 +1,7 @@ +Tue Apr 27 12:44:23 2010 Eric Hodel <drbrain@segment7.net> + + * lib/rdoc: Import RDoc 2.5.7. Fixes #1318 and ruby-core:29780. + Tue Apr 27 10:54:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> * parse.y (parser_read_escape): deny extra character escapes. @@ -211,7 +211,7 @@ with all sufficient information, see the ChangeLog file. * RDoc - * Updated to RDoc 2.5.6 + * Updated to RDoc 2.5.7 * logger diff --git a/lib/rdoc.rb b/lib/rdoc.rb index 3dbb63abd3..7467ef2965 100644 --- a/lib/rdoc.rb +++ b/lib/rdoc.rb @@ -383,7 +383,7 @@ module RDoc ## # RDoc version you are using - VERSION = '2.5.6' + VERSION = '2.5.7' ## # Name of the dotfile that contains the description of files to be processed diff --git a/lib/rdoc/known_classes.rb b/lib/rdoc/known_classes.rb index dbb1802f5a..720a35f497 100644 --- a/lib/rdoc/known_classes.rb +++ b/lib/rdoc/known_classes.rb @@ -5,6 +5,7 @@ module RDoc KNOWN_CLASSES = { "rb_cArray" => "Array", + "rb_cBasicObject" => "BasicObject", "rb_cBignum" => "Bignum", "rb_cClass" => "Class", "rb_cData" => "Data", diff --git a/lib/rdoc/markup.rb b/lib/rdoc/markup.rb index 8176e90447..32c8179e0d 100644 --- a/lib/rdoc/markup.rb +++ b/lib/rdoc/markup.rb @@ -107,15 +107,13 @@ class RDoc::Markup end ## - # We take a string, split it into lines, work out the type of each line, - # and from there deduce groups of lines (for example all lines in a - # paragraph). We then invoke the output formatter using a Visitor to - # display the result. + # We take +text+, parse it then invoke the output +formatter+ using a + # Visitor to render the result. - def convert(str, op) - document = RDoc::Markup::Parser.parse str + def convert text, formatter + document = RDoc::Markup::Parser.parse text - document.accept op + document.accept formatter end end diff --git a/lib/rdoc/markup/formatter_test_case.rb b/lib/rdoc/markup/formatter_test_case.rb index 9b9d7cf000..26c8d63332 100644 --- a/lib/rdoc/markup/formatter_test_case.rb +++ b/lib/rdoc/markup/formatter_test_case.rb @@ -87,6 +87,18 @@ class RDoc::Markup::FormatterTestCase < MiniTest::Unit::TestCase accept_verbatim end + def test_accept_raw + @to.start_accepting + + @to.accept_raw @RM::Raw.new("<table>", + "<tr><th>Name<th>Count", + "<tr><td>a<td>1", + "<tr><td>b<td>2", + "</table>") + + accept_raw + end + def test_accept_rule @to.start_accepting diff --git a/lib/rdoc/markup/paragraph.rb b/lib/rdoc/markup/paragraph.rb index bc23423dfc..a9923ed24d 100644 --- a/lib/rdoc/markup/paragraph.rb +++ b/lib/rdoc/markup/paragraph.rb @@ -1,66 +1,11 @@ ## # A Paragraph of text -class RDoc::Markup::Paragraph - - ## - # The component parts of the list - - attr_reader :parts - - ## - # Creates a new Paragraph containing +parts+ - - def initialize *parts - @parts = [] - @parts.push(*parts) - end - - ## - # Appends +text+ to the Paragraph - - def << text - @parts << text - end - - def == other # :nodoc: - self.class == other.class and text == other.text - end +class RDoc::Markup::Paragraph < RDoc::Markup::Raw def accept visitor visitor.accept_paragraph self end - ## - # Appends +other+'s parts into this Paragraph - - def merge other - @parts.push(*other.parts) - end - - def pretty_print q # :nodoc: - self.class.name =~ /.*::(\w{4})/i - - q.group 2, "[#{$1.downcase}: ", ']' do - q.seplist @parts do |part| - q.pp part - end - end - end - - ## - # Appends +texts+ onto this Paragraph - - def push *texts - self.parts.push(*texts) - end - - ## - # The text of this paragraph - - def text - @parts.join ' ' - end - end diff --git a/lib/rdoc/markup/parser.rb b/lib/rdoc/markup/parser.rb index 166d8f89f7..c214f74782 100644 --- a/lib/rdoc/markup/parser.rb +++ b/lib/rdoc/markup/parser.rb @@ -522,6 +522,7 @@ require 'rdoc/markup/document' require 'rdoc/markup/heading' require 'rdoc/markup/list' require 'rdoc/markup/list_item' +require 'rdoc/markup/raw' require 'rdoc/markup/paragraph' require 'rdoc/markup/rule' require 'rdoc/markup/verbatim' diff --git a/lib/rdoc/markup/preprocess.rb b/lib/rdoc/markup/preprocess.rb index f3925cc692..cefb498916 100644 --- a/lib/rdoc/markup/preprocess.rb +++ b/lib/rdoc/markup/preprocess.rb @@ -4,9 +4,30 @@ require 'rdoc/markup' # Handle common directives that can occur in a block of text: # # : include : filename +# +# RDoc plugin authors can register additional directives to be handled through +# RDoc::Markup::PreProcess::register class RDoc::Markup::PreProcess + @registered = {} + + ## + # Registers +directive+ as one handled by RDoc. If a block is given the + # directive will be replaced by the result of the block, otherwise the + # directive will be removed from the processed text. + + def self.register directive, &block + @registered[directive] = block + end + + ## + # Registered directives + + def self.registered + @registered + end + ## # Creates a new pre-processor for +input_file_name+ that will look for # included files in +include_path+ @@ -17,10 +38,20 @@ class RDoc::Markup::PreProcess end ## - # Look for common options in a chunk of text. Options that we don't handle - # are yielded to the caller. - - def handle(text) + # Look for directives in a chunk of +text+. + # + # Options that we don't handle are yielded. If the block returns false the + # directive is restored to the text. If the block returns nil or no block + # was given the directive is handled according to the registered directives. + # If a String was returned the directive is replaced with the string. + # + # If no matching directive was registered the directive is restored to the + # text. + # + # If +code_object+ is given and the param is set as metadata on the + # +code_object+. See RDoc::CodeObject#metadata + + def handle text, code_object = nil text.gsub!(/^([ \t]*#?[ \t]*):(\w+):([ \t]*)(.+)?\n/) do next $& if $3.empty? and $4 and $4[0, 1] == ':' @@ -34,11 +65,26 @@ class RDoc::Markup::PreProcess include_file filename, prefix else - result = yield directive, param - result = "#{prefix}:#{directive}: #{param}\n" unless result + result = yield directive, param if block_given? + + case result + when nil then + code_object.metadata[directive] = param if code_object + if RDoc::Markup::PreProcess.registered.include? directive then + handler = RDoc::Markup::PreProcess.registered[directive] + result = handler.call directive, param if handler + else + result = "#{prefix}:#{directive}: #{param}\n" + end + when false then + result = "#{prefix}:#{directive}: #{param}\n" + end + result end end + + text end ## @@ -46,7 +92,11 @@ class RDoc::Markup::PreProcess def include_file(name, indent) if full_name = find_include_file(name) then - content = File.binread full_name + content = if defined?(Encoding) then + File.binread full_name + else + File.read full_name + end # HACK determine content type and force encoding content = content.sub(/\A# .*coding[=:].*$/, '').lstrip diff --git a/lib/rdoc/markup/raw.rb b/lib/rdoc/markup/raw.rb new file mode 100644 index 0000000000..1124be7cc8 --- /dev/null +++ b/lib/rdoc/markup/raw.rb @@ -0,0 +1,65 @@ +## +# A section of text that is added to the output document as-is + +class RDoc::Markup::Raw + + ## + # The component parts of the list + + attr_reader :parts + + ## + # Creates a new Raw containing +parts+ + + def initialize *parts + @parts = [] + @parts.push(*parts) + end + + ## + # Appends +text+ + + def << text + @parts << text + end + + def == other # :nodoc: + self.class == other.class and text == other.text + end + + def accept visitor + visitor.accept_raw self + end + + ## + # Appends +other+'s parts + + def merge other + @parts.push(*other.parts) + end + + def pretty_print q # :nodoc: + self.class.name =~ /.*::(\w{4})/i + + q.group 2, "[#{$1.downcase}: ", ']' do + q.seplist @parts do |part| + q.pp part + end + end + end + + ## + # Appends +texts+ onto this Paragraph + + def push *texts + self.parts.push(*texts) + end + + ## + # The raw text + + def text + @parts.join ' ' + end + +end diff --git a/lib/rdoc/markup/to_html.rb b/lib/rdoc/markup/to_html.rb index 66c0ee3d30..74e3137eb2 100644 --- a/lib/rdoc/markup/to_html.rb +++ b/lib/rdoc/markup/to_html.rb @@ -227,6 +227,10 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter @res << convert_heading(heading.level, @am.flow(heading.text)) end + def accept_raw raw + @res << raw.parts.join("\n") + end + private ## diff --git a/lib/rdoc/markup/to_rdoc.rb b/lib/rdoc/markup/to_rdoc.rb index 97c7d0c984..867715bb1e 100644 --- a/lib/rdoc/markup/to_rdoc.rb +++ b/lib/rdoc/markup/to_rdoc.rb @@ -127,6 +127,10 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter wrap attributes(paragraph.text) end + def accept_raw raw + @res << raw.parts.join("\n") + end + def accept_rule rule use_prefix or @res << ' ' * @indent @res << '-' * (@width - @indent) diff --git a/lib/rdoc/markup/verbatim.rb b/lib/rdoc/markup/verbatim.rb index faf539a723..c684d78765 100644 --- a/lib/rdoc/markup/verbatim.rb +++ b/lib/rdoc/markup/verbatim.rb @@ -1,7 +1,7 @@ ## # A section of verbatim text -class RDoc::Markup::Verbatim < RDoc::Markup::Paragraph +class RDoc::Markup::Verbatim < RDoc::Markup::Raw def accept visitor visitor.accept_verbatim self diff --git a/lib/rdoc/options.rb b/lib/rdoc/options.rb index 7b3a23ca5c..90415f0aa4 100644 --- a/lib/rdoc/options.rb +++ b/lib/rdoc/options.rb @@ -366,6 +366,11 @@ Usage: #{opt.program_name} [options] [names...] end end + if @pipe and not argv.empty? then + @pipe = false + ignored << '-p (with files)' + end + unless ignored.empty? or quiet then $stderr.puts "invalid options: #{ignored.join ', '}" $stderr.puts '(invalid options are ignored)' diff --git a/lib/rdoc/parser/c.rb b/lib/rdoc/parser/c.rb index 05b1e77925..f30167aafc 100644 --- a/lib/rdoc/parser/c.rb +++ b/lib/rdoc/parser/c.rb @@ -661,7 +661,7 @@ class RDoc::Parser::C < RDoc::Parser def look_for_directives_in(context, comment) preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include - preprocess.handle comment do |directive, param| + preprocess.handle comment, context do |directive, param| case directive when 'main' then @options.main_page = param @@ -669,9 +669,6 @@ class RDoc::Parser::C < RDoc::Parser when 'title' then @options.title = param '' - else - context.metadata[directive] = param - false end end diff --git a/lib/rdoc/parser/ruby.rb b/lib/rdoc/parser/ruby.rb index c8bab57607..1876c339fa 100644 --- a/lib/rdoc/parser/ruby.rb +++ b/lib/rdoc/parser/ruby.rb @@ -379,7 +379,7 @@ class RDoc::Parser::Ruby < RDoc::Parser def look_for_directives_in(context, comment) preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include - preprocess.handle comment do |directive, param| + preprocess.handle comment, context do |directive, param| case directive when 'enddoc' then throw :enddoc @@ -403,9 +403,6 @@ class RDoc::Parser::Ruby < RDoc::Parser when 'title' then @options.title = param '' - else - @top_level.metadata[directive] = param - false end end diff --git a/lib/rdoc/parser/simple.rb b/lib/rdoc/parser/simple.rb index 25fa3c5159..e99d2d4319 100644 --- a/lib/rdoc/parser/simple.rb +++ b/lib/rdoc/parser/simple.rb @@ -17,10 +17,7 @@ class RDoc::Parser::Simple < RDoc::Parser preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include - preprocess.handle @content do |directive, param| - top_level.metadata[directive] = param - false - end + preprocess.handle @content, @top_level end ## diff --git a/test/rdoc/test_rdoc_markup_paragraph.rb b/test/rdoc/test_rdoc_markup_paragraph.rb index 15f3b5f849..a1eba7038d 100644 --- a/test/rdoc/test_rdoc_markup_paragraph.rb +++ b/test/rdoc/test_rdoc_markup_paragraph.rb @@ -5,23 +5,5 @@ require 'rdoc/markup' class TestRDocMarkupParagraph < MiniTest::Unit::TestCase - def setup - @RM = RDoc::Markup - @p = @RM::Paragraph.new - end - - def mu_pp obj - s = '' - s = PP.pp obj, s - s.force_encoding Encoding.default_external if defined? Encoding - s.chomp - end - - def test_push - @p.push 'hi', 'there' - - assert_equal @RM::Paragraph.new('hi', 'there'), @p - end - end diff --git a/test/rdoc/test_rdoc_markup_pre_process.rb b/test/rdoc/test_rdoc_markup_pre_process.rb index 5f1b22db4d..9c90a2782a 100644 --- a/test/rdoc/test_rdoc_markup_pre_process.rb +++ b/test/rdoc/test_rdoc_markup_pre_process.rb @@ -2,10 +2,13 @@ require 'tempfile' require 'rubygems' require 'minitest/autorun' require 'rdoc/markup/preprocess' +require 'rdoc/code_objects' class TestRDocMarkupPreProcess < MiniTest::Unit::TestCase def setup + RDoc::Markup::PreProcess.registered.clear + @tempfile = Tempfile.new 'test_rdoc_markup_pre_process' @name = File.basename @tempfile.path @dir = File.dirname @tempfile.path @@ -38,5 +41,140 @@ contents of a string. assert_equal expected, content end + def test_handle + text = "# :x: y\n" + out = @pp.handle text + + assert_same out, text + assert_equal "# :x: y\n", text + end + + def test_handle_block + text = "# :x: y\n" + + @pp.handle text do |directive, param| + false + end + + assert_equal "# :x: y\n", text + + @pp.handle text do |directive, param| + '' + end + + assert_equal "", text + end + + def test_handle_code_object + cd = RDoc::CodeObject.new + text = "# :x: y\n" + @pp.handle text, cd + + assert_equal "# :x: y\n", text + assert_equal 'y', cd.metadata['x'] + + cd.metadata.clear + text = "# :x:\n" + @pp.handle text, cd + + assert_equal "# :x: \n", text + assert_includes cd.metadata, 'x' + end + + def test_handle_code_object_block + cd = RDoc::CodeObject.new + text = "# :x: y\n" + @pp.handle text, cd do + false + end + + assert_equal "# :x: y\n", text + assert_empty cd.metadata + + @pp.handle text, cd do + nil + end + + assert_equal "# :x: y\n", text + assert_equal 'y', cd.metadata['x'] + + cd.metadata.clear + + @pp.handle text, cd do + '' + end + + assert_equal '', text + assert_empty cd.metadata + end + + def test_handle_registered + RDoc::Markup::PreProcess.register 'x' + text = "# :x: y\n" + @pp.handle text + + assert_equal '', text + + text = "# :x: y\n" + + @pp.handle text do |directive, param| + false + end + + assert_equal "# :x: y\n", text + + text = "# :x: y\n" + + @pp.handle text do |directive, param| + '' + end + + assert_equal "", text + end + + def test_handle_registered_block + called = nil + RDoc::Markup::PreProcess.register 'x' do |directive, param| + called = [directive, param] + 'blah' + end + + text = "# :x: y\n" + @pp.handle text + + assert_equal 'blah', text + assert_equal %w[x y], called + end + + def test_handle_registered_code_object + RDoc::Markup::PreProcess.register 'x' + cd = RDoc::CodeObject.new + + text = "# :x: y\n" + @pp.handle text, cd + + assert_equal '', text + assert_equal 'y', cd.metadata['x'] + + cd.metadata.clear + text = "# :x: y\n" + + @pp.handle text do |directive, param| + false + end + + assert_equal "# :x: y\n", text + assert_empty cd.metadata + + text = "# :x: y\n" + + @pp.handle text do |directive, param| + '' + end + + assert_equal "", text + assert_empty cd.metadata + end + end diff --git a/test/rdoc/test_rdoc_markup_raw.rb b/test/rdoc/test_rdoc_markup_raw.rb new file mode 100644 index 0000000000..4e57b7df39 --- /dev/null +++ b/test/rdoc/test_rdoc_markup_raw.rb @@ -0,0 +1,27 @@ +require 'pp' +require 'rubygems' +require 'minitest/autorun' +require 'rdoc/markup' + +class TestRDocMarkupRaw < MiniTest::Unit::TestCase + + def setup + @RM = RDoc::Markup + @p = @RM::Raw.new + end + + def mu_pp obj + s = '' + s = PP.pp obj, s + s.force_encoding Encoding.default_external if defined? Encoding + s.chomp + end + + def test_push + @p.push 'hi', 'there' + + assert_equal @RM::Raw.new('hi', 'there'), @p + end + +end + diff --git a/test/rdoc/test_rdoc_markup_to_ansi.rb b/test/rdoc/test_rdoc_markup_to_ansi.rb index 97b4959571..a8fab98d19 100644 --- a/test/rdoc/test_rdoc_markup_to_ansi.rb +++ b/test/rdoc/test_rdoc_markup_to_ansi.rb @@ -175,6 +175,18 @@ class TestRDocMarkupToAnsi < RDoc::Markup::FormatterTestCase assert_equal "\e[0mhi\n", @to.res.join end + def accept_raw + raw = <<-RAW.rstrip +\e[0m<table> +<tr><th>Name<th>Count +<tr><td>a<td>1 +<tr><td>b<td>2 +</table> + RAW + + assert_equal raw, @to.res.join + end + def accept_rule assert_equal "\e[0m#{'-' * 78}\n", @to.res.join end diff --git a/test/rdoc/test_rdoc_markup_to_bs.rb b/test/rdoc/test_rdoc_markup_to_bs.rb index a82d462ad8..c042452637 100644 --- a/test/rdoc/test_rdoc_markup_to_bs.rb +++ b/test/rdoc/test_rdoc_markup_to_bs.rb @@ -174,6 +174,18 @@ class TestRDocMarkupToBs < RDoc::Markup::FormatterTestCase assert_equal "hi\n", @to.res.join end + def accept_raw + raw = <<-RAW.rstrip +<table> +<tr><th>Name<th>Count +<tr><td>a<td>1 +<tr><td>b<td>2 +</table> + RAW + + assert_equal raw, @to.res.join + end + def accept_rule assert_equal "#{'-' * 78}\n", @to.res.join end diff --git a/test/rdoc/test_rdoc_markup_to_html.rb b/test/rdoc/test_rdoc_markup_to_html.rb index 29cef00a0c..f6014391c8 100644 --- a/test/rdoc/test_rdoc_markup_to_html.rb +++ b/test/rdoc/test_rdoc_markup_to_html.rb @@ -170,6 +170,18 @@ class TestRDocMarkupToHtml < RDoc::Markup::FormatterTestCase assert_equal "<p>\nhi\n</p>\n", @to.res.join end + def accept_raw + raw = <<-RAW.rstrip +<table> +<tr><th>Name<th>Count +<tr><td>a<td>1 +<tr><td>b<td>2 +</table> + RAW + + assert_equal raw, @to.res.join + end + def accept_rule assert_equal '<hr style="height: 4px"></hr>', @to.res.join end diff --git a/test/rdoc/test_rdoc_markup_to_rdoc.rb b/test/rdoc/test_rdoc_markup_to_rdoc.rb index e2ccc6c62e..ac6884ba58 100644 --- a/test/rdoc/test_rdoc_markup_to_rdoc.rb +++ b/test/rdoc/test_rdoc_markup_to_rdoc.rb @@ -175,6 +175,18 @@ class TestRDocMarkupToRdoc < RDoc::Markup::FormatterTestCase assert_equal "hi\n", @to.res.join end + def accept_raw + raw = <<-RAW.rstrip +<table> +<tr><th>Name<th>Count +<tr><td>a<td>1 +<tr><td>b<td>2 +</table> + RAW + + assert_equal raw, @to.res.join + end + def accept_rule assert_equal "#{'-' * 78}\n", @to.res.join end diff --git a/test/rdoc/test_rdoc_options.rb b/test/rdoc/test_rdoc_options.rb index 62a5b2db54..f4a8d51c8e 100644 --- a/test/rdoc/test_rdoc_options.rb +++ b/test/rdoc/test_rdoc_options.rb @@ -50,5 +50,25 @@ class TestRDocOptions < MiniTest::Unit::TestCase assert_equal 'MAIN', @options.main_page end + def test_parse_dash_p + out, err = capture_io do + @options.parse %w[-p] + end + + assert @options.pipe + refute_match %r%^Usage: %, err + refute_match %r%^invalid options%, err + end + + def test_parse_dash_p_files + out, err = capture_io do + @options.parse %w[-p README] + end + + refute @options.pipe + refute_match %r%^Usage: %, err + assert_match %r%^invalid options: -p .with files.%, err + end + end diff --git a/test/rdoc/test_rdoc_parser_ruby.rb b/test/rdoc/test_rdoc_parser_ruby.rb index f4bd50ba16..988bc507cd 100644 --- a/test/rdoc/test_rdoc_parser_ruby.rb +++ b/test/rdoc/test_rdoc_parser_ruby.rb @@ -151,16 +151,9 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase def test_look_for_directives_in_unhandled util_parser "" - comment = "# :unhandled: \n# :markup: not rdoc\n# :title: hi\n" + @parser.look_for_directives_in @top_level, "# :unhandled: blah\n" - @parser.look_for_directives_in @top_level, comment - - assert_equal "# :unhandled: \n# :markup: not rdoc\n", comment - - assert_equal nil, @top_level.metadata['unhandled'] - assert_equal 'not rdoc', @top_level.metadata['markup'] - - assert_equal 'hi', @options.title + assert_equal 'blah', @top_level.metadata['unhandled'] end def test_parse_alias diff --git a/test/rdoc/test_rdoc_parser_simple.rb b/test/rdoc/test_rdoc_parser_simple.rb index a83f105edd..d09cced5a4 100644 --- a/test/rdoc/test_rdoc_parser_simple.rb +++ b/test/rdoc/test_rdoc_parser_simple.rb @@ -23,12 +23,11 @@ class TestRDocParserSimple < MiniTest::Unit::TestCase end def test_initialize_metadata - parser = util_parser ":unhandled: \n# :markup: not rdoc\n" + parser = util_parser ":unhandled: \n" - assert_equal nil, @top_level.metadata['unhandled'] - assert_equal 'not rdoc', @top_level.metadata['markup'] + assert_includes @top_level.metadata, 'unhandled' - assert_equal ":unhandled: \n# :markup: not rdoc\n", parser.content + assert_equal ":unhandled: \n", parser.content end def test_remove_coding_comment diff --git a/test/rdoc/test_rdoc_rdoc.rb b/test/rdoc/test_rdoc_rdoc.rb index 772ba4c3b1..866667c494 100644 --- a/test/rdoc/test_rdoc_rdoc.rb +++ b/test/rdoc/test_rdoc_rdoc.rb @@ -82,50 +82,47 @@ class TestRDocRDoc < MiniTest::Unit::TestCase end def test_setup_output_dir - path = @tempfile.path - @tempfile.unlink + skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir - last = @rdoc.setup_output_dir path, false + Dir.mktmpdir {|d| + path = File.join(d, 'testdir') - assert_empty last + last = @rdoc.setup_output_dir path, false - assert File.directory? path - ensure - FileUtils.rm_f path + assert_empty last + + assert File.directory? path + } end def test_setup_output_dir_exists - path = @tempfile.path - @tempfile.unlink - FileUtils.mkdir_p path + skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir - open @rdoc.output_flag_file(path), 'w' do |io| - io.puts Time.at 0 - io.puts "./lib/rdoc.rb\t#{Time.at 86400}" - end + Dir.mktmpdir {|path| + open @rdoc.output_flag_file(path), 'w' do |io| + io.puts Time.at 0 + io.puts "./lib/rdoc.rb\t#{Time.at 86400}" + end - last = @rdoc.setup_output_dir path, false + last = @rdoc.setup_output_dir path, false - assert_equal 1, last.size - assert_equal Time.at(86400), last['./lib/rdoc.rb'] - ensure - FileUtils.rm_f path + assert_equal 1, last.size + assert_equal Time.at(86400), last['./lib/rdoc.rb'] + } end def test_setup_output_dir_exists_empty_created_rid - path = @tempfile.path - @tempfile.unlink - FileUtils.mkdir_p path + skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir - open @rdoc.output_flag_file(path), 'w' do end + Dir.mktmpdir {|path| + open @rdoc.output_flag_file(path), 'w' do end - e = assert_raises RDoc::Error do - @rdoc.setup_output_dir path, false - end + e = assert_raises RDoc::Error do + @rdoc.setup_output_dir path, false + end - assert_match %r%Directory #{Regexp.escape path} already exists%, e.message - ensure - FileUtils.rm_f path + assert_match %r%Directory #{Regexp.escape path} already exists%, e.message + } end def test_setup_output_dir_exists_file |