parallel_tests 1.6.1 → 1.6.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9ee99b584667b4b87d1c7400b2acd8d1b312ad3
4
- data.tar.gz: 43ad3279c3e8e7c53983df224fe14549c663b769
3
+ metadata.gz: 3e22b7151afe39f71cc882c6feecd4a2649cbec5
4
+ data.tar.gz: b489f53928ed01b921cacaa4657335668e82f806
5
5
  SHA512:
6
- metadata.gz: 5a2bda0007aac736d55ec16ec9afc71d80c058d5c25f854f09ec7f4aa243f66e2090727fbda469e4a4d565053f9c4de8035322bdaacd882b45ab1a898d515b58
7
- data.tar.gz: f1b384a8992b2fa9f1150ae5530fff2f06c34267b00a6e0c2d2d58a4a9b238eded8b442bfc97036276cec63e849acf6295e695322731e18b3a11eb24aac158f1
6
+ metadata.gz: 6cd0ef9b424966a910ff6f1937a7e098d8aa2a1779f0ab49681029cea179a7cfc753145c2c13534a564f001a3f2577f84600036e60a61bc6bc6f57ccd79f11c1
7
+ data.tar.gz: 430a8992f2b03cde626b5d47c16d593c58ab497af0b1e92c1f041e42ec2f32596de7dbb9ba87f7e8434481d8c8103fb8ade10311b8d523372c072c2e291f177f
data/Readme.md CHANGED
@@ -1,3 +1,8 @@
1
+ # parallel_tests
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/parallel_tests.svg)](https://rubygems.org/gems/parallel_tests)
4
+ [![Build Status](https://travis-ci.org/grosser/parallel_tests.svg)](https://travis-ci.org/grosser/parallel_tests/builds)
5
+
1
6
  Speedup Test::Unit + RSpec + Cucumber + Spinach by running parallel on multiple CPU cores.<br/>
2
7
  ParallelTests splits tests into even groups (by number of lines or runtime) and runs each group in a single process with its own database.
3
8
 
@@ -222,6 +227,7 @@ TIPS
222
227
  - Spring does not work with parallel_tests, use `DISABLE_SPRING=1 rake parallel:spec` if you have spring hardcoded in your binaries
223
228
  - [RSpec] remove `--loadby` from `.rspec`
224
229
  - [RSpec] Instantly see failures (instead of just a red F) with [rspec-instafail](https://github.com/grosser/rspec-instafail)
230
+ - [RSpec] use [rspec-retry](https://github.com/NoRedInk/rspec-retry) (not rspec-rerun) to rerun failed tests.
225
231
  - [Cucumber] add a `parallel: foo` profile to your `config/cucumber.yml` and it will be used to run parallel tests
226
232
  - [Capybara setup](https://github.com/grosser/parallel_tests/wiki)
227
233
  - [Sphinx setup](https://github.com/grosser/parallel_tests/wiki)
@@ -320,5 +326,4 @@ inspired by [pivotal labs](http://pivotallabs.com/users/miked/blog/articles/849-
320
326
 
321
327
  [Michael Grosser](http://grosser.it)<br/>
322
328
  michael@grosser.it<br/>
323
- License: MIT<br/>
324
- [![Build Status](https://travis-ci.org/grosser/parallel_tests.png)](https://travis-ci.org/grosser/parallel_tests)
329
+ License: MIT
@@ -163,6 +163,7 @@ module ParallelTests
163
163
  opts.on('--ignore-tags [PATTERN]', 'When counting steps ignore scenarios with tags that match this pattern') { |arg| options[:ignore_tag_pattern] = arg }
164
164
  opts.on("--nice", "execute test commands with low priority.") { options[:nice] = true }
165
165
  opts.on("--runtime-log [PATH]", "Location of previously recorded test runtimes") { |path| options[:runtime_log] = path }
166
+ opts.on("--unknown-runtime [FLOAT]", "Use given number as unknown runtime (otherwise use average time)") { |time| options[:unknown_runtime] = time.to_f }
166
167
  opts.on("--verbose", "Print more output") { options[:verbose] = true }
167
168
  opts.on("-v", "--version", "Show Version") { puts ParallelTests::VERSION; exit }
168
169
  opts.on("-h", "--help", "Show this.") { puts opts; exit }
@@ -16,24 +16,24 @@ module ParallelTests
16
16
 
17
17
  # add all files that should run in a single process to one group
18
18
  (options[:single_process] || []).each do |pattern|
19
- matched, items = items.partition { |item, size| item =~ pattern }
19
+ matched, items = items.partition { |item, _size| item =~ pattern }
20
20
  matched.each { |item, size| add_to_group(groups.first, item, size) }
21
21
  end
22
22
 
23
23
  groups_to_fill = (options[:isolate] ? groups[1..-1] : groups)
24
24
  group_features_by_size(items_to_group(items), groups_to_fill)
25
25
 
26
- groups.map!{|g| g[:items].sort }
26
+ groups.map! { |g| g[:items].sort }
27
27
  end
28
28
 
29
29
  private
30
30
 
31
31
  def largest_first(files)
32
- files.sort_by{|item, size| size }.reverse
32
+ files.sort_by{|_item, size| size }.reverse
33
33
  end
34
34
 
35
35
  def smallest_group(groups)
36
- groups.min_by{|g| g[:size] }
36
+ groups.min_by { |g| g[:size] }
37
37
  end
38
38
 
39
39
  def add_to_group(group, item, size)
@@ -46,10 +46,10 @@ module ParallelTests
46
46
  listener = ParallelTests::Gherkin::Listener.new
47
47
  listener.ignore_tag_pattern = Regexp.compile(options[:ignore_tag_pattern]) if options[:ignore_tag_pattern]
48
48
  parser = ::Gherkin::Parser::Parser.new(listener, true, 'root')
49
- tests.each{|file|
49
+ tests.each do |file|
50
50
  parser.parse(File.read(file), file, 0)
51
- }
52
- listener.collect.sort_by{|_,value| -value }
51
+ end
52
+ listener.collect.sort_by { |_, value| -value }
53
53
  end
54
54
 
55
55
  def group_by_scenarios(tests, options={})
@@ -170,10 +170,11 @@ module ParallelTests
170
170
  puts "Runtime found for #{tests.count(&:last)} of #{tests.size} tests"
171
171
  end
172
172
 
173
- # fill gaps with average runtime
173
+ # fill gaps with unknown-runtime if given, average otherwise
174
174
  known, unknown = tests.partition(&:last)
175
175
  average = (known.any? ? known.map!(&:last).inject(:+) / known.size : 1)
176
- unknown.each { |set| set[1] = average }
176
+ unknown_runtime = options[:unknown_runtime] || average
177
+ unknown.each { |set| set[1] = unknown_runtime }
177
178
  end
178
179
 
179
180
  def runtimes(tests, options)
@@ -1,3 +1,3 @@
1
1
  module ParallelTests
2
- VERSION = Version = '1.6.1'
2
+ VERSION = Version = '1.6.2'
3
3
  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: 1.6.1
4
+ version: 1.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-11 00:00:00.000000000 Z
11
+ date: 2015-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel