parallel_tests 0.16.7 → 0.16.8

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: a0401013c4446f58aa5d69d8af58e42fbe445716
4
- data.tar.gz: 21c76a3992e163e0e469a4e999ab72d479c3d7d8
3
+ metadata.gz: 90404adedf371fc723a913eebd4c59db6f0f334c
4
+ data.tar.gz: 6c4c6c55c6fe1e1e6b92ad79598e91d7da0ff795
5
5
  SHA512:
6
- metadata.gz: c5e028be9def6bd10ca21c494f391e11fb18dce725e3bf46db8c3a312b4b5c2cbb29f1c73a59517f219acdd500ea33be1cc7721c8355cc35532111d153de2096
7
- data.tar.gz: 9b1bc90b9bbe330f55a70782b59d77f3f3c0a145597daa8c3167bd78b2e1520365dd3a014fe2e0dc1e6a44496d34d8f5d49eac253c5c43c445bbf7236a7d3a9b
6
+ metadata.gz: da4420026e7f2cb832e7e0b0f09f977964ace8f09611f9ae21025c47d2769730c252973d0f31901789b85329bbe92f6b68e38f8276e56400954904fc41e83259
7
+ data.tar.gz: f7d7c7064aae750bba6f0be4ae830ef3f8101bf25bf9c1b1ed8ff9b765bdef3f8a704bd8b2be2360e1a68c9a44c055f873f5b4144b928cd68cf2c5f9711b3c29
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- parallel_tests (0.16.7)
4
+ parallel_tests (0.16.8)
5
5
  parallel
6
6
 
7
7
  GEM
data/Readme.md CHANGED
@@ -174,6 +174,7 @@ Options are:
174
174
  --group-by [TYPE] group tests by:
175
175
  found - order of finding files
176
176
  steps - number of cucumber steps
177
+ filesize - size of files on disk
177
178
  default - runtime or filesize
178
179
  -m, --multiply-processes [FLOAT] use given number as a multiplier of processes to run
179
180
  -s, --single [PATTERN] Run all matching files in the same process
@@ -186,6 +187,7 @@ Options are:
186
187
  --no-symlinks Do not traverse symbolic links to find test files
187
188
  --ignore-tags [PATTERN] When counting steps ignore scenarios with tags that match this pattern
188
189
  --nice execute test commands with low priority.
190
+ --only-group [INTEGER] Group the files, but only run the group specified here. Requires group-by filesize (will be set automatically if group-by is blank and only-group is specified)
189
191
  -v, --version Show Version
190
192
  -h, --help Show this.
191
193
 
@@ -223,6 +225,7 @@ TIPS
223
225
  - [email_spec and/or action_mailer_cache_delivery](https://github.com/grosser/parallel_tests/wiki)
224
226
  - [Memcached] use different namespaces e.g. `config.cache_store = ..., :namespace => "test_#{ENV['TEST_ENV_NUMBER']}"`
225
227
  - [zeus-parallel_tests](https://github.com/sevos/zeus-parallel_tests)
228
+ - [Distributed parallel test (e.g. Travis Support)](https://github.com/grosser/parallel_tests/wiki/Distributed-Parallel-Tests-and-Travis-Support)
226
229
 
227
230
  TODO
228
231
  ====
@@ -292,6 +295,7 @@ inspired by [pivotal labs](http://pivotallabs.com/users/miked/blog/articles/849-
292
295
  - [Colin Harris](https://github.com/aberant)
293
296
  - [Wataru MIYAGUNI](https://github.com/gongo)
294
297
  - [Brandon Turner](https://github.com/blt04)
298
+ - [Matt Hodgson](https://github.com/mhodgson)
295
299
 
296
300
  [Michael Grosser](http://grosser.it)<br/>
297
301
  michael@grosser.it<br/>
@@ -34,10 +34,17 @@ module ParallelTests
34
34
 
35
35
  report_time_taken do
36
36
  groups = @runner.tests_in_groups(options[:files], num_processes, options)
37
- report_number_of_tests(groups)
38
37
 
39
- test_results = execute_in_parallel(groups, groups.size, options) do |group|
40
- run_tests(group, groups.index(group), num_processes, options)
38
+ test_results = if options[:only_group]
39
+ group_to_run = groups[options[:only_group] - 1]
40
+
41
+ [run_tests(group_to_run, 0, num_processes, options)]
42
+ else
43
+ report_number_of_tests(groups)
44
+
45
+ execute_in_parallel(groups, groups.size, options) do |group|
46
+ run_tests(group, groups.index(group), num_processes, options)
47
+ end
41
48
  end
42
49
 
43
50
  report_results(test_results)
@@ -98,6 +105,7 @@ group tests by:
98
105
  found - order of finding files
99
106
  steps - number of cucumber/spinach steps
100
107
  scenarios - individual cucumber scenarios
108
+ filesize - by size of the file
101
109
  default - runtime or filesize
102
110
  TEXT
103
111
  ) { |type| options[:group_by] = type.to_sym }
@@ -116,6 +124,8 @@ TEXT
116
124
  options[:isolate] = true
117
125
  end
118
126
 
127
+ opts.on("--only-group [INTEGER]", Integer) { |group| options[:only_group] = group }
128
+
119
129
  opts.on("-e", "--exec [COMMAND]", "execute this code parallel and with ENV['TEST_ENV_NUM']") { |path| options[:execute] = path }
120
130
  opts.on("-o", "--test-options '[OPTIONS]'", "execute test commands with those options") { |arg| options[:test_options] = arg }
121
131
  opts.on("-t", "--type [TYPE]", "test(default) / rspec / cucumber / spinach") do |type|
@@ -135,14 +145,18 @@ TEXT
135
145
  opts.on("-h", "--help", "Show this.") { puts opts; exit }
136
146
  end.parse!(argv)
137
147
 
138
- raise "--group-by found and --single-process are not supported" if options[:group_by] == :found and options[:single_process]
139
-
140
148
  if options[:count] == 0
141
149
  options.delete(:count)
142
150
  options[:non_parallel] = true
143
151
  end
144
152
 
145
153
  options[:files] = argv
154
+
155
+ options[:group_by] ||= :filesize if options[:only_group]
156
+
157
+ raise "--group-by found and --single-process are not supported" if options[:group_by] == :found and options[:single_process]
158
+ raise "--group-by filesize is required for --only-group" if options[:group_by] != :filesize and options[:only_group]
159
+
146
160
  options
147
161
  end
148
162
 
@@ -43,6 +43,8 @@ module ParallelTests
43
43
 
44
44
  tests = if options[:group_by] == :found
45
45
  tests.map { |t| [t, 1] }
46
+ elsif options[:group_by] == :filesize
47
+ with_filesize_info(tests)
46
48
  else
47
49
  with_runtime_info(tests)
48
50
  end
@@ -60,7 +62,7 @@ module ParallelTests
60
62
 
61
63
  def execute_command_and_capture_output(env, cmd, silence)
62
64
  # make processes descriptive / visible in ps -ef
63
- windows = RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
65
+ windows = RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
64
66
  separator = windows ? ' & ' : ';'
65
67
  exports = env.map do |k,v|
66
68
  if windows
@@ -143,10 +145,15 @@ module ParallelTests
143
145
  end
144
146
  tests.sort.map{|test| [test, times[File.expand_path(test)]] }
145
147
  else # use file sizes
146
- tests.sort.map{|test| [test, File.stat(test).size] }
148
+ with_filesize_info(tests)
147
149
  end
148
150
  end
149
151
 
152
+ def with_filesize_info(tests)
153
+ # use filesize to group files
154
+ tests.sort.map { |test| [test, File.stat(test).size] }
155
+ end
156
+
150
157
  def find_tests(tests, options = {})
151
158
  (tests || []).map do |file_or_folder|
152
159
  if File.directory?(file_or_folder)
@@ -1,3 +1,3 @@
1
1
  module ParallelTests
2
- VERSION = Version = '0.16.7'
2
+ VERSION = Version = '0.16.8'
3
3
  end
@@ -211,6 +211,20 @@ describe 'CLI' do
211
211
  run_tests("test", :processes => 4).should include("b\nc\nd\na\n")
212
212
  end
213
213
 
214
+ it "can run only a single group" do
215
+ pending if RUBY_PLATFORM == "java" # just too slow ...
216
+ write "test/long_test.rb", "puts 'this is a long test'"
217
+ write "test/short_test.rb", "puts 'short test'"
218
+
219
+ group_1_result = run_tests("test", :processes => 2, :add => '--only-group 1')
220
+ group_1_result.should include("this is a long test")
221
+ group_1_result.should_not include("short test")
222
+
223
+ group_2_result = run_tests("test", :processes => 2, :add => '--only-group 2')
224
+ group_2_result.should_not include("this is a long test")
225
+ group_2_result.should include("short test")
226
+ end
227
+
214
228
  context "Test::Unit" do
215
229
  it "runs" do
216
230
  write "test/x1_test.rb", "require 'test/unit'; class XTest < Test::Unit::TestCase; def test_xxx; end; end"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallel_tests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.7
4
+ version: 0.16.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-12 00:00:00.000000000 Z
11
+ date: 2014-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel