summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-27 20:51:23 +0000
committerryan <ryan@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-27 20:51:23 +0000
commit1cbf898172a7ea25ca2ea10503fb7f696d8db0b2 (patch)
tree539e8303fa439efb5583993080b8144ad34f10cd
parent4985bfdc9f3f0780b20d445ce6aa0f3bdb0aa355 (diff)
Imported minitest 1.3.1 r4505.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--lib/minitest/spec.rb1
-rw-r--r--lib/minitest/unit.rb22
-rw-r--r--test/minitest/test_mini_spec.rb1
-rw-r--r--test/minitest/test_mini_test.rb79
5 files changed, 95 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a0d2a425dc..85c9b643baa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Dec 28 05:44:44 2008 Ryan Davis <ryan@wrath.local>
+
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4505.
+ * test/minitest/*.rb: ditto.
+
Sun Dec 28 00:43:33 2008 Tanaka Akira <akr@fsij.org>
* runruby.rb: refactored to modify ENV as once.
@@ -1081,7 +1086,7 @@ Sat Dec 13 12:38:16 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
Sat Dec 13 09:17:33 2008 Ryan Davis <ryand-ruby@zenspider.com>
- * lib/minitest/*.rb: Imported minitest 1.3.2 r4503.
+ * lib/minitest/*.rb: Imported minitest 1.3.1 r4503.
* test/minitest/test_mini_test.rb: ditto.
* lib/miniunit/autorun.rb: added (as part of r4503).
diff --git a/lib/minitest/spec.rb b/lib/minitest/spec.rb
index 130910ed857..2158ec0d7ba 100644
--- a/lib/minitest/spec.rb
+++ b/lib/minitest/spec.rb
@@ -60,6 +60,7 @@ module Kernel
cls.class_eval(&block)
end
+ private :describe
end
class MiniTest::Spec < MiniTest::Unit::TestCase
diff --git a/lib/minitest/unit.rb b/lib/minitest/unit.rb
index cbec247d57a..e2fc134bdd4 100644
--- a/lib/minitest/unit.rb
+++ b/lib/minitest/unit.rb
@@ -116,9 +116,9 @@ module MiniTest
end
def assert_match exp, act, msg = nil
- msg = message(msg) { "Expected #{mu_pp(act)} to match #{mu_pp(exp)}" }
+ msg = message(msg) { "Expected #{mu_pp(exp)} to match #{mu_pp(act)}" }
assert_respond_to act, :"=~"
- (exp = /#{Regexp.escape(exp)}/) if String === exp && String === act
+ exp = /#{Regexp.escape(exp)}/ if String === exp && String === act
assert act =~ exp, msg
end
@@ -269,7 +269,7 @@ module MiniTest
msg = message(msg) { "Expected #{mu_pp(obj)} to not be an instance of #{cls}" }
flip = (Module === obj) && ! (Module === cls) # HACK for specs
obj, cls = cls, obj if flip
- refute cls === obj, msg
+ refute obj.instance_of?(cls), msg
end
def refute_kind_of cls, obj, msg = nil # TODO: merge with instance_of
@@ -280,7 +280,9 @@ module MiniTest
end
def refute_match exp, act, msg = nil
- msg = message(msg) { "Expected #{mu_pp(act)} to not match #{mu_pp(exp)}" }
+ msg = message(msg) { "Expected #{mu_pp(exp)} to not match #{mu_pp(act)}" }
+ assert_respond_to act, :"=~"
+ exp = /#{Regexp.escape(exp)}/ if String === exp && String === act
refute act =~ exp, msg
end
@@ -313,7 +315,7 @@ module MiniTest
end
class Unit
- VERSION = "1.3.2"
+ VERSION = "1.3.1"
attr_accessor :report, :failures, :errors, :skips
attr_accessor :test_count, :assertion_count
@@ -323,7 +325,6 @@ module MiniTest
def self.autorun
at_exit {
-p $!
return if $! # don't run if there was an exception
exit_code = MiniTest::Unit.new.run(ARGV)
exit false if exit_code && exit_code != 0
@@ -336,9 +337,12 @@ p $!
end
def location e
- e.backtrace.find { |s|
- s !~ /in .(assert|refute|flunk|pass|fail|raise)/
- }.sub(/:in .*$/, '')
+ last_before_assertion = ""
+ e.backtrace.reverse_each do |s|
+ break if s =~ /in .(assert|refute|flunk|pass|fail|raise)/
+ last_before_assertion = s
+ end
+ last_before_assertion.sub(/:in .*$/, '')
end
def puke klass, meth, e
diff --git a/test/minitest/test_mini_spec.rb b/test/minitest/test_mini_spec.rb
index 4fe5bad0487..f7cd60acda3 100644
--- a/test/minitest/test_mini_spec.rb
+++ b/test/minitest/test_mini_spec.rb
@@ -140,6 +140,7 @@ describe MiniTest::Spec do
end
it "needs to verify mismatch" do
+ @assertion_count = 6
"blah".wont_match(/\d+/).must_equal false
proc { "blah".wont_match(/\w+/) }.must_raise MiniTest::Assertion
end
diff --git a/test/minitest/test_mini_test.rb b/test/minitest/test_mini_test.rb
index d6493faf8ef..e539ee05c89 100644
--- a/test/minitest/test_mini_test.rb
+++ b/test/minitest/test_mini_test.rb
@@ -28,7 +28,7 @@ class TestMiniTest < MiniTest::Unit::TestCase
Object.send :remove_const, :ATestCase if defined? ATestCase
end
- pwd = Pathname.new(File.expand_path Dir.pwd)
+ pwd = Pathname.new(File.expand_path(Dir.pwd))
basedir = Pathname.new(File.expand_path(MiniTest::MINI_DIR)) + 'mini'
basedir = basedir.relative_path_from(pwd).to_s
MINITEST_BASE_DIR = basedir[/\A\./] ? basedir : "./#{basedir}"
@@ -96,6 +96,7 @@ class TestMiniTest < MiniTest::Unit::TestCase
assert_equal 'F', @tu.puke('SomeClass', 'method_name', exception)
assert_equal 1, @tu.failures
assert_match(/^Failure.*Oh no!/m, @tu.report.first)
+ assert_match("method_name(SomeClass) [unhappy]", @tu.report.first)
end
def test_class_puke_with_failure_and_flunk_in_backtrace
@@ -108,6 +109,72 @@ class TestMiniTest < MiniTest::Unit::TestCase
refute @tu.report.any?{|line| line =~ /in .flunk/}
end
+ def test_class_puke_with_assertion_failed_and_long_backtrace
+ bt = (["test/test_some_class.rb:615:in `method_name'",
+ "#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
+ "test/test_some_class.rb:615:in `each'",
+ "test/test_some_class.rb:614:in `test_method_name'",
+ "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
+ BT_MIDDLE +
+ ["#{MINITEST_BASE_DIR}/test.rb:29"])
+ bt = util_expand_bt bt
+
+ ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
+
+ exception = MiniTest::Assertion.new "Oh no!"
+ exception.set_backtrace bt
+ assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
+ assert_equal 1, @tu.failures
+ assert_match(/^Failure.*Oh no!/m, @tu.report.first)
+ assert_match("test_method_name(TestSomeClass) [#{ex_location}]", @tu.report.first)
+ end
+
+ def test_class_puke_with_assertion_failed_and_user_defined_assertions
+ bt = (["lib/test/my/util.rb:16:in `another_method_name'",
+ "#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
+ "lib/test/my/util.rb:15:in `block in assert_something'",
+ "lib/test/my/util.rb:14:in `each'",
+ "lib/test/my/util.rb:14:in `assert_something'",
+ "test/test_some_class.rb:615:in `each'",
+ "test/test_some_class.rb:614:in `test_method_name'",
+ "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
+ BT_MIDDLE +
+ ["#{MINITEST_BASE_DIR}/test.rb:29"])
+ bt = util_expand_bt bt
+
+ ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
+
+ exception = MiniTest::Assertion.new "Oh no!"
+ exception.set_backtrace bt
+ assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
+ assert_equal 1, @tu.failures
+ assert_match(/^Failure.*Oh no!/m, @tu.report.first)
+ assert_match("test_method_name(TestSomeClass) [#{ex_location}]", @tu.report.first)
+ end
+
+ def test_class_puke_with_flunk_and_user_defined_assertions
+ bt = (["lib/test/my/util.rb:16:in `flunk'",
+ "#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
+ "lib/test/my/util.rb:15:in `block in assert_something'",
+ "lib/test/my/util.rb:14:in `each'",
+ "lib/test/my/util.rb:14:in `assert_something'",
+ "test/test_some_class.rb:615:in `each'",
+ "test/test_some_class.rb:614:in `test_method_name'",
+ "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
+ BT_MIDDLE +
+ ["#{MINITEST_BASE_DIR}/test.rb:29"])
+ bt = util_expand_bt bt
+
+ ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
+
+ exception = MiniTest::Assertion.new "Oh no!"
+ exception.set_backtrace bt
+ assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
+ assert_equal 1, @tu.failures
+ assert_match(/^Failure.*Oh no!/m, @tu.report.first)
+ assert_match("test_method_name(TestSomeClass) [#{ex_location}]", @tu.report.first)
+ end
+
def test_class_puke_with_non_failure_exception
exception = Exception.new("Oh no again!")
assert_equal 'E', @tu.puke('SomeClass', 'method_name', exception)
@@ -465,13 +532,13 @@ class TestMiniTestTestCase < MiniTest::Unit::TestCase
def test_assert_match
@assertion_count = 2
- @tc.assert_match "blah blah blah", /\w+/
+ @tc.assert_match(/\w+/, "blah blah blah")
end
def test_assert_match_triggered
@assertion_count = 2
util_assert_triggered 'Expected /\d+/ to match "blah blah blah".' do
- @tc.assert_match "blah blah blah", /\d+/
+ @tc.assert_match(/\d+/, "blah blah blah")
end
end
@@ -795,12 +862,14 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
end
def test_refute_match
- @tc.refute_match "blah blah blah", /\d+/
+ @assertion_count = 2
+ @tc.refute_match(/\d+/, "blah blah blah")
end
def test_refute_match_triggered
+ @assertion_count = 2
util_assert_triggered 'Expected /\w+/ to not match "blah blah blah".' do
- @tc.refute_match "blah blah blah", /\w+/
+ @tc.refute_match(/\w+/, "blah blah blah")
end
end