ruby-changes:21053
From: ryan <ko1@a...>
Date: Sun, 28 Aug 2011 05:31:38 +0900 (JST)
Subject: [ruby-changes:21053] ryan:r33102 (trunk): Imported minitest 2.5.1 (r6596)
ryan 2011-08-28 05:30:57 +0900 (Sun, 28 Aug 2011) New Revision: 33102 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33102 Log: Imported minitest 2.5.1 (r6596) Modified files: trunk/ChangeLog trunk/lib/minitest/spec.rb trunk/lib/minitest/unit.rb trunk/test/minitest/test_minitest_spec.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 33101) +++ ChangeLog (revision 33102) @@ -1,3 +1,8 @@ +Sun Aug 28 05:29:50 2011 Ryan Davis <ryand-ruby@z...> + + * lib/minitest/*: Imported minitest 2.5.1 (r6596) + * test/minitest/*: ditto + Sat Aug 27 20:46:05 2011 Kazuki Tsujimoto <kazuki@c...> * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type Index: lib/minitest/unit.rb =================================================================== --- lib/minitest/unit.rb (revision 33101) +++ lib/minitest/unit.rb (revision 33102) @@ -620,7 +620,7 @@ end class Unit - VERSION = "2.5.0" # :nodoc: + VERSION = "2.5.1" # :nodoc: attr_accessor :report, :failures, :errors, :skips # :nodoc: attr_accessor :test_count, :assertion_count # :nodoc: Index: lib/minitest/spec.rb =================================================================== --- lib/minitest/spec.rb (revision 33101) +++ lib/minitest/spec.rb (revision 33102) @@ -94,11 +94,27 @@ TYPES = [[//, MiniTest::Spec]] ## - # Register a new type of spec that matches the spec's description. Eg: + # Register a new type of spec that matches the spec's description. + # This method can take either a Regexp and a spec class or a spec + # class and a block that takes the description and returns true if + # it matches. # - # register_spec_plugin(/Controller$/, MiniTest::Spec::Rails) + # Eg: + # + # register_spec_type(/Controller$/, MiniTest::Spec::Rails) + # + # or: + # + # register_spec_type(MiniTest::Spec::RailsModel) do |desc| + # desc.superclass == ActiveRecord::Base + # end - def self.register_spec_type matcher, klass + def self.register_spec_type(*args, &block) + if block then + matcher, klass = block, args.first + else + matcher, klass = *args + end TYPES.unshift [matcher, klass] end @@ -108,8 +124,13 @@ # spec_type("BlahController") # => MiniTest::Spec::Rails def self.spec_type desc - desc = desc.to_s - TYPES.find { |re, klass| re === desc }.last + TYPES.find { |matcher, klass| + if matcher.respond_to? :call then + matcher.call desc + else + matcher === desc.to_s + end + }.last end @@describe_stack = [] Index: test/minitest/test_minitest_spec.rb =================================================================== --- test/minitest/test_minitest_spec.rb (revision 33101) +++ test/minitest/test_minitest_spec.rb (revision 33102) @@ -7,6 +7,11 @@ require 'minitest/autorun' require 'stringio' +class MiniSpecA < MiniTest::Spec; end +class MiniSpecB < MiniTest::Spec; end +class ExampleA; end +class ExampleB < ExampleA; end + describe MiniTest::Spec do before do @assertion_count = 4 @@ -279,6 +284,38 @@ return x, y, z, before_list, after_list end + def test_register_spec_type + original_types = MiniTest::Spec::TYPES.dup + + assert_equal [[//, MiniTest::Spec]], MiniTest::Spec::TYPES + + MiniTest::Spec.register_spec_type(/woot/, TestMeta) + + p = lambda do |x| true end + MiniTest::Spec.register_spec_type TestMeta, &p + + keys = MiniTest::Spec::TYPES.map(&:first) + + assert_includes keys, /woot/ + assert_includes keys, p + ensure + MiniTest::Spec::TYPES.replace original_types + end + + def test_spec_type + original_types = MiniTest::Spec::TYPES.dup + + MiniTest::Spec.register_spec_type(/A$/, MiniSpecA) + MiniTest::Spec.register_spec_type MiniSpecB do |desc| + desc.superclass == ExampleA + end + + assert_equal MiniSpecA, MiniTest::Spec.spec_type(ExampleA) + assert_equal MiniSpecB, MiniTest::Spec.spec_type(ExampleB) + ensure + MiniTest::Spec::TYPES.replace original_types + end + def test_structure x, y, z, * = util_structure -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/