test-unit 3.0.8 → 3.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93a1e018c9d985f96f57f4a1cb7c166ac584d4d7
4
- data.tar.gz: 90fc5bcea7299d0fe43153e2eb6a447e9b3823f2
3
+ metadata.gz: 1731a62620afe520b8f3817106f6e9c126f5ea73
4
+ data.tar.gz: e78724adf56e151021ccb346e17db6fdb1e781af
5
5
  SHA512:
6
- metadata.gz: 22541bbd0a7fe30eb6227f6498e1af4316d749f2f766da3f9266562c9d39ac3f7650ea7e1764b05ec43b150019e8e073045f4a876a7f9ac305cffeb197cc5a79
7
- data.tar.gz: bd5da3acef525e1c3f3539dd09a5509fa531c3be20c15567e955ce79573f57cbe7467cc143e25e9bcaf5dbe83a6289ad084262ccec99ff7cba18351a2be7553d
6
+ metadata.gz: 8cc3e2a66dd5fa1366f1442a94b90c0ff7ee98da7732faed76ab536b67afc2e1f7753e5fc8a17bf8301f6927880168cf9248672e93c502d3cd3382eef395e2e6
7
+ data.tar.gz: 16d07b7d4b54a3826399d0eb9b97457a47cdf6ba945c4deaee1982b4f27809685f32beb8c5dbbb61e416efbc8cfb77922008d39ced1864e47110c749a617cf96
@@ -1,8 +1,28 @@
1
1
  # News
2
2
 
3
+ ## 3.0.9 - 2014-12-31 {#version-3-0-9}
4
+
5
+ It's a release that improves colors.
6
+
7
+ ### Improvements
8
+
9
+ * Added a work around for Ruby 1.8. (Note: Ruby 1.8 isn't
10
+ supported.) [GitHub#89][Patch by Aaron Stone]
11
+ * Supported colorized output on Windows.
12
+ [GitHub#90][Patch by usa]
13
+ * Improved colorized output.
14
+ http://www.a-k-r.org/d/2014-12.html#a2014_12_27_1
15
+ [Suggested by Tanaka Akira]
16
+
17
+ ### Thanks
18
+
19
+ * Aaron Stone
20
+ * usa
21
+ * Tanaka Akira
22
+
3
23
  ## 3.0.8 - 2014-12-12 {#version-3-0-8}
4
24
 
5
- It's a release that support Ruby 2.2.0 preview2.
25
+ It's a release that supports Ruby 2.2.0 preview2.
6
26
 
7
27
  ### Improvements
8
28
 
@@ -41,6 +41,7 @@ module Test
41
41
  end
42
42
 
43
43
  def detect_encoding(first_line)
44
+ return nil unless first_line.respond_to?(:ascii_only?)
44
45
  return nil unless first_line.ascii_only?
45
46
  if /\b(?:en)?coding[:=]\s*([a-z\d_-]+)/i =~ first_line
46
47
  begin
@@ -19,16 +19,22 @@ module Test
19
19
  @@default_for_8_colors ||=
20
20
  new("pass" => Color.new("green", :background => true) +
21
21
  Color.new("white", :bold => true),
22
+ "pass-marker" => Color.new("green", :bold => true),
22
23
  "failure" => Color.new("red", :background => true) +
23
24
  Color.new("white", :bold => true),
25
+ "failure-marker" => Color.new("red"),
24
26
  "pending" => Color.new("magenta", :background => true) +
25
27
  Color.new("white", :bold => true),
28
+ "pending-marker" => Color.new("magenta"),
26
29
  "omission" => Color.new("blue", :background => true) +
27
30
  Color.new("white", :bold => true),
31
+ "omission-marker" => Color.new("blue"),
28
32
  "notification" => Color.new("cyan", :background => true) +
29
33
  Color.new("white", :bold => true),
34
+ "notification-marker" => Color.new("cyan"),
30
35
  "error" => Color.new("black", :background => true) +
31
36
  Color.new("yellow", :bold => true),
37
+ "error-marker" => Color.new("yellow"),
32
38
  "case" => Color.new("blue", :background => true) +
33
39
  Color.new("white", :bold => true),
34
40
  "suite" => Color.new("green", :background => true) +
@@ -50,16 +56,22 @@ module Test
50
56
  @@default_for_256_colors ||=
51
57
  new("pass" => Color.new("030", :background => true) +
52
58
  Color.new("555", :bold => true),
59
+ "pass-marker" => Color.new("050", :bold => true),
53
60
  "failure" => Color.new("300", :background => true) +
54
61
  Color.new("555", :bold => true),
62
+ "failure-marker" => Color.new("500"),
55
63
  "pending" => Color.new("303", :background => true) +
56
64
  Color.new("555", :bold => true),
65
+ "pending-marker" => Color.new("303"),
57
66
  "omission" => Color.new("001", :background => true) +
58
67
  Color.new("555", :bold => true),
68
+ "omission-marker" => Color.new("001"),
59
69
  "notification" => Color.new("011", :background => true) +
60
70
  Color.new("555", :bold => true),
71
+ "notification-marker" => Color.new("011"),
61
72
  "error" => Color.new("000", :background => true) +
62
73
  Color.new("550", :bold => true),
74
+ "error-marker" => Color.new("550"),
63
75
  "case" => Color.new("220", :background => true) +
64
76
  Color.new("555", :bold => true),
65
77
  "suite" => Color.new("110", :background => true) +
@@ -95,16 +107,43 @@ module Test
95
107
  end
96
108
 
97
109
  def available_colors
110
+ guess_available_colors_from_vte_version_env ||
111
+ guess_available_colors_from_colorterm_env ||
112
+ guess_available_colors_from_term_env ||
113
+ 8
114
+ end
115
+
116
+ private
117
+ def guess_available_colors_from_vte_version_env
118
+ vte_version = ENV["VTE_VERSION"]
119
+ return nil if vte_version.nil?
120
+
121
+ major = 0
122
+ minor = 13
123
+ micro = 0
124
+ packed_version = major * 10000 + minor * 100 + micro
125
+ if vte_version.to_i >= packed_version
126
+ 256
127
+ else
128
+ 8
129
+ end
130
+ end
131
+
132
+ def guess_available_colors_from_colorterm_env
98
133
  case ENV["COLORTERM"]
99
- when "gnome-terminal"
134
+ when "gnome-terminal", "xfce4-terminal"
100
135
  256
101
136
  else
102
- case ENV["TERM"]
103
- when /-256color\z/
104
- 256
105
- else
106
- 8
107
- end
137
+ nil
138
+ end
139
+ end
140
+
141
+ def guess_available_colors_from_term_env
142
+ case ENV["TERM"]
143
+ when /-256color\z/
144
+ 256
145
+ else
146
+ nil
108
147
  end
109
148
  end
110
149
  end
@@ -6,6 +6,11 @@
6
6
  # * Copyright (c) 2008-2013 Kouhei Sutou <kou@clear-code.com>
7
7
  # License:: Ruby license.
8
8
 
9
+ begin
10
+ require 'io/console'
11
+ rescue LoadError
12
+ end
13
+
9
14
  require 'test/unit/color-scheme'
10
15
  require 'test/unit/code-snippet-fetcher'
11
16
  require 'test/unit/fault-location-detector'
@@ -89,7 +94,8 @@ module Test
89
94
 
90
95
  def add_fault(fault)
91
96
  @faults << fault
92
- output_progress(fault.single_character_display, fault_color(fault))
97
+ output_progress(fault.single_character_display,
98
+ fault_marker_color(fault))
93
99
  output_progress_in_detail(fault) if @show_detail_immediately
94
100
  @already_outputted = true if fault.critical?
95
101
  end
@@ -173,17 +179,17 @@ module Test
173
179
  def output_fault_in_detail(fault)
174
180
  if fault.is_a?(Failure) and
175
181
  fault.inspected_expected and fault.inspected_actual
176
- output_single(fault.label, fault_color(fault))
177
- output(":")
178
- output(fault.test_name)
182
+ output_single("#{fault.label}: ")
183
+ output(fault.test_name, fault_color(fault))
179
184
  output_fault_backtrace(fault)
180
185
  output_failure_message(fault)
181
186
  else
182
- output_single(fault.label, fault_color(fault))
183
187
  if fault.is_a?(Error)
184
- output(": #{fault.test_name}")
188
+ output_single("#{fault.label}: ")
189
+ output(fault.test_name, fault_color(fault))
185
190
  output_fault_message(fault)
186
191
  else
192
+ output_single(fault.label, fault_color(fault))
187
193
  output_fault_message(fault)
188
194
  output(fault.test_name)
189
195
  end
@@ -308,11 +314,11 @@ module Test
308
314
 
309
315
  def output_statistics(elapsed_time)
310
316
  output("Finished in #{elapsed_time} seconds.")
311
- nl
312
- output(@result, result_color)
313
- output("%g%% passed" % @result.pass_percentage, result_color)
317
+ output_summary_marker
318
+ output(@result)
319
+ output("%g%% passed" % @result.pass_percentage)
314
320
  unless elapsed_time.zero?
315
- nl
321
+ output_summary_marker
316
322
  test_throughput = @result.run_count / elapsed_time
317
323
  assertion_throughput = @result.assertion_count / elapsed_time
318
324
  throughput = [
@@ -323,6 +329,16 @@ module Test
323
329
  end
324
330
  end
325
331
 
332
+ def output_summary_marker
333
+ term_width = guess_term_width
334
+ if term_width.zero?
335
+ marker_width = 6
336
+ else
337
+ marker_width = term_width
338
+ end
339
+ output("-" * marker_width, summary_marker_color)
340
+ end
341
+
326
342
  def test_started(test)
327
343
  return unless output?(VERBOSE)
328
344
 
@@ -337,7 +353,7 @@ module Test
337
353
 
338
354
  def test_finished(test)
339
355
  unless @already_outputted
340
- output_progress(".", color("pass"))
356
+ output_progress(".", color("pass-marker"))
341
357
  end
342
358
  @already_outputted = false
343
359
 
@@ -423,7 +439,7 @@ module Test
423
439
 
424
440
  def output_progress_in_detail_marker(fault)
425
441
  if @progress_row_max > 0
426
- output("=" * @progress_row_max, fault_color(fault))
442
+ output("=" * @progress_row_max)
427
443
  else
428
444
  nl
429
445
  end
@@ -453,20 +469,25 @@ module Test
453
469
  _color
454
470
  end
455
471
 
472
+ def fault_class_color_name(fault_class)
473
+ fault_class.name.split(/::/).last.downcase
474
+ end
475
+
456
476
  def fault_color(fault)
457
- fault_class_color(fault.class)
477
+ color(fault_class_color_name(fault.class))
458
478
  end
459
479
 
460
- def fault_class_color(fault_class)
461
- color(fault_class.name.split(/::/).last.downcase)
480
+ def fault_marker_color(fault)
481
+ color("#{fault_class_color_name(fault.class)}-marker")
462
482
  end
463
483
 
464
- def result_color
465
- color(@result.status)
484
+ def summary_marker_color
485
+ color("#{@result.status}-marker")
466
486
  end
467
487
 
468
488
  def guess_color_availability
469
489
  return false unless @output.tty?
490
+ return true if windows? and ruby_2_0_or_later?
470
491
  case ENV["TERM"]
471
492
  when /(?:term|screen)(?:-(?:256)?color)?\z/
472
493
  true
@@ -476,6 +497,14 @@ module Test
476
497
  end
477
498
  end
478
499
 
500
+ def windows?
501
+ /mswin|mingw/ === RUBY_PLATFORM
502
+ end
503
+
504
+ def ruby_2_0_or_later?
505
+ RUBY_VERSION >= "2.0.0"
506
+ end
507
+
479
508
  def guess_progress_row_max
480
509
  term_width = guess_term_width
481
510
  if term_width.zero?
@@ -490,9 +519,30 @@ module Test
490
519
  end
491
520
 
492
521
  def guess_term_width
493
- Integer(ENV["COLUMNS"] || ENV["TERM_WIDTH"] || 0)
494
- rescue ArgumentError
495
- 0
522
+ guess_term_width_from_io || guess_term_width_from_env || 0
523
+ end
524
+
525
+ def guess_term_width_from_io
526
+ if @output.respond_to?(:winsize)
527
+ begin
528
+ @output.winsize[1]
529
+ rescue SystemCallError
530
+ nil
531
+ end
532
+ else
533
+ nil
534
+ end
535
+ end
536
+
537
+ def guess_term_width_from_env
538
+ env = ENV["COLUMNS"] || ENV["TERM_WIDTH"]
539
+ return nil if env.nil?
540
+
541
+ begin
542
+ Integer(env)
543
+ rescue ArgumentError
544
+ nil
545
+ end
496
546
  end
497
547
  end
498
548
 
@@ -503,6 +553,7 @@ module Test
503
553
  end
504
554
 
505
555
  def need_diff?(options={})
556
+ return false if one_line_all_change?
506
557
  operations.each do |tag,|
507
558
  return true if [:replace, :equal].include?(tag)
508
559
  end
@@ -510,6 +561,18 @@ module Test
510
561
  end
511
562
 
512
563
  private
564
+ def one_line_all_change?
565
+ return false if operations.size != 1
566
+
567
+ tag, from_start, from_end, to_start, to_end = operations.first
568
+ return false if tag != :replace
569
+ return false if [from_start, from_end] != [0, 1]
570
+ return false if [from_start, from_end] != [to_start, to_end]
571
+
572
+ _, _, _line_operations = line_operations(@from.first, @to.first)
573
+ _line_operations.size == 1
574
+ end
575
+
513
576
  def output_single(something, color=nil)
514
577
  @runner.__send__(:output_single, something, color)
515
578
  end
@@ -1,5 +1,5 @@
1
1
  module Test
2
2
  module Unit
3
- VERSION = '3.0.8'
3
+ VERSION = '3.0.9'
4
4
  end
5
5
  end
@@ -54,36 +54,29 @@ class TestUnitColorScheme < Test::Unit::TestCase
54
54
  end
55
55
 
56
56
  def test_default
57
- expected_schema = {
58
- "pass" => color("green", :background => true) +
59
- color("white", :bold => true),
60
- "failure" => color("red", :background => true) +
61
- color("white", :bold => true),
62
- "pending" => color("magenta", :background => true) +
63
- color("white", :bold => true),
64
- "omission" => color("blue", :background => true) +
65
- color("white", :bold => true),
66
- "notification" => color("cyan", :background => true) +
67
- color("white", :bold => true),
68
- "error" => color("black", :background => true) +
69
- color("yellow", :bold => true),
70
- "case" => color("blue", :background => true) +
71
- color("white", :bold => true),
72
- "suite" => color("green", :background => true) +
73
- color("white", :bold => true),
74
- "diff-inserted-tag" => color("red", :background => true) +
75
- color("black", :bold => true),
76
- "diff-deleted-tag" => color("green", :background => true) +
77
- color("black", :bold => true),
78
- "diff-difference-tag" => color("cyan", :background => true) +
79
- color("white", :bold => true),
80
- "diff-inserted" => color("red", :background => true) +
81
- color("white", :bold => true),
82
- "diff-deleted" => color("green", :background => true) +
83
- color("white", :bold => true),
84
- }
85
- assert_equal(expected_schema,
86
- Test::Unit::ColorScheme.default.to_hash)
57
+ expected_schema_keys = [
58
+ "pass",
59
+ "pass-marker",
60
+ "failure",
61
+ "failure-marker",
62
+ "pending",
63
+ "pending-marker",
64
+ "omission",
65
+ "omission-marker",
66
+ "notification",
67
+ "notification-marker",
68
+ "error",
69
+ "error-marker",
70
+ "case",
71
+ "suite",
72
+ "diff-inserted-tag",
73
+ "diff-deleted-tag",
74
+ "diff-difference-tag",
75
+ "diff-inserted",
76
+ "diff-deleted",
77
+ ]
78
+ assert_equal(expected_schema_keys.sort,
79
+ Test::Unit::ColorScheme.default.to_hash.keys.sort)
87
80
  end
88
81
  end
89
82
  end
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.0.8
4
+ version: 3.0.9
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: 2014-12-12 00:00:00.000000000 Z
12
+ date: 2014-12-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: power_assert