ruby/test/rdoc/test_rdoc_rdoc.rb

166 строки
4.0 KiB
Ruby

require 'tempfile'
require 'tmpdir'
require 'rubygems'
require 'minitest/autorun'
require 'rdoc/rdoc'
class TestRDocRDoc < MiniTest::Unit::TestCase
def setup
@rdoc = RDoc::RDoc.new
@tempfile = Tempfile.new 'test_rdoc_rdoc'
@tempfile.binmode
end
def teardown
@tempfile.close rescue nil # HACK for 1.8.6
end
def test_gather_files
file = File.expand_path __FILE__
assert_equal [file], @rdoc.gather_files([file, file])
end
def test_normalized_file_list
files = @rdoc.normalized_file_list [__FILE__]
files = files.map { |file| File.expand_path file }
assert_equal [File.expand_path(__FILE__)], files
end
def test_normalized_file_list_not_modified
files = [__FILE__]
@rdoc.last_modified[__FILE__] = File.stat(__FILE__).mtime
files = @rdoc.normalized_file_list [__FILE__]
assert_empty files
end
def test_read_file_contents
@tempfile.write "hi everybody"
@tempfile.flush
assert_equal "hi everybody", @rdoc.read_file_contents(@tempfile.path)
end
def test_read_file_contents_encoding
skip "Encoding not implemented" unless defined? ::Encoding
@tempfile.write "# coding: utf-8\nhi everybody"
@tempfile.flush
contents = @rdoc.read_file_contents @tempfile.path
assert_equal "# coding: utf-8\nhi everybody", contents
assert_equal Encoding::UTF_8, contents.encoding
end
def test_read_file_contents_encoding_fancy
skip "Encoding not implemented" unless defined? ::Encoding
@tempfile.write "# -*- coding: utf-8; fill-column: 74 -*-\nhi everybody"
@tempfile.flush
contents = @rdoc.read_file_contents @tempfile.path
assert_equal("# -*- coding: utf-8; fill-column: 74 -*-\nhi everybody",
contents)
assert_equal Encoding::UTF_8, contents.encoding
end
def test_read_file_contents_encoding_with_signature
skip "Encoding not implemented" unless defined? ::Encoding
@tempfile.write "\xEF\xBB\xBF""hi everybody"
@tempfile.flush
bug3360 = '[ruby-dev:41452]'
contents = @rdoc.read_file_contents @tempfile.path
assert_equal "hi everybody", contents, bug3360
assert_equal Encoding::UTF_8, contents.encoding, bug3360
end
def test_remove_unparsable
file_list = %w[
blah.class
blah.eps
blah.erb
blah.scpt.txt
blah.ttf
blah.yml
]
assert_empty @rdoc.remove_unparseable file_list
end
def test_setup_output_dir
skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir
Dir.mktmpdir {|d|
path = File.join(d, 'testdir')
last = @rdoc.setup_output_dir path, false
assert_empty last
assert File.directory? path
}
end
def test_setup_output_dir_exists
skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir
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
assert_equal 1, last.size
assert_equal Time.at(86400), last['./lib/rdoc.rb']
}
end
def test_setup_output_dir_exists_empty_created_rid
skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir
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
assert_match %r%Directory #{Regexp.escape path} already exists%, e.message
}
end
def test_setup_output_dir_exists_file
path = @tempfile.path
e = assert_raises RDoc::Error do
@rdoc.setup_output_dir path, false
end
assert_match(%r%#{Regexp.escape path} exists and is not a directory%,
e.message)
end
def test_setup_output_dir_exists_not_rdoc
skip "No Dir::mktmpdir, upgrade your ruby" unless Dir.respond_to? :mktmpdir
Dir.mktmpdir do |dir|
e = assert_raises RDoc::Error do
@rdoc.setup_output_dir dir, false
end
assert_match %r%Directory #{Regexp.escape dir} already exists%, e.message
end
end
end