knapsack 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +39 -2
- data/CHANGELOG.md +7 -0
- data/README.md +118 -9
- data/Rakefile +6 -0
- data/knapsack.gemspec +3 -1
- data/knapsack_minitest_report.json +5 -0
- data/lib/knapsack.rb +1 -0
- data/lib/knapsack/adapters/minitest_adapter.rb +60 -0
- data/lib/knapsack/allocator_builder.rb +4 -0
- data/lib/knapsack/presenter.rb +4 -0
- data/lib/knapsack/report.rb +1 -1
- data/lib/knapsack/version.rb +1 -1
- data/lib/tasks/knapsack_cucumber.rake +1 -1
- data/lib/tasks/knapsack_minitest.rake +26 -0
- data/lib/tasks/knapsack_rspec.rake +1 -1
- data/spec/knapsack/adapters/minitest_adapter_spec.rb +125 -0
- data/spec/knapsack/allocator_builder_spec.rb +20 -0
- data/spec/knapsack/presenter_spec.rb +10 -0
- data/spec/knapsack/report_spec.rb +1 -1
- data/spec/knapsack/task_loader_spec.rb +2 -0
- data/spec/support/mocks/minitest.rb +12 -0
- data/test_examples/fast/spec_test.rb +25 -0
- data/test_examples/fast/unit_test.rb +22 -0
- data/test_examples/slow/slow_test.rb +15 -0
- data/test_examples/test_helper.rb +20 -0
- metadata +37 -13
- data/TODO.md +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd1d57912b7ba3dc639a4b4166441fe899ebff3e
|
4
|
+
data.tar.gz: f908eebdca1733ab47236c9f7891b2f8381ba9c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d713250822a9633768ee4d8a003379fad3e98cc50f4ae87f02e254b482709be039d5e9870b4ff88805edb1469cca237be31b744f77612c526cdf70e9c209b55
|
7
|
+
data.tar.gz: d2f59a9e4178be5534828ccbcbb4d5db6a4b3bcce191ac82446737a25a0d4bfc69c87f3a2e3a8a8ecfd1158d81134a73c6b80827d09a398b2735a375c164829e
|
data/.travis.yml
CHANGED
@@ -5,15 +5,22 @@ rvm:
|
|
5
5
|
- 2.0.0
|
6
6
|
- 2.1.5
|
7
7
|
- 2.2.0
|
8
|
+
- 2.2.2
|
8
9
|
addons:
|
9
10
|
code_climate:
|
10
11
|
repo_token: 38686058eed480dd0fcf8bce9015733e0bae88e44e30f4a1ac63df8aec2f86d8
|
11
12
|
before_install:
|
12
13
|
- "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
|
13
14
|
script:
|
15
|
+
# Test for knapsack gem
|
14
16
|
- bin/print_header.sh "Run specs for Knapsack gem"
|
15
17
|
- bundle exec rspec spec
|
16
18
|
|
19
|
+
|
20
|
+
- bin/print_header.sh "------------------------------------------------------"
|
21
|
+
|
22
|
+
|
23
|
+
# Tests for example rspec test suite
|
17
24
|
- bin/print_header.sh "Generate knapsack report"
|
18
25
|
- KNAPSACK_GENERATE_REPORT=true bundle exec rspec --default-path spec_examples --tag focus
|
19
26
|
|
@@ -32,11 +39,41 @@ script:
|
|
32
39
|
- CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
33
40
|
|
34
41
|
- bin/print_header.sh "Run specs for custom knapsack report path"
|
35
|
-
- cp knapsack_rspec_report.json
|
36
|
-
- KNAPSACK_REPORT_PATH="
|
42
|
+
- cp knapsack_rspec_report.json knapsack_custom_rspec_report.json
|
43
|
+
- KNAPSACK_REPORT_PATH="knapsack_custom_rspec_report.json" KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
37
44
|
|
38
45
|
- bin/print_header.sh "Run specs when spec file was removed and still exists in knapsack report json"
|
39
46
|
- rm spec_examples/fast/1_spec.rb
|
40
47
|
- KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
48
|
+
|
49
|
+
|
50
|
+
- bin/print_header.sh "------------------------------------------------------"
|
51
|
+
|
52
|
+
|
53
|
+
# Tests for example minitest test suite
|
54
|
+
- bin/print_header.sh "Generate knapsack report"
|
55
|
+
- KNAPSACK_GENERATE_REPORT=true bundle exec rake test
|
56
|
+
|
57
|
+
- bin/print_header.sh "Run tests with enabled time offset warning"
|
58
|
+
- bundle exec rake test
|
59
|
+
|
60
|
+
- bin/print_header.sh "Run rake task for the first CI node"
|
61
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=0 KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake knapsack:minitest
|
62
|
+
- bin/print_header.sh "Run rake task for the second CI node"
|
63
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=1 KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake knapsack:minitest
|
64
|
+
|
65
|
+
- bin/print_header.sh "Check passing arguments to minitest. Run verbose tests"
|
66
|
+
- KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake "knapsack:minitest[--verbose]"
|
67
|
+
|
68
|
+
- bin/print_header.sh "Run tests with custom knapsack logger"
|
69
|
+
- CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake knapsack:minitest
|
70
|
+
|
71
|
+
- bin/print_header.sh "Run tests for custom knapsack report path"
|
72
|
+
- cp knapsack_minitest_report.json knapsack_custom_minitest_report.json
|
73
|
+
- KNAPSACK_REPORT_PATH="knapsack_custom_minitest_report.json" KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake knapsack:minitest
|
74
|
+
|
75
|
+
- bin/print_header.sh "Run tests when test file was removed and still exists in knapsack report json"
|
76
|
+
- rm test_examples/fast/unit_test.rb
|
77
|
+
- KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake knapsack:minitest
|
41
78
|
notifications:
|
42
79
|
email: false
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
* TODO
|
4
4
|
|
5
|
+
### 1.2.0
|
6
|
+
|
7
|
+
* Add minitest adapter.
|
8
|
+
* Fix bug with missing global time execution when tests took less than second.
|
9
|
+
|
10
|
+
https://github.com/ArturT/knapsack/compare/v1.1.1...v1.2.0
|
11
|
+
|
5
12
|
### 1.1.1
|
6
13
|
|
7
14
|
* Use `system` instead of `exec` in rake tasks so we can return exit code from command.
|
data/README.md
CHANGED
@@ -31,6 +31,47 @@ Presentations about gem:
|
|
31
31
|
|
32
32
|
![With Knapsack gem](docs/images/with_knapsack.png)
|
33
33
|
|
34
|
+
|
35
|
+
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
36
|
+
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
37
|
+
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
|
38
|
+
|
39
|
+
- [Update gem](#update-gem)
|
40
|
+
- [Installation](#installation)
|
41
|
+
- [Usage](#usage)
|
42
|
+
- [Step for RSpec](#step-for-rspec)
|
43
|
+
- [Step for Cucumber](#step-for-cucumber)
|
44
|
+
- [Step for Minitest](#step-for-minitest)
|
45
|
+
- [Custom configuration](#custom-configuration)
|
46
|
+
- [Common step](#common-step)
|
47
|
+
- [Adding or removing tests](#adding-or-removing-tests)
|
48
|
+
- [Setup your CI server](#setup-your-ci-server)
|
49
|
+
- [Info about ENV variables](#info-about-env-variables)
|
50
|
+
- [Passing arguments to rspec](#passing-arguments-to-rspec)
|
51
|
+
- [Passing arguments to cucumber](#passing-arguments-to-cucumber)
|
52
|
+
- [Passing arguments to minitest](#passing-arguments-to-minitest)
|
53
|
+
- [Info for CircleCI users](#info-for-circleci-users)
|
54
|
+
- [Step 1](#step-1)
|
55
|
+
- [Step 2](#step-2)
|
56
|
+
- [Info for Travis users](#info-for-travis-users)
|
57
|
+
- [Step 1](#step-1-1)
|
58
|
+
- [Step 2](#step-2-1)
|
59
|
+
- [Info for semaphoreapp.com users](#info-for-semaphoreappcom-users)
|
60
|
+
- [Step 1](#step-1-2)
|
61
|
+
- [Step 2](#step-2-2)
|
62
|
+
- [Info for buildkite.com users](#info-for-buildkitecom-users)
|
63
|
+
- [Step 1](#step-1-3)
|
64
|
+
- [Step 2](#step-2-3)
|
65
|
+
- [Gem tests](#gem-tests)
|
66
|
+
- [Spec](#spec)
|
67
|
+
- [Spec examples](#spec-examples)
|
68
|
+
- [Contributing](#contributing)
|
69
|
+
- [Acknowledgements](#acknowledgements)
|
70
|
+
- [Mentions](#mentions)
|
71
|
+
|
72
|
+
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
73
|
+
|
74
|
+
|
34
75
|
## Update gem
|
35
76
|
|
36
77
|
Please check [changelog](CHANGELOG.md) before update gem. Knapsack follows [semantic versioning](http://semver.org).
|
@@ -51,6 +92,10 @@ And then execute:
|
|
51
92
|
|
52
93
|
## Usage
|
53
94
|
|
95
|
+
You can find here example of rails app with already configured knapsack.
|
96
|
+
|
97
|
+
https://github.com/KnapsackPro/rails-app-with-knapsack
|
98
|
+
|
54
99
|
### Step for RSpec
|
55
100
|
|
56
101
|
Add at the beginning of your `spec_helper.rb`:
|
@@ -75,9 +120,22 @@ require 'knapsack'
|
|
75
120
|
Knapsack::Adapters::CucumberAdapter.bind
|
76
121
|
```
|
77
122
|
|
123
|
+
### Step for Minitest
|
124
|
+
|
125
|
+
Add at the beginning of your `test_helper.rb`:
|
126
|
+
|
127
|
+
```ruby
|
128
|
+
require 'knapsack'
|
129
|
+
|
130
|
+
# CUSTOM_CONFIG_GOES_HERE
|
131
|
+
|
132
|
+
knapsack_adapter = Knapsack::Adapters::MinitestAdapter.bind
|
133
|
+
knapsack_adapter.set_test_helper_path(__FILE__)
|
134
|
+
```
|
135
|
+
|
78
136
|
### Custom configuration
|
79
137
|
|
80
|
-
You can change default Knapsack configuration for RSpec or
|
138
|
+
You can change default Knapsack configuration for RSpec, Cucumber or Minitest tests. Here are examples what you can do. Put below configuration instead of `CUSTOM_CONFIG_GOES_HERE`.
|
81
139
|
|
82
140
|
```ruby
|
83
141
|
Knapsack.tracker.config({
|
@@ -112,9 +170,12 @@ Generate time execution report for your test files. Run below command on one of
|
|
112
170
|
# Step for Cucumber
|
113
171
|
$ KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
114
172
|
|
115
|
-
|
173
|
+
# Step for Minitest
|
174
|
+
$ KNAPSACK_GENERATE_REPORT=true bundle exec rake test
|
116
175
|
|
117
|
-
|
176
|
+
Commit generated report `knapsack_rspec_report.json`, `knapsack_cucumber_report.json` or `knapsack_minitest_report.json` into your repository.
|
177
|
+
|
178
|
+
This report should be updated only after you add a lot of new slow tests or you change existing ones which causes a big time execution difference between CI nodes. Either way, you will get time offset warning at the end of the rspec/cucumber/minitest results which reminds you when it’s a good time to regenerate the knapsack report.
|
118
179
|
|
119
180
|
#### Adding or removing tests
|
120
181
|
|
@@ -132,6 +193,9 @@ On your CI server run this command for the first CI node. Update `CI_NODE_INDEX`
|
|
132
193
|
# Step for Cucumber
|
133
194
|
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber
|
134
195
|
|
196
|
+
# Step for Minitest
|
197
|
+
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:minitest
|
198
|
+
|
135
199
|
You can add `KNAPSACK_TEST_FILE_PATTERN` if your tests are not in default directory. For instance:
|
136
200
|
|
137
201
|
# Step for RSpec
|
@@ -140,6 +204,9 @@ You can add `KNAPSACK_TEST_FILE_PATTERN` if your tests are not in default direct
|
|
140
204
|
# Step for Cucumber
|
141
205
|
$ KNAPSACK_TEST_FILE_PATTERN="directory_with_features/**/*.feature" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber
|
142
206
|
|
207
|
+
# Step for Minitest
|
208
|
+
$ KNAPSACK_TEST_FILE_PATTERN="directory_with_tests/**/*_test.rb" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:minitest
|
209
|
+
|
143
210
|
You can set `KNAPSACK_REPORT_PATH` if your knapsack report was saved in non default location. Example:
|
144
211
|
|
145
212
|
# Step for RSpec
|
@@ -148,6 +215,9 @@ You can set `KNAPSACK_REPORT_PATH` if your knapsack report was saved in non defa
|
|
148
215
|
# Step for Cucumber
|
149
216
|
$ KNAPSACK_REPORT_PATH="knapsack_custom_report.json" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber
|
150
217
|
|
218
|
+
# Step for Minitest
|
219
|
+
$ KNAPSACK_REPORT_PATH="knapsack_custom_report.json" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:minitest
|
220
|
+
|
151
221
|
### Info about ENV variables
|
152
222
|
|
153
223
|
`CI_NODE_TOTAL` - total number CI nodes you have.
|
@@ -172,6 +242,16 @@ Add arguments to knapsack cucumber task like this:
|
|
172
242
|
|
173
243
|
$ bundle exec rake "knapsack:cucumber[--name feature]"
|
174
244
|
|
245
|
+
### Passing arguments to minitest
|
246
|
+
|
247
|
+
Add arguments to knapsack minitest task like this:
|
248
|
+
|
249
|
+
$ bundle exec rake "knapsack:minitest[--arg_name value]"
|
250
|
+
|
251
|
+
For instance to run verbose tests:
|
252
|
+
|
253
|
+
$ bundle exec rake "knapsack:minitest[--verbose]"
|
254
|
+
|
175
255
|
### Info for CircleCI users
|
176
256
|
|
177
257
|
If you are using circleci.com you can omit `CI_NODE_TOTAL` and `CI_NODE_INDEX`. Knapsack will use `CIRCLE_NODE_TOTAL` and `CIRCLE_NODE_INDEX` provided by CircleCI.
|
@@ -190,9 +270,12 @@ test:
|
|
190
270
|
|
191
271
|
# Step for Cucumber
|
192
272
|
- KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
273
|
+
|
274
|
+
# Step for Minitest
|
275
|
+
- KNAPSACK_GENERATE_REPORT=true bundle exec rake test
|
193
276
|
```
|
194
277
|
|
195
|
-
After tests pass on your CircleCI machine your should copy knapsack json report which is rendered at the end of rspec/cucumber results. Save it into your repository as `knapsack_rspec_report.json` or `
|
278
|
+
After tests pass on your CircleCI machine your should copy knapsack json report which is rendered at the end of rspec/cucumber/minitest results. Save it into your repository as `knapsack_rspec_report.json`, `knapsack_cucumber_report.json` or `knapsack_minitest_report.json` file and commit.
|
196
279
|
|
197
280
|
#### Step 2
|
198
281
|
|
@@ -208,9 +291,13 @@ test:
|
|
208
291
|
# Step for Cucumber
|
209
292
|
- bundle exec rake knapsack:cucumber:
|
210
293
|
parallel: true # Caution: there are 8 spaces indentation!
|
294
|
+
|
295
|
+
# Step for Minitest
|
296
|
+
- bundle exec rake knapsack:minitest:
|
297
|
+
parallel: true # Caution: there are 8 spaces indentation!
|
211
298
|
```
|
212
299
|
|
213
|
-
Now everything should works. You will get warning at the end of rspec/cucumber results if time execution will take too much.
|
300
|
+
Now everything should works. You will get warning at the end of rspec/cucumber/minitest results if time execution will take too much.
|
214
301
|
|
215
302
|
### Info for Travis users
|
216
303
|
|
@@ -225,9 +312,12 @@ script:
|
|
225
312
|
|
226
313
|
# Step for Cucumber
|
227
314
|
- "KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features"
|
315
|
+
|
316
|
+
# Step for Minitest
|
317
|
+
- "KNAPSACK_GENERATE_REPORT=true bundle exec rake test"
|
228
318
|
```
|
229
319
|
|
230
|
-
After tests pass your should copy knapsack json report which is rendered at the end of rspec/cucumber results. Save it into your repository as `knapsack_rspec_report.json` or `
|
320
|
+
After tests pass your should copy knapsack json report which is rendered at the end of rspec/cucumber/minitest results. Save it into your repository as `knapsack_rspec_report.json`, `knapsack_cucumber_report.json` or `knapsack_minitest_report.json` file and commit.
|
231
321
|
|
232
322
|
#### Step 2
|
233
323
|
|
@@ -241,6 +331,9 @@ script:
|
|
241
331
|
# Step for Cucumber
|
242
332
|
- "bundle exec rake knapsack:cucumber"
|
243
333
|
|
334
|
+
# Step for Minitest
|
335
|
+
- "bundle exec rake knapsack:minitest"
|
336
|
+
|
244
337
|
env:
|
245
338
|
- CI_NODE_TOTAL=2 CI_NODE_INDEX=0
|
246
339
|
- CI_NODE_TOTAL=2 CI_NODE_INDEX=1
|
@@ -256,6 +349,9 @@ script:
|
|
256
349
|
# Step for Cucumber
|
257
350
|
- "bundle exec rake knapsack:cucumber"
|
258
351
|
|
352
|
+
# Step for Minitest
|
353
|
+
- "bundle exec rake knapsack:minitest"
|
354
|
+
|
259
355
|
env:
|
260
356
|
global:
|
261
357
|
- RAILS_ENV=test
|
@@ -285,23 +381,30 @@ For the first time run all tests at once with enabled report generator. Set up y
|
|
285
381
|
# Step for Cucumber
|
286
382
|
KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
287
383
|
|
288
|
-
|
384
|
+
# Step for Minitest
|
385
|
+
KNAPSACK_GENERATE_REPORT=true bundle exec rake test
|
386
|
+
|
387
|
+
After tests pass your should copy knapsack json report which is rendered at the end of rspec/cucumber/test results. Save it into your repository as `knapsack_rspec_report.json`, `knapsack_cucumber_report.json` or `knapsack_minitest_report.json` file and commit.
|
289
388
|
|
290
389
|
#### Step 2
|
291
390
|
|
292
|
-
Knapsack supports semaphoreapp ENVs `SEMAPHORE_THREAD_COUNT` and `SEMAPHORE_CURRENT_THREAD`. The only thing you need to do is set up knapsack rspec/cucumber command for as many threads as you need. Here is an example:
|
391
|
+
Knapsack supports semaphoreapp ENVs `SEMAPHORE_THREAD_COUNT` and `SEMAPHORE_CURRENT_THREAD`. The only thing you need to do is set up knapsack rspec/cucumber/minitest command for as many threads as you need. Here is an example:
|
293
392
|
|
294
393
|
# Thread 1
|
295
394
|
## Step for RSpec
|
296
395
|
bundle exec rake knapsack:rspec
|
297
396
|
## Step for Cucumber
|
298
397
|
bundle exec rake knapsack:cucumber
|
398
|
+
## Step for Minitest
|
399
|
+
bundle exec rake knapsack:minitest
|
299
400
|
|
300
401
|
# Thread 2
|
301
402
|
## Step for RSpec
|
302
403
|
bundle exec rake knapsack:rspec
|
303
404
|
## Step for Cucumber
|
304
405
|
bundle exec rake knapsack:cucumber
|
406
|
+
## Step for Minitest
|
407
|
+
bundle exec rake knapsack:minitest
|
305
408
|
|
306
409
|
Tests will be split across threads.
|
307
410
|
|
@@ -317,7 +420,10 @@ For the first time run all tests at once with enabled report generator. Run the
|
|
317
420
|
# Step for Cucumber
|
318
421
|
KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
319
422
|
|
320
|
-
|
423
|
+
# Step for Minitest
|
424
|
+
KNAPSACK_GENERATE_REPORT=true bundle exec rake test
|
425
|
+
|
426
|
+
After tests pass your should copy knapsack json report which is rendered at the end of rspec/cucumber/minitest results. Save it into your repository as `knapsack_rspec_report.json`, `knapsack_cucumber_report.json` or `knapsack_minitest_report.json` file and commit.
|
321
427
|
|
322
428
|
#### Step 2
|
323
429
|
|
@@ -329,6 +435,9 @@ Knapsack supports buildkite ENVs `BUILDKITE_PARALLEL_JOB_COUNT` and `BUILDKITE_P
|
|
329
435
|
# Step for Cucumber
|
330
436
|
bundle exec rake knapsack:cucumber
|
331
437
|
|
438
|
+
# Step for Minitest
|
439
|
+
bundle exec rake knapsack:minitest
|
440
|
+
|
332
441
|
## Gem tests
|
333
442
|
|
334
443
|
### Spec
|
data/Rakefile
CHANGED
data/knapsack.gemspec
CHANGED
@@ -18,10 +18,12 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency 'rake', '>= 0'
|
22
|
+
|
21
23
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
|
-
spec.add_development_dependency 'rake', '~> 0'
|
23
24
|
spec.add_development_dependency 'rspec', '~> 3.0', '>= 2.0.0'
|
24
25
|
spec.add_development_dependency 'cucumber', '>= 1.3'
|
26
|
+
spec.add_development_dependency 'minitest', '>= 5.0.0'
|
25
27
|
spec.add_development_dependency 'timecop', '~> 0'
|
26
28
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0'
|
27
29
|
spec.add_development_dependency 'pry', '~> 0'
|
data/lib/knapsack.rb
CHANGED
@@ -15,6 +15,7 @@ require_relative 'knapsack/distributors/leftover_distributor'
|
|
15
15
|
require_relative 'knapsack/adapters/base_adapter'
|
16
16
|
require_relative 'knapsack/adapters/rspec_adapter'
|
17
17
|
require_relative 'knapsack/adapters/cucumber_adapter'
|
18
|
+
require_relative 'knapsack/adapters/minitest_adapter'
|
18
19
|
|
19
20
|
module Knapsack
|
20
21
|
class << self
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Knapsack
|
2
|
+
module Adapters
|
3
|
+
class MinitestAdapter < BaseAdapter
|
4
|
+
TEST_DIR_PATTERN = 'test/**/*_test.rb'
|
5
|
+
REPORT_PATH = 'knapsack_minitest_report.json'
|
6
|
+
@@parent_of_test_dir = nil
|
7
|
+
|
8
|
+
# See how to write hooks and plugins
|
9
|
+
# https://github.com/seattlerb/minitest/blob/master/lib/minitest/test.rb
|
10
|
+
module BindTimeTrackerMinitestPlugin
|
11
|
+
def before_setup
|
12
|
+
super
|
13
|
+
Knapsack.tracker.test_path = MinitestAdapter.test_path(self)
|
14
|
+
Knapsack.tracker.start_timer
|
15
|
+
end
|
16
|
+
|
17
|
+
def after_teardown
|
18
|
+
Knapsack.tracker.stop_timer
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def bind_time_tracker
|
24
|
+
::Minitest::Test.send(:include, BindTimeTrackerMinitestPlugin)
|
25
|
+
|
26
|
+
::Minitest.after_run do
|
27
|
+
Knapsack.logger.info(Presenter.global_time)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def bind_report_generator
|
32
|
+
Minitest.after_run do
|
33
|
+
Knapsack.report.save
|
34
|
+
Knapsack.logger.info(Presenter.report_details)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def bind_time_offset_warning
|
39
|
+
Minitest.after_run do
|
40
|
+
Knapsack.logger.warn(Presenter.time_offset_warning)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def set_test_helper_path(file_path)
|
45
|
+
test_dir_path = File.dirname(file_path)
|
46
|
+
@@parent_of_test_dir = File.expand_path('../', test_dir_path)
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.test_path(obj)
|
50
|
+
test_method_name = obj.name
|
51
|
+
method_object = obj.method(test_method_name)
|
52
|
+
full_test_path = method_object.source_location.first
|
53
|
+
parent_of_test_dir_regexp = Regexp.new("^#{@@parent_of_test_dir}")
|
54
|
+
test_path = full_test_path.gsub(parent_of_test_dir_regexp, '.')
|
55
|
+
# test_path will look like ./test/dir/unit_test.rb
|
56
|
+
test_path
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/knapsack/presenter.rb
CHANGED
@@ -61,10 +61,14 @@ http://knapsack.launchrock.com}
|
|
61
61
|
|
62
62
|
def pretty_seconds(seconds)
|
63
63
|
sign = ''
|
64
|
+
|
64
65
|
if seconds < 0
|
65
66
|
seconds = seconds*-1
|
66
67
|
sign = '-'
|
67
68
|
end
|
69
|
+
|
70
|
+
return "#{sign}#{seconds}s" if seconds.abs < 1
|
71
|
+
|
68
72
|
time = Time.at(seconds).gmtime.strftime('%Hh %Mm %Ss')
|
69
73
|
time_without_zeros = time.gsub(/00(h|m|s)/, '').strip
|
70
74
|
sign + time_without_zeros
|
data/lib/knapsack/report.rb
CHANGED
@@ -25,7 +25,7 @@ module Knapsack
|
|
25
25
|
report = File.read(report_path)
|
26
26
|
JSON.parse(report)
|
27
27
|
rescue Errno::ENOENT
|
28
|
-
raise "Knapsack report file doesn't exist. Please generate report first!"
|
28
|
+
raise "Knapsack report file #{report_path} doesn't exist. Please generate report first!"
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
data/lib/knapsack/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'knapsack'
|
2
|
+
require 'rake/testtask'
|
3
|
+
|
4
|
+
namespace :knapsack do
|
5
|
+
Rake::TestTask.new(:minitest_run) do |t|
|
6
|
+
t.libs << ENV['KNAPSACK_MINITEST_TEST_DIR']
|
7
|
+
t.test_files = ENV['KNAPSACK_MINITEST_TEST_FILES'].to_s.split(' ')
|
8
|
+
end
|
9
|
+
|
10
|
+
task :minitest, [:minitest_args] do |_, args|
|
11
|
+
allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::MinitestAdapter).allocator
|
12
|
+
|
13
|
+
puts
|
14
|
+
puts 'Report tests:'
|
15
|
+
puts allocator.report_node_tests
|
16
|
+
puts
|
17
|
+
puts 'Leftover tests:'
|
18
|
+
puts allocator.leftover_node_tests
|
19
|
+
puts
|
20
|
+
|
21
|
+
cmd = %Q[TESTOPTS="#{args[:minitest_args]}" KNAPSACK_MINITEST_TEST_DIR="#{allocator.test_dir}" KNAPSACK_MINITEST_TEST_FILES="#{allocator.stringify_node_tests}" bundle exec rake knapsack:minitest_run]
|
22
|
+
|
23
|
+
system(cmd)
|
24
|
+
exit($?.exitstatus)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
module FakeMinitest
|
2
|
+
class Test < ::Minitest::Test
|
3
|
+
include Knapsack::Adapters::MinitestAdapter::BindTimeTrackerMinitestPlugin
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
describe Knapsack::Adapters::MinitestAdapter do
|
8
|
+
describe 'BindTimeTrackerMinitestPlugin' do
|
9
|
+
let(:tracker) { instance_double(Knapsack::Tracker) }
|
10
|
+
|
11
|
+
subject { ::FakeMinitest::Test.new }
|
12
|
+
|
13
|
+
before do
|
14
|
+
allow(Knapsack).to receive(:tracker).and_return(tracker)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#before_setup' do
|
18
|
+
let(:file) { 'test/models/user_test.rb' }
|
19
|
+
|
20
|
+
it do
|
21
|
+
expect(described_class).to receive(:test_path).with(subject).and_return(file)
|
22
|
+
expect(tracker).to receive(:test_path=).with(file)
|
23
|
+
expect(tracker).to receive(:start_timer)
|
24
|
+
|
25
|
+
subject.before_setup
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#after_teardown' do
|
30
|
+
it do
|
31
|
+
expect(tracker).to receive(:stop_timer)
|
32
|
+
|
33
|
+
subject.after_teardown
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'bind methods' do
|
39
|
+
let(:logger) { instance_double(Knapsack::Logger) }
|
40
|
+
let(:global_time) { 'Global time: 01m 05s' }
|
41
|
+
|
42
|
+
before do
|
43
|
+
expect(Knapsack).to receive(:logger).and_return(logger)
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#bind_time_tracker' do
|
47
|
+
it do
|
48
|
+
expect(::Minitest::Test).to receive(:send).with(:include, Knapsack::Adapters::MinitestAdapter::BindTimeTrackerMinitestPlugin)
|
49
|
+
|
50
|
+
expect(::Minitest).to receive(:after_run).and_yield
|
51
|
+
expect(Knapsack::Presenter).to receive(:global_time).and_return(global_time)
|
52
|
+
expect(logger).to receive(:info).with(global_time)
|
53
|
+
|
54
|
+
subject.bind_time_tracker
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#bind_report_generator' do
|
59
|
+
let(:report) { instance_double(Knapsack::Report) }
|
60
|
+
let(:report_details) { 'Report details' }
|
61
|
+
|
62
|
+
it do
|
63
|
+
expect(::Minitest).to receive(:after_run).and_yield
|
64
|
+
|
65
|
+
expect(Knapsack).to receive(:report).and_return(report)
|
66
|
+
expect(report).to receive(:save)
|
67
|
+
|
68
|
+
expect(Knapsack::Presenter).to receive(:report_details).and_return(report_details)
|
69
|
+
expect(logger).to receive(:info).with(report_details)
|
70
|
+
|
71
|
+
subject.bind_report_generator
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#bind_time_offset_warning' do
|
76
|
+
let(:time_offset_warning) { 'Time offset warning' }
|
77
|
+
|
78
|
+
it do
|
79
|
+
expect(::Minitest).to receive(:after_run).and_yield
|
80
|
+
|
81
|
+
expect(Knapsack::Presenter).to receive(:time_offset_warning).and_return(time_offset_warning)
|
82
|
+
expect(logger).to receive(:warn).with(time_offset_warning)
|
83
|
+
|
84
|
+
subject.bind_time_offset_warning
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#set_test_helper_path' do
|
90
|
+
let(:adapter) { described_class.new }
|
91
|
+
let(:test_helper_path) { '/code/project/test/test_helper.rb' }
|
92
|
+
|
93
|
+
subject { adapter.set_test_helper_path(test_helper_path) }
|
94
|
+
|
95
|
+
after do
|
96
|
+
expect(described_class.class_variable_get(:@@parent_of_test_dir)).to eq '/code/project'
|
97
|
+
end
|
98
|
+
|
99
|
+
it { should eql '/code/project' }
|
100
|
+
end
|
101
|
+
|
102
|
+
describe '.test_path' do
|
103
|
+
class FakeUserTest
|
104
|
+
def test_user_age; end
|
105
|
+
|
106
|
+
# method provided by Minitest
|
107
|
+
# it returns test method name
|
108
|
+
def name
|
109
|
+
:test_user_age
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
let(:obj) { FakeUserTest.new }
|
114
|
+
|
115
|
+
subject { described_class.test_path(obj) }
|
116
|
+
|
117
|
+
before do
|
118
|
+
parent_of_test_dir = File.expand_path('../../../', File.dirname(__FILE__))
|
119
|
+
parent_of_test_dir_regexp = Regexp.new("^#{parent_of_test_dir}")
|
120
|
+
described_class.class_variable_set(:@@parent_of_test_dir, parent_of_test_dir_regexp)
|
121
|
+
end
|
122
|
+
|
123
|
+
it { should eq './spec/knapsack/adapters/minitest_adapter_spec.rb' }
|
124
|
+
end
|
125
|
+
end
|
@@ -85,4 +85,24 @@ describe Knapsack::AllocatorBuilder do
|
|
85
85
|
it_behaves_like 'allocator builder'
|
86
86
|
end
|
87
87
|
end
|
88
|
+
|
89
|
+
describe '#test_dir' do
|
90
|
+
let(:adapter_class) { Knapsack::Adapters::RspecAdapter }
|
91
|
+
|
92
|
+
subject { allocator_builder.test_dir }
|
93
|
+
|
94
|
+
before do
|
95
|
+
expect(Knapsack::Config::Env).to receive(:test_file_pattern).and_return(env_test_file_pattern)
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'when ENV test_file_pattern has value' do
|
99
|
+
let(:env_test_file_pattern) { 'custom_spec/**/*_spec.rb' }
|
100
|
+
|
101
|
+
it { should eq 'custom_spec' }
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'when ENV test_file_pattern has no value' do
|
105
|
+
it { should eq 'spec' }
|
106
|
+
end
|
107
|
+
end
|
88
108
|
end
|
@@ -84,6 +84,16 @@ describe Knapsack::Presenter do
|
|
84
84
|
describe '.pretty_seconds' do
|
85
85
|
subject { described_class.pretty_seconds(seconds) }
|
86
86
|
|
87
|
+
context 'when less then one second' do
|
88
|
+
let(:seconds) { 0.987 }
|
89
|
+
it { should eql '0.987s' }
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'when one second' do
|
93
|
+
let(:seconds) { 1 }
|
94
|
+
it { should eql '01s' }
|
95
|
+
end
|
96
|
+
|
87
97
|
context 'when only seconds' do
|
88
98
|
let(:seconds) { 5 }
|
89
99
|
it { should eql '05s' }
|
@@ -62,7 +62,7 @@ describe Knapsack::Report do
|
|
62
62
|
it do
|
63
63
|
expect {
|
64
64
|
subject
|
65
|
-
}.to raise_error("Knapsack report file doesn't exist. Please generate report first!")
|
65
|
+
}.to raise_error("Knapsack report file #{report_path} doesn't exist. Please generate report first!")
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -2,10 +2,12 @@ describe Knapsack::TaskLoader do
|
|
2
2
|
describe '#load_tasks' do
|
3
3
|
let(:rspec_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_rspec.rake" }
|
4
4
|
let(:cucumber_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_cucumber.rake" }
|
5
|
+
let(:minitest_rake_task_path) { "#{Knapsack.root}/lib/tasks/knapsack_minitest.rake" }
|
5
6
|
|
6
7
|
it do
|
7
8
|
expect(subject).to receive(:import).with(rspec_rake_task_path)
|
8
9
|
expect(subject).to receive(:import).with(cucumber_rake_task_path)
|
10
|
+
expect(subject).to receive(:import).with(minitest_rake_task_path)
|
9
11
|
subject.load_tasks
|
10
12
|
end
|
11
13
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# https://github.com/seattlerb/minitest/blob/master/lib/minitest/test.rb
|
2
|
+
module Minitest
|
3
|
+
class Test
|
4
|
+
def before_setup; end
|
5
|
+
def after_teardown; end
|
6
|
+
end
|
7
|
+
|
8
|
+
# https://github.com/seattlerb/minitest/blob/master/lib/minitest.rb
|
9
|
+
def self.after_run(&block)
|
10
|
+
block.call
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class FakeCalculator
|
4
|
+
def add(x, y)
|
5
|
+
x + y
|
6
|
+
end
|
7
|
+
|
8
|
+
def mal(x, y)
|
9
|
+
x * y
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe FakeCalculator do
|
14
|
+
before do
|
15
|
+
@calc = FakeCalculator.new
|
16
|
+
end
|
17
|
+
|
18
|
+
it '#add' do
|
19
|
+
@calc.add(2, 3).must_equal 5
|
20
|
+
end
|
21
|
+
|
22
|
+
it '#mal' do
|
23
|
+
@calc.mal(2, 3).must_equal 6
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class UnitTest < Minitest::Test
|
4
|
+
def setup
|
5
|
+
sleep 0.1
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_mal
|
9
|
+
sleep 0.1
|
10
|
+
assert_equal 4, 2 * 2
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_no_way
|
14
|
+
sleep 0.2
|
15
|
+
refute_match(/^no/i, 'yes')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_that_will_be_skipped
|
19
|
+
sleep 1
|
20
|
+
skip 'test this later'
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
|
3
|
+
require 'knapsack'
|
4
|
+
|
5
|
+
Knapsack.tracker.config({
|
6
|
+
enable_time_offset_warning: true,
|
7
|
+
time_offset_in_seconds: 3
|
8
|
+
})
|
9
|
+
Knapsack.report.config({
|
10
|
+
report_path: 'knapsack_minitest_report.json'
|
11
|
+
})
|
12
|
+
|
13
|
+
if ENV['CUSTOM_LOGGER']
|
14
|
+
require 'logger'
|
15
|
+
Knapsack.logger = Logger.new(STDOUT)
|
16
|
+
Knapsack.logger.level = Logger::INFO
|
17
|
+
end
|
18
|
+
|
19
|
+
knapsack_adapter = Knapsack::Adapters::MinitestAdapter.bind
|
20
|
+
knapsack_adapter.set_test_helper_path(__FILE__)
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knapsack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ArturT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.6'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,6 +72,20 @@ dependencies:
|
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '1.3'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: minitest
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 5.0.0
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 5.0.0
|
75
89
|
- !ruby/object:Gem::Dependency
|
76
90
|
name: timecop
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +146,6 @@ files:
|
|
132
146
|
- LICENSE.txt
|
133
147
|
- README.md
|
134
148
|
- Rakefile
|
135
|
-
- TODO.md
|
136
149
|
- bin/print_header.sh
|
137
150
|
- docs/images/logos/knapsack-@2.png
|
138
151
|
- docs/images/logos/knapsack-big.png
|
@@ -143,10 +156,12 @@ files:
|
|
143
156
|
- docs/images/with_knapsack.png
|
144
157
|
- docs/images/without_knapsack.png
|
145
158
|
- knapsack.gemspec
|
159
|
+
- knapsack_minitest_report.json
|
146
160
|
- knapsack_rspec_report.json
|
147
161
|
- lib/knapsack.rb
|
148
162
|
- lib/knapsack/adapters/base_adapter.rb
|
149
163
|
- lib/knapsack/adapters/cucumber_adapter.rb
|
164
|
+
- lib/knapsack/adapters/minitest_adapter.rb
|
150
165
|
- lib/knapsack/adapters/rspec_adapter.rb
|
151
166
|
- lib/knapsack/allocator.rb
|
152
167
|
- lib/knapsack/allocator_builder.rb
|
@@ -162,9 +177,11 @@ files:
|
|
162
177
|
- lib/knapsack/tracker.rb
|
163
178
|
- lib/knapsack/version.rb
|
164
179
|
- lib/tasks/knapsack_cucumber.rake
|
180
|
+
- lib/tasks/knapsack_minitest.rake
|
165
181
|
- lib/tasks/knapsack_rspec.rake
|
166
182
|
- spec/knapsack/adapters/base_adapter_spec.rb
|
167
183
|
- spec/knapsack/adapters/cucumber_adapter_spec.rb
|
184
|
+
- spec/knapsack/adapters/minitest_adapter_spec.rb
|
168
185
|
- spec/knapsack/adapters/rspec_adapter_spec.rb
|
169
186
|
- spec/knapsack/allocator_builder_spec.rb
|
170
187
|
- spec/knapsack/allocator_spec.rb
|
@@ -181,6 +198,7 @@ files:
|
|
181
198
|
- spec/knapsack_spec.rb
|
182
199
|
- spec/spec_helper.rb
|
183
200
|
- spec/support/mocks/cucumber.rb
|
201
|
+
- spec/support/mocks/minitest.rb
|
184
202
|
- spec/support/shared_examples/adapter.rb
|
185
203
|
- spec_examples/fast/1_spec.rb
|
186
204
|
- spec_examples/fast/2_spec.rb
|
@@ -196,6 +214,10 @@ files:
|
|
196
214
|
- spec_examples/slow/c_spec.rb
|
197
215
|
- spec_examples/spec_helper.rb
|
198
216
|
- spec_examples/support/shared_examples/common_example.rb
|
217
|
+
- test_examples/fast/spec_test.rb
|
218
|
+
- test_examples/fast/unit_test.rb
|
219
|
+
- test_examples/slow/slow_test.rb
|
220
|
+
- test_examples/test_helper.rb
|
199
221
|
homepage: https://github.com/ArturT/knapsack
|
200
222
|
licenses:
|
201
223
|
- MIT
|
@@ -216,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
238
|
version: '0'
|
217
239
|
requirements: []
|
218
240
|
rubyforge_project:
|
219
|
-
rubygems_version: 2.4.
|
241
|
+
rubygems_version: 2.4.6
|
220
242
|
signing_key:
|
221
243
|
specification_version: 4
|
222
244
|
summary: Knapsack splits tests across CI nodes and makes sure that tests will run
|
@@ -224,6 +246,7 @@ summary: Knapsack splits tests across CI nodes and makes sure that tests will ru
|
|
224
246
|
test_files:
|
225
247
|
- spec/knapsack/adapters/base_adapter_spec.rb
|
226
248
|
- spec/knapsack/adapters/cucumber_adapter_spec.rb
|
249
|
+
- spec/knapsack/adapters/minitest_adapter_spec.rb
|
227
250
|
- spec/knapsack/adapters/rspec_adapter_spec.rb
|
228
251
|
- spec/knapsack/allocator_builder_spec.rb
|
229
252
|
- spec/knapsack/allocator_spec.rb
|
@@ -240,4 +263,5 @@ test_files:
|
|
240
263
|
- spec/knapsack_spec.rb
|
241
264
|
- spec/spec_helper.rb
|
242
265
|
- spec/support/mocks/cucumber.rb
|
266
|
+
- spec/support/mocks/minitest.rb
|
243
267
|
- spec/support/shared_examples/adapter.rb
|
data/TODO.md
DELETED