summaryrefslogtreecommitdiff
path: root/lib/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-24 05:08:04 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-24 05:08:04 +0000
commit73d77c8f572b760b4c868579188fc39f360151cb (patch)
tree3b5013c7ceed366ab596efd596feb3831f5fc02f /lib/test
parentd05b3b1e4801903a3f6338af932be334049de1ed (diff)
* lib/test/unit/assertions.rb: Modules are allowed to rescue.
* lib/test/unit/autorunner.rb: show output_level in order. * lib/test/unit/collector/dir.rb: get rid of successive same directories in load path. * test/testunit/test_assertions.rb (test_assert_nothing_raised, test_assert_raise): test for modules. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/test')
-rw-r--r--lib/test/unit/assertions.rb34
-rw-r--r--lib/test/unit/autorunner.rb28
-rw-r--r--lib/test/unit/collector/dir.rb3
3 files changed, 40 insertions, 25 deletions
diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb
index 090a07a405..001bb428d0 100644
--- a/lib/test/unit/assertions.rb
+++ b/lib/test/unit/assertions.rb
@@ -56,18 +56,31 @@ EOT
assert_block(full_message) { expected == actual }
end
+ private
+ def _check_exception_class(args)
+ args.partition do |klass|
+ next if klass.instance_of?(Module)
+ assert(Exception >= klass, "Should expect a class of exception, #{klass}")
+ true
+ end
+ end
+
+ private
+ def _expected_exception?(actual_exception, exceptions, modules)
+ exceptions.include?(actual_exception.class) or
+ modules.any? {|mod| actual_exception.is_a?(mod)}
+ end
+
# Passes if block raises one of the given exceptions.
public
def assert_raise(*args)
_wrap_assertion do
- if Class === args.last
+ if Module === args.last
message = ""
else
message = args.pop
end
- args.each do |klass|
- assert(Exception >= klass, "Should expect a class of exception, #{klass}")
- end
+ exceptions, modules = _check_exception_class(args)
expected = args.size == 1 ? args.first : args
actual_exception = nil
full_message = build_message(message, "<?> exception expected but none was thrown.", expected)
@@ -80,7 +93,7 @@ EOT
false
end
full_message = build_message(message, "<?> exception expected but was\n?", expected, actual_exception)
- assert_block(full_message) { args.include?(actual_exception.class) }
+ assert_block(full_message) {_expected_exception?(actual_exception, exceptions, modules)}
actual_exception
end
end
@@ -188,21 +201,20 @@ EOT
public
def assert_nothing_raised(*args)
_wrap_assertion do
- if Class === args.last
+ if Module === args.last
message = ""
else
message = args.pop
end
- args.each do |klass|
- assert(Exception >= klass, "Should expect a class of exception, #{klass}")
- end
+ exceptions, modules = _check_exception_class(args)
begin
yield
rescue Exception => e
- if ((args.empty? && !e.instance_of?(AssertionFailedError)) || args.include?(e.class))
+ if ((args.empty? && !e.instance_of?(AssertionFailedError)) ||
+ _expected_exception?(e, exceptions, modules))
assert_block(build_message(message, "Exception raised:\n?", e)){false}
else
- raise e.class, e.message, e.backtrace
+ raise
end
end
nil
diff --git a/lib/test/unit/autorunner.rb b/lib/test/unit/autorunner.rb
index 76c3100472..4eee7f654b 100644
--- a/lib/test/unit/autorunner.rb
+++ b/lib/test/unit/autorunner.rb
@@ -37,12 +37,12 @@ module Test
end,
}
- OUTPUT_LEVELS = {
- :silent => UI::SILENT,
- :progress => UI::PROGRESS_ONLY,
- :normal => UI::NORMAL,
- :verbose => UI::VERBOSE,
- }
+ OUTPUT_LEVELS = [
+ [:silent, UI::SILENT],
+ [:progress, UI::PROGRESS_ONLY],
+ [:normal, UI::NORMAL],
+ [:verbose, UI::VERBOSE],
+ ]
COLLECTORS = {
:objectspace => proc do |r|
@@ -95,10 +95,10 @@ module Test
o.banner << "\nUsage: #{$0} [options] [-- untouched arguments]"
o.on
- o.on('-r', '--runner=RUNNER', RUNNERS.keys,
+ o.on('-r', '--runner=RUNNER', RUNNERS,
"Use the given RUNNER.",
- "(" + keyword_display(RUNNERS.keys) + ")") do |r|
- @runner = RUNNERS[r]
+ "(" + keyword_display(RUNNERS) + ")") do |r|
+ @runner = r
end
if(@standalone)
@@ -138,10 +138,10 @@ module Test
end
end
- o.on('-v', '--verbose=[LEVEL]', OUTPUT_LEVELS.keys,
+ o.on('-v', '--verbose=[LEVEL]', OUTPUT_LEVELS,
"Set the output level (default is verbose).",
- "(" + keyword_display(OUTPUT_LEVELS.keys) + ")") do |l|
- @output_level = (l ? OUTPUT_LEVELS[l] : OUTPUT_LEVELS[:verbose])
+ "(" + keyword_display(OUTPUT_LEVELS) + ")") do |l|
+ @output_level = l || UI::VERBOSE
end
o.on('--',
@@ -174,7 +174,9 @@ module Test
end
def keyword_display(array)
- array.collect{|e| e.to_s.sub(/^(.)([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')}.sort.join(", ")
+ list = array.collect {|e, *| e.to_s}
+ Array === array or list.sort!
+ list.collect {|e| e.sub(/^(.)([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')}.join(", ")
end
def run
diff --git a/lib/test/unit/collector/dir.rb b/lib/test/unit/collector/dir.rb
index c4a4c16dfd..43fd1be718 100644
--- a/lib/test/unit/collector/dir.rb
+++ b/lib/test/unit/collector/dir.rb
@@ -68,7 +68,8 @@ module Test
def collect_file(name, suites, already_gathered)
loadpath = $:.dup
- $:.unshift(File.dirname(name))
+ dir = File.dirname(File.expand_path(name))
+ $:.unshift(dir) unless $:.first == dir
if(@req)
@req.require(name)
else