treye-semaphore_test_boosters 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 27c22f8102f333cd7e8144fa2b4d7a17a5c7a77f
4
+ data.tar.gz: 779e690fb739830d6c52d9d86bbc49464d2faf6c
5
+ SHA512:
6
+ metadata.gz: 1015436ed3fe5b5ff4b3ebc7b2b55069ffe7ee34138ed1e6907e154db48379df0f272a8ec0cae7dcf40ecfdb005681ea720d40e5c8b3a15ed15408bb913f8b77
7
+ data.tar.gz: 7d9f7b00719e7fd971925e59a2063852fbb945535c103313a86c8fc8d1722dfeb9d542bca0d6396abd507e1a126621ac2fb167a0a4959df715e390998df3931e
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.gem
11
+ /vendor
12
+ /coverage
13
+ config/cucumber.yml
14
+ /features
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,105 @@
1
+ require: rubocop-rspec
2
+
3
+ AllCops:
4
+ DisplayCopNames: true
5
+
6
+ Exclude:
7
+ - "*.gemspec"
8
+ - "vendor/**/*"
9
+ - "features/**/*"
10
+ - "lib/test_boosters/cucumber_booster.rb"
11
+ - "test_data_pass/**/*"
12
+ - "test_data_fail/**/*"
13
+ - "rspec_formatters/semaphore_rspec3_json_formatter.rb"
14
+
15
+ Style/StringLiterals:
16
+ EnforcedStyle: double_quotes
17
+
18
+ Style/StringLiteralsInInterpolation:
19
+ EnforcedStyle: double_quotes
20
+
21
+ Style/NumericLiterals:
22
+ Enabled: false
23
+
24
+ Style/Documentation:
25
+ Enabled: false
26
+
27
+ Style/HashSyntax:
28
+ EnforcedStyle: hash_rockets
29
+
30
+ Style/CollectionMethods:
31
+ StyleGuide: "https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size"
32
+ Enabled: true
33
+
34
+ Metrics/LineLength:
35
+ Max: 120
36
+
37
+ Style/EmptyLinesAroundClassBody:
38
+ Enabled: false
39
+
40
+ Style/EmptyLinesAroundModuleBody:
41
+ Enabled: false
42
+
43
+ Style/MultilineMethodCallIndentation:
44
+ EnforcedStyle: indented
45
+ IndentationWidth: 2
46
+
47
+ Style/SpecialGlobalVars:
48
+ Enabled: false
49
+
50
+ Style/PercentLiteralDelimiters:
51
+ Enabled: false
52
+
53
+ RSpec/InstanceVariable:
54
+ Enabled: false
55
+
56
+ RSpec/MultipleExpectations:
57
+ Max: 5
58
+
59
+ Metrics/BlockLength:
60
+ Exclude:
61
+ - "Rakefile"
62
+ - "**/*.rake"
63
+ - "spec/**/*.rb"
64
+
65
+ Style/EmptyLinesAroundBlockBody:
66
+ Enabled: false
67
+
68
+ RSpec/BeforeAfterAll:
69
+ Enabled: false
70
+
71
+ RSpec/ExampleLength:
72
+ Enabled: false
73
+
74
+ RSpec/DescribedClass:
75
+ Enabled: false
76
+
77
+ Style/IndentArray:
78
+ EnforcedStyle: consistent
79
+
80
+ Style/MultilineMethodCallBraceLayout:
81
+ Enabled: false
82
+
83
+ RSpec/MessageSpies:
84
+ Enabled: false
85
+
86
+ Style/MultilineBlockLayout:
87
+ Enabled: false
88
+
89
+ RSpec/SubjectStub:
90
+ Enabled: false
91
+
92
+ RSpec/DescribeClass:
93
+ Enabled: false
94
+
95
+ RSpec/LeadingSubject:
96
+ Enabled: false
97
+
98
+ Style/WordArray:
99
+ Enabled: false
100
+
101
+ RSpec/NotToNot:
102
+ Enabled: false
103
+
104
+ Metrics/MethodLength:
105
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in test_boosters.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Rendered Text
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,226 @@
1
+ # Test Boosters
2
+
3
+ Note: This version is just an updated copy of the original with the new version number.
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/semaphore_test_boosters.svg)](https://badge.fury.io/rb/semaphore_test_boosters)
6
+ [![Build Status](https://semaphoreci.com/api/v1/renderedtext/test-boosters/branches/master/badge.svg)](https://semaphoreci.com/renderedtext/test-boosters)
7
+
8
+ Auto Parallelization — runs test files in multiple jobs
9
+
10
+ - [Installation](#installation)
11
+
12
+ Test Booster basics:
13
+
14
+ - [What are Test Boosters](#what-are-test-boosters)
15
+ - [Split Configuration](#split-configuration)
16
+ - [Leftover Files](#split-configuration)
17
+
18
+ Test Boosters:
19
+
20
+ - [RSpec Booster](#rspec-booster)
21
+ - [Cucumber Booster](#cucumber-booster)
22
+ - [Minitest Booster](#minitest-booster)
23
+ - [ExUnit Booster](#ex-unit-booster)
24
+ - [GoTest Booster](#go-test-booster)
25
+
26
+ ## Installation
27
+
28
+ ``` bash
29
+ gem install semaphore_test_boosters
30
+ ````
31
+
32
+ ## What are Test Boosters
33
+
34
+ Test Boosters take your test suite and split the test files into multiple jobs.
35
+ This allows you to quickly parallelize your test suite across multiple build
36
+ machines.
37
+
38
+ As an example, let's take a look at the `rspec_booster --job 1/10` command. It
39
+ lists all the files that match the `spec/**/*_spec.rb` glob in your project,
40
+ distributes them into 10 jobs, and execute the first job.
41
+
42
+ ### Split Configuration
43
+
44
+ Every test booster can load a split configuration file that helps the test
45
+ booster to make a better distribution.
46
+
47
+ For example, if you have 3 RSpec Booster jobs, and you want to run:
48
+
49
+ - `spec/a_spec.rb` and `spec/b_spec.rb` in the first job
50
+ - `spec/c_spec.rb` and `spec/d_spec.rb` in the second job
51
+ - `spec/e_spec.rb` in the third job
52
+
53
+ you should put the following in your split configuration file:
54
+
55
+ ``` json
56
+ [
57
+ { "files": ["spec/a_spec.rb", "spec/b_spec.rb"] },
58
+ { "files": ["spec/c_spec.rb", "spec/d_spec.rb"] },
59
+ { "files": ["spec/e_spec.rb"] }
60
+ ]
61
+ ```
62
+
63
+ Semaphore uses Split configurations to split your test files based on their
64
+ durations in the previous builds.
65
+
66
+ ### Leftover Files
67
+
68
+ Files that are part of your test suite, but are not in the split
69
+ configuration file, are called "leftover files". These files will be distributed
70
+ based on their file size in a round robin fashion across your jobs.
71
+
72
+ For example, if you have the following in your split configuration:
73
+
74
+ ``` json
75
+ [
76
+ { "files": ["spec/a_spec.rb"] }
77
+ { "files": ["spec/b_spec.rb"] }
78
+ { "files": ["spec/c_spec.rb"] }
79
+ ]
80
+ ```
81
+
82
+ and the following files in your spec directory:
83
+
84
+ ``` bash
85
+ # Files from split configuration ↓
86
+
87
+ spec/a_spec.rb
88
+ spec/b_spec.rb
89
+ spec/c_spec.rb
90
+
91
+ # Leftover files ↓
92
+
93
+ spec/d_spec.rb
94
+ spec/e_spec.rb
95
+ ```
96
+
97
+ When you run the `rspec_booster --job 1/3` command, the files from the
98
+ configuration's first job and some leftover files will be executed.
99
+
100
+ ``` bash
101
+ rspec_booster --job 1/3
102
+
103
+ # => runs: bundle exec rspec spec/a_spec.rb spec/d_spec.rb
104
+ ```
105
+
106
+ Booster will distribute your leftover files uniformly across jobs.
107
+
108
+ ## RSpec Booster
109
+
110
+ The `rspec_booster` loads all the files that match the `spec/**/*_spec.rb`
111
+ pattern and uses the `~/rspec_split_configuration.json` file to parallelize your
112
+ test suite.
113
+
114
+ Example of running job 4 out of 32 jobs:
115
+
116
+ ``` bash
117
+ rspec_booster --job 4/32
118
+ ```
119
+
120
+ Under the hood, the RSpec Booster uses the following command:
121
+
122
+ ``` bash
123
+ bundle exec rspec --format documentation --format json --out /home/<user>/rspec_report.json <file_list>
124
+ ```
125
+
126
+ Optionally, you can pass additional RSpec flags with the `TB_RSPEC_OPTIONS`
127
+ environment variable. You can also set a RSpec formatter with the `TB_RSPEC_FORMATTER` environment variable.
128
+ Default formatter is `documentation`.
129
+
130
+
131
+ Example:
132
+ ``` bash
133
+ TB_RSPEC_OPTIONS='--fail-fast=3' TB_RSPEC_FORMATTER=Fivemat rspec_booster --job 4/32
134
+
135
+ # will execute:
136
+ bundle exec rspec --fail-fast=3 --format Fivemat --format json --out /home/<user>/rspec_report.json <file_list>
137
+ ```
138
+
139
+ ## Cucumber Booster
140
+
141
+ The `cucumber_booster` loads all the files that match the `features/**/*.feature`
142
+ pattern and uses the `~/cucumber_split_configuration.json` file to parallelize
143
+ your test suite.
144
+
145
+ Example of running job 4 out of 32 jobs:
146
+
147
+ ``` bash
148
+ cucumber_booster --job 4/32
149
+ ```
150
+
151
+ Under the hood, the Cucumber Booster uses the following command:
152
+
153
+ ``` bash
154
+ bundle exec cucumber <file_list>
155
+ ```
156
+
157
+ ## Minitest Booster
158
+
159
+ The `minitest_booster` loads all the files that match the `test/**/*_test.rb`
160
+ pattern and uses the `~/minitest_split_configuration.json` file to parallelize
161
+ your test suite.
162
+
163
+ Example of running job 4 out of 32 jobs:
164
+
165
+ ``` bash
166
+ minitest_booster --job 4/32
167
+ ```
168
+
169
+ Under the hood, the Minitest Booster uses the following command:
170
+
171
+ ``` bash
172
+ ruby -e 'ARGV.each { |f| require ".#{f}" }' <file_list>
173
+ ```
174
+
175
+ ## ExUnit Booster
176
+
177
+ The `ex_unit_booster` loads all the files that match the `test/**/*_test.exs`
178
+ pattern and uses the `~/ex_unit_split_configuration.json` file to parallelize
179
+ your test suite.
180
+
181
+ Example of running job 4 out of 32 jobs:
182
+
183
+ ``` bash
184
+ ex_unit_booster --job 4/32
185
+ ```
186
+
187
+ Under the hood, the ExUnit Booster uses the following command:
188
+
189
+ ``` bash
190
+ mix test <file_list>
191
+ ```
192
+
193
+ ## Go Test Booster
194
+
195
+ The `go_test_booster` loads all the files that match the `**/*_test.go`
196
+ pattern and uses the `~/go_test_split_configuration.json` file to parallelize
197
+ your test suite.
198
+
199
+ Example of running job 4 out of 32 jobs:
200
+
201
+ ``` bash
202
+ go_test_booster --job 4/32
203
+ ```
204
+
205
+ Under the hood, the Go Test Booster uses the following command:
206
+
207
+ ``` bash
208
+ go test <file_list>
209
+ ```
210
+
211
+ ## Development
212
+
213
+ ### Integration testing
214
+
215
+ For integration tests we use test repositories that are located in
216
+ <https://github.com/renderedtext/test-boosters-tests.git>.
217
+
218
+ ## Contributing
219
+
220
+ Bug reports and pull requests are welcome on GitHub at
221
+ https://github.com/renderedtext/test-boosters.
222
+
223
+ ## License
224
+
225
+ The gem is available as open source under the terms of the
226
+ [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "test_boosters"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/config.reek ADDED
@@ -0,0 +1,16 @@
1
+ ---
2
+ IrresponsibleModule:
3
+ enabled: false
4
+
5
+ FeatureEnvy:
6
+ enabled: false
7
+
8
+ ControlParameter:
9
+ enabled: false
10
+
11
+ UtilityFunction:
12
+ enabled: false
13
+
14
+ exclude_paths:
15
+ - vendor
16
+ - .bundle
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "test_boosters"
4
+
5
+ exit(TestBoosters::Boosters::Cucumber.new.run)