rspec-multiprocess_runner 0.2.1 → 0.2.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.
@@ -1,3 +1,7 @@
1
+ # 0.2.2
2
+
3
+ * Run specs in order of decreasing file size to increase worker utilization
4
+
1
5
  # 0.2.1
2
6
 
3
7
  * Include filename and line number in realtime output (#5)
data/README.md CHANGED
@@ -117,6 +117,21 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/cdd/rs
117
117
  * [![Build Status](https://travis-ci.org/cdd/rspec-multiprocess_runner.svg?branch=master)](https://travis-ci.org/cdd/rspec-multiprocess_runner)
118
118
  [Continuous Integration on Travis-CI](https://travis-ci.org/cdd/rspec-multiprocess_runner)
119
119
 
120
+ ### Release process
121
+
122
+ 1. Verify that all desired changes have been merged & pushed to master.
123
+ 2. Verify that the changelog is up to date (it should be kept up to date as
124
+ changes are made, so this should just be a quick check).
125
+ 3. Verify that the current master has passed on Travis.
126
+ 4. Edit `version.rb` and remove `".pre"` from the version number. Save and commit.
127
+ 5. Run `rake release`. This packages the gem and submits it to rubygems.org.
128
+ 6. Edit `version.rb` and update to the next patch-level release, plus `.pre`.
129
+ E.g. if you just released 0.6.10, update the version in `version.rb` to
130
+ `"0.6.11.pre"`.
131
+ 7. Add a heading for the new version number to `CHANGELOG.md`. E.g., if you
132
+ just released 0.6.10, add "# 0.6.11" to the top of the changelog.
133
+ 8. Save and commit the changes from steps 6 and 7.
134
+
120
135
  ## License
121
136
 
122
137
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -9,7 +9,7 @@ module RSpec::MultiprocessRunner
9
9
  @file_timeout_seconds = options[:file_timeout_seconds]
10
10
  @example_timeout_seconds = options[:example_timeout_seconds]
11
11
  @rspec_options = options[:rspec_options]
12
- @spec_files = files
12
+ @spec_files = sort_files(files)
13
13
  @workers = []
14
14
  @stopped_workers = []
15
15
  end
@@ -48,6 +48,15 @@ module RSpec::MultiprocessRunner
48
48
 
49
49
  private
50
50
 
51
+ # Sorting by decreasing size attempts to ensure we don't send the slowest
52
+ # file to a worker right before all the other workers finish and then end up
53
+ # waiting for that one process to finish.
54
+ # In the future it would be nice to log execution time and sort by that.
55
+ def sort_files(files)
56
+ # #sort_by caches the File.size result so we only call it once per file.
57
+ files.sort_by { |file| -File.size(file) }
58
+ end
59
+
51
60
  def worker_sockets
52
61
  @workers.map(&:socket)
53
62
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module MultiprocessRunner
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,75 +1,84 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-multiprocess_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Rhett Sutphin
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2015-12-29 00:00:00.000000000 Z
12
+ date: 2016-01-04 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rspec-core
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '2.0'
20
- - - "<"
22
+ - - <
21
23
  - !ruby/object:Gem::Version
22
24
  version: 2.99.0
23
25
  type: :runtime
24
26
  prerelease: false
25
27
  version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
26
29
  requirements:
27
- - - "~>"
30
+ - - ~>
28
31
  - !ruby/object:Gem::Version
29
32
  version: '2.0'
30
- - - "<"
33
+ - - <
31
34
  - !ruby/object:Gem::Version
32
35
  version: 2.99.0
33
36
  - !ruby/object:Gem::Dependency
34
37
  name: bundler
35
38
  requirement: !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
- - - "~>"
41
+ - - ~>
38
42
  - !ruby/object:Gem::Version
39
43
  version: '1.10'
40
44
  type: :development
41
45
  prerelease: false
42
46
  version_requirements: !ruby/object:Gem::Requirement
47
+ none: false
43
48
  requirements:
44
- - - "~>"
49
+ - - ~>
45
50
  - !ruby/object:Gem::Version
46
51
  version: '1.10'
47
52
  - !ruby/object:Gem::Dependency
48
53
  name: rake
49
54
  requirement: !ruby/object:Gem::Requirement
55
+ none: false
50
56
  requirements:
51
- - - "~>"
57
+ - - ~>
52
58
  - !ruby/object:Gem::Version
53
59
  version: '10.0'
54
60
  type: :development
55
61
  prerelease: false
56
62
  version_requirements: !ruby/object:Gem::Requirement
63
+ none: false
57
64
  requirements:
58
- - - "~>"
65
+ - - ~>
59
66
  - !ruby/object:Gem::Version
60
67
  version: '10.0'
61
68
  - !ruby/object:Gem::Dependency
62
69
  name: rspec
63
70
  requirement: !ruby/object:Gem::Requirement
71
+ none: false
64
72
  requirements:
65
- - - ">="
73
+ - - ! '>='
66
74
  - !ruby/object:Gem::Version
67
75
  version: '0'
68
76
  type: :development
69
77
  prerelease: false
70
78
  version_requirements: !ruby/object:Gem::Requirement
79
+ none: false
71
80
  requirements:
72
- - - ">="
81
+ - - ! '>='
73
82
  - !ruby/object:Gem::Version
74
83
  version: '0'
75
84
  description:
@@ -80,9 +89,9 @@ executables:
80
89
  extensions: []
81
90
  extra_rdoc_files: []
82
91
  files:
83
- - ".gitignore"
84
- - ".rspec"
85
- - ".travis.yml"
92
+ - .gitignore
93
+ - .rspec
94
+ - .travis.yml
86
95
  - CHANGELOG.md
87
96
  - Gemfile
88
97
  - LICENSE.txt
@@ -103,25 +112,26 @@ files:
103
112
  homepage: https://github.com/cdd/rspec-multiprocess_runner
104
113
  licenses:
105
114
  - MIT
106
- metadata: {}
107
115
  post_install_message:
108
116
  rdoc_options: []
109
117
  require_paths:
110
118
  - lib
111
119
  required_ruby_version: !ruby/object:Gem::Requirement
120
+ none: false
112
121
  requirements:
113
- - - ">="
122
+ - - ! '>='
114
123
  - !ruby/object:Gem::Version
115
124
  version: '0'
116
125
  required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
117
127
  requirements:
118
- - - ">="
128
+ - - ! '>='
119
129
  - !ruby/object:Gem::Version
120
130
  version: '0'
121
131
  requirements: []
122
132
  rubyforge_project:
123
- rubygems_version: 2.4.5.1
133
+ rubygems_version: 1.8.23.2
124
134
  signing_key:
125
- specification_version: 4
135
+ specification_version: 3
126
136
  summary: A runner for RSpec 2 that uses multiple processes to execute specs in parallel
127
137
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: f9657102aa587ca6acd499b828177dbf398b6e6b
4
- data.tar.gz: 3a8c98ed3e373fef1b4b7dfd18402144cc392b8f
5
- SHA512:
6
- metadata.gz: ab7389b7741bcc49e0a0c035f0c9c995cf5894cee84d8c69bda5833e3913b3d1834f67d1f3e5ac51d7722f1ed2887858afcbfa9650e4fb549fed489e43b05886
7
- data.tar.gz: 3419d3061983fab7408ea2eec18871ff5a83db427c0178e7fcae7424a9c97cf1d47cecf791e774e9a9a54befeffb5f106dca62baa5a1ba2078dd3f3ebc6f4e05