minitest 4.6.2 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,13 @@
1
+ === 4.7.0 / 2013-03-18
2
+
3
+ * 1 major enhancement:
4
+
5
+ * Refactored MiniTest::Spec into MiniTest::Spec::DSL.
6
+
7
+ * 1 bug fix:
8
+
9
+ * Removed $DEBUG handler that detected when test/unit and minitest were both loaded. (tenderlove)
10
+
1
11
  === 4.6.2 / 2013-02-27
2
12
 
3
13
  * 1 minor enhancement:
data/README.txt CHANGED
@@ -104,7 +104,7 @@ Given that you'd like to test the following class:
104
104
  def test_that_it_will_not_blend
105
105
  refute_match /^no/i, @meme.will_it_blend?
106
106
  end
107
-
107
+
108
108
  def test_that_will_be_skipped
109
109
  skip "test this later"
110
110
  end
@@ -283,55 +283,55 @@ fixture loading:
283
283
 
284
284
  == Known Extensions:
285
285
 
286
- capybara_minitest_spec :: Bridge between Capybara RSpec matchers and MiniTest::Spec expectations (e.g. page.must_have_content('Title')).
287
- minispec-metadata :: Metadata for describe/it blocks
288
- (e.g. `it 'requires JS driver', js: true do`)
289
- minitest-ansi :: Colorize minitest output with ANSI colors.
290
- minitest-around :: Around block for minitest. An alternative to setup/teardown dance.
291
- minitest-capistrano :: Assertions and expectations for testing Capistrano recipes
292
- minitest-capybara :: Capybara matchers support for minitest unit and spec
293
- minitest-chef-handler :: Run Minitest suites as Chef report handlers
294
- minitest-ci :: CI reporter plugin for MiniTest.
295
- minitest-colorize :: Colorize MiniTest output and show failing tests instantly.
296
- minitest-context :: Defines contexts for code reuse in MiniTest
297
- specs that share common expectations.
298
- minitest-debugger :: Wraps assert so failed assertions drop into
299
- the ruby debugger.
300
- minitest-display :: Patches MiniTest to allow for an easily configurable output.
301
- minitest-emoji :: Print out emoji for your test passes, fails, and skips.
302
- minitest-excludes :: Clean API for excluding certain tests you
303
- don't want to run under certain conditions.
304
- minitest-firemock :: Makes your MiniTest mocks more resilient.
286
+ capybara_minitest_spec :: Bridge between Capybara RSpec matchers and MiniTest::Spec expectations (e.g. page.must_have_content('Title')).
287
+ minispec-metadata :: Metadata for describe/it blocks
288
+ (e.g. `it 'requires JS driver', js: true do`)
289
+ minitest-ansi :: Colorize minitest output with ANSI colors.
290
+ minitest-around :: Around block for minitest. An alternative to setup/teardown dance.
291
+ minitest-capistrano :: Assertions and expectations for testing Capistrano recipes
292
+ minitest-capybara :: Capybara matchers support for minitest unit and spec
293
+ minitest-chef-handler :: Run Minitest suites as Chef report handlers
294
+ minitest-ci :: CI reporter plugin for MiniTest.
295
+ minitest-colorize :: Colorize MiniTest output and show failing tests instantly.
296
+ minitest-context :: Defines contexts for code reuse in MiniTest
297
+ specs that share common expectations.
298
+ minitest-debugger :: Wraps assert so failed assertions drop into
299
+ the ruby debugger.
300
+ minitest-display :: Patches MiniTest to allow for an easily configurable output.
301
+ minitest-emoji :: Print out emoji for your test passes, fails, and skips.
302
+ minitest-excludes :: Clean API for excluding certain tests you
303
+ don't want to run under certain conditions.
304
+ minitest-firemock :: Makes your MiniTest mocks more resilient.
305
305
  minitest-great_expectations :: Generally useful additions to minitest's assertions and expectations
306
- minitest-growl :: Test notifier for minitest via growl.
307
- minitest-instrument :: Instrument ActiveSupport::Notifications when
308
- test method is executed
309
- minitest-instrument-db :: Store information about speed of test
310
- execution provided by minitest-instrument in database
311
- minitest-libnotify :: Test notifier for minitest via libnotify.
312
- minitest-macruby :: Provides extensions to minitest for macruby UI testing.
313
- minitest-matchers :: Adds support for RSpec-style matchers to minitest.
314
- minitest-metadata :: Annotate tests with metadata (key-value).
315
- minitest-mongoid :: Mongoid assertion matchers for MiniTest
316
- minitest-must_not :: Provides must_not as an alias for wont in MiniTest
317
- minitest-nc :: Test notifier for minitest via Mountain Lion's Notification Center
318
- minitest-predicates :: Adds support for .predicate? methods
319
- minitest-rails :: MiniTest integration for Rails 3.x
320
- minitest-rails-capybara :: Capybara integration for MiniTest::Rails
321
- minitest-reporters :: Create customizable MiniTest output formats
322
- minitest-rg :: redgreen minitest
323
- minitest-should_syntax :: RSpec-style +x.should == y+ assertions for MiniTest
324
- minitest-shouldify :: Adding all manner of shoulds to MiniTest (bad idea)
325
- minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond
326
- minitest-spec-rails :: Drop in MiniTest::Spec superclass for ActiveSupport::TestCase.
327
- minitest-stub-const :: Stub constants for the duration of a block
328
- minitest-tags :: add tags for minitest
329
- minitest-wscolor :: Yet another test colorizer.
330
- minitest_owrapper :: Get tests results as a TestResult object.
331
- minitest_should :: Shoulda style syntax for minitest test::unit.
332
- minitest_tu_shim :: minitest_tu_shim bridges between test/unit and minitest.
333
- mongoid-minitest :: MiniTest matchers for Mongoid.
334
- pry-rescue :: A pry plugin w/ minitest support. See pry-rescue/minitest.rb.
306
+ minitest-growl :: Test notifier for minitest via growl.
307
+ minitest-implicit-subject :: Implicit declaration of the test subject.
308
+ minitest-instrument :: Instrument ActiveSupport::Notifications when
309
+ test method is executed
310
+ minitest-instrument-db :: Store information about speed of test
311
+ execution provided by minitest-instrument in database
312
+ minitest-libnotify :: Test notifier for minitest via libnotify.
313
+ minitest-macruby :: Provides extensions to minitest for macruby UI testing.
314
+ minitest-matchers :: Adds support for RSpec-style matchers to minitest.
315
+ minitest-metadata :: Annotate tests with metadata (key-value).
316
+ minitest-mongoid :: Mongoid assertion matchers for MiniTest
317
+ minitest-must_not :: Provides must_not as an alias for wont in MiniTest
318
+ minitest-nc :: Test notifier for minitest via Mountain Lion's Notification Center
319
+ minitest-predicates :: Adds support for .predicate? methods
320
+ minitest-rails :: MiniTest integration for Rails 3.x
321
+ minitest-rails-capybara :: Capybara integration for MiniTest::Rails
322
+ minitest-reporters :: Create customizable MiniTest output formats
323
+ minitest-should_syntax :: RSpec-style +x.should == y+ assertions for MiniTest
324
+ minitest-shouldify :: Adding all manner of shoulds to MiniTest (bad idea)
325
+ minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond
326
+ minitest-spec-rails :: Drop in MiniTest::Spec superclass for ActiveSupport::TestCase.
327
+ minitest-stub-const :: Stub constants for the duration of a block
328
+ minitest-tags :: add tags for minitest
329
+ minitest-wscolor :: Yet another test colorizer.
330
+ minitest_owrapper :: Get tests results as a TestResult object.
331
+ minitest_should :: Shoulda style syntax for minitest test::unit.
332
+ minitest_tu_shim :: minitest_tu_shim bridges between test/unit and minitest.
333
+ mongoid-minitest :: MiniTest matchers for Mongoid.
334
+ pry-rescue :: A pry plugin w/ minitest support. See pry-rescue/minitest.rb.
335
335
 
336
336
  == Unknown Extensions:
337
337
 
@@ -372,7 +372,7 @@ the gem, but you'll need to activate the gem explicitly to use it:
372
372
  require 'rubygems'
373
373
  gem 'minitest' # ensures you're using the gem, and not the built in MT
374
374
  require 'minitest/autorun'
375
-
375
+
376
376
  # ... usual testing stuffs ...
377
377
 
378
378
  DO NOTE: There is a serious problem with the way that ruby 1.9/2.0
@@ -59,7 +59,7 @@ module Kernel # :nodoc:
59
59
  def describe desc, additional_desc = nil, &block # :doc:
60
60
  stack = MiniTest::Spec.describe_stack
61
61
  name = [stack.last, desc, additional_desc].compact.join("::")
62
- sclas = stack.last || if Class === self && self < MiniTest::Spec then
62
+ sclas = stack.last || if Class === self && is_a?(MiniTest::Spec::DSL) then
63
63
  self
64
64
  else
65
65
  MiniTest::Spec.spec_type desc
@@ -81,173 +81,184 @@ end
81
81
  # For a list of expectations, see MiniTest::Expectations.
82
82
 
83
83
  class MiniTest::Spec < MiniTest::Unit::TestCase
84
- ##
85
- # Contains pairs of matchers and Spec classes to be used to
86
- # calculate the superclass of a top-level describe. This allows for
87
- # automatically customizable spec types.
88
- #
89
- # See: register_spec_type and spec_type
90
-
91
- TYPES = [[//, MiniTest::Spec]]
92
-
93
- ##
94
- # Register a new type of spec that matches the spec's description.
95
- # This method can take either a Regexp and a spec class or a spec
96
- # class and a block that takes the description and returns true if
97
- # it matches.
98
- #
99
- # Eg:
100
- #
101
- # register_spec_type(/Controller$/, MiniTest::Spec::Rails)
102
- #
103
- # or:
104
- #
105
- # register_spec_type(MiniTest::Spec::RailsModel) do |desc|
106
- # desc.superclass == ActiveRecord::Base
107
- # end
108
-
109
- def self.register_spec_type(*args, &block)
110
- if block then
111
- matcher, klass = block, args.first
112
- else
113
- matcher, klass = *args
114
- end
115
- TYPES.unshift [matcher, klass]
116
- end
117
84
 
118
85
  ##
119
- # Figure out the spec class to use based on a spec's description. Eg:
120
- #
121
- # spec_type("BlahController") # => MiniTest::Spec::Rails
122
-
123
- def self.spec_type desc
124
- TYPES.find { |matcher, klass|
125
- if matcher.respond_to? :call then
126
- matcher.call desc
86
+ # Oh look! A MiniTest::Spec::DSL module! Eat your heart out DHH.
87
+
88
+ module DSL
89
+ ##
90
+ # Contains pairs of matchers and Spec classes to be used to
91
+ # calculate the superclass of a top-level describe. This allows for
92
+ # automatically customizable spec types.
93
+ #
94
+ # See: register_spec_type and spec_type
95
+
96
+ TYPES = [[//, MiniTest::Spec]]
97
+
98
+ ##
99
+ # Register a new type of spec that matches the spec's description.
100
+ # This method can take either a Regexp and a spec class or a spec
101
+ # class and a block that takes the description and returns true if
102
+ # it matches.
103
+ #
104
+ # Eg:
105
+ #
106
+ # register_spec_type(/Controller$/, MiniTest::Spec::Rails)
107
+ #
108
+ # or:
109
+ #
110
+ # register_spec_type(MiniTest::Spec::RailsModel) do |desc|
111
+ # desc.superclass == ActiveRecord::Base
112
+ # end
113
+
114
+ def register_spec_type(*args, &block)
115
+ if block then
116
+ matcher, klass = block, args.first
127
117
  else
128
- matcher === desc.to_s
118
+ matcher, klass = *args
129
119
  end
130
- }.last
131
- end
132
-
133
- @@describe_stack = []
134
- def self.describe_stack # :nodoc:
135
- @@describe_stack
136
- end
120
+ TYPES.unshift [matcher, klass]
121
+ end
137
122
 
138
- ##
139
- # Returns the children of this spec.
123
+ ##
124
+ # Figure out the spec class to use based on a spec's description. Eg:
125
+ #
126
+ # spec_type("BlahController") # => MiniTest::Spec::Rails
140
127
 
141
- def self.children
142
- @children ||= []
143
- end
128
+ def spec_type desc
129
+ TYPES.find { |matcher, klass|
130
+ if matcher.respond_to? :call then
131
+ matcher.call desc
132
+ else
133
+ matcher === desc.to_s
134
+ end
135
+ }.last
136
+ end
144
137
 
145
- def self.nuke_test_methods! # :nodoc:
146
- self.public_instance_methods.grep(/^test_/).each do |name|
147
- self.send :undef_method, name
138
+ @@describe_stack = []
139
+ def describe_stack # :nodoc:
140
+ @@describe_stack
148
141
  end
149
- end
150
142
 
151
- ##
152
- # Define a 'before' action. Inherits the way normal methods should.
153
- #
154
- # NOTE: +type+ is ignored and is only there to make porting easier.
155
- #
156
- # Equivalent to MiniTest::Unit::TestCase#setup.
143
+ ##
144
+ # Returns the children of this spec.
157
145
 
158
- def self.before type = nil, &block
159
- define_method :setup do
160
- super()
161
- self.instance_eval(&block)
146
+ def children
147
+ @children ||= []
162
148
  end
163
- end
164
149
 
165
- ##
166
- # Define an 'after' action. Inherits the way normal methods should.
167
- #
168
- # NOTE: +type+ is ignored and is only there to make porting easier.
169
- #
170
- # Equivalent to MiniTest::Unit::TestCase#teardown.
150
+ def nuke_test_methods! # :nodoc:
151
+ self.public_instance_methods.grep(/^test_/).each do |name|
152
+ self.send :undef_method, name
153
+ end
154
+ end
171
155
 
172
- def self.after type = nil, &block
173
- define_method :teardown do
174
- self.instance_eval(&block)
175
- super()
156
+ ##
157
+ # Define a 'before' action. Inherits the way normal methods should.
158
+ #
159
+ # NOTE: +type+ is ignored and is only there to make porting easier.
160
+ #
161
+ # Equivalent to MiniTest::Unit::TestCase#setup.
162
+
163
+ def before type = nil, &block
164
+ define_method :setup do
165
+ super()
166
+ self.instance_eval(&block)
167
+ end
176
168
  end
177
- end
178
169
 
179
- ##
180
- # Define an expectation with name +desc+. Name gets morphed to a
181
- # proper test method name. For some freakish reason, people who
182
- # write specs don't like class inheritance, so this goes way out of
183
- # its way to make sure that expectations aren't inherited.
184
- #
185
- # This is also aliased to #specify and doesn't require a +desc+ arg.
186
- #
187
- # Hint: If you _do_ want inheritence, use minitest/unit. You can mix
188
- # and match between assertions and expectations as much as you want.
170
+ ##
171
+ # Define an 'after' action. Inherits the way normal methods should.
172
+ #
173
+ # NOTE: +type+ is ignored and is only there to make porting easier.
174
+ #
175
+ # Equivalent to MiniTest::Unit::TestCase#teardown.
176
+
177
+ def after type = nil, &block
178
+ define_method :teardown do
179
+ self.instance_eval(&block)
180
+ super()
181
+ end
182
+ end
183
+
184
+ ##
185
+ # Define an expectation with name +desc+. Name gets morphed to a
186
+ # proper test method name. For some freakish reason, people who
187
+ # write specs don't like class inheritance, so this goes way out of
188
+ # its way to make sure that expectations aren't inherited.
189
+ #
190
+ # This is also aliased to #specify and doesn't require a +desc+ arg.
191
+ #
192
+ # Hint: If you _do_ want inheritence, use minitest/unit. You can mix
193
+ # and match between assertions and expectations as much as you want.
194
+
195
+ def it desc = "anonymous", &block
196
+ block ||= proc { skip "(no tests defined)" }
189
197
 
190
- def self.it desc = "anonymous", &block
191
- block ||= proc { skip "(no tests defined)" }
198
+ @specs ||= 0
199
+ @specs += 1
192
200
 
193
- @specs ||= 0
194
- @specs += 1
201
+ name = "test_%04d_%s" % [ @specs, desc ]
195
202
 
196
- name = "test_%04d_%s" % [ @specs, desc ]
203
+ define_method name, &block
197
204
 
198
- define_method name, &block
205
+ self.children.each do |mod|
206
+ mod.send :undef_method, name if mod.public_method_defined? name
207
+ end
199
208
 
200
- self.children.each do |mod|
201
- mod.send :undef_method, name if mod.public_method_defined? name
209
+ name
202
210
  end
203
211
 
204
- name
205
- end
212
+ ##
213
+ # Essentially, define an accessor for +name+ with +block+.
214
+ #
215
+ # Why use let instead of def? I honestly don't know.
206
216
 
207
- ##
208
- # Essentially, define an accessor for +name+ with +block+.
209
- #
210
- # Why use let instead of def? I honestly don't know.
217
+ def let name, &block
218
+ define_method name do
219
+ @_memoized ||= {}
220
+ @_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
221
+ end
222
+ end
211
223
 
212
- def self.let name, &block
213
- define_method name do
214
- @_memoized ||= {}
215
- @_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
224
+ ##
225
+ # Another lazy man's accessor generator. Made even more lazy by
226
+ # setting the name for you to +subject+.
227
+
228
+ def subject &block
229
+ let :subject, &block
216
230
  end
217
- end
218
231
 
219
- ##
220
- # Another lazy man's accessor generator. Made even more lazy by
221
- # setting the name for you to +subject+.
232
+ def create name, desc # :nodoc:
233
+ cls = Class.new(self) do
234
+ @name = name
235
+ @desc = desc
222
236
 
223
- def self.subject &block
224
- let :subject, &block
225
- end
237
+ nuke_test_methods!
238
+ end
226
239
 
227
- def self.create name, desc # :nodoc:
228
- cls = Class.new(self) do
229
- @name = name
230
- @desc = desc
240
+ children << cls
231
241
 
232
- nuke_test_methods!
242
+ cls
233
243
  end
234
244
 
235
- children << cls
236
-
237
- cls
238
- end
245
+ def name # :nodoc:
246
+ defined?(@name) ? @name : super
247
+ end
239
248
 
240
- def self.to_s # :nodoc:
241
- defined?(@name) ? @name : super
242
- end
249
+ def to_s # :nodoc:
250
+ name # Can't alias due to 1.8.7, not sure why
251
+ end
243
252
 
244
- # :stopdoc:
245
- class << self
253
+ # :stopdoc:
246
254
  attr_reader :desc
247
255
  alias :specify :it
248
- alias :name :to_s
256
+ # :startdoc:
249
257
  end
250
- # :startdoc:
258
+
259
+ extend DSL
260
+
261
+ TYPES = DSL::TYPES
251
262
  end
252
263
 
253
264
  ##
@@ -220,7 +220,7 @@ module MiniTest
220
220
 
221
221
  def assert_equal exp, act, msg = nil
222
222
  msg = message(msg, "") { diff exp, act }
223
- assert(exp == act, msg)
223
+ assert exp == act, msg
224
224
  end
225
225
 
226
226
  ##
@@ -726,7 +726,7 @@ module MiniTest
726
726
  end
727
727
 
728
728
  class Unit # :nodoc:
729
- VERSION = "4.6.2" # :nodoc:
729
+ VERSION = "4.7.0" # :nodoc:
730
730
 
731
731
  attr_accessor :report, :failures, :errors, :skips # :nodoc:
732
732
  attr_accessor :test_count, :assertion_count # :nodoc:
@@ -1393,16 +1393,3 @@ module MiniTest
1393
1393
  end # module MiniTest
1394
1394
 
1395
1395
  Minitest = MiniTest # :nodoc: because ugh... I typo this all the time
1396
-
1397
- if $DEBUG then
1398
- module Test # :nodoc:
1399
- module Unit # :nodoc:
1400
- class TestCase # :nodoc:
1401
- def self.inherited x # :nodoc:
1402
- # this helps me ferret out porting issues
1403
- raise "Using minitest and test/unit in the same process: #{x}"
1404
- end
1405
- end
1406
- end
1407
- end
1408
- end
@@ -3,7 +3,11 @@ require "minitest/autorun"
3
3
  require "stringio"
4
4
 
5
5
  class MiniSpecA < MiniTest::Spec; end
6
- class MiniSpecB < MiniTest::Spec; end
6
+ class MiniSpecB < MiniTest::Unit::TestCase; extend MiniTest::Spec::DSL; end
7
+ class MiniSpecC < MiniSpecB; end
8
+ class NamedExampleA < MiniSpecA; end
9
+ class NamedExampleB < MiniSpecB; end
10
+ class NamedExampleC < MiniSpecC; end
7
11
  class ExampleA; end
8
12
  class ExampleB < ExampleA; end
9
13
 
@@ -650,6 +654,26 @@ class TestMeta < MiniTest::Unit::TestCase
650
654
  MiniTest::Spec::TYPES.replace original_types
651
655
  end
652
656
 
657
+ def test_name
658
+ spec_a = describe ExampleA do; end
659
+ spec_b = describe ExampleB, :random_method do; end
660
+
661
+ assert_equal "ExampleA", spec_a.name
662
+ assert_equal "ExampleB::random_method", spec_b.name
663
+ end
664
+
665
+ def test_name2
666
+ assert_equal "NamedExampleA", NamedExampleA.name
667
+ assert_equal "NamedExampleB", NamedExampleB.name
668
+ assert_equal "NamedExampleC", NamedExampleC.name
669
+
670
+ spec_a = describe ExampleA do; end
671
+ spec_b = describe ExampleB, :random_method do; end
672
+
673
+ assert_equal "ExampleA", spec_a.name
674
+ assert_equal "ExampleB::random_method", spec_b.name
675
+ end
676
+
653
677
  def test_structure
654
678
  x, y, z, * = util_structure
655
679
 
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease:
6
6
  segments:
7
7
  - 4
8
- - 6
9
- - 2
10
- version: 4.6.2
8
+ - 7
9
+ - 0
10
+ version: 4.7.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Davis
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FBHgymkyj/AOSqKRIpXPhjC6
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2013-02-28 00:00:00 Z
39
+ date: 2013-03-18 00:00:00 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rdoc
metadata.gz.sig CHANGED
Binary file