File tree Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change @@ -446,6 +446,31 @@ def initialize name # :nodoc:
446
446
self . name = name
447
447
self . failures = [ ]
448
448
self . assertions = 0
449
+ # lazy initializer for metadata
450
+ end
451
+
452
+ ##
453
+ # Metadata you attach to the test results that get sent to the reporter.
454
+ #
455
+ # Lazily initializes to a hash, to keep memory down.
456
+ #
457
+ # NOTE: this data *must* be plain (read: marshal-able) data!
458
+ # Hashes! Arrays! Strings!
459
+
460
+ def metadata
461
+ @metadata ||= { }
462
+ end
463
+
464
+ ##
465
+ # Sets metadata, mainly used for +Result.from+.
466
+
467
+ attr_writer :metadata
468
+
469
+ ##
470
+ # Returns true if metadata exists.
471
+
472
+ def metadata?
473
+ defined? @metadata
449
474
end
450
475
451
476
##
@@ -566,6 +591,7 @@ def self.from runnable
566
591
r . assertions = o . assertions
567
592
r . failures = o . failures . dup
568
593
r . time = o . time
594
+ r . metadata = o . metadata if o . metadata?
569
595
570
596
r . source_location = o . method ( o . name ) . source_location rescue [ "unknown" , -1 ]
571
597
Original file line number Diff line number Diff line change @@ -65,6 +65,12 @@ def passing_test
65
65
@pt ||= Minitest ::Result . from Minitest ::Test . new ( :woot )
66
66
end
67
67
68
+ def passing_test_with_metadata
69
+ test = Minitest ::Test . new ( :woot )
70
+ test . metadata [ :meta ] = :data
71
+ @pt ||= Minitest ::Result . from test
72
+ end
73
+
68
74
def skip_test
69
75
unless defined? @st then
70
76
@st = Minitest ::Test . new ( :woot )
@@ -166,6 +172,29 @@ def test_record_pass
166
172
assert_equal 0 , r . assertions
167
173
end
168
174
175
+ def test_record_pass_with_metadata
176
+ reporter = self . r
177
+
178
+ def reporter . metadata
179
+ @metadata
180
+ end
181
+
182
+ def reporter . record result
183
+ super
184
+ @metadata = result . metadata if result . metadata?
185
+ end
186
+
187
+ r . record passing_test_with_metadata
188
+
189
+ exp = { :meta => :data }
190
+ assert_equal exp , reporter . metadata
191
+
192
+ assert_equal "." , io . string
193
+ assert_empty r . results
194
+ assert_equal 1 , r . count
195
+ assert_equal 0 , r . assertions
196
+ end
197
+
169
198
def test_record_fail
170
199
fail_test = self . fail_test
171
200
r . record fail_test
You can’t perform that action at this time.
0 commit comments