semaphore_test_boosters 2.2.3 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -8
- data/lib/test_boosters/boosters/base.rb +16 -0
- data/lib/test_boosters/boosters/minitest.rb +21 -1
- data/lib/test_boosters/boosters/rspec.rb +9 -6
- data/lib/test_boosters/cli_parser.rb +16 -3
- data/lib/test_boosters/shell.rb +3 -0
- data/lib/test_boosters/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 502cd665598a91e82706246e1f4ce9ec49f74d42
|
4
|
+
data.tar.gz: d30decefa24819ecaf7b9e81496bb9f67fb5255a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d5625893720c3d00920a712ae5ea306cb179043c52c692fdb2d19dc4d69646fff8243e7a84f2e0acb7ef3648f617a6c72fddd7b3d2e69fb034805cfdb8b4944
|
7
|
+
data.tar.gz: 6e57270af8ed571fd2350ea023e7bffd13aa5fa75109014e987080c949865d18afa6889a740c3b833f852516af7d6097962a8ffa1585e1405e0a14ec160afa80
|
data/README.md
CHANGED
@@ -122,16 +122,16 @@ bundle exec rspec --format documentation --format json --out /home/<user>/rspec_
|
|
122
122
|
```
|
123
123
|
|
124
124
|
Optionally, you can pass additional RSpec flags with the `TB_RSPEC_OPTIONS`
|
125
|
-
environment variable
|
125
|
+
environment variable. You can also set a RSpec formatter with the `TB_RSPEC_FORMATTER` environment variable.
|
126
|
+
Default formatter is `documentation`.
|
126
127
|
|
127
|
-
``` bash
|
128
|
-
TB_RSPEC_OPTIONS='--fail-fast=3' rspec_booster --job 4/32
|
129
|
-
```
|
130
|
-
|
131
|
-
The above command will execute:
|
132
128
|
|
129
|
+
Example:
|
133
130
|
``` bash
|
134
|
-
|
131
|
+
TB_RSPEC_OPTIONS='--fail-fast=3' TB_RSPEC_FORMATTER=Fivemat rspec_booster --job 4/32
|
132
|
+
|
133
|
+
# will execute:
|
134
|
+
bundle exec rspec --fail-fast=3 --format Fivemat --format json --out /home/<user>/rspec_report.json <file_list>
|
135
135
|
```
|
136
136
|
|
137
137
|
## Cucumber Booster
|
@@ -164,12 +164,29 @@ Example of running job 4 out of 32 jobs:
|
|
164
164
|
minitest_booster --job 4/32
|
165
165
|
```
|
166
166
|
|
167
|
-
|
167
|
+
If minitest booster is executed in a scope of a Rails project, the following is
|
168
|
+
executed:
|
169
|
+
|
170
|
+
``` bash
|
171
|
+
bundle exec rails test <file_list>
|
172
|
+
```
|
173
|
+
|
174
|
+
If minitest booster is running outside of a Rails project, the following is
|
175
|
+
executed:
|
168
176
|
|
169
177
|
``` bash
|
170
178
|
ruby -e 'ARGV.each { |f| require ".#{f}" }' <file_list>
|
171
179
|
```
|
172
180
|
|
181
|
+
If you want to run a custom command for minitest, use the
|
182
|
+
`MINITEST_BOOSTER_COMMAND` environment variable:
|
183
|
+
|
184
|
+
``` bash
|
185
|
+
export MINITEST_BOOSTER_COMMAND="bundle exec rake test"
|
186
|
+
|
187
|
+
minitest_booster --job 1/42
|
188
|
+
```
|
189
|
+
|
173
190
|
## ExUnit Booster
|
174
191
|
|
175
192
|
The `ex_unit_booster` loads all the files that match the `test/**/*_test.exs`
|
@@ -18,6 +18,12 @@ module TestBoosters
|
|
18
18
|
|
19
19
|
known, leftover = distribution.files_for(job_index)
|
20
20
|
|
21
|
+
if cli_options[:dry_run]
|
22
|
+
show_files_for_dry_run("known", known)
|
23
|
+
show_files_for_dry_run("leftover", leftover)
|
24
|
+
return 0
|
25
|
+
end
|
26
|
+
|
21
27
|
exit_status = TestBoosters::Job.run(@command, known, leftover)
|
22
28
|
|
23
29
|
after_job # execute some activities when the job finishes
|
@@ -25,6 +31,16 @@ module TestBoosters
|
|
25
31
|
exit_status
|
26
32
|
end
|
27
33
|
|
34
|
+
def show_files_for_dry_run(label, files)
|
35
|
+
if files.empty?
|
36
|
+
puts "[DRY RUN] No #{label} files."
|
37
|
+
return
|
38
|
+
end
|
39
|
+
|
40
|
+
puts "\n[DRY RUN] Running tests for #{label} files:"
|
41
|
+
puts files.map { |file| "- #{file}" }.join("\n")
|
42
|
+
end
|
43
|
+
|
28
44
|
def before_job
|
29
45
|
# Do nothing
|
30
46
|
end
|
@@ -9,13 +9,33 @@ module TestBoosters
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def command
|
12
|
-
|
12
|
+
if command_set_with_env_var?
|
13
|
+
command_from_env_var
|
14
|
+
elsif rails_app?
|
15
|
+
"bundle exec rails test"
|
16
|
+
else
|
17
|
+
"ruby -e 'ARGV.each { |f| require \"./\#{f}\" }'"
|
18
|
+
end
|
13
19
|
end
|
14
20
|
|
15
21
|
def split_configuration_path
|
16
22
|
ENV["MINITEST_SPLIT_CONFIGURATION_PATH"] || "#{ENV["HOME"]}/minitest_split_configuration.json"
|
17
23
|
end
|
18
24
|
|
25
|
+
def command_set_with_env_var?
|
26
|
+
!command_from_env_var.empty?
|
27
|
+
end
|
28
|
+
|
29
|
+
def command_from_env_var
|
30
|
+
ENV["MINITEST_BOOSTER_COMMAND"].to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def rails_app?
|
36
|
+
File.exist?("app") && File.exist?("config") && File.exist?("config/application.rb")
|
37
|
+
end
|
38
|
+
|
19
39
|
end
|
20
40
|
end
|
21
41
|
end
|
@@ -1,11 +1,8 @@
|
|
1
1
|
module TestBoosters
|
2
2
|
module Boosters
|
3
3
|
class Rspec < Base
|
4
|
-
|
5
|
-
FILE_PATTERN = "spec/**/*_spec.rb".freeze
|
6
|
-
|
7
4
|
def initialize
|
8
|
-
super(
|
5
|
+
super(file_pattern, split_configuration_path, command)
|
9
6
|
end
|
10
7
|
|
11
8
|
def display_header
|
@@ -25,8 +22,11 @@ module TestBoosters
|
|
25
22
|
end
|
26
23
|
|
27
24
|
def rspec_options
|
28
|
-
|
29
|
-
|
25
|
+
@rspec_options ||= begin
|
26
|
+
output_formatter = ENV.fetch("TB_RSPEC_FORMATTER", "documentation")
|
27
|
+
# rubocop:disable LineLength
|
28
|
+
"#{ENV["TB_RSPEC_OPTIONS"]} --format #{output_formatter} --require #{formatter_path} --format SemaphoreFormatter --out #{report_path}"
|
29
|
+
end
|
30
30
|
end
|
31
31
|
|
32
32
|
def report_path
|
@@ -41,6 +41,9 @@ module TestBoosters
|
|
41
41
|
@formatter_path ||= File.join(::TestBoosters::ROOT_PATH, "rspec_formatters/semaphore_rspec3_json_formatter.rb")
|
42
42
|
end
|
43
43
|
|
44
|
+
def file_pattern
|
45
|
+
ENV["TEST_BOOSTERS_RSPEC_TEST_FILE_PATTERN"] || "spec/**/*_spec.rb"
|
46
|
+
end
|
44
47
|
end
|
45
48
|
end
|
46
49
|
end
|
@@ -9,15 +9,28 @@ module TestBoosters
|
|
9
9
|
options = {}
|
10
10
|
|
11
11
|
parser = OptionParser.new do |opts|
|
12
|
-
opts.on(
|
12
|
+
opts.on(
|
13
|
+
"--thread INDEX",
|
14
|
+
"[DEPRECATED] Use the '--job' option instead"
|
15
|
+
) do |parameter|
|
13
16
|
puts "[DEPRECATION WARNING] The '--thread' parameter is deprecated. Please use '--job' instead."
|
14
17
|
|
15
18
|
options.merge!(parse_job_params(parameter))
|
16
19
|
end
|
17
20
|
|
18
|
-
opts.on(
|
21
|
+
opts.on(
|
22
|
+
"--job INDEX",
|
23
|
+
"The job index and number of total jobs. e.g. --job 4/32"
|
24
|
+
) do |parameter|
|
19
25
|
options.merge!(parse_job_params(parameter))
|
20
26
|
end
|
27
|
+
|
28
|
+
opts.on(
|
29
|
+
"--dry-run",
|
30
|
+
"Only print the files that will be run for this job index"
|
31
|
+
) do |parameter|
|
32
|
+
options.merge!(:dry_run => parameter)
|
33
|
+
end
|
21
34
|
end
|
22
35
|
|
23
36
|
parser.parse!
|
@@ -25,7 +38,7 @@ module TestBoosters
|
|
25
38
|
options
|
26
39
|
end
|
27
40
|
|
28
|
-
# parses input like '1/32' and
|
41
|
+
# parses input like '1/32' and outputs { :job_index => 1, :job_count => 32 }
|
29
42
|
def parse_job_params(input_parameter)
|
30
43
|
job_index, job_count, _rest = input_parameter.split("/")
|
31
44
|
|
data/lib/test_boosters/shell.rb
CHANGED
@@ -12,9 +12,12 @@ module TestBoosters
|
|
12
12
|
system(command)
|
13
13
|
end
|
14
14
|
|
15
|
+
signaled = $?.signaled?
|
16
|
+
termsig = $?.termsig
|
15
17
|
exited = $?.exited?
|
16
18
|
exit_status = $?.exitstatus
|
17
19
|
|
20
|
+
TestBoosters::Logger.info("Command signaled with: #{termsig}") if signaled
|
18
21
|
TestBoosters::Logger.info("Command exited : #{exited}")
|
19
22
|
TestBoosters::Logger.info("Command finished, exit status : #{exit_status}")
|
20
23
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semaphore_test_boosters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Developers at Rendered Text
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: semaphore_cucumber_booster_config
|