summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rdoc/options.rb12
-rw-r--r--lib/rdoc/rdoc.rb16
-rw-r--r--test/rdoc/test_rdoc_options.rb11
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb42
4 files changed, 80 insertions, 1 deletions
diff --git a/lib/rdoc/options.rb b/lib/rdoc/options.rb
index 55994c9dcc..eed0f6b39b 100644
--- a/lib/rdoc/options.rb
+++ b/lib/rdoc/options.rb
@@ -339,6 +339,10 @@ class RDoc::Options
attr_reader :visibility
+ ##
+ # Indicates if files of test suites should be skipped
+ attr_accessor :skip_tests
+
def initialize loaded_options = nil # :nodoc:
init_ivars
override loaded_options if loaded_options
@@ -386,6 +390,7 @@ class RDoc::Options
@write_options = false
@encoding = Encoding::UTF_8
@charset = @encoding.name
+ @skip_tests = true
end
def init_with map # :nodoc:
@@ -778,6 +783,13 @@ Usage: #{opt.program_name} [options] [names...]
opt.separator nil
+ opt.on("--no-skipping-tests", nil,
+ "Don't skip generating documentation for test and spec files") do |value|
+ @skip_tests = false
+ end
+
+ opt.separator nil
+
opt.on("--extension=NEW=OLD", "-E",
"Treat files ending with .new as if they",
"ended with .old. Using '-E cgi=rb' will",
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
index 400f9b5bc3..2d8a9dea8c 100644
--- a/lib/rdoc/rdoc.rb
+++ b/lib/rdoc/rdoc.rb
@@ -36,6 +36,17 @@ class RDoc::RDoc
GENERATORS = {}
##
+ # List of directory names always skipped
+
+ UNCONDITIONALLY_SKIPPED_DIRECTORIES = %w[CVS .svn .git].freeze
+
+ ##
+ # List of directory names skipped if test suites should be skipped
+
+ TEST_SUITE_DIRECTORY_NAMES = %w[spec test].freeze
+
+
+ ##
# Generator instance used for creating output
attr_accessor :generator
@@ -280,7 +291,10 @@ option)
file_list[rel_file_name] = mtime
end
when "directory" then
- next if rel_file_name == "CVS" || rel_file_name == ".svn"
+ next if UNCONDITIONALLY_SKIPPED_DIRECTORIES.include?(rel_file_name)
+
+ basename = File.basename(rel_file_name)
+ next if options.skip_tests && TEST_SUITE_DIRECTORY_NAMES.include?(basename)
created_rid = File.join rel_file_name, "created.rid"
next if File.file? created_rid
diff --git a/test/rdoc/test_rdoc_options.rb b/test/rdoc/test_rdoc_options.rb
index 009dcdd998..c71ee25cef 100644
--- a/test/rdoc/test_rdoc_options.rb
+++ b/test/rdoc/test_rdoc_options.rb
@@ -83,6 +83,7 @@ class TestRDocOptions < RDoc::TestCase
'title' => nil,
'visibility' => :protected,
'webcvs' => nil,
+ 'skip_tests' => true,
}
assert_equal expected, coder
@@ -871,6 +872,16 @@ rdoc_include:
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)
diff --git a/test/rdoc/test_rdoc_rdoc.rb b/test/rdoc/test_rdoc_rdoc.rb
index e958e5f2f6..853d7dad22 100644
--- a/test/rdoc/test_rdoc_rdoc.rb
+++ b/test/rdoc/test_rdoc_rdoc.rb
@@ -213,6 +213,48 @@ class TestRDocRDoc < RDoc::TestCase
assert_equal expected_files, files
end
+ def test_normalized_file_list_with_skipping_tests_enabled
+ files = temp_dir do |dir|
+ @a = File.expand_path('a.rb')
+ spec_dir = File.expand_path('spec')
+ spec_file = File.expand_path(File.join('spec', 'my_spec.rb'))
+ test_dir = File.expand_path('test')
+ test_file = File.expand_path(File.join('test', 'my_test.rb'))
+ FileUtils.touch @a
+ FileUtils.mkdir_p spec_dir
+ FileUtils.touch spec_file
+ FileUtils.mkdir_p test_dir
+ FileUtils.touch test_file
+
+ @rdoc.options.skip_tests = true
+ @rdoc.normalized_file_list [File.realpath(dir)]
+ end
+
+ files = files.map { |file, *| File.expand_path file }
+ assert_equal [@a], files
+ end
+
+ def test_normalized_file_list_with_skipping_tests_disabled
+ files = temp_dir do |dir|
+ @a = File.expand_path('a.rb')
+ spec_dir = File.expand_path('spec')
+ @spec_file = File.expand_path(File.join('spec', 'my_spec.rb'))
+ test_dir = File.expand_path('test')
+ @test_file = File.expand_path(File.join('test', 'my_test.rb'))
+ FileUtils.touch @a
+ FileUtils.mkdir_p spec_dir
+ FileUtils.touch @spec_file
+ FileUtils.mkdir_p test_dir
+ FileUtils.touch @test_file
+
+ @rdoc.options.skip_tests = false
+ @rdoc.normalized_file_list [File.realpath(dir)]
+ end
+
+ files = files.map { |file, *| File.expand_path file }
+ assert_equal [@a, @spec_file, @test_file], files.sort
+ end
+
def test_parse_file
@rdoc.store = RDoc::Store.new