summaryrefslogtreecommitdiff
path: root/test/rdoc/test_rdoc_options.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rdoc/test_rdoc_options.rb')
-rw-r--r--test/rdoc/test_rdoc_options.rb177
1 files changed, 164 insertions, 13 deletions
diff --git a/test/rdoc/test_rdoc_options.rb b/test/rdoc/test_rdoc_options.rb
index 140c4afc9b..5e8b1ae3d8 100644
--- a/test/rdoc/test_rdoc_options.rb
+++ b/test/rdoc/test_rdoc_options.rb
@@ -55,11 +55,10 @@ class TestRDocOptions < RDoc::TestCase
refute @options.dry_run
end
- def test_encode_with
- coder = {}
- class << coder; alias add []=; end
+ def test_to_yaml
+ RDoc.load_yaml
- @options.encode_with coder
+ coder = YAML.load(@options.to_yaml)
encoding = 'UTF-8'
@@ -69,7 +68,6 @@ class TestRDocOptions < RDoc::TestCase
'exclude' => %w[~\z \.orig\z \.rej\z \.bak\z \.gemspec\z],
'hyperlink_all' => false,
'line_numbers' => false,
- 'locale' => nil,
'locale_dir' => 'locale',
'locale_name' => nil,
'main_page' => nil,
@@ -84,15 +82,17 @@ class TestRDocOptions < RDoc::TestCase
'title' => nil,
'visibility' => :protected,
'webcvs' => nil,
+ 'skip_tests' => true,
}
assert_equal expected, coder
end
- def test_encode_with_trim_paths
+ def test_to_yaml_trim_paths
+ RDoc.load_yaml
+
subdir = nil
- coder = {}
- class << coder; alias add []=; end
+ coder = nil
temp_dir do |dir|
FileUtils.mkdir 'project'
@@ -113,7 +113,7 @@ class TestRDocOptions < RDoc::TestCase
--include /
]
- @options.encode_with coder
+ coder = YAML.load(@options.to_yaml)
end
end
@@ -145,7 +145,9 @@ class TestRDocOptions < RDoc::TestCase
@options.encoding = Encoding::IBM437
- options = YAML.load YAML.dump @options
+ options = @options.to_yaml
+ options = YAML.safe_load(options, permitted_classes: [Symbol])
+ options = RDoc::Options.new(options)
assert_equal Encoding::IBM437, options.encoding
end
@@ -154,14 +156,15 @@ class TestRDocOptions < RDoc::TestCase
RDoc.load_yaml
yaml = <<-YAML
---- !ruby/object:RDoc::Options
+---
static_path:
- /etc
rdoc_include:
- /etc
YAML
- options = YAML.load yaml
+ options = YAML.safe_load(yaml, permitted_classes: [Symbol])
+ options = RDoc::Options.new(options)
assert_empty options.rdoc_include
assert_empty options.static_path
@@ -205,6 +208,13 @@ rdoc_include:
assert @options.force_update
end
+ def test_parse_coverage_C
+ @options.parse %w[-C]
+
+ assert @options.coverage_report
+ assert @options.force_update
+ end
+
def test_parse_coverage_no
@options.parse %w[--no-dcov]
@@ -217,6 +227,19 @@ rdoc_include:
assert_equal 1, @options.coverage_report
end
+ def test_parse_coverage_C_level_1
+ @options.parse %w[-C1]
+
+ assert_equal 1, @options.coverage_report
+ end
+
+ def test_parse_coverage_C_level_0
+ @options.parse %w[-C0]
+
+ assert_equal 0, @options.coverage_report
+ assert @options.force_update
+ end
+
def test_parse_dash_p
out, err = capture_output do
@options.parse %w[-p]
@@ -243,6 +266,7 @@ rdoc_include:
def test_parse_default
@options.parse []
+ @options.finish
assert_equal RDoc::Generator::Darkfish, @options.generator
assert_equal 'darkfish', @options.template
@@ -502,6 +526,7 @@ rdoc_include:
out, err = capture_output do
@options.parse %W[--page-dir #{Dir.tmpdir}]
+ @options.finish
end
assert_empty out
@@ -530,6 +555,7 @@ rdoc_include:
out, err = capture_output do
@options.parse %W[--page-dir #{abs_page_dir} --root #{abs_root}]
+ @options.finish
end
assert_empty out
@@ -558,6 +584,8 @@ rdoc_include:
assert_empty err
assert_equal Pathname(Dir.tmpdir), @options.root
+
+ @options.finish
assert_includes @options.rdoc_include, @options.root.to_s
end
@@ -602,6 +630,7 @@ rdoc_include:
assert_empty out
assert_equal "could not find template NONEXISTENT\n", err
+ @options.finish
assert_equal 'darkfish', @options.template
assert_match %r%rdoc/generator/template/darkfish$%, @options.template_dir
end
@@ -632,6 +661,21 @@ rdoc_include:
$LOAD_PATH.replace orig_LOAD_PATH
end
+ def test_parse_template_stylesheets
+ css = nil
+ Dir.mktmpdir do |dir|
+ css = File.join(dir, "hoge.css")
+ File.write(css, "")
+ out, err = capture_output do
+ @options.parse %W[--template-stylesheets #{css}]
+ end
+
+ assert_empty out
+ assert_empty err
+ end
+ assert_include @options.template_stylesheets, css
+ end
+
def test_parse_visibility
@options.parse %w[--visibility=public]
assert_equal :public, @options.visibility
@@ -653,6 +697,7 @@ rdoc_include:
Dir.chdir tmpdir do
e = assert_raise SystemExit do
@options.parse %w[--write-options]
+ @options.finish
end
assert_equal 0, e.status
@@ -674,6 +719,28 @@ rdoc_include:
assert_empty err
end
+ def test_parse_locale_name_default
+ temp_dir do
+ @options.parse %w[]
+ assert_equal 'locale', @options.instance_variable_get(:@locale_dir)
+ assert_nil @options.instance_variable_get(:@locale_name)
+ assert_nil @options.locale
+ @options.finish
+ assert_nil @options.locale
+ end
+ end
+
+ def test_parse_locale_name
+ temp_dir do
+ @options.parse %w[--locale fr]
+ assert_equal 'locale', @options.instance_variable_get(:@locale_dir)
+ assert_equal 'fr', @options.instance_variable_get(:@locale_name)
+ assert_nil @options.locale
+ @options.finish
+ assert_equal 'fr', @options.locale.name
+ end
+ end
+
def test_setup_generator
test_generator = Class.new do
def self.setup_options op
@@ -749,7 +816,9 @@ rdoc_include:
assert File.exist? '.rdoc_options'
- assert_equal @options, YAML.load(File.read('.rdoc_options'))
+ options = File.read('.rdoc_options')
+ options = YAML.safe_load(options, permitted_classes: [Symbol])
+ assert_equal @options, RDoc::Options.new(options)
end
end
@@ -777,4 +846,86 @@ rdoc_include:
@options.visibility = :all
assert_equal :private, @options.visibility
end
+
+ def test_load_options
+ temp_dir do
+ options = RDoc::Options.new
+ options.markup = 'tomdoc'
+ options.write_options
+
+ options = RDoc::Options.load_options
+
+ assert_equal 'tomdoc', options.markup
+ end
+ end
+
+ def test_load_options_invalid
+ temp_dir do
+ File.open '.rdoc_options', 'w' do |io|
+ io.write "a: !ruby.yaml.org,2002:str |\nfoo"
+ end
+
+ e = assert_raise RDoc::Error do
+ RDoc::Options.load_options
+ end
+
+ options_file = File.expand_path '.rdoc_options'
+ assert_equal "#{options_file} is not a valid rdoc options file", e.message
+ end
+ end
+
+ def test_load_options_empty_file
+ temp_dir do
+ File.open '.rdoc_options', 'w' do |io|
+ end
+
+ options = RDoc::Options.load_options
+
+ assert_equal 'rdoc', options.markup
+ end
+ end
+
+ def test_load_options_partial_override
+ temp_dir do
+ File.open '.rdoc_options', 'w' do |io|
+ io.puts "markup: Markdown"
+ io.puts "encoding: iso-8859-1"
+ io.puts "static_path: [static]"
+ io.puts "rdoc_include: [.]"
+ io.puts "page_dir: pages"
+ end
+
+ options = RDoc::Options.load_options
+
+ assert_equal 'Markdown', options.markup
+ assert_equal Encoding::ISO_8859_1, options.encoding
+ assert_equal ["static"], options.static_path
+ assert_equal ["."], options.rdoc_include
+ assert_equal "pages", options.page_dir
+ end
+ end
+
+ def test_load_options_no_file
+ temp_dir do
+ options = RDoc::Options.load_options
+
+ assert_kind_of RDoc::Options, options
+ end
+ end
+
+ def test_skip_test_default_value
+ @options.parse %w[]
+ assert_equal true, @options.skip_tests
+ end
+
+ def test_no_skip_test_value
+ @options.parse %w[--no-skipping-tests]
+ assert_equal false, @options.skip_tests
+ end
+
+ class DummyCoder < Hash
+ alias add :[]=
+ def tag=(tag)
+ end
+ end
end