knapsack_pro 0.7.2 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2613a884f776c2208358e8118f866e2c05e979ce
4
- data.tar.gz: d34a6924e6f52598b2a6dd19d6573a479f0c68aa
3
+ metadata.gz: 4e7ac5f587d9dee9b22c6116419c96a243828b98
4
+ data.tar.gz: 16e1ccbecb5e73b84b1bb111defcc9190cff3143
5
5
  SHA512:
6
- metadata.gz: 3f7e78a1356322c7a083134bc8b2b8e52e3f0f0177375c59c9a0010fb32a64cf1afce7566fbabf500429d8b69e93c12796438a711afe2d9c1f230f98a9348262
7
- data.tar.gz: 90093af068fe34b8a808e7474365617e5f793387732e83e12282b9df08fba57ce8261745c703f39752f69bb0397ee7cf84f158596b10e90c2adacf7192c67cd6
6
+ metadata.gz: 2ab59ea41723296d57208c2f4cc32da736590805743c2fda37bde18deef583321d0d54c82b277b64f6504693b792084749097bcff206fc136f5bb61ea3ee484f
7
+ data.tar.gz: 122664dc5334650f701fd06aeb11142873addb6e3f962278d382d926267a4eefcb774ff3b16dda1f0ed322c86ff792d8f0903d28b199860b7ed598db121ad837
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 0.8.0
6
+
7
+ * Add Spinach support
8
+
9
+ https://github.com/KnapsackPro/knapsack_pro-ruby/pull/11
10
+
11
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v0.7.2...v0.8.0
12
+
5
13
  ### 0.7.2
6
14
 
7
15
  * Preserve cucumber latest error message with exit code to fix problem with false positive cucumber failed tests
data/README.md CHANGED
@@ -12,6 +12,7 @@ The knapsack_pro gem supports:
12
12
  * [RSpec](http://rspec.info)
13
13
  * [Cucumber](https://cucumber.io)
14
14
  * [Minitest](http://docs.seattlerb.org/minitest/)
15
+ * [Spinach](https://github.com/codegram/spinach)
15
16
  * [Turnip](https://github.com/jnicklas/turnip)
16
17
 
17
18
  __Would you like to try knapsack_pro gem?__ You can [get API token here](http://knapsackpro.com).
@@ -51,6 +52,7 @@ For instance when you will run tests with rake knapsack_pro:rspec then:
51
52
  - [Step for RSpec](#step-for-rspec)
52
53
  - [Step for Cucumber](#step-for-cucumber)
53
54
  - [Step for Minitest](#step-for-minitest)
55
+ - [Step for Spinach](#step-for-spinach)
54
56
  - [Custom configuration](#custom-configuration)
55
57
  - [Setup your CI server (How to set up 2 of 3)](#setup-your-ci-server-how-to-set-up-2-of-3)
56
58
  - [Set API key token](#set-api-key-token)
@@ -65,6 +67,7 @@ For instance when you will run tests with rake knapsack_pro:rspec then:
65
67
  - [Passing arguments to rspec](#passing-arguments-to-rspec)
66
68
  - [Passing arguments to cucumber](#passing-arguments-to-cucumber)
67
69
  - [Passing arguments to minitest](#passing-arguments-to-minitest)
70
+ - [Passing arguments to spinach](#passing-arguments-to-spinach)
68
71
  - [Knapsack Pro binary](#knapsack-pro-binary)
69
72
  - [Supported CI providers](#supported-ci-providers)
70
73
  - [Info for CircleCI users](#info-for-circleci-users)
@@ -160,9 +163,21 @@ knapsack_pro_adapter = KnapsackPro::Adapters::MinitestAdapter.bind
160
163
  knapsack_pro_adapter.set_test_helper_path(__FILE__)
161
164
  ```
162
165
 
166
+ #### Step for Spinach
167
+
168
+ Create file `features/support/knapsack_pro.rb` and add there:
169
+
170
+ ```ruby
171
+ require 'knapsack_pro'
172
+
173
+ # CUSTOM_CONFIG_GOES_HERE
174
+
175
+ KnapsackPro::Adapters::CucumberAdapter.bind
176
+ ```
177
+
163
178
  #### Custom configuration
164
179
 
165
- You can change default Knapsack Pro configuration for RSpec, Cucumber or Minitest tests. Here are examples what you can do. Put below configuration instead of `CUSTOM_CONFIG_GOES_HERE`.
180
+ You can change default Knapsack Pro configuration for RSpec, Cucumber, Minitest or Spinach tests. Here are examples what you can do. Put below configuration instead of `CUSTOM_CONFIG_GOES_HERE`.
166
181
 
167
182
  ```ruby
168
183
  # you can use your own logger
@@ -180,6 +195,7 @@ Set one or a few tokens depend on how many test suites you run on CI server.
180
195
  * `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` - as value set token for rspec test suite. Token can be generated when you sign in to [knapsackpro.com](http://www.knapsackpro.com).
181
196
  * `KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER` - token for cucumber test suite.
182
197
  * `KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST` - token for minitest test suite.
198
+ * `KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH` - token for minitest test suite.
183
199
 
184
200
  __Tip:__ In case you have for instance multiple rspec test suites then prepend each of knapsack_pro command which executes tests with `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` variable.
185
201
 
@@ -196,6 +212,9 @@ On your CI server run this command for the first CI node. Update `KNAPSACK_PRO_C
196
212
  # Step for Minitest
197
213
  $ KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 bundle exec rake knapsack_pro:minitest
198
214
 
215
+ # Step for Spinach
216
+ $ KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 bundle exec rake knapsack_pro:spinach
217
+
199
218
  You can add `KNAPSACK_PRO_TEST_FILE_PATTERN` if your tests are not in default directory. For instance:
200
219
 
201
220
  # Step for RSpec
@@ -207,6 +226,9 @@ You can add `KNAPSACK_PRO_TEST_FILE_PATTERN` if your tests are not in default di
207
226
  # Step for Minitest
208
227
  $ KNAPSACK_PRO_TEST_FILE_PATTERN="directory_with_tests/**{,/*/**}/*_test.rb" KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 bundle exec rake knapsack_pro:minitest
209
228
 
229
+ # Step for Spinach
230
+ $ KNAPSACK_PRO_TEST_FILE_PATTERN="directory_with_features/**{,/*/**}/*.feature" KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 bundle exec rake knapsack_pro:spinach
231
+
210
232
  __Tip:__ If you use one of supported CI providers then instead of above steps you should [take a look on this](#supported-ci-providers).
211
233
 
212
234
  __Tip 2:__ If you use one of unsupported CI providers ([here is list of supported CI providers](#supported-ci-providers)) then you should [set KNAPSACK_PRO_REPOSITORY_ADAPTER=git](#when-you-set-global-variable-knapsack_pro_repository_adaptergit-required-when-ci-provider-is-not-supported).
@@ -274,6 +296,12 @@ For instance to run verbose tests:
274
296
 
275
297
  $ bundle exec rake "knapsack_pro:minitest[--verbose]"
276
298
 
299
+ #### Passing arguments to spinach
300
+
301
+ Add arguments to knapsack_pro spinach task like this:
302
+
303
+ $ bundle exec rake "knapsack_pro:spinach[--arg_name value]"
304
+
277
305
  ### Knapsack Pro binary
278
306
 
279
307
  You can install knapsack_pro globally and use binary. For instance:
@@ -281,6 +309,7 @@ You can install knapsack_pro globally and use binary. For instance:
281
309
  $ knapsack_pro rspec "--tag custom_tag_name --profile"
282
310
  $ knapsack_pro cucumber "--name feature"
283
311
  $ knapsack_pro minitest "--verbose --pride"
312
+ $ knapsack_pro spinach "--arg_name value"
284
313
 
285
314
  This is optional way of using knapsack_pro when you don't want to add it to `Gemfile`.
286
315
 
@@ -299,6 +328,7 @@ machine:
299
328
  # KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: rspec-token
300
329
  # KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER: cucumber-token
301
330
  # KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST: minitest-token
331
+ # KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH: spinach-token
302
332
  test:
303
333
  override:
304
334
  # Step for RSpec
@@ -312,6 +342,10 @@ test:
312
342
  # Step for Minitest
313
343
  - bundle exec rake knapsack_pro:minitest:
314
344
  parallel: true # Caution: there are 8 spaces indentation!
345
+
346
+ # Step for Spinach
347
+ - bundle exec rake knapsack_pro:spinach:
348
+ parallel: true # Caution: there are 8 spaces indentation!
315
349
  ```
316
350
 
317
351
  Please remember to add additional containers for your project in CircleCI settings.
@@ -331,12 +365,16 @@ script:
331
365
  # Step for Minitest
332
366
  - "bundle exec rake knapsack_pro:minitest"
333
367
 
368
+ # Step for Spinach
369
+ - "bundle exec rake knapsack_pro:spinach"
370
+
334
371
  env:
335
372
  global:
336
373
  # tokens should be set in travis settings in web interface to avoid expose tokens in build logs
337
374
  - KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=rspec-token
338
375
  - KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER=cucumber-token
339
376
  - KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST=minitest-token
377
+ - KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH=spinach-token
340
378
 
341
379
  - KNAPSACK_PRO_CI_NODE_TOTAL=2
342
380
  matrix:
@@ -346,8 +384,8 @@ env:
346
384
 
347
385
  Such configuration will generate matrix with 2 following ENV rows:
348
386
 
349
- KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=rspec-token KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER=cucumber-token KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST=minitest-token
350
- KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=1 KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=rspec-token KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER=cucumber-token KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST=minitest-token
387
+ KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=0 KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=rspec-token KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER=cucumber-token KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST=minitest-token KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH=spinach-token
388
+ KNAPSACK_PRO_CI_NODE_TOTAL=2 KNAPSACK_PRO_CI_NODE_INDEX=1 KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=rspec-token KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER=cucumber-token KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST=minitest-token KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH=spinach-token
351
389
 
352
390
  More info about global and matrix ENV configuration in [travis docs](http://docs.travis-ci.com/user/build-configuration/#Environment-variables).
353
391
 
@@ -362,6 +400,8 @@ Knapsack Pro supports semaphoreapp ENVs `SEMAPHORE_THREAD_COUNT` and `SEMAPHORE_
362
400
  bundle exec rake knapsack_pro:cucumber
363
401
  ## Step for Minitest
364
402
  bundle exec rake knapsack_pro:minitest
403
+ ## Step for Spinach
404
+ bundle exec rake knapsack_pro:spinach
365
405
 
366
406
  # Thread 2
367
407
  ## Step for RSpec
@@ -370,6 +410,8 @@ Knapsack Pro supports semaphoreapp ENVs `SEMAPHORE_THREAD_COUNT` and `SEMAPHORE_
370
410
  bundle exec rake knapsack_pro:cucumber
371
411
  ## Step for Minitest
372
412
  bundle exec rake knapsack_pro:minitest
413
+ ## Step for Spinach
414
+ bundle exec rake knapsack_pro:spinach
373
415
 
374
416
  Tests will be split across threads.
375
417
 
@@ -388,6 +430,9 @@ Knapsack Pro supports buildkite ENVs `BUILDKITE_PARALLEL_JOB_COUNT` and `BUILDKI
388
430
  # Step for Minitest
389
431
  bundle exec rake knapsack_pro:minitest
390
432
 
433
+ # Step for Spinach
434
+ bundle exec rake knapsack_pro:spinach
435
+
391
436
  Please remember to set up token like `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` as global environment.
392
437
 
393
438
  #### Info for snap-ci.com users
@@ -403,6 +448,9 @@ Knapsack Pro supports snap-ci.com ENVs `SNAP_WORKER_TOTAL` and `SNAP_WORKER_INDE
403
448
  # Step for Minitest
404
449
  bundle exec rake knapsack_pro:minitest
405
450
 
451
+ # Step for Spinach
452
+ bundle exec rake knapsack_pro:spinach
453
+
406
454
  Please remember to set up token like `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` as global environment.
407
455
 
408
456
  ## Gem tests
@@ -419,4 +467,5 @@ To run specs for Knapsack Pro gem type:
419
467
  2. Create your feature branch (`git checkout -b my-new-feature`)
420
468
  3. Commit your changes (`git commit -am 'Add some feature'`)
421
469
  4. Push to the branch (`git push origin my-new-feature`)
422
- 5. Create a new Pull Request
470
+ 5. You can create example tests in related repository with example of [rails application and knapsack_pro gem usage](https://github.com/KnapsackPro/rails-app-with-knapsack_pro).
471
+ 6. Create a new Pull Request
data/bin/knapsack_pro CHANGED
@@ -9,6 +9,7 @@ MAP = {
9
9
  'rspec' => KnapsackPro::Runners::RSpecRunner,
10
10
  'cucumber' => KnapsackPro::Runners::CucumberRunner,
11
11
  'minitest' => KnapsackPro::Runners::MinitestRunner,
12
+ 'spinach' => KnapsackPro::Runners::SpinachRunner,
12
13
  }
13
14
 
14
15
  runner_class = MAP[runner]
data/knapsack_pro.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'rspec', '~> 3.0', '>= 2.0.0'
26
26
  spec.add_development_dependency 'rspec-its', '~> 1.2'
27
27
  spec.add_development_dependency 'cucumber', '>= 0'
28
+ spec.add_development_dependency 'spinach', '>= 0.8'
28
29
  spec.add_development_dependency 'minitest', '>= 5.0.0'
29
30
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 0'
30
31
  spec.add_development_dependency 'pry', '~> 0'
data/lib/knapsack_pro.rb CHANGED
@@ -38,10 +38,12 @@ require_relative 'knapsack_pro/adapters/base_adapter'
38
38
  require_relative 'knapsack_pro/adapters/rspec_adapter'
39
39
  require_relative 'knapsack_pro/adapters/cucumber_adapter'
40
40
  require_relative 'knapsack_pro/adapters/minitest_adapter'
41
+ require_relative 'knapsack_pro/adapters/spinach_adapter'
41
42
  require_relative 'knapsack_pro/runners/base_runner'
42
43
  require_relative 'knapsack_pro/runners/rspec_runner'
43
44
  require_relative 'knapsack_pro/runners/cucumber_runner'
44
45
  require_relative 'knapsack_pro/runners/minitest_runner'
46
+ require_relative 'knapsack_pro/runners/spinach_runner'
45
47
 
46
48
  module KnapsackPro
47
49
  class << self
@@ -46,7 +46,6 @@ module KnapsackPro
46
46
  # $! is latest error message
47
47
  latest_error = (latest_error || $!)
48
48
  exit_status = latest_error.status if latest_error.is_a?(SystemExit)
49
- #require 'pry'; binding.pry
50
49
  # saving report makes API call which changes exit status
51
50
  # from cucumber so we need to preserve cucumber exit status
52
51
  KnapsackPro::Report.save
@@ -0,0 +1,32 @@
1
+ module KnapsackPro
2
+ module Adapters
3
+ class SpinachAdapter < BaseAdapter
4
+ TEST_DIR_PATTERN = 'features/**{,/*/**}/*.feature'
5
+
6
+ def self.test_path(scenario)
7
+ scenario.feature.filename
8
+ end
9
+
10
+ def bind_time_tracker
11
+ ::Spinach.hooks.before_scenario do |scenario_data, step_definitions|
12
+ KnapsackPro.tracker.current_test_path = KnapsackPro::Adapters::SpinachAdapter.test_path(scenario_data)
13
+ KnapsackPro.tracker.start_timer
14
+ end
15
+
16
+ ::Spinach.hooks.after_scenario do
17
+ KnapsackPro.tracker.stop_timer
18
+ end
19
+
20
+ ::Spinach.hooks.after_run do
21
+ KnapsackPro.logger.info(KnapsackPro::Presenter.global_time)
22
+ end
23
+ end
24
+
25
+ def bind_save_report(latest_error = nil)
26
+ ::Spinach.hooks.after_run do
27
+ KnapsackPro::Report.save
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -77,6 +77,10 @@ module KnapsackPro
77
77
  ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_CUCUMBER']
78
78
  end
79
79
 
80
+ def test_suite_token_spinach
81
+ ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH']
82
+ end
83
+
80
84
  def mode
81
85
  mode = ENV['KNAPSACK_PRO_MODE']
82
86
  return :production if mode.nil?
@@ -0,0 +1,16 @@
1
+ module KnapsackPro
2
+ module Runners
3
+ class SpinachRunner < BaseRunner
4
+ def self.run(args)
5
+ ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN'] = KnapsackPro::Config::Env.test_suite_token_spinach
6
+
7
+ runner = new(KnapsackPro::Adapters::SpinachAdapter)
8
+
9
+ cmd = %Q[KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=#{ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN']} bundle exec spinach #{args} -- #{runner.stringify_test_file_paths}]
10
+
11
+ Kernel.system(cmd)
12
+ Kernel.exit($?.exitstatus) unless $?.exitstatus.zero?
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '0.7.2'
2
+ VERSION = '0.8.0'
3
3
  end
@@ -0,0 +1,7 @@
1
+ require 'knapsack_pro'
2
+
3
+ namespace :knapsack_pro do
4
+ task :spinach, [:spinach_args] do |_, args|
5
+ KnapsackPro::Runners::SpinachRunner.run(args[:spinach_args])
6
+ end
7
+ end
@@ -0,0 +1,61 @@
1
+ describe KnapsackPro::Adapters::SpinachAdapter do
2
+ it do
3
+ expect(described_class::TEST_DIR_PATTERN).to eq 'features/**{,/*/**}/*.feature'
4
+ end
5
+
6
+ context do
7
+ it_behaves_like 'adapter'
8
+ end
9
+
10
+ describe '.test_path' do
11
+ let(:scenario_data) do
12
+ double(feature: double(filename: 'a.feature'))
13
+ end
14
+
15
+ subject { described_class.test_path(scenario_data) }
16
+
17
+ it { should eql 'a.feature' }
18
+ end
19
+
20
+ describe 'bind methods' do
21
+ describe '#bind_time_tracker' do
22
+ let(:block) { double }
23
+ let(:tracker) { instance_double(KnapsackPro::Tracker) }
24
+ let(:logger) { instance_double(Logger) }
25
+ let(:global_time) { 'Global time: 01m 05s' }
26
+ let(:test_path) { 'features/a.feature' }
27
+ let(:scenario_data) do
28
+ double(feature: double(filename: test_path))
29
+ end
30
+
31
+ it do
32
+ expect(Spinach.hooks).to receive(:before_scenario).and_yield(scenario_data, nil)
33
+
34
+ allow(KnapsackPro).to receive(:tracker).and_return(tracker)
35
+ expect(described_class).to receive(:test_path).with(scenario_data).and_return(test_path)
36
+ expect(tracker).to receive(:current_test_path=).with(test_path)
37
+ expect(tracker).to receive(:start_timer)
38
+
39
+ expect(Spinach.hooks).to receive(:after_scenario).and_yield
40
+ expect(tracker).to receive(:stop_timer)
41
+
42
+ expect(Spinach.hooks).to receive(:after_run).and_yield
43
+ expect(KnapsackPro::Presenter).to receive(:global_time).and_return(global_time)
44
+ expect(KnapsackPro).to receive(:logger).and_return(logger)
45
+ expect(logger).to receive(:info).with(global_time)
46
+
47
+ subject.bind_time_tracker
48
+ end
49
+ end
50
+
51
+ describe '#bind_save_report' do
52
+ it do
53
+ expect(Spinach.hooks).to receive(:after_run).and_yield
54
+
55
+ expect(KnapsackPro::Report).to receive(:save)
56
+
57
+ subject.bind_save_report
58
+ end
59
+ end
60
+ end
61
+ end
@@ -277,6 +277,20 @@ describe KnapsackPro::Config::Env do
277
277
  end
278
278
  end
279
279
 
280
+ describe '.test_suite_token_spinach' do
281
+ subject { described_class.test_suite_token_spinach }
282
+
283
+ context 'when ENV exists' do
284
+ let(:test_suite_token_spinach) { 'spinach-token' }
285
+ before { stub_const("ENV", { 'KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH' => test_suite_token_spinach }) }
286
+ it { should eq test_suite_token_spinach }
287
+ end
288
+
289
+ context "when ENV doesn't exist" do
290
+ it { should be_nil }
291
+ end
292
+ end
293
+
280
294
  describe '.mode' do
281
295
  subject { described_class.mode }
282
296
 
@@ -0,0 +1,47 @@
1
+ describe KnapsackPro::Runners::SpinachRunner do
2
+ subject { described_class.new(KnapsackPro::Adapters::SpinachAdapter) }
3
+
4
+ it { should be_kind_of KnapsackPro::Runners::BaseRunner }
5
+
6
+ describe '.run' do
7
+ let(:args) { '--custom-arg' }
8
+
9
+ after { described_class.run(args) }
10
+
11
+ before do
12
+ stub_const("ENV", { 'KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH' => 'spinach-token' })
13
+
14
+ stringify_test_file_paths = 'features/a.feature features/b.feature'
15
+ runner = instance_double(described_class,
16
+ stringify_test_file_paths: stringify_test_file_paths)
17
+ expect(described_class).to receive(:new)
18
+ .with(KnapsackPro::Adapters::SpinachAdapter).and_return(runner)
19
+
20
+ expect(Kernel).to receive(:system).with('KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=spinach-token bundle exec spinach --custom-arg -- features/a.feature features/b.feature')
21
+ end
22
+
23
+ context 'when command exit with success code' do
24
+ let(:exitstatus) { 0 }
25
+
26
+ before do
27
+ expect($?).to receive(:exitstatus).and_return(exitstatus)
28
+ end
29
+
30
+ it do
31
+ expect(Kernel).not_to receive(:exit)
32
+ end
33
+ end
34
+
35
+ context 'when command exit without success code' do
36
+ let(:exitstatus) { 1 }
37
+
38
+ before do
39
+ expect($?).to receive(:exitstatus).twice.and_return(exitstatus)
40
+ end
41
+
42
+ it do
43
+ expect(Kernel).to receive(:exit).with(exitstatus)
44
+ end
45
+ end
46
+ end
47
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rspec/its'
2
+ require 'spinach'
2
3
 
3
4
  require 'timecop'
4
5
  Timecop.safe_mode = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knapsack_pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-20 00:00:00.000000000 Z
11
+ date: 2016-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -100,6 +100,20 @@ dependencies:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: spinach
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0.8'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0.8'
103
117
  - !ruby/object:Gem::Dependency
104
118
  name: minitest
105
119
  requirement: !ruby/object:Gem::Requirement
@@ -194,6 +208,7 @@ files:
194
208
  - lib/knapsack_pro/adapters/cucumber_adapter.rb
195
209
  - lib/knapsack_pro/adapters/minitest_adapter.rb
196
210
  - lib/knapsack_pro/adapters/rspec_adapter.rb
211
+ - lib/knapsack_pro/adapters/spinach_adapter.rb
197
212
  - lib/knapsack_pro/allocator.rb
198
213
  - lib/knapsack_pro/allocator_builder.rb
199
214
  - lib/knapsack_pro/client/api/action.rb
@@ -219,6 +234,7 @@ files:
219
234
  - lib/knapsack_pro/runners/cucumber_runner.rb
220
235
  - lib/knapsack_pro/runners/minitest_runner.rb
221
236
  - lib/knapsack_pro/runners/rspec_runner.rb
237
+ - lib/knapsack_pro/runners/spinach_runner.rb
222
238
  - lib/knapsack_pro/task_loader.rb
223
239
  - lib/knapsack_pro/test_file_cleaner.rb
224
240
  - lib/knapsack_pro/test_file_finder.rb
@@ -230,6 +246,7 @@ files:
230
246
  - lib/tasks/cucumber.rake
231
247
  - lib/tasks/minitest.rake
232
248
  - lib/tasks/rspec.rake
249
+ - lib/tasks/spinach.rake
233
250
  - spec/fixtures/vcr_cassettes/api/v1/build_distributions/subset/invalid_test_suite_token.yml
234
251
  - spec/fixtures/vcr_cassettes/api/v1/build_distributions/subset/success.yml
235
252
  - spec/fixtures/vcr_cassettes/api/v1/build_subsets/create/invalid_test_suite_token.yml
@@ -240,6 +257,7 @@ files:
240
257
  - spec/knapsack_pro/adapters/cucumber_adapter_spec.rb
241
258
  - spec/knapsack_pro/adapters/minitest_adapter_spec.rb
242
259
  - spec/knapsack_pro/adapters/rspec_adapter_spec.rb
260
+ - spec/knapsack_pro/adapters/spinach_adapter_spec.rb
243
261
  - spec/knapsack_pro/allocator_builder_spec.rb
244
262
  - spec/knapsack_pro/allocator_spec.rb
245
263
  - spec/knapsack_pro/client/api/action_spec.rb
@@ -265,6 +283,7 @@ files:
265
283
  - spec/knapsack_pro/runners/cucumber_runner_spec.rb
266
284
  - spec/knapsack_pro/runners/minitest_runner_spec.rb
267
285
  - spec/knapsack_pro/runners/rspec_runner_spec.rb
286
+ - spec/knapsack_pro/runners/spinach_runner_spec.rb
268
287
  - spec/knapsack_pro/task_loader_spec.rb
269
288
  - spec/knapsack_pro/test_file_cleaner_spec.rb
270
289
  - spec/knapsack_pro/test_file_finder_spec.rb
@@ -320,6 +339,7 @@ test_files:
320
339
  - spec/knapsack_pro/adapters/cucumber_adapter_spec.rb
321
340
  - spec/knapsack_pro/adapters/minitest_adapter_spec.rb
322
341
  - spec/knapsack_pro/adapters/rspec_adapter_spec.rb
342
+ - spec/knapsack_pro/adapters/spinach_adapter_spec.rb
323
343
  - spec/knapsack_pro/allocator_builder_spec.rb
324
344
  - spec/knapsack_pro/allocator_spec.rb
325
345
  - spec/knapsack_pro/client/api/action_spec.rb
@@ -345,6 +365,7 @@ test_files:
345
365
  - spec/knapsack_pro/runners/cucumber_runner_spec.rb
346
366
  - spec/knapsack_pro/runners/minitest_runner_spec.rb
347
367
  - spec/knapsack_pro/runners/rspec_runner_spec.rb
368
+ - spec/knapsack_pro/runners/spinach_runner_spec.rb
348
369
  - spec/knapsack_pro/task_loader_spec.rb
349
370
  - spec/knapsack_pro/test_file_cleaner_spec.rb
350
371
  - spec/knapsack_pro/test_file_finder_spec.rb