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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: efe0c38635ff68615a9a1822f6313b397675d214cec82f62a33a8c8809944b70
4
- data.tar.gz: 59791768b2990b18a034f9fa9e3b59ef6e20b87a84abce4882c0b3a052a99e5b
3
+ metadata.gz: da560376837ac2fbd3decdb674cb30136337f6bc355a8d45b4150ea6dbc5661c
4
+ data.tar.gz: 3dbbc9698fac9f0f2100d5d421b726c21e53ae27d524cbb18fef2a41f0dcef4e
5
5
  SHA512:
6
- metadata.gz: 64513baab96a007dc6b6b531dcda77a502aebf6abb7b4c18203c69611440bc1abcf4e64b38dd7259fbff0eea85960bc000085c86e3e267a6e441a38dc66a1a9c
7
- data.tar.gz: 3ffbb31469ed6ae40e0144dbb00274843bca1ca855fdeba7bf71fe7030cada782c810e0ed514d168b75f6c0602313fa9b950364d7b1d7c57b2953d1463cc806c
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
- return unless defined?(RspecChunked::ChunkedTests)
20
-
21
- RspecChunked::ChunkedTests.balance_settings = { 1 => { to: 2, percentage: 15 }, 4 => { to: 3, percentage: 10 } }
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
- ` CI_JOBS=3 CI_JOB=1 rake rspec_chunked `
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
@@ -25,3 +25,7 @@ Rake::TestTask.new(:test) do |t|
25
25
  end
26
26
 
27
27
  task default: :test
28
+
29
+ # gem tasks
30
+ path = File.expand_path(__dir__)
31
+ Dir.glob("#{path}/lib/tasks/**/*.rake").each { |f| import f }
data/lib/rspec_chunked.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rspec_chunked/railtie'
3
+ require 'rspec_chunked/railtie' if defined?(Rails)
4
4
  require 'rspec_chunked/chunked_tests'
5
5
  module RspecChunked
6
6
  end
@@ -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.exec "bundle exec rspec #{tests.join(' ')}"
22
+ Kernel.abort('failed running command') unless Kernel.system "#{cmd} #{tests.join(' ')}"
22
23
  end
23
24
 
24
25
  private
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rails'
3
4
  module RspecChunked
4
5
  class Railtie < ::Rails::Railtie
5
6
  rake_tasks do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RspecChunked
4
- VERSION = '0.2.0'
4
+ VERSION = '0.4.3'
5
5
  end
@@ -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 :rspec_chunked do
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.2.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-12 00:00:00.000000000 Z
11
+ date: 2021-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler