assert 0.1.0 → 0.2.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/Gemfile.lock +3 -1
- data/README.rdoc +6 -6
- data/Rakefile +2 -3
- data/assert.gemspec +1 -0
- data/lib/assert/assertions.rb +30 -30
- data/lib/assert/context.rb +71 -66
- data/lib/assert/macro.rb +14 -0
- data/lib/assert/macros/methods.rb +52 -0
- data/lib/assert/rake_tasks.rb +31 -13
- data/lib/assert/result.rb +12 -4
- data/lib/assert/result_set.rb +2 -2
- data/lib/assert/runner.rb +2 -6
- data/lib/assert/setup/autorun.rb +0 -1
- data/lib/assert/suite.rb +19 -15
- data/lib/assert/test.rb +6 -17
- data/lib/assert/version.rb +1 -1
- data/lib/assert/view/base.rb +1 -1
- data/lib/assert/view/terminal.rb +8 -30
- data/test/assertions/assert_block_test.rb +1 -1
- data/test/assertions/assert_empty_test.rb +43 -0
- data/test/assertions/assert_equal_test.rb +43 -0
- data/test/assertions/assert_includes_test.rb +44 -0
- data/test/assertions/assert_instance_of_test.rb +4 -4
- data/test/assertions/assert_kind_of_test.rb +3 -3
- data/test/assertions/assert_match_test.rb +43 -0
- data/test/assertions/assert_nil_test.rb +43 -0
- data/test/assertions/assert_not_block_test.rb +1 -1
- data/test/assertions/assert_not_empty_test.rb +43 -0
- data/test/assertions/assert_not_equal_test.rb +43 -0
- data/test/assertions/assert_not_included_test.rb +44 -0
- data/test/assertions/assert_not_instance_of_test.rb +4 -4
- data/test/assertions/assert_not_kind_of_test.rb +2 -2
- data/test/assertions/assert_not_match_test.rb +43 -0
- data/test/assertions/assert_not_nil_test.rb +43 -0
- data/test/assertions/assert_not_respond_to_test.rb +6 -6
- data/test/assertions/assert_not_same_test.rb +45 -0
- data/test/assertions/assert_respond_to_test.rb +6 -6
- data/test/assertions/assert_same_test.rb +45 -0
- data/test/assertions_test.rb +21 -298
- data/test/context/class_methods_test.rb +81 -112
- data/test/context_test.rb +35 -40
- data/test/helper.rb +5 -2
- data/test/irb.rb +2 -5
- data/test/macro_test.rb +99 -0
- data/test/options_test.rb +2 -2
- data/test/result_set_test.rb +47 -54
- data/test/result_test.rb +4 -17
- data/test/runner_test.rb +2 -10
- data/test/suite_test.rb +85 -13
- data/test/test/running_test.rb +19 -28
- data/test/test_test.rb +130 -128
- data/test/view_test.rb +3 -17
- metadata +50 -7
@@ -1,29 +1,21 @@
|
|
1
1
|
require 'assert'
|
2
2
|
|
3
|
-
class Assert::Context
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
CLASS_METHODS = [
|
12
|
-
:setup_once, :before_once, :teardown_once, :after_once,
|
13
|
-
:setup, :before, :teardown, :after,
|
14
|
-
:setup_blocks, :all_setup_blocks, :teardown_blocks, :all_teardown_blocks,
|
15
|
-
:desc, :description, :descriptions, :full_description,
|
16
|
-
:subject,
|
17
|
-
:should
|
18
|
-
]
|
19
|
-
CLASS_METHODS.each do |class_method|
|
20
|
-
should "respond to the class method ##{class_method}" do
|
21
|
-
assert_respond_to subject, class_method
|
3
|
+
class Assert::Context
|
4
|
+
|
5
|
+
class ClassMethodsTest < Assert::Context
|
6
|
+
desc "Assert context class"
|
7
|
+
setup do
|
8
|
+
@test = Factory.test
|
9
|
+
@context_class = @test.context_class
|
22
10
|
end
|
23
|
-
|
11
|
+
teardown do
|
12
|
+
TEST_ASSERT_SUITE.clear
|
13
|
+
end
|
14
|
+
subject{ @context_class }
|
24
15
|
|
25
|
-
|
26
|
-
|
16
|
+
should have_instance_methods :setup_once, :before_once, :setup, :before, :setups
|
17
|
+
should have_instance_methods :teardown_once, :after_once, :teardown, :after, :teardowns
|
18
|
+
should have_instance_methods :description, :desc, :subject, :should, :should_eventually, :should_skip
|
27
19
|
end
|
28
20
|
|
29
21
|
|
@@ -31,20 +23,19 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
31
23
|
class SetupOnceTest < ClassMethodsTest
|
32
24
|
desc "setup_once method"
|
33
25
|
setup do
|
34
|
-
setup_block = @setup_block =
|
26
|
+
setup_block = @setup_block = ::Proc.new{ something_once = true }
|
35
27
|
@context_class = Factory.context_class do
|
36
28
|
setup_once(&setup_block)
|
37
29
|
end
|
38
|
-
@setup_blocks = Assert.suite.
|
30
|
+
@setup_blocks = Assert.suite.send(:setups)
|
31
|
+
end
|
32
|
+
teardown do
|
33
|
+
Assert.suite.send(:setups).reject!{|b| b == @setup_block }
|
39
34
|
end
|
40
35
|
subject{ @setup_blocks }
|
41
36
|
|
42
37
|
should "add the block to the suite's collection of setup blocks" do
|
43
|
-
assert_includes
|
44
|
-
end
|
45
|
-
|
46
|
-
teardown do
|
47
|
-
Assert.suite.setup_blocks.reject!{|b| b == @setup_block }
|
38
|
+
assert_includes @setup_block, subject
|
48
39
|
end
|
49
40
|
|
50
41
|
end
|
@@ -54,20 +45,19 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
54
45
|
class TeardownOnceTest < ClassMethodsTest
|
55
46
|
desc "teardown_once method"
|
56
47
|
setup do
|
57
|
-
teardown_block = @teardown_block =
|
48
|
+
teardown_block = @teardown_block = ::Proc.new{ something_once = true }
|
58
49
|
@context_class = Factory.context_class do
|
59
50
|
teardown_once(&teardown_block)
|
60
51
|
end
|
61
|
-
@teardown_blocks = Assert.suite.
|
52
|
+
@teardown_blocks = Assert.suite.send(:teardowns)
|
53
|
+
end
|
54
|
+
teardown do
|
55
|
+
Assert.suite.send(:teardowns).reject!{|b| b == @teardown_block }
|
62
56
|
end
|
63
57
|
subject{ @teardown_blocks }
|
64
58
|
|
65
59
|
should "add the block to the suite's collection of teardown blocks" do
|
66
|
-
assert_includes
|
67
|
-
end
|
68
|
-
|
69
|
-
teardown do
|
70
|
-
Assert.suite.teardown_blocks.reject!{|b| b == @teardown_block }
|
60
|
+
assert_includes @teardown_block, subject
|
71
61
|
end
|
72
62
|
|
73
63
|
end
|
@@ -77,95 +67,85 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
77
67
|
class SetupTest < ClassMethodsTest
|
78
68
|
desc "setup method"
|
79
69
|
setup do
|
80
|
-
setup_block = @setup_block =
|
70
|
+
setup_block = @setup_block = ::Proc.new{ @something = true }
|
81
71
|
@context_class = Factory.context_class do
|
82
72
|
setup(&setup_block)
|
83
73
|
end
|
84
|
-
@setup_blocks = @context_class.
|
74
|
+
@setup_blocks = @context_class.send(:setups)
|
85
75
|
end
|
86
76
|
subject{ @setup_blocks }
|
87
77
|
|
88
78
|
should "add the block to the context's collection of setup blocks" do
|
89
|
-
assert_includes
|
90
|
-
end
|
91
|
-
should "raise an ArgumentError when no block is passed" do
|
92
|
-
assert_raises ArgumentError do
|
93
|
-
@context_class.setup
|
94
|
-
end
|
79
|
+
assert_includes @setup_block, subject
|
95
80
|
end
|
96
81
|
|
97
82
|
end
|
98
83
|
|
99
84
|
|
100
85
|
|
101
|
-
class
|
102
|
-
desc "
|
86
|
+
class MultipleSetupsTest < ClassMethodsTest
|
87
|
+
desc "a context class with multiple setups"
|
103
88
|
setup do
|
104
|
-
|
105
|
-
@
|
106
|
-
|
89
|
+
@object = (Class.new{ attr_accessor :status }).new
|
90
|
+
setup_block = @setup_block = ::Proc.new{ self.status = "the setup" }
|
91
|
+
@parent_class = Factory.context_class do
|
92
|
+
setup(&setup_block)
|
93
|
+
end
|
94
|
+
setup_block = @setup_block = ::Proc.new{ self.status += " has been run" }
|
95
|
+
@context_class = Factory.context_class(@parent_class) do
|
96
|
+
setup(&setup_block)
|
107
97
|
end
|
108
|
-
@
|
98
|
+
@context_class.setup(@object)
|
99
|
+
@expected = "the setup has been run"
|
109
100
|
end
|
110
|
-
subject{ @
|
101
|
+
subject{ @object }
|
111
102
|
|
112
|
-
should "
|
113
|
-
|
114
|
-
end
|
115
|
-
should "raise an ArgumentError when no block is passed" do
|
116
|
-
assert_raises ArgumentError do
|
117
|
-
@context_class.teardown
|
118
|
-
end
|
103
|
+
should "run it's parent and it's own setup blocks in the correct order" do
|
104
|
+
assert_equal @expected, subject.status
|
119
105
|
end
|
120
106
|
|
121
107
|
end
|
122
108
|
|
123
109
|
|
124
110
|
|
125
|
-
class
|
126
|
-
desc "
|
111
|
+
class TeardownTest < ClassMethodsTest
|
112
|
+
desc "teardown method"
|
127
113
|
setup do
|
128
|
-
|
129
|
-
@
|
130
|
-
|
131
|
-
end
|
132
|
-
setup_block = @setup_block = lambda{ @something = true }
|
133
|
-
@context_class = Factory.context_class(@parent_class) do
|
134
|
-
setup(&setup_block)
|
114
|
+
teardown_block = @teardown_block = ::Proc.new{ @something = false }
|
115
|
+
@context_class = Factory.context_class do
|
116
|
+
teardown(&teardown_block)
|
135
117
|
end
|
136
|
-
@
|
118
|
+
@teardown_blocks = @context_class.send(:teardowns)
|
137
119
|
end
|
138
|
-
subject{ @
|
120
|
+
subject{ @teardown_blocks }
|
139
121
|
|
140
|
-
should "
|
141
|
-
|
142
|
-
assert_includes subject, @parent_block
|
143
|
-
assert_includes subject, @setup_block
|
122
|
+
should "add the block to the context's collection of teardown blocks" do
|
123
|
+
assert_includes @teardown_block, subject
|
144
124
|
end
|
145
125
|
|
146
126
|
end
|
147
127
|
|
148
128
|
|
149
129
|
|
150
|
-
class
|
151
|
-
desc "
|
130
|
+
class MultipleTeardownsTest < ClassMethodsTest
|
131
|
+
desc "a context class with multiple teardowns"
|
152
132
|
setup do
|
153
|
-
|
133
|
+
@object = (Class.new{ attr_accessor :status }).new
|
134
|
+
teardown_block = @teardown_block = ::Proc.new{ self.status += " has been run" }
|
154
135
|
@parent_class = Factory.context_class do
|
155
|
-
teardown(&
|
136
|
+
teardown(&teardown_block)
|
156
137
|
end
|
157
|
-
teardown_block = @teardown_block =
|
138
|
+
teardown_block = @teardown_block = ::Proc.new{ self.status = "the teardown" }
|
158
139
|
@context_class = Factory.context_class(@parent_class) do
|
159
140
|
teardown(&teardown_block)
|
160
141
|
end
|
161
|
-
@
|
142
|
+
@context_class.teardown(@object)
|
143
|
+
@expected = "the teardown has been run"
|
162
144
|
end
|
163
|
-
subject{ @
|
145
|
+
subject{ @object }
|
164
146
|
|
165
|
-
should "
|
166
|
-
|
167
|
-
assert_includes subject, @parent_block
|
168
|
-
assert_includes subject, @teardown_block
|
147
|
+
should "run it's parent and it's own teardown blocks in the correct order" do
|
148
|
+
assert_equal @expected, subject.status
|
169
149
|
end
|
170
150
|
|
171
151
|
end
|
@@ -173,7 +153,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
173
153
|
|
174
154
|
|
175
155
|
class DescTest < ClassMethodsTest
|
176
|
-
desc "desc method"
|
156
|
+
desc "desc method with an arg"
|
177
157
|
setup do
|
178
158
|
descs = @descs = [ "something amazing", "it really is" ]
|
179
159
|
@context_class = Factory.context_class do
|
@@ -181,19 +161,13 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
181
161
|
desc text
|
182
162
|
end
|
183
163
|
end
|
184
|
-
@descriptions = @context_class.descriptions
|
185
164
|
end
|
186
|
-
subject{ @descriptions }
|
165
|
+
subject{ @context_class.send(:descriptions) }
|
187
166
|
|
188
167
|
should "return a collection containing any descriptions defined on the class" do
|
189
168
|
assert_kind_of Array, subject
|
190
169
|
@descs.each do |text|
|
191
|
-
assert_includes
|
192
|
-
end
|
193
|
-
end
|
194
|
-
should "raise an error when no description is provided" do
|
195
|
-
assert_raises ArgumentError do
|
196
|
-
@context_class.desc
|
170
|
+
assert_includes text, subject
|
197
171
|
end
|
198
172
|
end
|
199
173
|
|
@@ -202,7 +176,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
202
176
|
|
203
177
|
|
204
178
|
class FullDescriptionTest < ClassMethodsTest
|
205
|
-
desc "
|
179
|
+
desc "description method without an arg"
|
206
180
|
setup do
|
207
181
|
parent_text = @parent_desc = "parent description"
|
208
182
|
@parent_class = Factory.context_class do
|
@@ -212,7 +186,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
212
186
|
@context_class = Factory.context_class(@parent_class) do
|
213
187
|
desc text
|
214
188
|
end
|
215
|
-
@full_description = @context_class.
|
189
|
+
@full_description = @context_class.description
|
216
190
|
end
|
217
191
|
subject{ @full_description }
|
218
192
|
|
@@ -226,10 +200,10 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
226
200
|
|
227
201
|
|
228
202
|
|
229
|
-
class
|
230
|
-
desc "subject method"
|
203
|
+
class SubjectFromLocalTest < ClassMethodsTest
|
204
|
+
desc "subject method using local context"
|
231
205
|
setup do
|
232
|
-
subject_block = @subject_block =
|
206
|
+
subject_block = @subject_block = ::Proc.new{ @something }
|
233
207
|
@context_class = Factory.context_class do
|
234
208
|
subject(&subject_block)
|
235
209
|
end
|
@@ -237,22 +211,17 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
237
211
|
subject{ @subject_block }
|
238
212
|
|
239
213
|
should "set the subject block on the context class" do
|
240
|
-
assert_equal subject,
|
241
|
-
end
|
242
|
-
should "raise an ArgumentError when no block is passed" do
|
243
|
-
assert_raises ArgumentError do
|
244
|
-
@context_class.subject
|
245
|
-
end
|
214
|
+
assert_equal @context_class.subject, subject
|
246
215
|
end
|
247
216
|
|
248
217
|
end
|
249
218
|
|
250
219
|
|
251
220
|
|
252
|
-
class
|
253
|
-
desc "
|
221
|
+
class SubjectFromParentTest < ClassMethodsTest
|
222
|
+
desc "subject method using parent context"
|
254
223
|
setup do
|
255
|
-
parent_block = @parent_block =
|
224
|
+
parent_block = @parent_block = ::Proc.new{ @something }
|
256
225
|
@parent_class = Factory.context_class do
|
257
226
|
subject(&parent_block)
|
258
227
|
end
|
@@ -261,7 +230,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
261
230
|
subject{ @parent_block }
|
262
231
|
|
263
232
|
should "default to it's parents subject block" do
|
264
|
-
assert_equal subject, @context_class.
|
233
|
+
assert_equal subject, @context_class.subject
|
265
234
|
end
|
266
235
|
end
|
267
236
|
|
@@ -271,7 +240,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
271
240
|
desc "should method"
|
272
241
|
setup do
|
273
242
|
should_desc = "be true"
|
274
|
-
should_block = @should_block =
|
243
|
+
should_block = @should_block = ::Proc.new{ assert(true) }
|
275
244
|
@context_class = Factory.context_class do
|
276
245
|
should(should_desc, &should_block)
|
277
246
|
end
|
@@ -281,7 +250,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
281
250
|
subject{ @context }
|
282
251
|
|
283
252
|
should "define a test method named after the should desc" do
|
284
|
-
assert_respond_to
|
253
|
+
assert_respond_to @method_name, subject
|
285
254
|
assert_equal subject.instance_eval(&@should_block), subject.send(@method_name)
|
286
255
|
end
|
287
256
|
|
@@ -293,7 +262,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
293
262
|
desc "should_eventually method"
|
294
263
|
setup do
|
295
264
|
should_desc = @should_desc = "be true"
|
296
|
-
should_block = @should_block =
|
265
|
+
should_block = @should_block = ::Proc.new{ assert(true) }
|
297
266
|
@context_class = Factory.context_class do
|
298
267
|
should_eventually(should_desc, &should_block)
|
299
268
|
end
|
@@ -303,7 +272,7 @@ class Assert::Context::ClassMethodsTest < Assert::Context
|
|
303
272
|
subject{ @context }
|
304
273
|
|
305
274
|
should "define a test method named after the should desc that raises a test skipped" do
|
306
|
-
assert_respond_to
|
275
|
+
assert_respond_to @method_name, subject
|
307
276
|
assert_raises(Assert::Result::TestSkipped) do
|
308
277
|
subject.send(@method_name)
|
309
278
|
end
|
data/test/context_test.rb
CHANGED
@@ -1,27 +1,23 @@
|
|
1
1
|
require 'assert'
|
2
2
|
|
3
|
-
class Assert::Context
|
4
|
-
desc "Assert context"
|
5
|
-
setup do
|
6
|
-
@test = Factory.test
|
7
|
-
@context_class = @test.context_class
|
8
|
-
@context = @context_class.new(@test)
|
9
|
-
end
|
10
|
-
subject{ @context }
|
3
|
+
class Assert::Context
|
11
4
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
should "respond to the instance method ##{method}" do
|
19
|
-
assert_respond_to subject, method
|
5
|
+
class BasicTest < Assert::Context
|
6
|
+
desc "Assert context"
|
7
|
+
setup do
|
8
|
+
@test = Factory.test
|
9
|
+
@context_class = @test.context_class
|
10
|
+
@context = @context_class.new(@test)
|
20
11
|
end
|
21
|
-
|
12
|
+
teardown do
|
13
|
+
TEST_ASSERT_SUITE.clear
|
14
|
+
end
|
15
|
+
subject{ @context }
|
16
|
+
|
17
|
+
should have_instance_methods :assert, :assert_not, :refute
|
18
|
+
should have_instance_methods :skip, :pass, :fail, :flunk, :ignore
|
19
|
+
should have_instance_methods :subject
|
22
20
|
|
23
|
-
teardown do
|
24
|
-
TEST_ASSERT_SUITE.clear
|
25
21
|
end
|
26
22
|
|
27
23
|
|
@@ -104,31 +100,30 @@ class Assert::Context::BasicTest < Assert::Context
|
|
104
100
|
assert_kind_of Array, subject.backtrace
|
105
101
|
assert_match /assert\/test\/context_test\.rb/, subject.trace
|
106
102
|
end
|
103
|
+
end
|
107
104
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
should "set the message passed to it on the result" do
|
116
|
-
assert_equal @fail_msg, subject.message
|
117
|
-
end
|
105
|
+
class StringMessageTest < FailTest
|
106
|
+
desc "with a string message"
|
107
|
+
setup do
|
108
|
+
@fail_msg = "Didn't work"
|
109
|
+
@result = @context.fail(@fail_msg)
|
110
|
+
end
|
118
111
|
|
112
|
+
should "set the message passed to it on the result" do
|
113
|
+
assert_equal @fail_msg, subject.message
|
119
114
|
end
|
120
115
|
|
121
|
-
|
122
|
-
desc "with a proc message"
|
123
|
-
setup do
|
124
|
-
@fail_msg = lambda{ "Still didn't work" }
|
125
|
-
@result = @context.fail(@fail_msg)
|
126
|
-
end
|
116
|
+
end
|
127
117
|
|
128
|
-
|
129
|
-
|
130
|
-
|
118
|
+
class ProcMessageTest < FailTest
|
119
|
+
desc "with a proc message"
|
120
|
+
setup do
|
121
|
+
@fail_msg = ::Proc.new{ "Still didn't work" }
|
122
|
+
@result = @context.fail(@fail_msg)
|
123
|
+
end
|
131
124
|
|
125
|
+
should "set the message passed to it on the result" do
|
126
|
+
assert_equal @fail_msg.call, subject.message
|
132
127
|
end
|
133
128
|
|
134
129
|
end
|
@@ -184,7 +179,7 @@ class Assert::Context::BasicTest < Assert::Context
|
|
184
179
|
|
185
180
|
should "return a fail result" do
|
186
181
|
assert_kind_of Assert::Result::Fail, subject
|
187
|
-
assert_equal
|
182
|
+
assert_equal [@fail_desc, @what_failed].join("\n"), subject.message
|
188
183
|
end
|
189
184
|
|
190
185
|
end
|
@@ -219,7 +214,7 @@ class Assert::Context::BasicTest < Assert::Context
|
|
219
214
|
|
220
215
|
should "return a fail result" do
|
221
216
|
assert_kind_of Assert::Result::Fail, subject
|
222
|
-
assert_equal
|
217
|
+
assert_equal [@fail_desc, @what_failed].join("\n"), subject.message
|
223
218
|
end
|
224
219
|
|
225
220
|
end
|