diff options
Diffstat (limited to 'lib/minitest')
-rw-r--r-- | lib/minitest/spec.rb | 15 | ||||
-rw-r--r-- | lib/minitest/unit.rb | 41 |
2 files changed, 50 insertions, 6 deletions
diff --git a/lib/minitest/spec.rb b/lib/minitest/spec.rb index 59b4c6536c..43f1c6ca09 100644 --- a/lib/minitest/spec.rb +++ b/lib/minitest/spec.rb @@ -55,7 +55,7 @@ Object.infect_with_assertions(:must, :wont, /_in_/ => '_be_within_', /_operator/ => '_be', /_includes/ => '_include', - /(must|wont)_(.*_of|nil|empty)/ => '\1_be_\2', + /(must|wont)_(.*_of|nil|silent|empty)/ => '\1_be_\2', /must_raises/ => 'must_raise') class Object @@ -84,6 +84,7 @@ module Kernel stack.push cls cls.class_eval(&block) stack.pop + cls end private :describe end @@ -203,6 +204,10 @@ class MiniTest::Spec < MiniTest::Unit::TestCase # See MiniTest::Assertions#assert_same ## + # :method: must_be_silent + # See MiniTest::Assertions#assert_silent + + ## # :method: must_be_within_delta # See MiniTest::Assertions#assert_in_delta @@ -223,6 +228,10 @@ class MiniTest::Spec < MiniTest::Unit::TestCase # See MiniTest::Assertions#assert_match ## + # :method: must_output + # See MiniTest::Assertions#assert_output + + ## # :method: must_raise # See MiniTest::Assertions#assert_raises @@ -271,6 +280,10 @@ 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 3e038c818f..c45dec3fc4 100644 --- a/lib/minitest/unit.rb +++ b/lib/minitest/unit.rb @@ -195,6 +195,24 @@ module MiniTest end ## + # Fails if stdout or stderr do not output the expected results. + # Pass in nil if you don't care about that streams output. Pass in + # "" if you require it to be silent. + # + # See also: #assert_silent + + def assert_output stdout = nil, stderr = nil + out, err = capture_io do + yield + end + + x = assert_equal stdout, out, "In stdout" if stdout + y = assert_equal stderr, err, "In stderr" if stderr + + (!stdout || x) && (!stderr || y) + end + + ## # Fails unless the block raises one of +exp+ def assert_raises *exp @@ -252,6 +270,17 @@ module MiniTest end ## + # Fails if the block outputs anything to stderr or stdout. + # + # See also: #assert_output + + def assert_silent + assert_output "", "" do + yield + end + end + + ## # Fails unless the block throws +sym+ def assert_throws sym, msg = nil @@ -474,7 +503,7 @@ module MiniTest end class Unit - VERSION = "1.6.0" # :nodoc: + VERSION = "1.7.1" # :nodoc: attr_accessor :report, :failures, :errors, :skips # :nodoc: attr_accessor :test_count, :assertion_count # :nodoc: @@ -588,6 +617,12 @@ module MiniTest srand seed + help = ["--seed", seed] + help.push "--verbose" if @verbose + help.push("--name", options[:filter].inspect) if options[:filter] + + @@out.puts "Test run options: #{help.join(" ")}" + @@out.puts @@out.puts "Loaded suite #{$0.sub(/\.rb$/, '')}\nStarted" start = Time.now @@ -606,10 +641,6 @@ module MiniTest @@out.puts - help = ["--seed", seed] - help.push "--verbose" if @verbose - help.push("--name", options[:filter].inspect) if options[:filter] - @@out.puts "Test run options: #{help.join(" ")}" return failures + errors if @test_count > 0 # or return nil... |