minitest 4.7.5 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/.autotest +1 -2
- data/History.txt +72 -21
- data/Manifest.txt +6 -0
- data/README.txt +57 -60
- data/design_rationale.rb +1 -1
- data/lib/hoe/minitest.rb +9 -5
- data/lib/minitest.rb +639 -0
- data/lib/minitest/assertions.rb +643 -0
- data/lib/minitest/autorun.rb +6 -6
- data/lib/minitest/benchmark.rb +92 -85
- data/lib/minitest/expectations.rb +268 -0
- data/lib/minitest/hell.rb +3 -5
- data/lib/minitest/mock.rb +3 -4
- data/lib/minitest/parallel_each.rb +59 -12
- data/lib/minitest/pride.rb +3 -111
- data/lib/minitest/pride_plugin.rb +143 -0
- data/lib/minitest/spec.rb +44 -312
- data/lib/minitest/test.rb +287 -0
- data/lib/minitest/unit.rb +33 -1407
- data/test/minitest/metametameta.rb +33 -30
- data/test/minitest/test_minitest_benchmark.rb +11 -9
- data/test/minitest/test_minitest_mock.rb +46 -48
- data/test/minitest/test_minitest_reporter.rb +245 -0
- data/test/minitest/test_minitest_spec.rb +46 -63
- data/test/minitest/test_minitest_unit.rb +213 -232
- metadata +12 -5
- metadata.gz.sig +0 -0
data/lib/minitest/hell.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
require "minitest/parallel_each"
|
2
2
|
|
3
|
-
|
4
|
-
class Minitest::Unit::TestCase
|
3
|
+
class Minitest::Test
|
5
4
|
class << self
|
6
|
-
alias :old_test_order :test_order
|
5
|
+
alias :old_test_order :test_order # :nodoc:
|
7
6
|
|
8
|
-
def test_order
|
7
|
+
def test_order # :nodoc:
|
9
8
|
:parallel
|
10
9
|
end
|
11
10
|
end
|
12
11
|
end
|
13
|
-
# :startdoc:
|
data/lib/minitest/mock.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
class MockExpectationError < StandardError; end # :nodoc:
|
2
2
|
|
3
|
-
|
4
|
-
# A simple and clean mock object framework.
|
5
|
-
|
6
|
-
module MiniTest # :nodoc:
|
3
|
+
module Minitest # :nodoc:
|
7
4
|
|
8
5
|
##
|
6
|
+
# A simple and clean mock object framework.
|
7
|
+
#
|
9
8
|
# All mock objects are an instance of Mock
|
10
9
|
|
11
10
|
class Mock
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# so all the goodies come along (tho not all are wrapped yet to
|
5
5
|
# return another ParallelEach instance).
|
6
6
|
|
7
|
-
class ParallelEach
|
7
|
+
class Minitest::ParallelEach
|
8
8
|
require 'thread'
|
9
9
|
include Enumerable
|
10
10
|
|
@@ -23,10 +23,6 @@ class ParallelEach
|
|
23
23
|
N.times { @queue << nil }
|
24
24
|
end
|
25
25
|
|
26
|
-
def grep pattern # :nodoc:
|
27
|
-
self.class.new super
|
28
|
-
end
|
29
|
-
|
30
26
|
def select(&block) # :nodoc:
|
31
27
|
self.class.new super
|
32
28
|
end
|
@@ -49,25 +45,76 @@ class ParallelEach
|
|
49
45
|
threads.map(&:join)
|
50
46
|
end
|
51
47
|
|
52
|
-
def count
|
48
|
+
def count # :nodoc:
|
53
49
|
[@queue.size - N, 0].max
|
54
50
|
end
|
55
51
|
|
56
|
-
alias_method :size, :count
|
52
|
+
alias_method :size, :count # :nodoc:
|
57
53
|
end
|
58
54
|
|
59
|
-
|
60
|
-
|
55
|
+
module Minitest
|
56
|
+
class << self
|
57
|
+
remove_method :__run
|
58
|
+
end
|
59
|
+
|
60
|
+
class Test
|
61
|
+
@mutex = Mutex.new
|
62
|
+
|
63
|
+
def self.synchronize # :nodoc:
|
64
|
+
if @mutex then # see parallel_each.rb
|
65
|
+
@mutex.synchronize { yield }
|
66
|
+
else
|
67
|
+
yield
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
alias :simple_capture_io :capture_io
|
72
|
+
|
73
|
+
def capture_io(&b)
|
74
|
+
Test.synchronize do
|
75
|
+
simple_capture_io(&b)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
alias :simple_capture_subprocess_io :capture_subprocess_io
|
80
|
+
|
81
|
+
def capture_subprocess_io(&b)
|
82
|
+
Test.synchronize do
|
83
|
+
simple_capture_subprocess_io(&b)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class Reporter
|
89
|
+
@mutex = Mutex.new
|
90
|
+
|
91
|
+
def self.synchronize # :nodoc:
|
92
|
+
if @mutex then # see parallel_each.rb
|
93
|
+
@mutex.synchronize { yield }
|
94
|
+
else
|
95
|
+
yield
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
alias :simple_record :record
|
100
|
+
|
101
|
+
def record result
|
102
|
+
Reporter.synchronize do
|
103
|
+
simple_record result
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
61
107
|
|
62
108
|
##
|
63
109
|
# Runs all the +suites+ for a given +type+. Runs suites declaring
|
64
110
|
# a test_order of +:parallel+ in parallel, and everything else
|
65
111
|
# serial.
|
66
112
|
|
67
|
-
def
|
113
|
+
def self.__run reporter, options
|
114
|
+
suites = Runnable.runnables
|
68
115
|
parallel, serial = suites.partition { |s| s.test_order == :parallel }
|
69
116
|
|
70
|
-
ParallelEach.new(parallel).map { |suite|
|
71
|
-
serial.map { |suite|
|
117
|
+
ParallelEach.new(parallel).map { |suite| suite.run reporter, options } +
|
118
|
+
serial.map { |suite| suite.run reporter, options }
|
72
119
|
end
|
73
120
|
end
|
data/lib/minitest/pride.rb
CHANGED
@@ -1,112 +1,4 @@
|
|
1
|
-
require "minitest
|
1
|
+
require "minitest"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
class PrideIO
|
7
|
-
|
8
|
-
# Start an escape sequence
|
9
|
-
ESC = "\e["
|
10
|
-
|
11
|
-
# End the escape sequence
|
12
|
-
NND = "#{ESC}0m"
|
13
|
-
|
14
|
-
# The IO we're going to pipe through.
|
15
|
-
attr_reader :io
|
16
|
-
|
17
|
-
def initialize io # :nodoc:
|
18
|
-
@io = io
|
19
|
-
# stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
|
20
|
-
# also reference http://en.wikipedia.org/wiki/ANSI_escape_code
|
21
|
-
@colors ||= (31..36).to_a
|
22
|
-
@size = @colors.size
|
23
|
-
@index = 0
|
24
|
-
# io.sync = true
|
25
|
-
end
|
26
|
-
|
27
|
-
##
|
28
|
-
# Wrap print to colorize the output.
|
29
|
-
|
30
|
-
def print o
|
31
|
-
case o
|
32
|
-
when "." then
|
33
|
-
io.print pride o
|
34
|
-
when "E", "F" then
|
35
|
-
io.print "#{ESC}41m#{ESC}37m#{o}#{NND}"
|
36
|
-
else
|
37
|
-
io.print o
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def puts(*o) # :nodoc:
|
42
|
-
o.map! { |s|
|
43
|
-
s.to_s.sub(/Finished tests/) {
|
44
|
-
@index = 0
|
45
|
-
'Fabulous tests'.split(//).map { |c|
|
46
|
-
pride(c)
|
47
|
-
}.join
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
super
|
52
|
-
end
|
53
|
-
|
54
|
-
##
|
55
|
-
# Color a string.
|
56
|
-
|
57
|
-
def pride string
|
58
|
-
string = "*" if string == "."
|
59
|
-
c = @colors[@index % @size]
|
60
|
-
@index += 1
|
61
|
-
"#{ESC}#{c}m#{string}#{NND}"
|
62
|
-
end
|
63
|
-
|
64
|
-
def method_missing msg, *args # :nodoc:
|
65
|
-
io.send(msg, *args)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
##
|
70
|
-
# If you thought the PrideIO was colorful...
|
71
|
-
#
|
72
|
-
# (Inspired by lolcat, but with clean math)
|
73
|
-
|
74
|
-
class PrideLOL < PrideIO
|
75
|
-
PI_3 = Math::PI / 3 # :nodoc:
|
76
|
-
|
77
|
-
def initialize io # :nodoc:
|
78
|
-
# walk red, green, and blue around a circle separated by equal thirds.
|
79
|
-
#
|
80
|
-
# To visualize, type this into wolfram-alpha:
|
81
|
-
#
|
82
|
-
# plot (3*sin(x)+3), (3*sin(x+2*pi/3)+3), (3*sin(x+4*pi/3)+3)
|
83
|
-
|
84
|
-
# 6 has wide pretty gradients. 3 == lolcat, about half the width
|
85
|
-
@colors = (0...(6 * 7)).map { |n|
|
86
|
-
n *= 1.0 / 6
|
87
|
-
r = (3 * Math.sin(n ) + 3).to_i
|
88
|
-
g = (3 * Math.sin(n + 2 * PI_3) + 3).to_i
|
89
|
-
b = (3 * Math.sin(n + 4 * PI_3) + 3).to_i
|
90
|
-
|
91
|
-
# Then we take rgb and encode them in a single number using base 6.
|
92
|
-
# For some mysterious reason, we add 16... to clear the bottom 4 bits?
|
93
|
-
# Yes... they're ugly.
|
94
|
-
|
95
|
-
36 * r + 6 * g + b + 16
|
96
|
-
}
|
97
|
-
|
98
|
-
super
|
99
|
-
end
|
100
|
-
|
101
|
-
##
|
102
|
-
# Make the string even more colorful. Damnit.
|
103
|
-
|
104
|
-
def pride string
|
105
|
-
c = @colors[@index % @size]
|
106
|
-
@index += 1
|
107
|
-
"#{ESC}38;5;#{c}m#{string}#{NND}"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
klass = ENV['TERM'] =~ /^xterm|-256color$/ ? PrideLOL : PrideIO
|
112
|
-
MiniTest::Unit.output = klass.new(MiniTest::Unit.output)
|
3
|
+
Minitest.load_plugins
|
4
|
+
Minitest::PrideIO.pride!
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require "minitest/autorun"
|
2
|
+
|
3
|
+
module Minitest
|
4
|
+
def self.plugin_pride_options opts, options # :nodoc:
|
5
|
+
opts.on "-p", "--pride", "Pride. Show your testing pride!" do
|
6
|
+
PrideIO.pride!
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.plugin_pride_init options # :nodoc:
|
11
|
+
if PrideIO.pride? then
|
12
|
+
klass = ENV["TERM"] =~ /^xterm|-256color$/ ? PrideLOL : PrideIO
|
13
|
+
io = klass.new options[:io]
|
14
|
+
|
15
|
+
self.reporter.reporters.grep(Minitest::Reporter).each do |rep|
|
16
|
+
rep.io = io
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Show your testing pride!
|
23
|
+
|
24
|
+
class PrideIO
|
25
|
+
##
|
26
|
+
# Activate the pride plugin. Called from both -p option and minitest/pride
|
27
|
+
|
28
|
+
def self.pride!
|
29
|
+
@pride = true
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Are we showing our testing pride?
|
34
|
+
|
35
|
+
def self.pride?
|
36
|
+
@pride ||= false
|
37
|
+
end
|
38
|
+
|
39
|
+
# Start an escape sequence
|
40
|
+
ESC = "\e["
|
41
|
+
|
42
|
+
# End the escape sequence
|
43
|
+
NND = "#{ESC}0m"
|
44
|
+
|
45
|
+
# The IO we're going to pipe through.
|
46
|
+
attr_reader :io
|
47
|
+
|
48
|
+
def initialize io # :nodoc:
|
49
|
+
@io = io
|
50
|
+
# stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
|
51
|
+
# also reference http://en.wikipedia.org/wiki/ANSI_escape_code
|
52
|
+
@colors ||= (31..36).to_a
|
53
|
+
@size = @colors.size
|
54
|
+
@index = 0
|
55
|
+
# io.sync = true
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# Wrap print to colorize the output.
|
60
|
+
|
61
|
+
def print o
|
62
|
+
case o
|
63
|
+
when "." then
|
64
|
+
io.print pride o
|
65
|
+
when "E", "F" then
|
66
|
+
io.print "#{ESC}41m#{ESC}37m#{o}#{NND}"
|
67
|
+
when "S" then
|
68
|
+
io.print pride o
|
69
|
+
else
|
70
|
+
io.print o
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def puts(*o) # :nodoc:
|
75
|
+
o.map! { |s|
|
76
|
+
s.to_s.sub(/Finished/) {
|
77
|
+
@index = 0
|
78
|
+
'Fabulous run'.split(//).map { |c|
|
79
|
+
pride(c)
|
80
|
+
}.join
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
super
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
# Color a string.
|
89
|
+
|
90
|
+
def pride string
|
91
|
+
string = "*" if string == "."
|
92
|
+
c = @colors[@index % @size]
|
93
|
+
@index += 1
|
94
|
+
"#{ESC}#{c}m#{string}#{NND}"
|
95
|
+
end
|
96
|
+
|
97
|
+
def method_missing msg, *args # :nodoc:
|
98
|
+
io.send(msg, *args)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
##
|
103
|
+
# If you thought the PrideIO was colorful...
|
104
|
+
#
|
105
|
+
# (Inspired by lolcat, but with clean math)
|
106
|
+
|
107
|
+
class PrideLOL < PrideIO
|
108
|
+
PI_3 = Math::PI / 3 # :nodoc:
|
109
|
+
|
110
|
+
def initialize io # :nodoc:
|
111
|
+
# walk red, green, and blue around a circle separated by equal thirds.
|
112
|
+
#
|
113
|
+
# To visualize, type this into wolfram-alpha:
|
114
|
+
#
|
115
|
+
# plot (3*sin(x)+3), (3*sin(x+2*pi/3)+3), (3*sin(x+4*pi/3)+3)
|
116
|
+
|
117
|
+
# 6 has wide pretty gradients. 3 == lolcat, about half the width
|
118
|
+
@colors = (0...(6 * 7)).map { |n|
|
119
|
+
n *= 1.0 / 6
|
120
|
+
r = (3 * Math.sin(n ) + 3).to_i
|
121
|
+
g = (3 * Math.sin(n + 2 * PI_3) + 3).to_i
|
122
|
+
b = (3 * Math.sin(n + 4 * PI_3) + 3).to_i
|
123
|
+
|
124
|
+
# Then we take rgb and encode them in a single number using base 6.
|
125
|
+
# For some mysterious reason, we add 16... to clear the bottom 4 bits?
|
126
|
+
# Yes... they're ugly.
|
127
|
+
|
128
|
+
36 * r + 6 * g + b + 16
|
129
|
+
}
|
130
|
+
|
131
|
+
super
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
135
|
+
# Make the string even more colorful. Damnit.
|
136
|
+
|
137
|
+
def pride string
|
138
|
+
c = @colors[@index % @size]
|
139
|
+
@index += 1
|
140
|
+
"#{ESC}38;5;#{c}m#{string}#{NND}"
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
data/lib/minitest/spec.rb
CHANGED
@@ -9,39 +9,26 @@ class Module # :nodoc:
|
|
9
9
|
def #{new_name} *args
|
10
10
|
case
|
11
11
|
when Proc === self then
|
12
|
-
|
12
|
+
Minitest::Spec.current.#{meth}(*args, &self)
|
13
13
|
when #{!!dont_flip} then
|
14
|
-
|
14
|
+
Minitest::Spec.current.#{meth}(self, *args)
|
15
15
|
else
|
16
|
-
|
16
|
+
Minitest::Spec.current.#{meth}(args.first, self, *args[1..-1])
|
17
17
|
end
|
18
18
|
end
|
19
19
|
EOM
|
20
20
|
end
|
21
|
-
|
22
|
-
##
|
23
|
-
# infect_with_assertions has been removed due to excessive clever.
|
24
|
-
# Use infect_an_assertion directly instead.
|
25
|
-
|
26
|
-
def infect_with_assertions(pos_prefix, neg_prefix,
|
27
|
-
skip_re,
|
28
|
-
dont_flip_re = /\c0/,
|
29
|
-
map = {})
|
30
|
-
abort "infect_with_assertions is dead. Use infect_an_assertion directly"
|
31
|
-
end
|
32
21
|
end
|
33
22
|
|
34
23
|
module Kernel # :nodoc:
|
35
24
|
##
|
36
25
|
# Describe a series of expectations for a given target +desc+.
|
37
26
|
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
# Defines a test class subclassing from either MiniTest::Spec or
|
27
|
+
# Defines a test class subclassing from either Minitest::Spec or
|
41
28
|
# from the surrounding describe's class. The surrounding class may
|
42
|
-
# subclass
|
29
|
+
# subclass Minitest::Spec manually in order to easily share code:
|
43
30
|
#
|
44
|
-
# class MySpec <
|
31
|
+
# class MySpec < Minitest::Spec
|
45
32
|
# # ... shared code ...
|
46
33
|
# end
|
47
34
|
#
|
@@ -55,14 +42,26 @@ module Kernel # :nodoc:
|
|
55
42
|
# end
|
56
43
|
# end
|
57
44
|
# end
|
45
|
+
#
|
46
|
+
# For more information on getting started with writing specs, see:
|
47
|
+
#
|
48
|
+
# http://www.rubyinside.com/a-minitestspec-tutorial-elegant-spec-style-testing-that-comes-with-ruby-5354.html
|
49
|
+
#
|
50
|
+
# For some suggestions on how to improve your specs, try:
|
51
|
+
#
|
52
|
+
# http://betterspecs.org
|
53
|
+
#
|
54
|
+
# but do note that several items there are debatable or specific to
|
55
|
+
# rspec.
|
56
|
+
|
58
57
|
|
59
58
|
def describe desc, additional_desc = nil, &block # :doc:
|
60
|
-
stack =
|
59
|
+
stack = Minitest::Spec.describe_stack
|
61
60
|
name = [stack.last, desc, additional_desc].compact.join("::")
|
62
|
-
sclas = stack.last || if Class === self && is_a?(
|
61
|
+
sclas = stack.last || if Class === self && is_a?(Minitest::Spec::DSL) then
|
63
62
|
self
|
64
63
|
else
|
65
|
-
|
64
|
+
Minitest::Spec.spec_type desc
|
66
65
|
end
|
67
66
|
|
68
67
|
cls = sclas.create name, desc
|
@@ -76,14 +75,23 @@ module Kernel # :nodoc:
|
|
76
75
|
end
|
77
76
|
|
78
77
|
##
|
79
|
-
#
|
78
|
+
# Minitest::Spec -- The faster, better, less-magical spec framework!
|
80
79
|
#
|
81
|
-
# For a list of expectations, see
|
80
|
+
# For a list of expectations, see Minitest::Expectations.
|
82
81
|
|
83
|
-
class
|
82
|
+
class Minitest::Spec < Minitest::Test
|
83
|
+
|
84
|
+
def self.current # :nodoc:
|
85
|
+
Thread.current[:current_spec]
|
86
|
+
end
|
87
|
+
|
88
|
+
def initialize name # :nodoc:
|
89
|
+
super
|
90
|
+
Thread.current[:current_spec] = self
|
91
|
+
end
|
84
92
|
|
85
93
|
##
|
86
|
-
# Oh look! A
|
94
|
+
# Oh look! A Minitest::Spec::DSL module! Eat your heart out DHH.
|
87
95
|
|
88
96
|
module DSL
|
89
97
|
##
|
@@ -93,7 +101,7 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
93
101
|
#
|
94
102
|
# See: register_spec_type and spec_type
|
95
103
|
|
96
|
-
TYPES = [[//,
|
104
|
+
TYPES = [[//, Minitest::Spec]]
|
97
105
|
|
98
106
|
##
|
99
107
|
# Register a new type of spec that matches the spec's description.
|
@@ -103,11 +111,11 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
103
111
|
#
|
104
112
|
# Eg:
|
105
113
|
#
|
106
|
-
# register_spec_type(/Controller$/,
|
114
|
+
# register_spec_type(/Controller$/, Minitest::Spec::Rails)
|
107
115
|
#
|
108
116
|
# or:
|
109
117
|
#
|
110
|
-
# register_spec_type(
|
118
|
+
# register_spec_type(Minitest::Spec::RailsModel) do |desc|
|
111
119
|
# desc.superclass == ActiveRecord::Base
|
112
120
|
# end
|
113
121
|
|
@@ -123,7 +131,7 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
123
131
|
##
|
124
132
|
# Figure out the spec class to use based on a spec's description. Eg:
|
125
133
|
#
|
126
|
-
# spec_type("BlahController") # =>
|
134
|
+
# spec_type("BlahController") # => Minitest::Spec::Rails
|
127
135
|
|
128
136
|
def spec_type desc
|
129
137
|
TYPES.find { |matcher, klass|
|
@@ -135,8 +143,9 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
135
143
|
}.last
|
136
144
|
end
|
137
145
|
|
146
|
+
@@describe_stack = []
|
138
147
|
def describe_stack # :nodoc:
|
139
|
-
|
148
|
+
@@describe_stack
|
140
149
|
end
|
141
150
|
|
142
151
|
##
|
@@ -157,7 +166,7 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
157
166
|
#
|
158
167
|
# NOTE: +type+ is ignored and is only there to make porting easier.
|
159
168
|
#
|
160
|
-
# Equivalent to
|
169
|
+
# Equivalent to Minitest::Test#setup.
|
161
170
|
|
162
171
|
def before type = nil, &block
|
163
172
|
define_method :setup do
|
@@ -171,7 +180,7 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
171
180
|
#
|
172
181
|
# NOTE: +type+ is ignored and is only there to make porting easier.
|
173
182
|
#
|
174
|
-
# Equivalent to
|
183
|
+
# Equivalent to Minitest::Test#teardown.
|
175
184
|
|
176
185
|
def after type = nil, &block
|
177
186
|
define_method :teardown do
|
@@ -260,285 +269,8 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
|
|
260
269
|
TYPES = DSL::TYPES # :nodoc:
|
261
270
|
end
|
262
271
|
|
263
|
-
|
264
|
-
# It's where you hide your "assertions".
|
265
|
-
|
266
|
-
module MiniTest::Expectations
|
267
|
-
##
|
268
|
-
# See MiniTest::Assertions#assert_empty.
|
269
|
-
#
|
270
|
-
# collection.must_be_empty
|
271
|
-
#
|
272
|
-
# :method: must_be_empty
|
273
|
-
|
274
|
-
infect_an_assertion :assert_empty, :must_be_empty, :unary
|
275
|
-
|
276
|
-
##
|
277
|
-
# See MiniTest::Assertions#assert_equal
|
278
|
-
#
|
279
|
-
# a.must_equal b
|
280
|
-
#
|
281
|
-
# :method: must_equal
|
282
|
-
|
283
|
-
infect_an_assertion :assert_equal, :must_equal
|
284
|
-
|
285
|
-
##
|
286
|
-
# See MiniTest::Assertions#assert_in_delta
|
287
|
-
#
|
288
|
-
# n.must_be_close_to m [, delta]
|
289
|
-
#
|
290
|
-
# :method: must_be_close_to
|
291
|
-
|
292
|
-
infect_an_assertion :assert_in_delta, :must_be_close_to
|
293
|
-
|
294
|
-
alias :must_be_within_delta :must_be_close_to # :nodoc:
|
295
|
-
|
296
|
-
##
|
297
|
-
# See MiniTest::Assertions#assert_in_epsilon
|
298
|
-
#
|
299
|
-
# n.must_be_within_epsilon m [, epsilon]
|
300
|
-
#
|
301
|
-
# :method: must_be_within_epsilon
|
302
|
-
|
303
|
-
infect_an_assertion :assert_in_epsilon, :must_be_within_epsilon
|
304
|
-
|
305
|
-
##
|
306
|
-
# See MiniTest::Assertions#assert_includes
|
307
|
-
#
|
308
|
-
# collection.must_include obj
|
309
|
-
#
|
310
|
-
# :method: must_include
|
311
|
-
|
312
|
-
infect_an_assertion :assert_includes, :must_include, :reverse
|
313
|
-
|
314
|
-
##
|
315
|
-
# See MiniTest::Assertions#assert_instance_of
|
316
|
-
#
|
317
|
-
# obj.must_be_instance_of klass
|
318
|
-
#
|
319
|
-
# :method: must_be_instance_of
|
320
|
-
|
321
|
-
infect_an_assertion :assert_instance_of, :must_be_instance_of
|
322
|
-
|
323
|
-
##
|
324
|
-
# See MiniTest::Assertions#assert_kind_of
|
325
|
-
#
|
326
|
-
# obj.must_be_kind_of mod
|
327
|
-
#
|
328
|
-
# :method: must_be_kind_of
|
329
|
-
|
330
|
-
infect_an_assertion :assert_kind_of, :must_be_kind_of
|
331
|
-
|
332
|
-
##
|
333
|
-
# See MiniTest::Assertions#assert_match
|
334
|
-
#
|
335
|
-
# a.must_match b
|
336
|
-
#
|
337
|
-
# :method: must_match
|
338
|
-
|
339
|
-
infect_an_assertion :assert_match, :must_match
|
340
|
-
|
341
|
-
##
|
342
|
-
# See MiniTest::Assertions#assert_nil
|
343
|
-
#
|
344
|
-
# obj.must_be_nil
|
345
|
-
#
|
346
|
-
# :method: must_be_nil
|
347
|
-
|
348
|
-
infect_an_assertion :assert_nil, :must_be_nil, :unary
|
349
|
-
|
350
|
-
##
|
351
|
-
# See MiniTest::Assertions#assert_operator
|
352
|
-
#
|
353
|
-
# n.must_be :<=, 42
|
354
|
-
#
|
355
|
-
# This can also do predicates:
|
356
|
-
#
|
357
|
-
# str.must_be :empty?
|
358
|
-
#
|
359
|
-
# :method: must_be
|
360
|
-
|
361
|
-
infect_an_assertion :assert_operator, :must_be, :reverse
|
362
|
-
|
363
|
-
##
|
364
|
-
# See MiniTest::Assertions#assert_output
|
365
|
-
#
|
366
|
-
# proc { ... }.must_output out_or_nil [, err]
|
367
|
-
#
|
368
|
-
# :method: must_output
|
369
|
-
|
370
|
-
infect_an_assertion :assert_output, :must_output
|
371
|
-
|
372
|
-
##
|
373
|
-
# See MiniTest::Assertions#assert_raises
|
374
|
-
#
|
375
|
-
# proc { ... }.must_raise exception
|
376
|
-
#
|
377
|
-
# :method: must_raise
|
378
|
-
|
379
|
-
infect_an_assertion :assert_raises, :must_raise
|
380
|
-
|
381
|
-
##
|
382
|
-
# See MiniTest::Assertions#assert_respond_to
|
383
|
-
#
|
384
|
-
# obj.must_respond_to msg
|
385
|
-
#
|
386
|
-
# :method: must_respond_to
|
387
|
-
|
388
|
-
infect_an_assertion :assert_respond_to, :must_respond_to, :reverse
|
389
|
-
|
390
|
-
##
|
391
|
-
# See MiniTest::Assertions#assert_same
|
392
|
-
#
|
393
|
-
# a.must_be_same_as b
|
394
|
-
#
|
395
|
-
# :method: must_be_same_as
|
396
|
-
|
397
|
-
infect_an_assertion :assert_same, :must_be_same_as
|
398
|
-
|
399
|
-
##
|
400
|
-
# See MiniTest::Assertions#assert_send
|
401
|
-
# TODO: remove me
|
402
|
-
#
|
403
|
-
# a.must_send
|
404
|
-
#
|
405
|
-
# :method: must_send
|
406
|
-
|
407
|
-
infect_an_assertion :assert_send, :must_send
|
408
|
-
|
409
|
-
##
|
410
|
-
# See MiniTest::Assertions#assert_silent
|
411
|
-
#
|
412
|
-
# proc { ... }.must_be_silent
|
413
|
-
#
|
414
|
-
# :method: must_be_silent
|
415
|
-
|
416
|
-
infect_an_assertion :assert_silent, :must_be_silent
|
417
|
-
|
418
|
-
##
|
419
|
-
# See MiniTest::Assertions#assert_throws
|
420
|
-
#
|
421
|
-
# proc { ... }.must_throw sym
|
422
|
-
#
|
423
|
-
# :method: must_throw
|
424
|
-
|
425
|
-
infect_an_assertion :assert_throws, :must_throw
|
426
|
-
|
427
|
-
##
|
428
|
-
# See MiniTest::Assertions#refute_empty
|
429
|
-
#
|
430
|
-
# collection.wont_be_empty
|
431
|
-
#
|
432
|
-
# :method: wont_be_empty
|
433
|
-
|
434
|
-
infect_an_assertion :refute_empty, :wont_be_empty, :unary
|
435
|
-
|
436
|
-
##
|
437
|
-
# See MiniTest::Assertions#refute_equal
|
438
|
-
#
|
439
|
-
# a.wont_equal b
|
440
|
-
#
|
441
|
-
# :method: wont_equal
|
442
|
-
|
443
|
-
infect_an_assertion :refute_equal, :wont_equal
|
444
|
-
|
445
|
-
##
|
446
|
-
# See MiniTest::Assertions#refute_in_delta
|
447
|
-
#
|
448
|
-
# n.wont_be_close_to m [, delta]
|
449
|
-
#
|
450
|
-
# :method: wont_be_close_to
|
451
|
-
|
452
|
-
infect_an_assertion :refute_in_delta, :wont_be_close_to
|
453
|
-
|
454
|
-
alias :wont_be_within_delta :wont_be_close_to # :nodoc:
|
455
|
-
|
456
|
-
##
|
457
|
-
# See MiniTest::Assertions#refute_in_epsilon
|
458
|
-
#
|
459
|
-
# n.wont_be_within_epsilon m [, epsilon]
|
460
|
-
#
|
461
|
-
# :method: wont_be_within_epsilon
|
462
|
-
|
463
|
-
infect_an_assertion :refute_in_epsilon, :wont_be_within_epsilon
|
464
|
-
|
465
|
-
##
|
466
|
-
# See MiniTest::Assertions#refute_includes
|
467
|
-
#
|
468
|
-
# collection.wont_include obj
|
469
|
-
#
|
470
|
-
# :method: wont_include
|
471
|
-
|
472
|
-
infect_an_assertion :refute_includes, :wont_include, :reverse
|
473
|
-
|
474
|
-
##
|
475
|
-
# See MiniTest::Assertions#refute_instance_of
|
476
|
-
#
|
477
|
-
# obj.wont_be_instance_of klass
|
478
|
-
#
|
479
|
-
# :method: wont_be_instance_of
|
480
|
-
|
481
|
-
infect_an_assertion :refute_instance_of, :wont_be_instance_of
|
482
|
-
|
483
|
-
##
|
484
|
-
# See MiniTest::Assertions#refute_kind_of
|
485
|
-
#
|
486
|
-
# obj.wont_be_kind_of mod
|
487
|
-
#
|
488
|
-
# :method: wont_be_kind_of
|
489
|
-
|
490
|
-
infect_an_assertion :refute_kind_of, :wont_be_kind_of
|
491
|
-
|
492
|
-
##
|
493
|
-
# See MiniTest::Assertions#refute_match
|
494
|
-
#
|
495
|
-
# a.wont_match b
|
496
|
-
#
|
497
|
-
# :method: wont_match
|
498
|
-
|
499
|
-
infect_an_assertion :refute_match, :wont_match
|
500
|
-
|
501
|
-
##
|
502
|
-
# See MiniTest::Assertions#refute_nil
|
503
|
-
#
|
504
|
-
# obj.wont_be_nil
|
505
|
-
#
|
506
|
-
# :method: wont_be_nil
|
507
|
-
|
508
|
-
infect_an_assertion :refute_nil, :wont_be_nil, :unary
|
509
|
-
|
510
|
-
##
|
511
|
-
# See MiniTest::Assertions#refute_operator
|
512
|
-
#
|
513
|
-
# n.wont_be :<=, 42
|
514
|
-
#
|
515
|
-
# This can also do predicates:
|
516
|
-
#
|
517
|
-
# str.wont_be :empty?
|
518
|
-
#
|
519
|
-
# :method: wont_be
|
520
|
-
|
521
|
-
infect_an_assertion :refute_operator, :wont_be, :reverse
|
522
|
-
|
523
|
-
##
|
524
|
-
# See MiniTest::Assertions#refute_respond_to
|
525
|
-
#
|
526
|
-
# obj.wont_respond_to msg
|
527
|
-
#
|
528
|
-
# :method: wont_respond_to
|
529
|
-
|
530
|
-
infect_an_assertion :refute_respond_to, :wont_respond_to, :reverse
|
531
|
-
|
532
|
-
##
|
533
|
-
# See MiniTest::Assertions#refute_same
|
534
|
-
#
|
535
|
-
# a.wont_be_same_as b
|
536
|
-
#
|
537
|
-
# :method: wont_be_same_as
|
538
|
-
|
539
|
-
infect_an_assertion :refute_same, :wont_be_same_as
|
540
|
-
end
|
272
|
+
require "minitest/expectations"
|
541
273
|
|
542
274
|
class Object # :nodoc:
|
543
|
-
include
|
275
|
+
include Minitest::Expectations unless ENV["MT_NO_EXPECTATIONS"]
|
544
276
|
end
|