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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10070953715c5261bb867ecdf933aa49b42af205
4
- data.tar.gz: 3d9e890055181b70a78004571b6cdc126c191da2
3
+ metadata.gz: 4dd54024c966f2cff5fab7934d6aa1c255297cdc
4
+ data.tar.gz: f797b4b30cea8498d98c0dc89af3a41426979e62
5
5
  SHA512:
6
- metadata.gz: 8e865b93bf1bd4d1f6274c2529b38be0977b771d1b401926beb531434087888bb73d7b208937dd0479f3aa96e728bc1aa7bb1261af733de4adf9d09614d80f4f
7
- data.tar.gz: 27c05e76d5c9108313e19083f3fdcc6f851717b0847ec1e95664c0f450a7ea9b1dde382b13f99f0bdb382b43e7776bb9b44d01249cf5e75d1d063b86796fcfd5
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
@@ -2,6 +2,14 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 1.3.0
6
+
7
+ * Add knapsack binary
8
+
9
+ https://github.com/ArturT/knapsack/pull/21
10
+
11
+ https://github.com/ArturT/knapsack/compare/v1.2.1...v1.3.0
12
+
5
13
  ### 1.2.1
6
14
 
7
15
  * Add support for Turnip features
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 rspec](#passing-arguments-to-rspec)
51
- - [Passing arguments to cucumber](#passing-arguments-to-cucumber)
52
- - [Passing arguments to minitest](#passing-arguments-to-minitest)
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 rspec
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
- ### Passing arguments to cucumber
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
- ### Passing arguments to minitest
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
@@ -1,3 +1,3 @@
1
1
  module Knapsack
2
- VERSION = '1.2.1'
2
+ VERSION = '1.3.0'
3
3
  end
@@ -2,19 +2,6 @@ require 'knapsack'
2
2
 
3
3
  namespace :knapsack do
4
4
  task :cucumber, [:cucumber_args] do |_, 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[: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
- 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)
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
- 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[: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.2.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-02 00:00:00.000000000 Z
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