snap_ci-parallel_tests 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: 64a3cfc18f6ec422dcec8eb046042c4cea62e645
4
- data.tar.gz: e93d0f1bbd0c1318f185867dcf89c3f431983611
3
+ metadata.gz: aa9a82a7f30c6776d93df92ed4fe8e3672a31a19
4
+ data.tar.gz: 9bb5b4e69777aaa30185b0527ed769945b3b28b1
5
5
  SHA512:
6
- metadata.gz: d735091f3c891b157948e2642edbc69b1c57e23e36543299c2696d2a0ed4a85739d4e8dd084614a88c2bcb93a07c23fe40c6001249dac15e704d3c8971dccfbb
7
- data.tar.gz: 4920b30f0b069989337624808180f995ce4d320f2ef5bbe4cc602d18dc107c97098f8d2fa22973eeb4726eb669222ffb974e0d82556bfc6874023ced4ffa84bc
6
+ metadata.gz: 4133669bf0b3a6696a15d24225b739960904a27b32b7e0516754f8703022910920027bdc35ad8210efb7ce346647f74ef30c3540fa0da94738d6aad3bc9671ca
7
+ data.tar.gz: 020b61c12f3632dfa24e22e76f37388daafa729d2c70c9c67661d26eca750fa3d3151f34881971fcd8979b971fae734e924e2cf0409efdf592bcdf86067ab1cf
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- snap_ci-parallel_tests (0.0.1)
4
+ snap_ci-parallel_tests (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -68,7 +68,7 @@ PLATFORMS
68
68
  ruby
69
69
 
70
70
  DEPENDENCIES
71
- bundler (~> 1.7)
71
+ bundler (~> 1.4)
72
72
  rake
73
73
  rspec (>= 2.12.0)
74
74
  rspec-rails (>= 2.12.0)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # SnapCI::ParallelTests
1
+ # SnapCI::ParallelTests [![Build Status](https://snap-ci.com/snap-ci/parallel-tests/branch/master/build_image)](https://snap-ci.com/snap-ci/parallel-tests/branch/master)
2
2
 
3
3
  Run Test::Unit / RSpec in parallel across multiple workers on [Snap CI](https://snap-ci.com).
4
4
 
@@ -22,23 +22,23 @@ Or install it yourself as:
22
22
 
23
23
  Depending on the framework of your choice -
24
24
 
25
- $ bundle exec snap_ci-parallel_rspec [options] [files or directories] [-- [rspec options]]
26
- $ bundle exec snap_ci-parallel_test [options] [files or directories] [-- [Test::Unit or MiniTest options]]
25
+ $ bundle exec snap-ci-parallel-rspec [options] [files or directories] [-- [rspec options]]
26
+ $ bundle exec snap-ci-parallel-test [options] [files or directories] [-- [Test::Unit or MiniTest options]]
27
27
 
28
28
 
29
29
  ## Setup for Rails
30
30
 
31
- Ensure that 'parallel_tests' is present in your development group
31
+ Ensure that 'snap_ci-parallel_tests' is present in your development group
32
32
 
33
33
  ```ruby
34
34
  # Gemfile
35
- gem "parallel_tests", :group => :development
35
+ gem "snap_ci-parallel_tests", :group => :development
36
36
  ```
37
37
 
38
38
  ### Run
39
39
 
40
- $ bundle exec snap_ci-parallel_rspec [options] [files or directories] [-- [rspec options]]
41
- $ bundle exec snap_ci-parallel_test [options] [files or directories] [-- [Test::Unit or MiniTest options]]
40
+ $ bundle exec snap-ci-parallel-rspec [options] [files or directories] [-- [rspec options]]
41
+ $ bundle exec snap-ci-parallel-test [options] [files or directories] [-- [Test::Unit or MiniTest options]]
42
42
 
43
43
  Alternatively -
44
44
 
@@ -53,7 +53,7 @@ $ bundle exec rake -T snap-parallel # to list all tasks
53
53
 
54
54
  ## Contributing
55
55
 
56
- 1. Fork it ( https://github.com/[my-github-username]/snap_ci-parallel_tests/fork )
56
+ 1. Fork it ( https://github.com/[my-github-username]/parallel-tests/fork )
57
57
  2. Create your feature branch (`git checkout -b my-new-feature`)
58
58
  3. Commit your changes (`git commit -am 'Add some feature'`)
59
59
  4. Push to the branch (`git push origin my-new-feature`)
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH << File.expand_path("../../lib", __FILE__)
3
+ require 'snap_ci/parallel_tests'
4
+ require 'snap_ci/parallel_tests/cli'
5
+ require 'snap_ci/parallel_tests/partition/runner'
6
+
7
+ SnapCI::ParallelTests::CLI.new(SnapCI::ParallelTests::Partition::Runner.new, ARGV).run
@@ -73,6 +73,7 @@ module SnapCI
73
73
  end
74
74
 
75
75
  def report_number_of_tests(tests, total_workers)
76
+ return unless runner.report_test_partitioning?
76
77
  name = runner.test_file_name
77
78
  num_tests = tests.size
78
79
  $stderr.puts "#{total_workers} workers for #{num_tests} #{name}s, ~ #{(num_tests.to_f/total_workers).ceil} #{name}s per process"
@@ -84,20 +85,35 @@ module SnapCI
84
85
  options[:group_by] = :filename
85
86
 
86
87
  parser = OptionParser.new do |opts|
87
- runner.cli_helper.render_header(opts)
88
+ runner.cli_helper.render_header(opts, options)
88
89
  opts.separator 'supported options:'
89
90
 
90
- runner.cli_helper.render_options(opts)
91
+ runner.cli_helper.render_options(opts, options)
91
92
 
92
93
  opts.on('-g', '--group-by TYPE', <<-TEXT) do |type|
93
94
  group tests by:
94
95
  filename - order of finding files(default)
95
96
  filesize - by size of the file
96
97
  TEXT
97
- raise unless %w(name filesize).include?(type)
98
+
99
+ allowed_group_values = %w(filename filesize)
100
+ raise "Group option only supports #{allowed_group_values.join(', ')}. You passed #{type}" unless allowed_group_values.include?(type)
101
+
98
102
  options[:group_by] = type.to_sym
99
103
  end
100
104
 
105
+ opts.on('-d', '--distribution TYPE', <<-TEXT) do |type|
106
+ after grouping tests, distribute tests across workers by:
107
+ roundrobin - distribute files one at a time to each worker (default)
108
+ chunk - slice tests
109
+ TEXT
110
+
111
+ allowed_distribution_values = %w(roundrobin chunk)
112
+ raise "Distribution option only supports #{allowed_distribution_values.join(', ')}. You passed #{type}" unless allowed_distribution_values.include?(type)
113
+
114
+ options[:distribution] = type.to_sym
115
+ end
116
+
101
117
  opts.on('-v', '--version', 'Show Version') do
102
118
  puts "SnapCI Parallel Tests v#{SnapCI::ParallelTests::VERSION}"
103
119
  exit
@@ -112,7 +128,7 @@ group tests by:
112
128
  exit
113
129
  end
114
130
 
115
- runner.cli_helper.render_footer(opts)
131
+ runner.cli_helper.render_footer(opts, options)
116
132
  end
117
133
 
118
134
  parser.parse!(argv)
@@ -9,6 +9,27 @@ module SnapCI
9
9
  def group_by_filesize(things)
10
10
  things.sort { |a, b| File.size(a) <=> File.size(b) }
11
11
  end
12
+
13
+ def distribute_by_round_robin(things, total_workers, current_worker_index)
14
+ result = []
15
+
16
+ # pick up things on a round-robin basis to distribute them evenly
17
+ index = current_worker_index - 1
18
+ while index <= things.count do
19
+ result << things[index]
20
+ index += total_workers
21
+ end
22
+ result.compact!
23
+
24
+ result
25
+ end
26
+
27
+ def distribute_by_chunk(things, total_workers, current_worker_index)
28
+ thing_count = things.count
29
+ specs_per_worker = (thing_count.to_f/total_workers).ceil
30
+
31
+ things.each_slice(specs_per_worker).to_a[current_worker_index-1] || []
32
+ end
12
33
  end
13
34
  end
14
35
  end
@@ -0,0 +1,35 @@
1
+ module SnapCI
2
+ module ParallelTests
3
+ module Partition
4
+ module CLIHelper
5
+ def render_header(optparser, options)
6
+ optparser.banner = <<BANNER
7
+ Partition a list of files/directories and print them
8
+
9
+ Usage: #{optparser.program_name} [options] [files or directories]
10
+
11
+ Example: #{optparser.program_name} test/models test/controllers/foo_controller_test.rb
12
+
13
+ Can typically be used as -
14
+
15
+ $ your-test-runner $(snap-ci-parallel-partition location/of/test/files)
16
+
17
+ BANNER
18
+ end
19
+
20
+ def render_options(optparser, options)
21
+ optparser.on('-p', '--pattern [PATTERN]', 'only find files matching this pattern') do |pattern|
22
+ options[:pattern] = /#{pattern}/
23
+ end
24
+ end
25
+
26
+ def render_footer(optparser, options)
27
+ optparser.separator ''
28
+ end
29
+
30
+ extend CLIHelper
31
+ end #CLIHelper
32
+
33
+ end #RSpec
34
+ end #ParallelTests
35
+ end #SnapCI
@@ -0,0 +1,33 @@
1
+ require 'shellwords'
2
+ require 'snap_ci/parallel_tests/partition/cli_helper'
3
+
4
+ module SnapCI
5
+ module ParallelTests
6
+ module Partition
7
+ class Runner
8
+
9
+ def execute(test_files, options)
10
+ $stdout.puts(test_files.collect {|f| f.dump }.join(' '))
11
+ end
12
+
13
+ def report_test_partitioning?
14
+ false
15
+ end
16
+
17
+ def cli_helper
18
+ CLIHelper
19
+ end
20
+
21
+ def test_suffix
22
+ //
23
+ end
24
+
25
+ def test_file_name
26
+ 'file'
27
+ end
28
+
29
+ end #Runner
30
+
31
+ end #Partition
32
+ end #ParallelTests
33
+ end #SnapCI
@@ -2,22 +2,22 @@ module SnapCI
2
2
  module ParallelTests
3
3
  module RSpec
4
4
  module CLIHelper
5
- def render_header(opts)
6
- opts.banner = <<BANNER
7
- Usage: #{opts.program_name} [options] [files or directories] [-- [rspec options]]
5
+ def render_header(optparser, options)
6
+ optparser.banner = <<BANNER
7
+ Usage: #{optparser.program_name} [options] [files or directories] [-- [rspec options]]
8
8
 
9
- Example: #{opts.program_name} spec/models spec/controllers/foo_controller_spec.rb -- --format documentation --fail-fast
9
+ Example: #{optparser.program_name} spec/models spec/controllers/foo_controller_spec.rb -- --format documentation --fail-fast
10
10
  BANNER
11
11
  end
12
12
 
13
- def render_options(opts)
14
- opts.on('-p', '--pattern [PATTERN]', 'run tests matching this pattern') do |pattern|
13
+ def render_options(optparser, options)
14
+ optparser.on('-p', '--pattern [PATTERN]', 'run tests matching this pattern') do |pattern|
15
15
  options[:pattern] = /#{pattern}/
16
16
  end
17
17
  end
18
18
 
19
- def render_footer(opts)
20
- opts.separator "\nRun `rspec --help' for supported rspec options."
19
+ def render_footer(optparser, options)
20
+ optparser.separator "\nRun `rspec --help' for supported rspec options."
21
21
  end
22
22
 
23
23
  extend CLIHelper
@@ -19,6 +19,10 @@ module SnapCI
19
19
  exec((options[:env] || {}), cmd)
20
20
  end
21
21
 
22
+ def report_test_partitioning?
23
+ true
24
+ end
25
+
22
26
  def cli_helper
23
27
  CLIHelper
24
28
  end
@@ -2,27 +2,27 @@ module SnapCI
2
2
  module ParallelTests
3
3
  module Test
4
4
  module CLIHelper
5
- def render_header(opts)
6
- opts.banner = <<BANNER
7
- Usage: #{opts.program_name} [options] [files or directories] [-- [Test::Unit or MiniTest options]]
5
+ def render_header(optparser, options)
6
+ optparser.banner = <<BANNER
7
+ Usage: #{optparser.program_name} [options] [files or directories] [-- [Test::Unit or MiniTest options]]
8
8
 
9
- Example: #{opts.program_name} test/models test/controllers/foo_controller_test.rb -- --verbose --seed 10
9
+ Example: #{optparser.program_name} test/models test/controllers/foo_controller_test.rb -- --verbose --seed 10
10
10
  BANNER
11
11
  end
12
12
 
13
- def render_options(opts)
14
- opts.on('-p', '--pattern [PATTERN]', 'run tests matching this pattern') do |pattern|
13
+ def render_options(optparser, options)
14
+ optparser.on('-p', '--pattern [PATTERN]', 'run tests matching this pattern') do |pattern|
15
15
  options[:pattern] = /#{pattern}/
16
16
  end
17
17
  end
18
18
 
19
- def render_footer(opts)
20
- opts.separator "\nRun `ruby -r test/test_helper -e1 --help' for supported Test::Unit or MiniTest options."
19
+ def render_footer(optparser, options)
20
+ optparser.separator "\nRun `ruby -r test/test_helper -e1 --help' for supported Test::Unit or MiniTest options."
21
21
  end
22
22
 
23
23
  extend CLIHelper
24
24
  end #CLIHelper
25
25
 
26
- end #RSpec
26
+ end #Test
27
27
  end #ParallelTests
28
28
  end #SnapCI
@@ -16,6 +16,10 @@ module SnapCI
16
16
  exec(cmd)
17
17
  end
18
18
 
19
+ def report_test_partitioning?
20
+ true
21
+ end
22
+
19
23
  def cli_helper
20
24
  CLIHelper
21
25
  end
@@ -28,26 +32,8 @@ module SnapCI
28
32
  'test'
29
33
  end
30
34
 
31
- private
32
-
33
- def output_of(cmd)
34
- `#{cmd}`
35
- end
36
-
37
- def rspec_2_color
38
- '--color --tty' if $stdout.tty?
39
- end
40
-
41
- def rspec_1_color
42
- if $stdout.tty?
43
- { 'RSPEC_COLOR' => '1' }
44
- else
45
- {}
46
- end
47
- end
48
-
49
35
  end #Runner
50
36
 
51
- end #RSpec
37
+ end #Test
52
38
  end #ParallelTests
53
39
  end #SnapCI
@@ -1,5 +1,5 @@
1
1
  module SnapCI
2
2
  module ParallelTests
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
@@ -10,29 +10,23 @@ module SnapCI
10
10
  #
11
11
  # ==== Options
12
12
  # +things+ - the things to partition
13
- # +total_workers+ - the total number of workers, defaults to ParallelTests.total_workers
14
- # +current_worker_index+ - the current worker index (1 based, NOT 0 based), defaults to ParallelTests.worker_index
15
- # +group_by+ - either :filename or :filesize (defaults to :filename). Determines how files are sorted before being partitioned
13
+ # +total_workers+ - the total number of workers, defaults to ParallelTests.total_workers.
14
+ # +current_worker_index+ - the current worker index (1 based, NOT 0 based), defaults to ParallelTests.worker_index.
15
+ # +group_by+ - either :filename or :filesize (defaults to :filename). Determines how files are sorted before being distributed into partitions/
16
+ # +distribution+ - either :round_robin or :chunk (defaults to :roundrobin). Determines how files are distributed across workers, after they are sorted.
16
17
  def partition(options={})
17
18
  things = options[:things]
18
19
  total_workers = options[:total_workers] || ParallelTests.total_workers
19
20
  current_worker_index = options[:current_worker_index] || ParallelTests.worker_index
20
21
  group_by = options[:group_by] || :filename
22
+ distribution = options[:distribution] || :round_robin
21
23
 
22
24
  return [] if things.nil? || things.empty?
23
25
  things = Grouper.send("group_by_#{group_by}", things)
24
26
 
25
- result = []
27
+ things = Grouper.send("distribute_by_#{distribution}", things, total_workers, current_worker_index)
26
28
 
27
- # pick up things on a round-robin basis to distribute them evenly
28
- index = current_worker_index - 1
29
- while index <= things.count do
30
- result << things[index]
31
- index += total_workers
32
- end
33
- result.compact!
34
-
35
- result
29
+ things
36
30
  end
37
31
 
38
32
  def total_workers
@@ -18,6 +18,6 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.7"
21
+ spec.add_development_dependency "bundler", "~> 1.4"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  end
@@ -3,41 +3,104 @@ require 'spec_helper'
3
3
  describe SnapCI::ParallelTests do
4
4
  include SnapCI::ParallelTests
5
5
 
6
- it 'should create uniform partitions of things based on count and index' do
7
- things = (1..10).to_a
6
+ describe 'default (round robin) distribution behavior, when distribution option is not passed' do
8
7
 
9
- partition1 = partition(things: things, total_workers: 3, current_worker_index: 1)
10
- partition2 = partition(things: things, total_workers: 3, current_worker_index: 2)
11
- partition3 = partition(things: things, total_workers: 3, current_worker_index: 3)
8
+ it 'should create uniform partitions of things based on count and index' do
9
+ things = (1..10).to_a
12
10
 
13
- expect(partition1 + partition2 + partition3).to contain_exactly(*things)
11
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1)
12
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2)
13
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3)
14
+
15
+ expect(partition1 + partition2 + partition3).to contain_exactly(*things)
16
+
17
+ expect(partition1).to eq([1, 4, 7, 10])
18
+ expect(partition2).to eq([2, 5, 8])
19
+ expect(partition3).to eq([3, 6, 9])
20
+ end
21
+
22
+ it 'should create empty partitions if things are empty' do
23
+ things = []
24
+
25
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1)
26
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2)
27
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3)
28
+
29
+ expect(partition1).to eq([])
30
+ expect(partition2).to eq([])
31
+ expect(partition3).to eq([])
32
+ end
33
+
34
+ it 'should create empty partitions at end if partitions are more than number of things' do
35
+ things = [1, 2]
36
+
37
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1)
38
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2)
39
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3)
40
+
41
+ expect(partition1).to eq([1])
42
+ expect(partition2).to eq([2])
43
+ expect(partition3).to eq([])
44
+ end
14
45
 
15
- expect(partition1).to eq([1, 4, 7, 10])
16
- expect(partition2).to eq([2, 5, 8])
17
- expect(partition3).to eq([3, 6, 9])
18
46
  end
19
47
 
20
- it 'should create empty partitions if things are empty' do
21
- things = []
48
+ describe 'round robin distribution, when distribution option is not passed' do
49
+ it 'should create uniform partitions of things based on count and index' do
50
+ things = (1..10).to_a
22
51
 
23
- partition1 = partition(things: things, total_workers: 3, current_worker_index: 1)
24
- partition2 = partition(things: things, total_workers: 3, current_worker_index: 2)
25
- partition3 = partition(things: things, total_workers: 3, current_worker_index: 3)
52
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1, distribution: :round_robin)
53
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2, distribution: :round_robin)
54
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3, distribution: :round_robin)
26
55
 
27
- expect(partition1).to eq([])
28
- expect(partition2).to eq([])
29
- expect(partition3).to eq([])
56
+ expect(partition1 + partition2 + partition3).to contain_exactly(*things)
57
+
58
+ expect(partition1).to eq([1, 4, 7, 10])
59
+ expect(partition2).to eq([2, 5, 8])
60
+ expect(partition3).to eq([3, 6, 9])
61
+ end
30
62
  end
31
63
 
32
- it 'should create empty partitions at end if partitions are more than number of things' do
33
- things = [1, 2]
64
+ describe 'chunk distribution' do
65
+
66
+ it 'should create uniform partitions of things based on count and index' do
67
+ things = (1..10).to_a
34
68
 
35
- partition1 = partition(things: things, total_workers: 3, current_worker_index: 1)
36
- partition2 = partition(things: things, total_workers: 3, current_worker_index: 2)
37
- partition3 = partition(things: things, total_workers: 3, current_worker_index: 3)
69
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1, distribution: :chunk)
70
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2, distribution: :chunk)
71
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3, distribution: :chunk)
72
+
73
+ expect(partition1 + partition2 + partition3).to contain_exactly(*things)
74
+
75
+ expect(partition1).to eq([1, 2, 3, 4])
76
+ expect(partition2).to eq([5, 6, 7, 8])
77
+ expect(partition3).to eq([9, 10])
78
+ end
79
+
80
+ it 'should create empty partitions if things are empty' do
81
+ things = []
82
+
83
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1, distribution: :chunk)
84
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2, distribution: :chunk)
85
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3, distribution: :chunk)
86
+
87
+ expect(partition1).to eq([])
88
+ expect(partition2).to eq([])
89
+ expect(partition3).to eq([])
90
+ end
91
+
92
+ it 'should create empty partitions at end if partitions are more than number of things' do
93
+ things = [1, 2]
94
+
95
+ partition1 = partition(things: things, total_workers: 3, current_worker_index: 1, distribution: :chunk)
96
+ partition2 = partition(things: things, total_workers: 3, current_worker_index: 2, distribution: :chunk)
97
+ partition3 = partition(things: things, total_workers: 3, current_worker_index: 3, distribution: :chunk)
98
+
99
+ expect(partition1).to eq([1])
100
+ expect(partition2).to eq([2])
101
+ expect(partition3).to eq([])
102
+ end
38
103
 
39
- expect(partition1).to eq([1])
40
- expect(partition2).to eq([2])
41
- expect(partition3).to eq([])
42
104
  end
105
+
43
106
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snap_ci-parallel_tests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ketan Padegaonkar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-10 00:00:00.000000000 Z
11
+ date: 2014-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '1.4'
20
20
  type: :development
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: '1.7'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,8 +42,9 @@ description: Run Test::Unit / RSpec in parallel across multiple workers on Snap
42
42
  email:
43
43
  - KetanPadegaonkar@gmail.com
44
44
  executables:
45
- - snap_ci-parallel_rspec
46
- - snap_ci-parallel_test
45
+ - snap-ci-parallel-partition
46
+ - snap-ci-parallel-rspec
47
+ - snap-ci-parallel-test
47
48
  extensions: []
48
49
  extra_rdoc_files: []
49
50
  files:
@@ -56,11 +57,14 @@ files:
56
57
  - LICENSE.txt
57
58
  - README.md
58
59
  - Rakefile
59
- - bin/snap_ci-parallel_rspec
60
- - bin/snap_ci-parallel_test
60
+ - bin/snap-ci-parallel-partition
61
+ - bin/snap-ci-parallel-rspec
62
+ - bin/snap-ci-parallel-test
61
63
  - lib/snap_ci/parallel_tests.rb
62
64
  - lib/snap_ci/parallel_tests/cli.rb
63
65
  - lib/snap_ci/parallel_tests/grouper.rb
66
+ - lib/snap_ci/parallel_tests/partition/cli_helper.rb
67
+ - lib/snap_ci/parallel_tests/partition/runner.rb
64
68
  - lib/snap_ci/parallel_tests/railtie.rb
65
69
  - lib/snap_ci/parallel_tests/rspec/cli_helper.rb
66
70
  - lib/snap_ci/parallel_tests/rspec/runner.rb
@@ -91,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
95
  version: '0'
92
96
  requirements: []
93
97
  rubyforge_project:
94
- rubygems_version: 2.4.4
98
+ rubygems_version: 2.0.14
95
99
  signing_key:
96
100
  specification_version: 4
97
101
  summary: Run Test::Unit / RSpec in parallel across multiple workers on Snap CI