test-unit 3.3.3 → 3.3.8
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.
- checksums.yaml +4 -4
- data/BSDL +24 -0
- data/COPYING +41 -44
- data/README.md +4 -8
- data/Rakefile +0 -14
- data/doc/text/news.md +85 -0
- data/lib/test-unit.rb +0 -17
- data/lib/test/unit.rb +171 -157
- data/lib/test/unit/assertions.rb +60 -53
- data/lib/test/unit/autorunner.rb +57 -25
- data/lib/test/unit/code-snippet-fetcher.rb +4 -2
- data/lib/test/unit/color-scheme.rb +20 -2
- data/lib/test/unit/data.rb +2 -2
- data/lib/test/unit/diff.rb +2 -3
- data/lib/test/unit/notification.rb +9 -7
- data/lib/test/unit/omission.rb +34 -31
- data/lib/test/unit/pending.rb +12 -11
- data/lib/test/unit/runner/console.rb +0 -17
- data/lib/test/unit/testcase.rb +138 -123
- data/lib/test/unit/ui/console/testrunner.rb +32 -49
- data/lib/test/unit/util/observable.rb +2 -2
- data/lib/test/unit/util/output.rb +5 -4
- data/lib/test/unit/version.rb +1 -1
- data/test/test-assertions.rb +27 -19
- data/test/test-color-scheme.rb +42 -1
- data/test/test-test-case.rb +6 -1
- metadata +39 -40
- data/GPL +0 -339
- data/LGPL +0 -502
@@ -47,8 +47,6 @@ module Test
|
|
47
47
|
@progress_row_max ||= guess_progress_row_max
|
48
48
|
@show_detail_immediately = @options[:show_detail_immediately]
|
49
49
|
@show_detail_immediately = true if @show_detail_immediately.nil?
|
50
|
-
@reverse_output = @options[:reverse_output]
|
51
|
-
@reverse_output = @output.tty? if @reverse_output.nil?
|
52
50
|
@already_outputted = false
|
53
51
|
@indent = 0
|
54
52
|
@top_level = true
|
@@ -184,29 +182,15 @@ module Test
|
|
184
182
|
if fault.is_a?(Failure) and
|
185
183
|
fault.inspected_expected and
|
186
184
|
fault.inspected_actual
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
output(fault.test_name, fault_color(fault))
|
192
|
-
else
|
193
|
-
output_single("#{fault.label}: ")
|
194
|
-
output(fault.test_name, fault_color(fault))
|
195
|
-
output_fault_backtrace(fault)
|
196
|
-
output_failure_message(fault)
|
197
|
-
end
|
185
|
+
output_single("#{fault.label}: ")
|
186
|
+
output(fault.test_name, fault_color(fault))
|
187
|
+
output_fault_backtrace(fault)
|
188
|
+
output_failure_message(fault)
|
198
189
|
else
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
output_fault_message(fault)
|
204
|
-
else
|
205
|
-
output_single("#{fault.label}: ")
|
206
|
-
output_single(fault.test_name, fault_color(fault))
|
207
|
-
output_fault_message(fault)
|
208
|
-
output_fault_backtrace(fault)
|
209
|
-
end
|
190
|
+
output_single("#{fault.label}: ")
|
191
|
+
output_single(fault.test_name, fault_color(fault))
|
192
|
+
output_fault_message(fault)
|
193
|
+
output_fault_backtrace(fault)
|
210
194
|
end
|
211
195
|
end
|
212
196
|
|
@@ -244,19 +228,10 @@ module Test
|
|
244
228
|
end
|
245
229
|
end
|
246
230
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
end
|
252
|
-
output(entry)
|
253
|
-
end
|
254
|
-
else
|
255
|
-
backtrace.each_with_index do |entry, i|
|
256
|
-
output(entry)
|
257
|
-
if i == code_snippet_backtrace_index
|
258
|
-
output_code_snippet(code_snippet_lines, fault_color(fault))
|
259
|
-
end
|
231
|
+
backtrace.each_with_index do |entry, i|
|
232
|
+
output(entry)
|
233
|
+
if i == code_snippet_backtrace_index
|
234
|
+
output_code_snippet(code_snippet_lines, fault_color(fault))
|
260
235
|
end
|
261
236
|
end
|
262
237
|
end
|
@@ -336,17 +311,10 @@ module Test
|
|
336
311
|
end
|
337
312
|
|
338
313
|
def output_fault_in_short(fault)
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
output(" [#{fault.test_name}]")
|
344
|
-
else
|
345
|
-
output_single("#{fault.label}: ")
|
346
|
-
output_single(fault.message, fault_color(fault))
|
347
|
-
output(" [#{fault.test_name}]")
|
348
|
-
output(fault.location.first)
|
349
|
-
end
|
314
|
+
output_single("#{fault.label}: ")
|
315
|
+
output_single(fault.message, fault_color(fault))
|
316
|
+
output(" [#{fault.test_name}]")
|
317
|
+
output(fault.location.first)
|
350
318
|
end
|
351
319
|
|
352
320
|
def format_fault(fault)
|
@@ -540,13 +508,28 @@ module Test
|
|
540
508
|
color("#{@result.status}-marker")
|
541
509
|
end
|
542
510
|
|
511
|
+
TERM_COLOR_SUPPORT = /
|
512
|
+
color| # explicitly claims color support in the name
|
513
|
+
direct| # explicitly claims "direct color" (24 bit) support
|
514
|
+
#{ColorScheme::TERM_256}|
|
515
|
+
\Acygwin|
|
516
|
+
\Alinux|
|
517
|
+
\Ansterm-bce|
|
518
|
+
\Ansterm-c-|
|
519
|
+
\Aputty|
|
520
|
+
\Arxvt|
|
521
|
+
\Ascreen|
|
522
|
+
\Atmux|
|
523
|
+
\Axterm
|
524
|
+
/x
|
525
|
+
|
543
526
|
def guess_color_availability
|
544
527
|
return false unless @output.tty?
|
545
528
|
return true if windows? and ruby_2_0_or_later?
|
546
529
|
case ENV["TERM"]
|
547
530
|
when /(?:term|screen)(?:-(?:256)?color)?\z/
|
548
531
|
true
|
549
|
-
when
|
532
|
+
when TERM_COLOR_SUPPORT
|
550
533
|
true
|
551
534
|
else
|
552
535
|
return true if ENV["EMACS"] == "t"
|
@@ -26,8 +26,8 @@ module Test
|
|
26
26
|
# returned, making it very easy to use the proc
|
27
27
|
# itself as the listener_key:
|
28
28
|
#
|
29
|
-
#
|
30
|
-
#
|
29
|
+
# listener = add_listener("Channel") { ... }
|
30
|
+
# remove_listener("Channel", listener)
|
31
31
|
def add_listener(channel_name, listener_key=NOTHING, &listener) # :yields: value
|
32
32
|
unless(block_given?)
|
33
33
|
raise ArgumentError.new("No callback was passed as a listener")
|
@@ -7,10 +7,11 @@ module Test
|
|
7
7
|
# error as string.
|
8
8
|
#
|
9
9
|
# Example:
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
10
|
+
#
|
11
|
+
# capture_output do
|
12
|
+
# puts("stdout")
|
13
|
+
# warn("stderr")
|
14
|
+
# end # -> ["stdout\n", "stderr\n"]
|
14
15
|
def capture_output
|
15
16
|
require 'stringio'
|
16
17
|
|
data/lib/test/unit/version.rb
CHANGED
data/test/test-assertions.rb
CHANGED
@@ -98,7 +98,7 @@ module Test
|
|
98
98
|
|
99
99
|
def check_fail_exception(expected_message, options={}, &proc)
|
100
100
|
normalizer = lambda do |actual_message|
|
101
|
-
actual_message.gsub(
|
101
|
+
actual_message.gsub(/^(?:<internal:core> )?[^:\n]+:\d+:.+\n/, "")
|
102
102
|
end
|
103
103
|
check_assertions(true,
|
104
104
|
options.merge(:expected_message => expected_message,
|
@@ -289,14 +289,19 @@ EOM
|
|
289
289
|
end
|
290
290
|
|
291
291
|
def test_same_inspected_objects
|
292
|
-
|
293
|
-
|
292
|
+
same_inspected_class = Class.new do
|
293
|
+
def inspect
|
294
|
+
"inspected"
|
295
|
+
end
|
296
|
+
end
|
297
|
+
object1 = same_inspected_class.new
|
298
|
+
object2 = same_inspected_class.new
|
294
299
|
message = <<-EOM.chomp
|
295
|
-
|
296
|
-
|
300
|
+
<inspected> expected but was
|
301
|
+
<inspected>.
|
297
302
|
EOM
|
298
303
|
check_fail(message) do
|
299
|
-
assert_equal(
|
304
|
+
assert_equal(object1, object2)
|
300
305
|
end
|
301
306
|
end
|
302
307
|
|
@@ -505,7 +510,8 @@ EOM
|
|
505
510
|
message = <<-EOM.chomp
|
506
511
|
failed assert_raise.
|
507
512
|
<ArgumentError> exception expected but was
|
508
|
-
<RuntimeError(<Error>)
|
513
|
+
<RuntimeError(<Error>)
|
514
|
+
>.
|
509
515
|
EOM
|
510
516
|
check_fail_exception(message) do
|
511
517
|
assert_raise(ArgumentError, "failed assert_raise") do
|
@@ -566,7 +572,8 @@ EOM
|
|
566
572
|
message = <<-EOM.chomp
|
567
573
|
failed assert_raise.
|
568
574
|
<[ArgumentError, TypeError]> exception expected but was
|
569
|
-
<RuntimeError(<Error>)
|
575
|
+
<RuntimeError(<Error>)
|
576
|
+
>.
|
570
577
|
EOM
|
571
578
|
check_fail_exception(message) do
|
572
579
|
assert_raise(ArgumentError, TypeError, "failed assert_raise") do
|
@@ -591,13 +598,8 @@ EOM
|
|
591
598
|
|
592
599
|
message = <<-EOM.chomp
|
593
600
|
<RuntimeError(<XXX>)> exception expected but was
|
594
|
-
<RuntimeError(<Error>)
|
595
|
-
|
596
|
-
diff:
|
597
|
-
- RuntimeError(<XXX>)
|
598
|
-
? ^^^
|
599
|
-
+ RuntimeError(<Error>)
|
600
|
-
? ^^^^^
|
601
|
+
<RuntimeError(<Error>)
|
602
|
+
>.
|
601
603
|
EOM
|
602
604
|
check_fail_exception(message) do
|
603
605
|
return_value = assert_raise(RuntimeError.new("XXX")) do
|
@@ -608,7 +610,8 @@ EOM
|
|
608
610
|
different_error_class = Class.new(StandardError)
|
609
611
|
message = <<-EOM.chomp
|
610
612
|
<#{different_error_class.inspect}(<Error>)> exception expected but was
|
611
|
-
<RuntimeError(<Error>)
|
613
|
+
<RuntimeError(<Error>)
|
614
|
+
>.
|
612
615
|
EOM
|
613
616
|
check_fail_exception(message) do
|
614
617
|
assert_raise(different_error_class.new("Error")) do
|
@@ -622,7 +625,8 @@ EOM
|
|
622
625
|
end
|
623
626
|
message = <<-EOM.chomp
|
624
627
|
<DifferentError: "Error"> exception expected but was
|
625
|
-
<RuntimeError(<Error>)
|
628
|
+
<RuntimeError(<Error>)
|
629
|
+
>.
|
626
630
|
EOM
|
627
631
|
check_fail_exception(message) do
|
628
632
|
assert_raise(different_error) do
|
@@ -640,7 +644,7 @@ EOM
|
|
640
644
|
end
|
641
645
|
|
642
646
|
def test_assert_raise_jruby
|
643
|
-
|
647
|
+
jruby_only_test
|
644
648
|
|
645
649
|
exception = Java::JavaLang::StringIndexOutOfBoundsException
|
646
650
|
|
@@ -864,6 +868,7 @@ EOM
|
|
864
868
|
expected_message = <<-EOM.chomp
|
865
869
|
Exception raised:
|
866
870
|
RuntimeError(<Error>)
|
871
|
+
|
867
872
|
EOM
|
868
873
|
check_fail_exception(expected_message) {
|
869
874
|
assert_nothing_raised {
|
@@ -874,6 +879,7 @@ EOM
|
|
874
879
|
failed assert_nothing_raised.
|
875
880
|
Exception raised:
|
876
881
|
RuntimeError(<Error>)
|
882
|
+
|
877
883
|
EOM
|
878
884
|
check_fail_exception(expected_message) {
|
879
885
|
assert_nothing_raised("failed assert_nothing_raised") {
|
@@ -883,6 +889,7 @@ EOM
|
|
883
889
|
expected_message = <<-EOM.chomp
|
884
890
|
Exception raised:
|
885
891
|
RuntimeError(<Error>)
|
892
|
+
|
886
893
|
EOM
|
887
894
|
check_fail_exception(expected_message) {
|
888
895
|
assert_nothing_raised(StandardError, RuntimeError) {
|
@@ -1307,7 +1314,8 @@ EOM
|
|
1307
1314
|
|
1308
1315
|
expected_message = <<-EOM.chomp
|
1309
1316
|
<SystemCallError> family exception expected but was
|
1310
|
-
<RuntimeError(<XXX>)
|
1317
|
+
<RuntimeError(<XXX>)
|
1318
|
+
>.
|
1311
1319
|
EOM
|
1312
1320
|
check_fail_exception(expected_message) do
|
1313
1321
|
assert_raise_kind_of(SystemCallError) do
|
data/test/test-color-scheme.rb
CHANGED
@@ -41,17 +41,23 @@ class TestUnitColorScheme < Test::Unit::TestCase
|
|
41
41
|
Test::Unit::Color.new(name, options)
|
42
42
|
end
|
43
43
|
|
44
|
-
|
44
|
+
module CleanEnvironment
|
45
45
|
def setup
|
46
46
|
@original_term, ENV["TERM"] = ENV["TERM"], nil
|
47
47
|
@original_color_term, ENV["COLORTERM"] = ENV["COLORTERM"], nil
|
48
|
+
@original_vte_version, ENV["VTE_VERSION"] = ENV["VTE_VERSION"], nil
|
48
49
|
ENV["TERM"] = "xterm"
|
49
50
|
end
|
50
51
|
|
51
52
|
def teardown
|
52
53
|
ENV["TERM"] = @original_term
|
53
54
|
ENV["COLORTERM"] = @original_color_term
|
55
|
+
ENV["VTE_VERSION"] = @original_vte_version
|
54
56
|
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class TestFor8Colors < self
|
60
|
+
include CleanEnvironment
|
55
61
|
|
56
62
|
def test_default
|
57
63
|
expected_schema_keys = [
|
@@ -79,4 +85,39 @@ class TestUnitColorScheme < Test::Unit::TestCase
|
|
79
85
|
Test::Unit::ColorScheme.default.to_hash.keys.sort)
|
80
86
|
end
|
81
87
|
end
|
88
|
+
|
89
|
+
class TestGuessAvailableColors < self
|
90
|
+
include CleanEnvironment
|
91
|
+
{
|
92
|
+
"rxvt" => 8,
|
93
|
+
"xterm-color" => 8,
|
94
|
+
"alacritty" => 256,
|
95
|
+
"iTerm.app" => 256,
|
96
|
+
"screen-256color" => 256,
|
97
|
+
"screenxterm-256color" => 256,
|
98
|
+
"tmux-256color" => 256,
|
99
|
+
"vte-256color" => 256,
|
100
|
+
"vscode-direct" => 2**24,
|
101
|
+
"vte-direct" => 2**24,
|
102
|
+
"xterm-direct" => 2**24,
|
103
|
+
}.each do |term, colors|
|
104
|
+
data("%20s => %8d" % [term, colors], {term: term, colors: colors})
|
105
|
+
end
|
106
|
+
def test_term_env(data)
|
107
|
+
ENV["TERM"] = data[:term]
|
108
|
+
assert_equal(data[:colors],
|
109
|
+
Test::Unit::ColorScheme.available_colors,
|
110
|
+
"Incorrect available_colors for TERM=%s" % [data[:term]])
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class TestDefaultScheme < self
|
115
|
+
include CleanEnvironment
|
116
|
+
|
117
|
+
def test_direct_color
|
118
|
+
ENV["TERM"] = "xterm-direct"
|
119
|
+
assert_equal(Test::Unit::ColorScheme.default_for_256_colors,
|
120
|
+
Test::Unit::ColorScheme.default)
|
121
|
+
end
|
122
|
+
end
|
82
123
|
end
|
data/test/test-test-case.rb
CHANGED
@@ -61,10 +61,15 @@ module Test
|
|
61
61
|
entry.start_with?("kernel/")
|
62
62
|
end
|
63
63
|
|
64
|
+
def internal_backtrace_entry?(entry)
|
65
|
+
entry.start_with?("<internal:")
|
66
|
+
end
|
67
|
+
|
64
68
|
def normalize_location(location)
|
65
69
|
filtered_location = location.reject do |entry|
|
66
70
|
jruby_backtrace_entry?(entry) or
|
67
|
-
rubinius_backtrace_entry?(entry)
|
71
|
+
rubinius_backtrace_entry?(entry) or
|
72
|
+
internal_backtrace_entry?(entry)
|
68
73
|
end
|
69
74
|
filtered_location.collect do |entry|
|
70
75
|
entry.sub(/:\d+:/, ":0:")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-unit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-12-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: power_assert
|
@@ -107,9 +107,8 @@ executables: []
|
|
107
107
|
extensions: []
|
108
108
|
extra_rdoc_files: []
|
109
109
|
files:
|
110
|
+
- BSDL
|
110
111
|
- COPYING
|
111
|
-
- GPL
|
112
|
-
- LGPL
|
113
112
|
- PSFL
|
114
113
|
- README.md
|
115
114
|
- Rakefile
|
@@ -213,6 +212,7 @@ files:
|
|
213
212
|
homepage: http://test-unit.github.io/
|
214
213
|
licenses:
|
215
214
|
- Ruby
|
215
|
+
- BSDL
|
216
216
|
- PSFL
|
217
217
|
metadata:
|
218
218
|
source_code_uri: https://github.com/test-unit/test-unit
|
@@ -231,49 +231,48 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
- !ruby/object:Gem::Version
|
232
232
|
version: '0'
|
233
233
|
requirements: []
|
234
|
-
|
235
|
-
rubygems_version: 2.7.6.2
|
234
|
+
rubygems_version: 3.2.0.rc.2
|
236
235
|
signing_key:
|
237
236
|
specification_version: 4
|
238
237
|
summary: An xUnit family unit testing framework for Ruby.
|
239
238
|
test_files:
|
240
|
-
- test/
|
241
|
-
- test/
|
242
|
-
- test/
|
243
|
-
- test/
|
244
|
-
- test/
|
245
|
-
- test/test-diff.rb
|
246
|
-
- test/test-assertions.rb
|
247
|
-
- test/testunit-test-util.rb
|
248
|
-
- test/run-test.rb
|
249
|
-
- test/test-emacs-runner.rb
|
250
|
-
- test/test-color.rb
|
251
|
-
- test/test-pending.rb
|
252
|
-
- test/test-omission.rb
|
253
|
-
- test/test-color-scheme.rb
|
254
|
-
- test/test-test-result.rb
|
255
|
-
- test/test-test-suite.rb
|
256
|
-
- test/test-code-snippet.rb
|
257
|
-
- test/test-test-case.rb
|
258
|
-
- test/test-failure.rb
|
259
|
-
- test/fixtures/no-header.csv
|
239
|
+
- test/collector/test-descendant.rb
|
240
|
+
- test/collector/test-load.rb
|
241
|
+
- test/collector/test_dir.rb
|
242
|
+
- test/collector/test_objectspace.rb
|
243
|
+
- test/fixtures/header-label.csv
|
260
244
|
- test/fixtures/header-label.tsv
|
261
|
-
- test/fixtures/no-header.tsv
|
262
245
|
- test/fixtures/header.csv
|
263
|
-
- test/fixtures/header-label.csv
|
264
|
-
- test/fixtures/plus.csv
|
265
246
|
- test/fixtures/header.tsv
|
266
|
-
- test/
|
247
|
+
- test/fixtures/no-header.csv
|
248
|
+
- test/fixtures/no-header.tsv
|
249
|
+
- test/fixtures/plus.csv
|
250
|
+
- test/run-test.rb
|
251
|
+
- test/test-assertions.rb
|
252
|
+
- test/test-attribute-matcher.rb
|
253
|
+
- test/test-attribute.rb
|
254
|
+
- test/test-code-snippet.rb
|
255
|
+
- test/test-color-scheme.rb
|
256
|
+
- test/test-color.rb
|
257
|
+
- test/test-data.rb
|
258
|
+
- test/test-diff.rb
|
259
|
+
- test/test-emacs-runner.rb
|
260
|
+
- test/test-error.rb
|
261
|
+
- test/test-failure.rb
|
262
|
+
- test/test-fault-location-detector.rb
|
267
263
|
- test/test-fixture.rb
|
264
|
+
- test/test-notification.rb
|
265
|
+
- test/test-omission.rb
|
266
|
+
- test/test-pending.rb
|
268
267
|
- test/test-priority.rb
|
268
|
+
- test/test-test-case.rb
|
269
|
+
- test/test-test-result.rb
|
269
270
|
- test/test-test-suite-creator.rb
|
270
|
-
- test/test-
|
271
|
-
- test/test-
|
272
|
-
- test/
|
273
|
-
- test/test-
|
274
|
-
- test/
|
275
|
-
- test/
|
276
|
-
- test/
|
277
|
-
- test/
|
278
|
-
- test/test-error.rb
|
279
|
-
- test/test-data.rb
|
271
|
+
- test/test-test-suite.rb
|
272
|
+
- test/testunit-test-util.rb
|
273
|
+
- test/ui/test_testrunmediator.rb
|
274
|
+
- test/util/test-method-owner-finder.rb
|
275
|
+
- test/util/test-output.rb
|
276
|
+
- test/util/test_backtracefilter.rb
|
277
|
+
- test/util/test_observable.rb
|
278
|
+
- test/util/test_procwrapper.rb
|