rspec_chunked 0.2.0 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -4
- data/Rakefile +4 -0
- data/lib/rspec_chunked.rb +1 -1
- data/lib/rspec_chunked/chunked_tests.rb +4 -3
- data/lib/rspec_chunked/railtie.rb +1 -0
- data/lib/rspec_chunked/version.rb +1 -1
- data/lib/tasks/rspec_chunked_tasks.rake +16 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da560376837ac2fbd3decdb674cb30136337f6bc355a8d45b4150ea6dbc5661c
|
4
|
+
data.tar.gz: 3dbbc9698fac9f0f2100d5d421b726c21e53ae27d524cbb18fef2a41f0dcef4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a129641f04f5dcc4a2d890ed832d76972fbed431100620601b56863b2451d287f3e4be9d9823c2046bb83eec9c349740685ceeab019019fe77bca71a51160918
|
7
|
+
data.tar.gz: d65d05f5c3fc85d9fdc19193f36064f1e9fe4fe0c2bbbffc1ed1e19efb18ca623eeecfa23dcdecbde6bdac5602a4aa32b869703237190e817a7cc71a0d1bd059
|
data/README.md
CHANGED
@@ -16,16 +16,27 @@ If ordering is not enough, permits to balance manually by moving x percentage of
|
|
16
16
|
- Add manual balance
|
17
17
|
```ruby
|
18
18
|
# config/initializers/rspec_chunked.rb
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
if defined?(RspecChunked::ChunkedTests)
|
20
|
+
data = { 1 => { to: 2, percentage: 15 },
|
21
|
+
4 => { to: 3, percentage: 10 } }
|
22
|
+
RspecChunked::ChunkedTests.balance_settings = data
|
23
|
+
end
|
22
24
|
```
|
23
25
|
Balance tests by moving 15% tests files from group 1 into group 2 and moving 10% tests files from group 4 into group 3
|
24
26
|
|
25
27
|
## Usage
|
26
|
-
|
28
|
+
- Basic initialization
|
29
|
+
` CI_JOBS=3 CI_JOB=1 rake rspec_chunked`
|
30
|
+
- Custom initialization
|
31
|
+
` CI_JOBS=3 CI_JOB=1 CI_CMD="bundle exec rspec ..." rake rspec_chunked`
|
27
32
|
- `CI_JOBS`: quantity of groups/workers to be split
|
28
33
|
- `CI_JOB`: current group/worker to be executed, limit: 1 until CI_JOBS
|
34
|
+
- `CI_CMD`: Custom rspec command
|
35
|
+
|
36
|
+
### Coverage merge reports (when using [simplecov](https://github.com/simplecov-ruby/simplecov#merging-test-runs-under-different-execution-environments))
|
37
|
+
This task will merge all coverage reports
|
38
|
+
`rake rspec_chunked:merge_reports`
|
39
|
+
|
29
40
|
|
30
41
|
### Github workflow result
|
31
42
|
- Before:
|
data/Rakefile
CHANGED
data/lib/rspec_chunked.rb
CHANGED
@@ -5,12 +5,13 @@ module RspecChunked
|
|
5
5
|
class << self
|
6
6
|
attr_accessor :balance_settings
|
7
7
|
end
|
8
|
-
attr_accessor :qty_groups, :job_number, :balance_settings
|
8
|
+
attr_accessor :qty_groups, :job_number, :balance_settings, :cmd
|
9
9
|
|
10
|
-
def initialize(qty_groups, job_number)
|
10
|
+
def initialize(qty_groups, job_number, cmd: nil)
|
11
11
|
@qty_groups = qty_groups
|
12
12
|
@job_number = job_number - 1
|
13
13
|
@balance_settings = self.class.balance_settings || {}
|
14
|
+
@cmd = cmd || 'bundle exec rspec'
|
14
15
|
end
|
15
16
|
|
16
17
|
def run
|
@@ -18,7 +19,7 @@ module RspecChunked
|
|
18
19
|
tests = balanced_tests[job_number]
|
19
20
|
qty = balanced_tests.flatten.count
|
20
21
|
Kernel.puts "**** running #{tests.count}/#{qty} tests (group number: #{job_number + 1})"
|
21
|
-
Kernel.
|
22
|
+
Kernel.abort('failed running command') unless Kernel.system "#{cmd} #{tests.join(' ')}"
|
22
23
|
end
|
23
24
|
|
24
25
|
private
|
@@ -1,10 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
desc 'Run chunked rspec tests on specific qty, sample: CI_JOBS=3 CI_JOB=1 rake rspec_chunked'
|
4
|
-
task :
|
4
|
+
task rspec_chunked: :environment do
|
5
5
|
qty_jobs = (ENV['CI_JOBS'] || 3).to_i
|
6
6
|
job_number = (ENV['CI_JOB'] || 1).to_i
|
7
|
-
|
8
|
-
service = RspecChunked::ChunkedTests.new(qty_jobs, job_number)
|
7
|
+
service = RspecChunked::ChunkedTests.new(qty_jobs, job_number, cmd: ENV['CI_CMD'])
|
9
8
|
service.run
|
9
|
+
copy_coverage(job_number)
|
10
|
+
end
|
11
|
+
|
12
|
+
def copy_coverage(job_number)
|
13
|
+
path = 'coverage/.resultset.json'
|
14
|
+
FileUtils.cp path, "coverage/.resultset-#{job_number}.json" if File.exist?(path)
|
15
|
+
end
|
16
|
+
|
17
|
+
namespace :rspec_chunked do
|
18
|
+
desc 'Collates all result sets generated by the different test runners'
|
19
|
+
task :merge_reports do
|
20
|
+
require 'simplecov'
|
21
|
+
SimpleCov.collate Dir['coverage/.resultset-*']
|
22
|
+
end
|
10
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec_chunked
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- owen2345
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|