assert 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|