1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Imported minitest 2.5.0 (r6557)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ryan 2011-08-23 21:47:25 +00:00
parent 885f5fa2b0
commit 2c43b9664b
9 changed files with 1085 additions and 248 deletions

View file

@ -12,6 +12,7 @@ MiniTest::Unit.autorun
module MyModule; end
class AnError < StandardError; include MyModule; end
class ImmutableString < String; def inspect; super.freeze; end; end
class TestMiniTestUnit < MiniTest::Unit::TestCase
pwd = Pathname.new(File.expand_path(Dir.pwd))
@ -46,12 +47,12 @@ Finished tests in 0.00
MiniTest::Unit::TestCase.reset
@tu = MiniTest::Unit.new
@output = StringIO.new("")
MiniTest::Unit.runner = nil # protect the outer runner from the inner tests
MiniTest::Unit.output = @output
end
def teardown
MiniTest::Unit.output = $stdout
MiniTest::Unit.runner = nil
Object.send :remove_const, :ATestCase if defined? ATestCase
end
@ -442,6 +443,149 @@ Finished tests in 0.00
assert_report expected
end
def with_overridden_include
Class.class_eval do
def inherited_with_hacks klass
throw :inherited_hook
end
alias inherited_without_hacks inherited
alias inherited inherited_with_hacks
alias IGNORE_ME! inherited # 1.8 bug. god I love venture bros
end
yield
ensure
Class.class_eval do
alias inherited inherited_without_hacks
undef_method :inherited_with_hacks
undef_method :inherited_without_hacks
end
refute_respond_to Class, :inherited_with_hacks
refute_respond_to Class, :inherited_without_hacks
end
def test_inherited_hook_plays_nice_with_others
with_overridden_include do
assert_throws :inherited_hook do
Class.new MiniTest::Unit::TestCase
end
end
end
def test_setup_hooks
call_order = []
tc = Class.new(MiniTest::Unit::TestCase) do
define_method :setup do
super()
call_order << :method
end
define_method :test2 do
call_order << :test2
end
define_method :test1 do
call_order << :test1
end
end
tc.add_setup_hook lambda { call_order << :proc }
argument = nil
tc.add_setup_hook do |arg|
argument = arg
call_order << :block
end
@tu.run %w[--seed 42]
assert_kind_of tc, argument
expected = [:method, :proc, :block, :test1,
:method, :proc, :block, :test2]
assert_equal expected, call_order
end
def test_teardown_hooks
call_order = []
tc = Class.new(MiniTest::Unit::TestCase) do
define_method :teardown do
super()
call_order << :method
end
define_method :test2 do
call_order << :test2
end
define_method :test1 do
call_order << :test1
end
end
tc.add_teardown_hook lambda { call_order << :proc }
argument = nil
tc.add_teardown_hook do |arg|
argument = arg
call_order << :block
end
@tu.run %w[--seed 42]
assert_kind_of tc, argument
expected = [:test1, :block, :proc, :method,
:test2, :block, :proc, :method]
assert_equal expected, call_order
end
def test_setup_and_teardown_hooks_survive_inheritance
call_order = []
parent = Class.new(MiniTest::Unit::TestCase) do
define_method :setup do
super()
call_order << :setup_method
end
define_method :teardown do
super()
call_order << :teardown_method
end
define_method :test_something do
call_order << :test
end
end
parent.add_setup_hook { call_order << :setup_hook }
parent.add_teardown_hook { call_order << :teardown_hook }
_ = Class.new parent
parent.add_setup_hook { call_order << :setup_after }
parent.add_teardown_hook { call_order << :teardown_after }
@tu.run %w[--seed 42]
# Once for the parent class, once for the child
expected = [:setup_method, :setup_hook, :setup_after, :test,
:teardown_after, :teardown_hook, :teardown_method] * 2
assert_equal expected, call_order
end
def util_expand_bt bt
if RUBY_VERSION =~ /^1\.9/ then
bt.map { |f| (f =~ /^\./) ? File.expand_path(f) : f }
@ -1084,6 +1228,11 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
@tc.pass
end
def test_prints
printer = Class.new { extend MiniTest::Assertions }
@tc.assert_equal '"test"', printer.mu_pp(ImmutableString.new 'test')
end
def test_refute
@assertion_count = 2