knapsack 1.2.1 → 1.3.0
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 +4 -4
- data/.travis.yml +3 -1
- data/CHANGELOG.md +8 -0
- data/README.md +20 -6
- data/bin/knapsack +20 -0
- data/lib/knapsack.rb +4 -0
- data/lib/knapsack/runners/cucumber_runner.rb +22 -0
- data/lib/knapsack/runners/minitest_runner.rb +31 -0
- data/lib/knapsack/runners/rspec_runner.rb +22 -0
- data/lib/knapsack/version.rb +1 -1
- data/lib/tasks/knapsack_cucumber.rake +1 -14
- data/lib/tasks/knapsack_minitest.rake +1 -20
- data/lib/tasks/knapsack_rspec.rake +1 -14
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4dd54024c966f2cff5fab7934d6aa1c255297cdc
|
4
|
+
data.tar.gz: f797b4b30cea8498d98c0dc89af3a41426979e62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bf63ca1824864e3148af5244ac357055320f22daf1180768b1dc922a058a05265e9d3b3f70c2ea60d4f23e92349dacb2f49cb9cc03f23cf7b633500202c729a
|
7
|
+
data.tar.gz: 2a88cb3402e1791a3e03c00af64a0872d099945c82f90c6a0ac8894c23a79a40062ea57984b6b2cba1ce57d17d742136d84db48b5b90d7b6786c9c9001e53985
|
data/.travis.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
+
sudo: false
|
2
3
|
language: ruby
|
3
4
|
rvm:
|
4
|
-
- 1.9.3
|
5
5
|
- 2.0.0
|
6
6
|
- 2.1.5
|
7
7
|
- 2.2.0
|
@@ -34,6 +34,7 @@ script:
|
|
34
34
|
|
35
35
|
- bin/print_header.sh "Check passing arguments to rspec. Run only specs with custom_focus tag"
|
36
36
|
- KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake "knapsack:rspec[--tag custom_focus]"
|
37
|
+
- KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bin/knapsack rspec "--tag custom_focus --profile"
|
37
38
|
|
38
39
|
- bin/print_header.sh "Run specs with custom knapsack logger"
|
39
40
|
- CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
@@ -64,6 +65,7 @@ script:
|
|
64
65
|
|
65
66
|
- bin/print_header.sh "Check passing arguments to minitest. Run verbose tests"
|
66
67
|
- KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake "knapsack:minitest[--verbose]"
|
68
|
+
- KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bin/knapsack minitest "--verbose --pride"
|
67
69
|
|
68
70
|
- bin/print_header.sh "Run tests with custom knapsack logger"
|
69
71
|
- CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="test_examples/**/*_test.rb" bundle exec rake knapsack:minitest
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -47,9 +47,11 @@ Presentations about gem:
|
|
47
47
|
- [Adding or removing tests](#adding-or-removing-tests)
|
48
48
|
- [Setup your CI server](#setup-your-ci-server)
|
49
49
|
- [Info about ENV variables](#info-about-env-variables)
|
50
|
-
- [Passing arguments to
|
51
|
-
|
52
|
-
|
50
|
+
- [Passing arguments to rake task](#passing-arguments-to-rake-task)
|
51
|
+
- [Passing arguments to rspec](#passing-arguments-to-rspec)
|
52
|
+
- [Passing arguments to cucumber](#passing-arguments-to-cucumber)
|
53
|
+
- [Passing arguments to minitest](#passing-arguments-to-minitest)
|
54
|
+
- [Knapsack binary](#knapsack-binary)
|
53
55
|
- [Info for CircleCI users](#info-for-circleci-users)
|
54
56
|
- [Step 1](#step-1)
|
55
57
|
- [Step 2](#step-2)
|
@@ -224,7 +226,9 @@ You can set `KNAPSACK_REPORT_PATH` if your knapsack report was saved in non defa
|
|
224
226
|
|
225
227
|
`CI_NODE_INDEX` - index of current CI node starts from 0. Second CI node should have `CI_NODE_INDEX=1`.
|
226
228
|
|
227
|
-
### Passing arguments to
|
229
|
+
### Passing arguments to rake task
|
230
|
+
|
231
|
+
#### Passing arguments to rspec
|
228
232
|
|
229
233
|
Knapsack allows you to pass arguments through to rspec. For example if you want to run only specs that have the tag `focus`. If you do this with rspec directly it would look like:
|
230
234
|
|
@@ -236,13 +240,13 @@ To do this with Knapsack you simply add your rspec arguments as parameters to th
|
|
236
240
|
|
237
241
|
Remember that using tags to limit which specs get run will affect the time each file takes to run. One solution to this is to generate a new `knapsack_rspec_report.json` for the commonly run scenarios.
|
238
242
|
|
239
|
-
|
243
|
+
#### Passing arguments to cucumber
|
240
244
|
|
241
245
|
Add arguments to knapsack cucumber task like this:
|
242
246
|
|
243
247
|
$ bundle exec rake "knapsack:cucumber[--name feature]"
|
244
248
|
|
245
|
-
|
249
|
+
#### Passing arguments to minitest
|
246
250
|
|
247
251
|
Add arguments to knapsack minitest task like this:
|
248
252
|
|
@@ -252,6 +256,16 @@ For instance to run verbose tests:
|
|
252
256
|
|
253
257
|
$ bundle exec rake "knapsack:minitest[--verbose]"
|
254
258
|
|
259
|
+
### Knapsack binary
|
260
|
+
|
261
|
+
You can install knapsack globally and use binary. For instance:
|
262
|
+
|
263
|
+
$ knapsack rspec "--tag custom_tag_name --profile"
|
264
|
+
$ knapsack cucumber
|
265
|
+
$ knapsack minitest "--verbose --pride"
|
266
|
+
|
267
|
+
[Here](https://github.com/ArturT/knapsack/pull/21) you will find example when it might be useful.
|
268
|
+
|
255
269
|
### Info for CircleCI users
|
256
270
|
|
257
271
|
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.
|
data/bin/knapsack
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/knapsack'
|
4
|
+
|
5
|
+
runner = ARGV[0]
|
6
|
+
arguments = ARGV[1]
|
7
|
+
|
8
|
+
MAP = {
|
9
|
+
'rspec' => Knapsack::Runners::RSpecRunner,
|
10
|
+
'cucumber' => Knapsack::Runners::CucumberRunner,
|
11
|
+
'minitest' => Knapsack::Runners::MinitestRunner,
|
12
|
+
}
|
13
|
+
|
14
|
+
runner_class = MAP[runner]
|
15
|
+
|
16
|
+
if runner_class
|
17
|
+
runner_class.run(arguments)
|
18
|
+
else
|
19
|
+
raise 'Undefined runner. Please provide runner name and optional arguments, for instance: knapsack rspec "--color --profile"'
|
20
|
+
end
|
data/lib/knapsack.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'singleton'
|
2
|
+
require 'rake/testtask'
|
2
3
|
require_relative 'knapsack/version'
|
3
4
|
require_relative 'knapsack/config/env'
|
4
5
|
require_relative 'knapsack/config/tracker'
|
@@ -16,6 +17,9 @@ require_relative 'knapsack/adapters/base_adapter'
|
|
16
17
|
require_relative 'knapsack/adapters/rspec_adapter'
|
17
18
|
require_relative 'knapsack/adapters/cucumber_adapter'
|
18
19
|
require_relative 'knapsack/adapters/minitest_adapter'
|
20
|
+
require_relative 'knapsack/runners/rspec_runner'
|
21
|
+
require_relative 'knapsack/runners/cucumber_runner'
|
22
|
+
require_relative 'knapsack/runners/minitest_runner'
|
19
23
|
|
20
24
|
module Knapsack
|
21
25
|
class << self
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Knapsack
|
2
|
+
module Runners
|
3
|
+
class CucumberRunner
|
4
|
+
def self.run(args)
|
5
|
+
allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::CucumberAdapter).allocator
|
6
|
+
|
7
|
+
puts
|
8
|
+
puts 'Report features:'
|
9
|
+
puts allocator.report_node_tests
|
10
|
+
puts
|
11
|
+
puts 'Leftover features:'
|
12
|
+
puts allocator.leftover_node_tests
|
13
|
+
puts
|
14
|
+
|
15
|
+
cmd = %Q[bundle exec cucumber #{args} -- #{allocator.stringify_node_tests}]
|
16
|
+
|
17
|
+
system(cmd)
|
18
|
+
exit($?.exitstatus)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Knapsack
|
2
|
+
module Runners
|
3
|
+
class MinitestRunner
|
4
|
+
def self.run(args)
|
5
|
+
allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::MinitestAdapter).allocator
|
6
|
+
|
7
|
+
puts
|
8
|
+
puts 'Report tests:'
|
9
|
+
puts allocator.report_node_tests
|
10
|
+
puts
|
11
|
+
puts 'Leftover tests:'
|
12
|
+
puts allocator.leftover_node_tests
|
13
|
+
puts
|
14
|
+
|
15
|
+
task_name = 'knapsack:minitest_run'
|
16
|
+
|
17
|
+
if Rake::Task.task_defined?(task_name)
|
18
|
+
Rake::Task[task_name].clear
|
19
|
+
end
|
20
|
+
|
21
|
+
Rake::TestTask.new(task_name) do |t|
|
22
|
+
t.libs << allocator.test_dir
|
23
|
+
t.test_files = allocator.node_tests
|
24
|
+
t.options = args
|
25
|
+
end
|
26
|
+
|
27
|
+
Rake::Task[task_name].invoke
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Knapsack
|
2
|
+
module Runners
|
3
|
+
class RSpecRunner
|
4
|
+
def self.run(args)
|
5
|
+
allocator = Knapsack::AllocatorBuilder.new(Knapsack::Adapters::RspecAdapter).allocator
|
6
|
+
|
7
|
+
puts
|
8
|
+
puts 'Report specs:'
|
9
|
+
puts allocator.report_node_tests
|
10
|
+
puts
|
11
|
+
puts 'Leftover specs:'
|
12
|
+
puts allocator.leftover_node_tests
|
13
|
+
puts
|
14
|
+
|
15
|
+
cmd = %Q[bundle exec rspec #{args} --default-path #{allocator.test_dir} -- #{allocator.stringify_node_tests}]
|
16
|
+
|
17
|
+
system(cmd)
|
18
|
+
exit($?.exitstatus)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/knapsack/version.rb
CHANGED
@@ -2,19 +2,6 @@ require 'knapsack'
|
|
2
2
|
|
3
3
|
namespace :knapsack do
|
4
4
|
task :cucumber, [:cucumber_args] do |_, args|
|
5
|
-
|
6
|
-
|
7
|
-
puts
|
8
|
-
puts 'Report features:'
|
9
|
-
puts allocator.report_node_tests
|
10
|
-
puts
|
11
|
-
puts 'Leftover features:'
|
12
|
-
puts allocator.leftover_node_tests
|
13
|
-
puts
|
14
|
-
|
15
|
-
cmd = %Q[bundle exec cucumber #{args[:cucumber_args]} -- #{allocator.stringify_node_tests}]
|
16
|
-
|
17
|
-
system(cmd)
|
18
|
-
exit($?.exitstatus)
|
5
|
+
Knapsack::Runners::CucumberRunner.run(args[:cucumber_args])
|
19
6
|
end
|
20
7
|
end
|
@@ -1,26 +1,7 @@
|
|
1
1
|
require 'knapsack'
|
2
|
-
require 'rake/testtask'
|
3
2
|
|
4
3
|
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
4
|
task :minitest, [:minitest_args] do |_, args|
|
11
|
-
|
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)
|
5
|
+
Knapsack::Runners::MinitestRunner.run(args[:minitest_args])
|
25
6
|
end
|
26
7
|
end
|
@@ -2,19 +2,6 @@ require 'knapsack'
|
|
2
2
|
|
3
3
|
namespace :knapsack do
|
4
4
|
task :rspec, [:rspec_args] do |_, args|
|
5
|
-
|
6
|
-
|
7
|
-
puts
|
8
|
-
puts 'Report specs:'
|
9
|
-
puts allocator.report_node_tests
|
10
|
-
puts
|
11
|
-
puts 'Leftover specs:'
|
12
|
-
puts allocator.leftover_node_tests
|
13
|
-
puts
|
14
|
-
|
15
|
-
cmd = %Q[bundle exec rspec #{args[:rspec_args]} --default-path #{allocator.test_dir} -- #{allocator.stringify_node_tests}]
|
16
|
-
|
17
|
-
system(cmd)
|
18
|
-
exit($?.exitstatus)
|
5
|
+
Knapsack::Runners::RSpecRunner.run(args[:rspec_args])
|
19
6
|
end
|
20
7
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knapsack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.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-07-
|
11
|
+
date: 2015-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -134,6 +134,7 @@ description: Parallel tests across CI server nodes based on each test file's tim
|
|
134
134
|
email:
|
135
135
|
- arturtrzop@gmail.com
|
136
136
|
executables:
|
137
|
+
- knapsack
|
137
138
|
- print_header.sh
|
138
139
|
extensions: []
|
139
140
|
extra_rdoc_files: []
|
@@ -146,6 +147,7 @@ files:
|
|
146
147
|
- LICENSE.txt
|
147
148
|
- README.md
|
148
149
|
- Rakefile
|
150
|
+
- bin/knapsack
|
149
151
|
- bin/print_header.sh
|
150
152
|
- docs/images/logos/knapsack-@2.png
|
151
153
|
- docs/images/logos/knapsack-big.png
|
@@ -173,6 +175,9 @@ files:
|
|
173
175
|
- lib/knapsack/logger.rb
|
174
176
|
- lib/knapsack/presenter.rb
|
175
177
|
- lib/knapsack/report.rb
|
178
|
+
- lib/knapsack/runners/cucumber_runner.rb
|
179
|
+
- lib/knapsack/runners/minitest_runner.rb
|
180
|
+
- lib/knapsack/runners/rspec_runner.rb
|
176
181
|
- lib/knapsack/task_loader.rb
|
177
182
|
- lib/knapsack/tracker.rb
|
178
183
|
- lib/knapsack/version.rb
|