minitest-reporters-ordered_spec_reporter 1.1.2 → 1.2.0

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
  SHA256:
3
- metadata.gz: cd40d4d9322e25e5721093b718a20dd1b9c5abd2ab5e8b461d49b1a31e5f208b
4
- data.tar.gz: 8bad6011178a241f62dcb5ee9073ee64b22a5ddfb839397a52a030cc831a2671
3
+ metadata.gz: aa19e059e9e859908ba7ff739292ea2cde1038ece49db041570104b4ce2dbce2
4
+ data.tar.gz: 2c4b2282a822d294e0fed672c5f583ef500e94b81e5573e7e1b24b40abc53d10
5
5
  SHA512:
6
- metadata.gz: 29a178a2e31692fdbe8dcb6c3f75f57cbd37a584fae49376b1d12d0dad5e7d7faca2f8d653fd71af3c929f02d150a54d1063ab97a43a3757b2dec83f4468555a
7
- data.tar.gz: 8433d9304e5ed0aeba0b40479483f864c9ef47dc66c97b4fae699285a4abf79b86ac8bd57bef72da3d483a989d224a9129ac5071ea5b997e503bf55196fae97d
6
+ metadata.gz: e1abe2deaeb2ee26849b9a1945176ebbcac6ac0e218392edda8b1e5fefebc01acd8c92889e62b87d5363cf76427b773b5f522803b41e0e297e4e1b3d136b1102
7
+ data.tar.gz: 0657bf2a9e7a4a075af84c633884c70c7859e1221435868432f283b14bf2f33ce42cf7c1f2d2b1ce3ddc2c7bc94809e416d408d692b1aa82bbdf7322b872f74c
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Minitest::Reporters::OrderedSpecReporter
2
2
 
3
- Modified version of `Minitest::Reporters::SpecReporter` which prints test results in alphabetical order, grouped by test class.
3
+ Modified version of `Minitest::Reporters::SpecReporter` which prints test results in alphabetical order, grouped by test suite.
4
4
 
5
5
  This gem makes use of the `minitest-reporters` library. It modifies the test reporting order, but not Minitest's randomized test execution order.
6
6
 
@@ -34,8 +34,21 @@ The constructor accepts the following options:
34
34
 
35
35
  | option | description | default |
36
36
  |-|-|-|
37
- | `:indentation` | number of indentations to apply to top level test class reports | `0` |
37
+ | `:indentation` | number of indentations to apply to top level test suite reports | `0` |
38
38
  | `:spaces` | number of spaces per indentation level | `2` |
39
39
  | `:justification` | width of the test description column | `65` (aligns with default `SpecReporter`)|
40
40
  | `:truncate` | whether to remove the `test_####_` prefix from each test name | `false` |
41
41
  | `:loose` | whether to add a blank line after each group of tests | `false` |
42
+ | `:color` | options hash describing color options (see below) or `false` to disable colors | `{ suite: :yellow, test: :cyan }` |
43
+
44
+ #### Color Options
45
+
46
+ All color options from the [ANSI](https://github.com/rubyworks/ansi) library are accepted.
47
+
48
+ | option | description | default |
49
+ |-|-|-|
50
+ | `:suite` | color applied to test suite name | `:yellow` |
51
+ | `:test` | color applied to test name | `:cyan` |
52
+ | `:match` | hash of `Regexp` to color | `{}` |
53
+
54
+ Colors provided through the `:match` options take precedence over the `:suite` and `:test` colors. If there are multiple matches, the first is applied.
@@ -1,3 +1,4 @@
1
+ require 'ansi/code'
1
2
  require 'minitest/reporters'
2
3
 
3
4
  module Minitest
@@ -13,6 +14,11 @@ module Minitest
13
14
  justification: TEST_SIZE + TEST_PADDING, # match output of SpecReporter
14
15
  truncate: false,
15
16
  loose: false,
17
+ color: {
18
+ suite: :yellow,
19
+ test: :cyan,
20
+ match: {},
21
+ },
16
22
  }
17
23
 
18
24
  def initialize options = {}
@@ -54,7 +60,7 @@ module Minitest
54
60
  protected
55
61
 
56
62
  def print_suite(name, branch, indentation = options[:indentation])
57
- puts pad_string(name, indentation) unless name.nil?
63
+ puts colorize(name, :suite) + pad_string(name, indentation) unless name.nil?
58
64
 
59
65
  indentation += 1
60
66
 
@@ -81,7 +87,7 @@ module Minitest
81
87
  def record_print_status(test, indentation)
82
88
  test_name = test.name.gsub(/^test_: /, 'test:')
83
89
  test_name = test_name.gsub(/^test_\d*_/, '') if options[:truncate]
84
- print pad_string(test_name, indentation)
90
+ print colorize(test.name, :test) + pad_string(test_name, indentation)
85
91
  print_colored_status(test)
86
92
  print(" (%.2fs)" % test.time) unless test.time.nil?
87
93
  puts
@@ -97,6 +103,20 @@ module Minitest
97
103
  def pad_string(str, indentation)
98
104
  (' ' * indentation * options[:spaces] + str).ljust(options[:justification])
99
105
  end
106
+
107
+ def colorize(name, type)
108
+ return '' unless options[:color]
109
+
110
+ color = nil
111
+
112
+ (options[:color][:match] || []).find do |regexp, color_code|
113
+ color = color_code if regexp.is_a?(Regexp) && name.match(regexp)
114
+ end
115
+
116
+ color ||= options[:color][type]
117
+
118
+ color ? ANSI::Code[color] : ''
119
+ end
100
120
  end
101
121
  end
102
122
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "minitest-reporters-ordered_spec_reporter"
7
- spec.version = "1.1.2"
7
+ spec.version = "1.2.0"
8
8
  spec.authors = ["Nick Barry"]
9
9
  spec.email = ["itsnickbarry@protonmail.ch"]
10
10
 
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "rake", "~> 10.0"
30
30
 
31
31
  spec.add_dependency "minitest-reporters", "~> 1.3.6"
32
+ spec.add_dependency "ansi"
32
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-reporters-ordered_spec_reporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-10 00:00:00.000000000 Z
11
+ date: 2019-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.3.6
55
+ - !ruby/object:Gem::Dependency
56
+ name: ansi
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: Modified version of `Minitest::Reporters::SpecReporter` which prints
56
70
  test results in alphabetical order, grouped by test class.
57
71
  email: