knapsack 1.2.1 → 1.3.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 +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
|