rspec-multiprocess_runner 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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