parallel_tests 4.2.2 → 4.4.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: 8669ce686a0c750d7bb0cbcab2f78ddd1d2431bcb5eb3eeea3a1a9050efe345e
4
- data.tar.gz: a7f4d4148379cee9f80a820b72ce04e91eaf8df697cc9db8c2d530225e519f67
3
+ metadata.gz: cf9a4f09819ff1193b0f02d9148f72d7b12e4c2efc2ca4e5e7981eb6959ebfef
4
+ data.tar.gz: f86bdeb95cb93b8d8d79a81727e719014a481c18520da973480ff44d6828ffdb
5
5
  SHA512:
6
- metadata.gz: 49a18035b13cb9d5665d73eec21bcc0749ae09b1488d05dc86bfc2516a6303b8e95919ec73ffc648d1aa7f5be373b1c70e8691d69719aaff79c382879db2c6c5
7
- data.tar.gz: 5f0c59c7e8ba42150396e48cf31d437b0b9ce15b20c4554ae23072e00d3b9a8b48de41fd102f17275ca1015e151482b691159d6d10cebe9139106ad8183f2828
6
+ metadata.gz: 549401be10742522594fbd9f9ba1eb657c7689c13be3f9034bb7ee78225a7b86cf127b83d1f16cac932b639cfec92ecac9644e8aff9aa488b39e3980eb23ff6c
7
+ data.tar.gz: ad909f442e744a869bc4db59b9bf2bc9b3559e888f2d017cee58fa51b4d8563f5dc9123d6ce48317fe65f56e7d6f4f4d89c56274960d14ec1befbe5e3cabcc2d
data/Readme.md CHANGED
@@ -3,8 +3,8 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/parallel_tests.svg)](https://rubygems.org/gems/parallel_tests)
4
4
  [![Build status](https://github.com/grosser/parallel_tests/workflows/test/badge.svg)](https://github.com/grosser/parallel_tests/actions?query=workflow%3Atest)
5
5
 
6
- Speedup Test::Unit + RSpec + Cucumber + Spinach by running parallel on multiple CPU cores.<br/>
7
- ParallelTests splits tests into even groups (by number of lines or runtime) and runs each group in a single process with its own database.
6
+ Speedup Minitest + RSpec + Turnip + Cucumber + Spinach by running parallel on multiple CPU cores.<br/>
7
+ ParallelTests splits tests into balanced groups (by number of lines or runtime) and runs each group in a process with its own database.
8
8
 
9
9
  Setup for Rails
10
10
  ===============
@@ -46,7 +46,7 @@ test:
46
46
  rake parallel:drop
47
47
 
48
48
  ### Run!
49
- rake parallel:test # Test::Unit
49
+ rake parallel:test # Minitest
50
50
  rake parallel:spec # RSpec
51
51
  rake parallel:features # Cucumber
52
52
  rake parallel:features-spinach # Spinach
@@ -106,11 +106,13 @@ at_exit do
106
106
  end
107
107
  ```
108
108
 
109
- Even test group run-times
110
- =========================
109
+ Even test group runtimes
110
+ ========================
111
111
 
112
- Test groups are often not balanced and will run for different times, making everything wait for the slowest group.
113
- Use these loggers to record test runtime and then use the recorded runtime to balance test groups more evenly.
112
+ Test groups will often run for different times, making the full test run as slow as the slowest group.
113
+
114
+ Step 1: Use these loggers (see below) to record test runtime
115
+ Step 2: Your next run will use the recorded test runtimes (use `--runtime-log <file>` if you picked a location different from below)
114
116
 
115
117
  ### RSpec
116
118
 
@@ -128,9 +130,11 @@ Add to your `test_helper.rb`:
128
130
  require 'parallel_tests/test/runtime_logger' if ENV['RECORD_RUNTIME']
129
131
  ```
130
132
 
131
- results will be logged to tmp/parallel_runtime_test.log when `RECORD_RUNTIME` is set,
133
+ results will be logged to `tmp/parallel_runtime_test.log` when `RECORD_RUNTIME` is set,
132
134
  so it is not always required or overwritten.
133
135
 
136
+ ### TODO: add instructions for other frameworks
137
+
134
138
  Loggers
135
139
  =======
136
140
 
@@ -147,7 +151,7 @@ Add the following to your `.rspec_parallel` (or `.rspec`) :
147
151
  RSpec: FailuresLogger
148
152
  -----------------------
149
153
 
150
- Produce pastable command-line snippets for each failed example. For example:
154
+ Produce pasteable command-line snippets for each failed example. For example:
151
155
 
152
156
  ```bash
153
157
  rspec /path/to/my_spec.rb:123 # should do something
@@ -160,6 +164,24 @@ Add to `.rspec_parallel` or use as CLI flag:
160
164
 
161
165
  (Not needed to retry failures, for that pass [--only-failures](https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures) to rspec)
162
166
 
167
+
168
+ RSpec: VerboseLogger
169
+ -----------------------
170
+
171
+ Prints a single line for starting and finishing each example, to see what is currently running in each process.
172
+
173
+ ```
174
+ # PID, parallel process number, spec status, example description
175
+ [14403] [2] [STARTED] Foo foo
176
+ [14402] [1] [STARTED] Bar bar
177
+ [14402] [1] [PASSED] Bar bar
178
+ ```
179
+
180
+ Add to `.rspec_parallel` or use as CLI flag:
181
+
182
+ --format ParallelTests::RSpec::VerboseLogger
183
+
184
+
163
185
  Cucumber: FailuresLogger
164
186
  -----------------------
165
187
 
@@ -33,8 +33,10 @@ module ParallelTests
33
33
  "spec"
34
34
  end
35
35
 
36
+ # used to find all _spec.rb files
37
+ # supports also feature files used by rspec turnip extension
36
38
  def test_suffix
37
- /_spec\.rb$/
39
+ /(_spec\.rb|\.feature)$/
38
40
  end
39
41
 
40
42
  def line_is_result?(line)
@@ -36,6 +36,8 @@ class ParallelTests::RSpec::RuntimeLogger < ParallelTests::RSpec::LoggerBase
36
36
  def start_dump(*)
37
37
  return unless ENV['TEST_ENV_NUMBER'] # only record when running in parallel
38
38
  lock_output do
39
+ # Order the output from slowest to fastest
40
+ @example_times = @example_times.sort_by(&:last).reverse
39
41
  @example_times.each do |file, time|
40
42
  relative_path = file.sub(%r{^#{Regexp.escape Dir.pwd}/}, '').sub(%r{^\./}, "")
41
43
  @output.puts "#{relative_path}:#{[time, 0].max}"
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec/core/formatters/base_text_formatter'
4
+ require 'parallel_tests/rspec/runner'
5
+
6
+ class ParallelTests::RSpec::VerboseLogger < RSpec::Core::Formatters::BaseTextFormatter
7
+ RSpec::Core::Formatters.register(
8
+ self,
9
+ :example_group_started,
10
+ :example_group_finished,
11
+ :example_started,
12
+ :example_passed,
13
+ :example_pending,
14
+ :example_failed
15
+ )
16
+
17
+ def initialize(output)
18
+ super
19
+ @line = []
20
+ end
21
+
22
+ def example_group_started(notification)
23
+ @line.push(notification.group.description)
24
+ end
25
+
26
+ def example_group_finished(_notification)
27
+ @line.pop
28
+ end
29
+
30
+ def example_started(notification)
31
+ @line.push(notification.example.description)
32
+ output_formatted_line('STARTED', :yellow)
33
+ end
34
+
35
+ def example_passed(_passed)
36
+ output_formatted_line('PASSED', :success)
37
+ @line.pop
38
+ end
39
+
40
+ def example_pending(_pending)
41
+ output_formatted_line('PENDING', :pending)
42
+ @line.pop
43
+ end
44
+
45
+ def example_failed(_failure)
46
+ output_formatted_line('FAILED', :failure)
47
+ @line.pop
48
+ end
49
+
50
+ private
51
+
52
+ def output_formatted_line(status, console_code)
53
+ prefix = ["[#{Process.pid}]"]
54
+ if ENV.include?('TEST_ENV_NUMBER')
55
+ test_env_number = ENV['TEST_ENV_NUMBER'] == '' ? 1 : Integer(ENV['TEST_ENV_NUMBER'])
56
+ prefix << "[#{test_env_number}]"
57
+ end
58
+ prefix << RSpec::Core::Formatters::ConsoleCodes.wrap("[#{status}]", console_code)
59
+
60
+ output.puts [*prefix, *@line].join(' ')
61
+ end
62
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ParallelTests
3
- VERSION = '4.2.2'
3
+ VERSION = '4.4.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallel_tests
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.2
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-06 00:00:00.000000000 Z
11
+ date: 2023-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -58,6 +58,7 @@ files:
58
58
  - lib/parallel_tests/rspec/runner.rb
59
59
  - lib/parallel_tests/rspec/runtime_logger.rb
60
60
  - lib/parallel_tests/rspec/summary_logger.rb
61
+ - lib/parallel_tests/rspec/verbose_logger.rb
61
62
  - lib/parallel_tests/spinach/runner.rb
62
63
  - lib/parallel_tests/tasks.rb
63
64
  - lib/parallel_tests/test/runner.rb
@@ -68,8 +69,8 @@ licenses:
68
69
  - MIT
69
70
  metadata:
70
71
  bug_tracker_uri: https://github.com/grosser/parallel_tests/issues
71
- documentation_uri: https://github.com/grosser/parallel_tests/blob/v4.2.2/Readme.md
72
- source_code_uri: https://github.com/grosser/parallel_tests/tree/v4.2.2
72
+ documentation_uri: https://github.com/grosser/parallel_tests/blob/v4.4.0/Readme.md
73
+ source_code_uri: https://github.com/grosser/parallel_tests/tree/v4.4.0
73
74
  wiki_uri: https://github.com/grosser/parallel_tests/wiki
74
75
  post_install_message:
75
76
  rdoc_options: []