turbo_tests 1.0.0 → 1.1.1
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/Gemfile.lock +5 -7
- data/README.md +8 -5
- data/lib/turbo_tests/cli.rb +19 -2
- data/lib/turbo_tests/runner.rb +23 -2
- data/lib/turbo_tests/version.rb +1 -1
- data/turbo_tests.gemspec +4 -5
- metadata +14 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 617e19bd975077fab07e06ef1a6e5da35e72f962709464f62d32f381c6f4aacf
|
4
|
+
data.tar.gz: 260869dd5a88d6399f4608942632424027b06696a0d81390c68f2bd8446548af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2eaac23e18d8a3d80e1d074a07f0ce7fafbbb0b6f5dcb0609dd408df0bfd5cd34a58d98fe7befe34a60a060b1f856a1e7e848223104e29dabd5795ea10448e6
|
7
|
+
data.tar.gz: 977901641b0bbf1b892155dd6197515eba480c0f6fa3d65d2c4e0d7162f1ea7d2935b766a5b0115ac24a23972343ead48c9b0ad31ff92361c028079108ca8509
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
turbo_tests (
|
5
|
-
|
6
|
-
|
7
|
-
rspec
|
4
|
+
turbo_tests (1.1.1)
|
5
|
+
parallel_tests (~> 3.3)
|
6
|
+
rspec (~> 3.9)
|
8
7
|
|
9
8
|
GEM
|
10
9
|
remote: https://rubygems.org/
|
@@ -12,7 +11,6 @@ GEM
|
|
12
11
|
coderay (1.1.3)
|
13
12
|
diff-lcs (1.4.4)
|
14
13
|
method_source (1.0.0)
|
15
|
-
optparse (0.1.0)
|
16
14
|
parallel (1.19.2)
|
17
15
|
parallel_tests (3.3.0)
|
18
16
|
parallel
|
@@ -26,7 +24,7 @@ GEM
|
|
26
24
|
rspec-mocks (~> 3.9.0)
|
27
25
|
rspec-core (3.9.3)
|
28
26
|
rspec-support (~> 3.9.3)
|
29
|
-
rspec-expectations (3.9.
|
27
|
+
rspec-expectations (3.9.4)
|
30
28
|
diff-lcs (>= 1.2.0, < 2.0)
|
31
29
|
rspec-support (~> 3.9.0)
|
32
30
|
rspec-mocks (3.9.1)
|
@@ -38,7 +36,7 @@ PLATFORMS
|
|
38
36
|
ruby
|
39
37
|
|
40
38
|
DEPENDENCIES
|
41
|
-
pry
|
39
|
+
pry (~> 0.13)
|
42
40
|
rake (~> 12.0)
|
43
41
|
turbo_tests!
|
44
42
|
|
data/README.md
CHANGED
@@ -36,7 +36,7 @@ Finished in 1 minute 35.05 seconds (files took 6.26 seconds to load)
|
|
36
36
|
`turbo_tests` output looks like regular `rspec`:
|
37
37
|
|
38
38
|
```bash
|
39
|
-
$ bundle exec
|
39
|
+
$ bundle exec turbo_tests
|
40
40
|
...........................................................................................................................................................................................
|
41
41
|
...........................................................................................................................................................................................
|
42
42
|
...........................................................................................................................................................................................
|
@@ -80,17 +80,20 @@ Show help:
|
|
80
80
|
```bash
|
81
81
|
$ bundle exec turbo_tests -h
|
82
82
|
Usage: turbo_tests [options]
|
83
|
+
|
84
|
+
[optional] Only selected files & folders:
|
85
|
+
turbo_tests spec/bar spec/baz/xxx_spec.rb
|
86
|
+
|
87
|
+
Options:
|
88
|
+
-n [PROCESSES] How many processes to use, default: available CPUs
|
83
89
|
-r, --require PATH Require a file.
|
84
|
-
-f, --format FORMATTER Choose a formatter.
|
90
|
+
-f, --format FORMATTER Choose a formatter. Available formatters: progress (p), documentation (d). Default: progress
|
85
91
|
-t, --tag TAG Run examples with the specified tag.
|
86
92
|
-o, --out FILE Write output to a file instead of $stdout
|
87
93
|
-v, --verbose More output
|
88
94
|
--fail-fast=[N]
|
89
95
|
```
|
90
96
|
|
91
|
-
## Roadmap
|
92
|
-
- [ ] Capture time to load files #1
|
93
|
-
|
94
97
|
## Development
|
95
98
|
|
96
99
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/turbo_tests/cli.rb
CHANGED
@@ -13,15 +13,31 @@ module TurboTests
|
|
13
13
|
requires = []
|
14
14
|
formatters = []
|
15
15
|
tags = []
|
16
|
+
count = nil
|
16
17
|
verbose = false
|
17
18
|
fail_fast = nil
|
18
19
|
|
19
20
|
OptionParser.new { |opts|
|
21
|
+
opts.banner = <<-BANNER.gsub(/^ /, "")
|
22
|
+
Run all tests in parallel, giving each process ENV['TEST_ENV_NUMBER'] ('1', '2', '3', ...).
|
23
|
+
|
24
|
+
Uses parallel_tests under the hood, but reports test results incrementally. Based on Discourse and RubyGems work in this area.
|
25
|
+
|
26
|
+
Usage: turbo_tests [options]
|
27
|
+
|
28
|
+
[optional] Only selected files & folders:
|
29
|
+
turbo_tests spec/bar spec/baz/xxx_spec.rb
|
30
|
+
|
31
|
+
Options:
|
32
|
+
BANNER
|
33
|
+
|
34
|
+
opts.on("-n [PROCESSES]", Integer, "How many processes to use, default: available CPUs") { |n| count = n }
|
35
|
+
|
20
36
|
opts.on("-r", "--require PATH", "Require a file.") do |filename|
|
21
37
|
requires << filename
|
22
38
|
end
|
23
39
|
|
24
|
-
opts.on("-f", "--format FORMATTER", "Choose a formatter.") do |name|
|
40
|
+
opts.on("-f", "--format FORMATTER", "Choose a formatter. Available formatters: progress (p), documentation (d). Default: progress") do |name|
|
25
41
|
formatters << {
|
26
42
|
name: name,
|
27
43
|
outputs: []
|
@@ -76,7 +92,8 @@ module TurboTests
|
|
76
92
|
tags: tags,
|
77
93
|
files: @argv.empty? ? ["spec"] : @argv,
|
78
94
|
verbose: verbose,
|
79
|
-
fail_fast: fail_fast
|
95
|
+
fail_fast: fail_fast,
|
96
|
+
count: count,
|
80
97
|
)
|
81
98
|
end
|
82
99
|
end
|
data/lib/turbo_tests/runner.rb
CHANGED
@@ -13,6 +13,7 @@ module TurboTests
|
|
13
13
|
start_time = opts.fetch(:start_time) { Time.now }
|
14
14
|
verbose = opts.fetch(:verbose, false)
|
15
15
|
fail_fast = opts.fetch(:fail_fast, nil)
|
16
|
+
count = opts.fetch(:count, nil)
|
16
17
|
|
17
18
|
reporter = Reporter.from_config(formatters, start_time)
|
18
19
|
|
@@ -21,7 +22,8 @@ module TurboTests
|
|
21
22
|
files: files,
|
22
23
|
tags: tags,
|
23
24
|
verbose: verbose,
|
24
|
-
fail_fast: fail_fast
|
25
|
+
fail_fast: fail_fast,
|
26
|
+
count: count
|
25
27
|
).run
|
26
28
|
end
|
27
29
|
|
@@ -31,6 +33,8 @@ module TurboTests
|
|
31
33
|
@tags = opts[:tags]
|
32
34
|
@verbose = opts[:verbose]
|
33
35
|
@fail_fast = opts[:fail_fast]
|
36
|
+
@count = opts[:count]
|
37
|
+
|
34
38
|
@failure_count = 0
|
35
39
|
@runtime_log = "tmp/parallel_runtime_rspec.log"
|
36
40
|
|
@@ -39,7 +43,10 @@ module TurboTests
|
|
39
43
|
end
|
40
44
|
|
41
45
|
def run
|
42
|
-
@num_processes =
|
46
|
+
@num_processes = [
|
47
|
+
ParallelTests.determine_number_of_processes(@count),
|
48
|
+
ParallelTests::RSpec::Runner.tests_with_size(@files, {}).size
|
49
|
+
].min
|
43
50
|
|
44
51
|
tests_in_groups =
|
45
52
|
ParallelTests::RSpec::Runner.tests_in_groups(
|
@@ -48,6 +55,8 @@ module TurboTests
|
|
48
55
|
runtime_log: @runtime_log
|
49
56
|
)
|
50
57
|
|
58
|
+
report_number_of_tests(tests_in_groups)
|
59
|
+
|
51
60
|
tests_in_groups.each_with_index do |tests, process_id|
|
52
61
|
start_regular_subprocess(tests, process_id + 1)
|
53
62
|
end
|
@@ -176,5 +185,17 @@ module TurboTests
|
|
176
185
|
def fail_fast_met
|
177
186
|
!@fail_fast.nil? && @fail_fast >= @failure_count
|
178
187
|
end
|
188
|
+
|
189
|
+
private
|
190
|
+
|
191
|
+
def report_number_of_tests(groups)
|
192
|
+
name = ParallelTests::RSpec::Runner.test_file_name
|
193
|
+
|
194
|
+
num_processes = groups.size
|
195
|
+
num_tests = groups.map(&:size).sum
|
196
|
+
tests_per_process = (num_processes == 0 ? 0 : num_tests / num_processes)
|
197
|
+
|
198
|
+
puts "#{num_processes} processes for #{num_tests} #{name}s, ~ #{tests_per_process} #{name}s per process"
|
199
|
+
end
|
179
200
|
end
|
180
201
|
end
|
data/lib/turbo_tests/version.rb
CHANGED
data/turbo_tests.gemspec
CHANGED
@@ -4,7 +4,7 @@ Gem::Specification.new do |spec|
|
|
4
4
|
spec.name = "turbo_tests"
|
5
5
|
spec.version = TurboTests::VERSION
|
6
6
|
spec.authors = ["Ilya Zub"]
|
7
|
-
spec.email = ["
|
7
|
+
spec.email = ["zaoooza92@gmail.com"]
|
8
8
|
|
9
9
|
spec.summary = "Runner for grosser/parallel_tests with incremental summarized output. Based on Discourse and Rubygems work in this area."
|
10
10
|
spec.homepage = "https://github.com/serpapi/turbo_tests"
|
@@ -15,11 +15,10 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.metadata["source_code_uri"] = "https://github.com/serpapi/turbo_tests"
|
16
16
|
spec.metadata["changelog_uri"] = "https://github.com/serpapi/turbo_tests/releases"
|
17
17
|
|
18
|
-
spec.add_dependency "rspec"
|
19
|
-
spec.add_dependency "parallel_tests"
|
20
|
-
spec.add_dependency "optparse"
|
18
|
+
spec.add_dependency "rspec", "~> 3.9"
|
19
|
+
spec.add_dependency "parallel_tests", "~> 3.3"
|
21
20
|
|
22
|
-
spec.add_development_dependency "pry"
|
21
|
+
spec.add_development_dependency "pry", "~> 0.13"
|
23
22
|
|
24
23
|
# Specify which files should be added to the gem when it is released.
|
25
24
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbo_tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Zub
|
@@ -14,61 +14,47 @@ dependencies:
|
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.9'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: parallel_tests
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3.3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: optparse
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
40
|
+
version: '3.3'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: pry
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - "
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
47
|
+
version: '0.13'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - "
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
54
|
+
version: '0.13'
|
69
55
|
description:
|
70
56
|
email:
|
71
|
-
-
|
57
|
+
- zaoooza92@gmail.com
|
72
58
|
executables:
|
73
59
|
- turbo_tests
|
74
60
|
extensions: []
|