summaryrefslogtreecommitdiff
path: root/lib/minitest
diff options
context:
space:
mode:
authorryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-09-23 21:27:19 +0000
committerryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-09-23 21:27:19 +0000
commit4c6551b7d36d8741ec5418de073a10d5c01e7246 (patch)
treea6ce3a02d90e3ce6a075074b13f4dcb2aa067848 /lib/minitest
parentd1a4b542186800607a60490d3aef8e244e00ca0c (diff)
Imported minitest 1.7.2 r5879.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/minitest')
-rw-r--r--lib/minitest/spec.rb72
-rw-r--r--lib/minitest/unit.rb11
2 files changed, 56 insertions, 27 deletions
diff --git a/lib/minitest/spec.rb b/lib/minitest/spec.rb
index 43f1c6ca09..2050337015 100644
--- a/lib/minitest/spec.rb
+++ b/lib/minitest/spec.rb
@@ -9,7 +9,7 @@
require 'minitest/unit'
class Module
- def infect_an_assertion meth, new_name, dont_flip = false
+ def infect_an_assertion meth, new_name, dont_flip = false # :nodoc:
# warn "%-22p -> %p %p" % [meth, new_name, dont_flip]
self.class_eval <<-EOM
def #{new_name} *args, &block
@@ -22,11 +22,17 @@ class Module
EOM
end
+ ##
+ # Create your own expectations from MiniTest::Assertions using a
+ # flexible set of rules. If you don't like must/wont, then this
+ # method is your friend. For an example of its usage see the bottom
+ # of minitest/spec.rb.
+
def infect_with_assertions(pos_prefix, neg_prefix,
skip_re,
dont_flip_re = /\c0/,
map = {})
- MiniTest::Assertions.public_instance_methods(false).each do |meth|
+ MiniTest::Assertions.public_instance_methods(false).sort.each do |meth|
meth = meth.to_s
new_name = case meth
@@ -41,28 +47,14 @@ class Module
regexp, replacement = map.find { |re, _| new_name =~ re }
new_name.sub! regexp, replacement if replacement
+ puts "\n##\n# :method: #{new_name}\n# See MiniTest::Assertions##{meth}" if
+ $0 == __FILE__
+
infect_an_assertion meth, new_name, new_name =~ dont_flip_re
end
end
end
-Object.infect_with_assertions(:must, :wont,
- /^(must|wont)$|wont_(throw)|
- must_(block|not?_|nothing|raise$)/x,
- /(must|wont)_(include|respond_to)/,
- /(must_throw)s/ => '\1',
- /(?!not)_same/ => '_be_same_as',
- /_in_/ => '_be_within_',
- /_operator/ => '_be',
- /_includes/ => '_include',
- /(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
- /must_raises/ => 'must_raise')
-
-class Object
- alias :must_be_close_to :must_be_within_delta
- alias :wont_be_close_to :wont_be_within_delta
-end
-
module Kernel
##
# Describe a series of expectations for a given target +desc+.
@@ -97,6 +89,12 @@ class Module
end
end
+##
+# MiniTest::Spec -- The faster, better, less-magical spec framework!
+#
+# For a list of expectations, see Object.
+
+
class MiniTest::Spec < MiniTest::Unit::TestCase
@@describe_stack = [MiniTest::Spec]
def self.describe_stack # :nodoc:
@@ -174,10 +172,36 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
mod.send :undef_method, name if mod.respond_to? name
end
end
+end
+
+Object.infect_with_assertions(:must, :wont,
+ /^(must|wont)$|wont_(throw)|
+ must_(block|not?_|nothing|raise$)/x,
+ /(must|wont)_(include|respond_to)/,
+ /(must_throw)s/ => '\1',
+ /(?!not)_same/ => '_be_same_as',
+ /_in_/ => '_be_within_',
+ /_operator/ => '_be',
+ /_includes/ => '_include',
+ /(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2',
+ /must_raises/ => 'must_raise')
+
+class Object
+ alias :must_be_close_to :must_be_within_delta
+ alias :wont_be_close_to :wont_be_within_delta
+
+ if $0 == __FILE__ then
+ { "must" => "assert", "wont" => "refute" }.each do |a, b|
+ puts "\n"
+ puts "##"
+ puts "# :method: #{a}_be_close_to"
+ puts "# See MiniTest::Assertions##{b}_in_delta"
+ end
+ end
##
# :method: must_be
- # See MiniTest::Assertions#assert
+ # See MiniTest::Assertions#assert_operator
##
# :method: must_be_close_to
@@ -245,11 +269,11 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
##
# :method: must_throw
- # See MiniTest::Assertions#assert_throw
+ # See MiniTest::Assertions#assert_throws
##
# :method: wont_be
- # See MiniTest::Assertions#refute
+ # See MiniTest::Assertions#refute_operator
##
# :method: wont_be_close_to
@@ -280,10 +304,6 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
# See MiniTest::Assertions#refute_in_delta
##
- # :method: wont_be_within_delta
- # See MiniTest::Assertions#refute_in_delta
-
- ##
# :method: wont_be_within_epsilon
# See MiniTest::Assertions#refute_in_epsilon
diff --git a/lib/minitest/unit.rb b/lib/minitest/unit.rb
index c45dec3fc4..80c76c45f3 100644
--- a/lib/minitest/unit.rb
+++ b/lib/minitest/unit.rb
@@ -222,6 +222,14 @@ module MiniTest
begin
yield
should_raise = true
+ rescue MiniTest::Skip => e
+ details = "#{msg}#{mu_pp(exp)} exception expected, not"
+
+ if exp.include? MiniTest::Skip then
+ return e
+ else
+ raise e
+ end
rescue Exception => e
details = "#{msg}#{mu_pp(exp)} exception expected, not"
assert(exp.any? { |ex|
@@ -261,6 +269,7 @@ module MiniTest
# +send_ary+ is a receiver, message and arguments.
#
# Fails unless the call returns a true value
+ # TODO: I should prolly remove this from specs
def assert_send send_ary, m = nil
recv, msg, *args = send_ary
@@ -503,7 +512,7 @@ module MiniTest
end
class Unit
- VERSION = "1.7.1" # :nodoc:
+ VERSION = "1.7.2" # :nodoc:
attr_accessor :report, :failures, :errors, :skips # :nodoc:
attr_accessor :test_count, :assertion_count # :nodoc: