knapsack_pro 0.14.0 → 0.15.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/CHANGELOG.md +8 -0
- data/lib/knapsack_pro/runners/base_runner.rb +9 -0
- data/lib/knapsack_pro/runners/cucumber_runner.rb +10 -8
- data/lib/knapsack_pro/runners/minitest_runner.rb +13 -11
- data/lib/knapsack_pro/runners/rspec_runner.rb +11 -9
- data/lib/knapsack_pro/runners/spinach_runner.rb +5 -3
- data/lib/knapsack_pro/version.rb +1 -1
- data/spec/knapsack_pro/runners/base_runner_spec.rb +26 -0
- data/spec/knapsack_pro/runners/cucumber_runner_spec.rb +54 -19
- data/spec/knapsack_pro/runners/minitest_runner_spec.rb +26 -12
- data/spec/knapsack_pro/runners/rspec_runner_spec.rb +55 -21
- data/spec/knapsack_pro/runners/spinach_runner_spec.rb +41 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef44ff94f42a889b3f6cc1d896d484237b6a88f1
|
4
|
+
data.tar.gz: 5a5485e24f6ea5498382cc220578106f27760760
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59e8f09d9bd4c317ffc7edf9308aa13848cbe615bfab4b881ac1ddad32b83ab29d7df765c193fafc44c60fd892b64e7651feedd083f3cc22d8daac8591cc01f2
|
7
|
+
data.tar.gz: c3bac7fff236e23715bffa05468cfd5c85663953acce36ba23b189e4295ae32bd78c9759beb69ba2578d59a9092d42996712ab3bdea15dbb3f2192ecd7206c66
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
* TODO
|
4
4
|
|
5
|
+
### 0.15.0
|
6
|
+
|
7
|
+
* Handle case when API returns no test files to execute on the node.
|
8
|
+
|
9
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/pull/19
|
10
|
+
|
11
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v0.14.0...v0.15.0
|
12
|
+
|
5
13
|
### 0.14.0
|
6
14
|
|
7
15
|
* Use rake invoke for rspec and cucumber tasks.
|
@@ -22,6 +22,15 @@ module KnapsackPro
|
|
22
22
|
allocator_builder.test_dir
|
23
23
|
end
|
24
24
|
|
25
|
+
def test_files_to_execute_exist?
|
26
|
+
if test_file_paths.empty?
|
27
|
+
KnapsackPro.logger.info("Knapsack Pro API returned no test files to execute for the node this time. The reason might be that you changed recently a number of total nodes or you removed some test files. Please create a new commit to get a better test suite split next time.")
|
28
|
+
false
|
29
|
+
else
|
30
|
+
true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
25
34
|
private
|
26
35
|
|
27
36
|
attr_reader :allocator_builder,
|
@@ -7,17 +7,19 @@ module KnapsackPro
|
|
7
7
|
|
8
8
|
runner = new(KnapsackPro::Adapters::CucumberAdapter)
|
9
9
|
|
10
|
-
|
10
|
+
if runner.test_files_to_execute_exist?
|
11
|
+
require 'cucumber/rake/task'
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
task_name = 'knapsack_pro:cucumber_run'
|
14
|
+
if Rake::Task.task_defined?(task_name)
|
15
|
+
Rake::Task[task_name].clear
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
18
|
+
Cucumber::Rake::Task.new(task_name) do |t|
|
19
|
+
t.cucumber_opts = "#{args} --require #{runner.test_dir} -- #{runner.stringify_test_file_paths}"
|
20
|
+
end
|
21
|
+
Rake::Task[task_name].invoke
|
19
22
|
end
|
20
|
-
Rake::Task[task_name].invoke
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -7,20 +7,22 @@ module KnapsackPro
|
|
7
7
|
|
8
8
|
runner = new(KnapsackPro::Adapters::MinitestAdapter)
|
9
9
|
|
10
|
-
|
10
|
+
if runner.test_files_to_execute_exist?
|
11
|
+
task_name = 'knapsack_pro:minitest_run'
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
if Rake::Task.task_defined?(task_name)
|
14
|
+
Rake::Task[task_name].clear
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
Rake::TestTask.new(task_name) do |t|
|
18
|
+
t.warning = false
|
19
|
+
t.libs << runner.test_dir
|
20
|
+
t.test_files = runner.test_file_paths
|
21
|
+
t.options = args
|
22
|
+
end
|
22
23
|
|
23
|
-
|
24
|
+
Rake::Task[task_name].invoke
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -7,18 +7,20 @@ module KnapsackPro
|
|
7
7
|
|
8
8
|
runner = new(KnapsackPro::Adapters::RSpecAdapter)
|
9
9
|
|
10
|
-
|
10
|
+
if runner.test_files_to_execute_exist?
|
11
|
+
require 'rspec/core/rake_task'
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
task_name = 'knapsack_pro:rspec_run'
|
14
|
+
if Rake::Task.task_defined?(task_name)
|
15
|
+
Rake::Task[task_name].clear
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
RSpec::Core::RakeTask.new(task_name) do |t|
|
19
|
+
t.rspec_opts = "#{args} --default-path #{runner.test_dir}"
|
20
|
+
t.pattern = runner.test_file_paths
|
21
|
+
end
|
22
|
+
Rake::Task[task_name].invoke
|
20
23
|
end
|
21
|
-
Rake::Task[task_name].invoke
|
22
24
|
end
|
23
25
|
end
|
24
26
|
end
|
@@ -6,10 +6,12 @@ module KnapsackPro
|
|
6
6
|
|
7
7
|
runner = new(KnapsackPro::Adapters::SpinachAdapter)
|
8
8
|
|
9
|
-
|
9
|
+
if runner.test_files_to_execute_exist?
|
10
|
+
cmd = %Q[KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=#{ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN']} bundle exec spinach #{args} --features_path #{runner.test_dir} -- #{runner.stringify_test_file_paths}]
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
Kernel.system(cmd)
|
13
|
+
Kernel.exit($?.exitstatus) unless $?.exitstatus.zero?
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
data/lib/knapsack_pro/version.rb
CHANGED
@@ -57,5 +57,31 @@ describe KnapsackPro::Runners::BaseRunner do
|
|
57
57
|
|
58
58
|
it { should eq test_dir }
|
59
59
|
end
|
60
|
+
|
61
|
+
describe '#test_files_to_execute_exist?' do
|
62
|
+
subject { runner.test_files_to_execute_exist? }
|
63
|
+
|
64
|
+
before do
|
65
|
+
expect(runner).to receive(:test_file_paths).and_return(test_file_paths)
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when test files exists' do
|
69
|
+
let(:test_file_paths) { ['a_spec.rb'] }
|
70
|
+
|
71
|
+
it { should be true }
|
72
|
+
end
|
73
|
+
|
74
|
+
context "when test files doesn't exist" do
|
75
|
+
let(:test_file_paths) { [] }
|
76
|
+
|
77
|
+
before do
|
78
|
+
logger = instance_double(Logger)
|
79
|
+
expect(KnapsackPro).to receive(:logger).and_return(logger)
|
80
|
+
expect(logger).to receive(:info).with("Knapsack Pro API returned no test files to execute for the node this time. The reason might be that you changed recently a number of total nodes or you removed some test files. Please create a new commit to get a better test suite split next time.")
|
81
|
+
end
|
82
|
+
|
83
|
+
it { should be false }
|
84
|
+
end
|
85
|
+
end
|
60
86
|
end
|
61
87
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'cucumber/rake/task'
|
2
|
+
|
1
3
|
describe KnapsackPro::Runners::CucumberRunner do
|
2
4
|
subject { described_class.new(KnapsackPro::Adapters::CucumberAdapter) }
|
3
5
|
|
@@ -6,41 +8,74 @@ describe KnapsackPro::Runners::CucumberRunner do
|
|
6
8
|
describe '.run' do
|
7
9
|
let(:args) { '--custom-arg' }
|
8
10
|
|
9
|
-
|
11
|
+
let(:test_suite_token_cucumber) { 'fake-token' }
|
12
|
+
|
13
|
+
subject { described_class.run(args) }
|
10
14
|
|
11
15
|
before do
|
12
|
-
|
16
|
+
expect(KnapsackPro::Config::Env).to receive(:test_suite_token_cucumber).and_return(test_suite_token_cucumber)
|
17
|
+
|
18
|
+
expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_TEST_SUITE_TOKEN', test_suite_token_cucumber)
|
19
|
+
expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_RECORDING_ENABLED', 'true')
|
13
20
|
|
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
21
|
expect(described_class).to receive(:new)
|
18
22
|
.with(KnapsackPro::Adapters::CucumberAdapter).and_return(runner)
|
19
|
-
|
20
|
-
expect(Kernel).to receive(:system).with('KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=cucumber-token bundle exec cucumber --custom-arg -- features/a.feature features/b.feature')
|
21
23
|
end
|
22
24
|
|
23
|
-
context 'when
|
24
|
-
let(:
|
25
|
+
context 'when test files were returned by Knapsack Pro API' do
|
26
|
+
let(:test_dir) { 'fake-test-dir' }
|
27
|
+
let(:stringify_test_file_paths) { 'features/fake1.scenario features/fake2.scenario' }
|
28
|
+
let(:runner) do
|
29
|
+
instance_double(described_class,
|
30
|
+
test_dir: test_dir,
|
31
|
+
stringify_test_file_paths: stringify_test_file_paths,
|
32
|
+
test_files_to_execute_exist?: true)
|
33
|
+
end
|
34
|
+
let(:task) { double }
|
25
35
|
|
26
36
|
before do
|
27
|
-
expect(
|
37
|
+
expect(Rake::Task).to receive(:[]).with('knapsack_pro:cucumber_run').at_least(1).and_return(task)
|
38
|
+
|
39
|
+
t = double
|
40
|
+
expect(Cucumber::Rake::Task).to receive(:new).with('knapsack_pro:cucumber_run').and_yield(t)
|
41
|
+
expect(t).to receive(:cucumber_opts=).with('--custom-arg --require fake-test-dir -- features/fake1.scenario features/fake2.scenario')
|
28
42
|
end
|
29
43
|
|
30
|
-
|
31
|
-
|
44
|
+
context 'when task already exists' do
|
45
|
+
before do
|
46
|
+
expect(Rake::Task).to receive(:task_defined?).with('knapsack_pro:cucumber_run').and_return(true)
|
47
|
+
expect(task).to receive(:clear)
|
48
|
+
end
|
49
|
+
|
50
|
+
it do
|
51
|
+
result = double(:result)
|
52
|
+
expect(task).to receive(:invoke).and_return(result)
|
53
|
+
expect(subject).to eq result
|
54
|
+
end
|
32
55
|
end
|
33
|
-
end
|
34
56
|
|
35
|
-
|
36
|
-
|
57
|
+
context "when task doesn't exist" do
|
58
|
+
before do
|
59
|
+
expect(Rake::Task).to receive(:task_defined?).with('knapsack_pro:cucumber_run').and_return(false)
|
60
|
+
expect(task).not_to receive(:clear)
|
61
|
+
end
|
37
62
|
|
38
|
-
|
39
|
-
|
63
|
+
it do
|
64
|
+
result = double(:result)
|
65
|
+
expect(task).to receive(:invoke).and_return(result)
|
66
|
+
expect(subject).to eq result
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'when test files were not returned by Knapsack Pro API' do
|
72
|
+
let(:runner) do
|
73
|
+
instance_double(described_class,
|
74
|
+
test_files_to_execute_exist?: false)
|
40
75
|
end
|
41
76
|
|
42
|
-
it do
|
43
|
-
|
77
|
+
it "doesn't run tests" do
|
78
|
+
subject
|
44
79
|
end
|
45
80
|
end
|
46
81
|
end
|
@@ -13,22 +13,36 @@ describe KnapsackPro::Runners::MinitestRunner do
|
|
13
13
|
stub_const("ENV", { 'KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST' => 'minitest-token' })
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
context 'when test files were returned by Knapsack Pro API' do
|
17
|
+
it 'runs tests' do
|
18
|
+
test_file_paths = ['test_fake/a_test.rb', 'test_fake/b_test.rb']
|
19
|
+
runner = instance_double(described_class,
|
20
|
+
test_dir: 'test',
|
21
|
+
test_file_paths: test_file_paths,
|
22
|
+
test_files_to_execute_exist?: true)
|
23
|
+
expect(described_class).to receive(:new)
|
24
|
+
.with(KnapsackPro::Adapters::MinitestAdapter).and_return(runner)
|
23
25
|
|
24
|
-
|
26
|
+
expect(Rake::Task.task_defined?(task_name)).to be false
|
25
27
|
|
26
|
-
|
28
|
+
subject
|
27
29
|
|
28
|
-
|
30
|
+
expect(Rake::Task.task_defined?(task_name)).to be true
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
+
expect(ENV['KNAPSACK_PRO_TEST_SUITE_TOKEN']).to eq 'minitest-token'
|
33
|
+
expect(ENV['KNAPSACK_PRO_RECORDING_ENABLED']).to eq 'true'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when test files were not returned by Knapsack Pro API' do
|
38
|
+
it "doesn't run tests" do
|
39
|
+
runner = instance_double(described_class,
|
40
|
+
test_files_to_execute_exist?: false)
|
41
|
+
expect(described_class).to receive(:new)
|
42
|
+
.with(KnapsackPro::Adapters::MinitestAdapter).and_return(runner)
|
43
|
+
|
44
|
+
subject
|
45
|
+
end
|
32
46
|
end
|
33
47
|
end
|
34
48
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
|
1
3
|
describe KnapsackPro::Runners::RSpecRunner do
|
2
4
|
subject { described_class.new(KnapsackPro::Adapters::RSpecAdapter) }
|
3
5
|
|
@@ -6,43 +8,75 @@ describe KnapsackPro::Runners::RSpecRunner do
|
|
6
8
|
describe '.run' do
|
7
9
|
let(:args) { '--profile --color' }
|
8
10
|
|
9
|
-
|
11
|
+
let(:test_suite_token_rspec) { 'fake-token' }
|
12
|
+
|
13
|
+
subject { described_class.run(args) }
|
10
14
|
|
11
15
|
before do
|
12
|
-
|
16
|
+
expect(KnapsackPro::Config::Env).to receive(:test_suite_token_rspec).and_return(test_suite_token_rspec)
|
17
|
+
|
18
|
+
expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_TEST_SUITE_TOKEN', test_suite_token_rspec)
|
19
|
+
expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_RECORDING_ENABLED', 'true')
|
13
20
|
|
14
|
-
stringify_test_file_paths = 'spec/a_spec.rb spec/b_spec.rb'
|
15
|
-
runner = instance_double(described_class,
|
16
|
-
test_dir: 'spec',
|
17
|
-
stringify_test_file_paths: stringify_test_file_paths)
|
18
21
|
expect(described_class).to receive(:new)
|
19
22
|
.with(KnapsackPro::Adapters::RSpecAdapter).and_return(runner)
|
20
|
-
|
21
|
-
expect(Kernel).to receive(:system)
|
22
|
-
.with('KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=rspec-token bundle exec rspec --profile --color --default-path spec -- spec/a_spec.rb spec/b_spec.rb')
|
23
23
|
end
|
24
24
|
|
25
|
-
context 'when
|
26
|
-
let(:
|
25
|
+
context 'when test files were returned by Knapsack Pro API' do
|
26
|
+
let(:test_dir) { 'fake-test-dir' }
|
27
|
+
let(:test_file_paths) { double(:test_file_paths) }
|
28
|
+
let(:runner) do
|
29
|
+
instance_double(described_class,
|
30
|
+
test_dir: test_dir,
|
31
|
+
test_file_paths: test_file_paths,
|
32
|
+
test_files_to_execute_exist?: true)
|
33
|
+
end
|
34
|
+
let(:task) { double }
|
27
35
|
|
28
36
|
before do
|
29
|
-
expect(
|
37
|
+
expect(Rake::Task).to receive(:[]).with('knapsack_pro:rspec_run').at_least(1).and_return(task)
|
38
|
+
|
39
|
+
t = double
|
40
|
+
expect(RSpec::Core::RakeTask).to receive(:new).with('knapsack_pro:rspec_run').and_yield(t)
|
41
|
+
expect(t).to receive(:rspec_opts=).with('--profile --color --default-path fake-test-dir')
|
42
|
+
expect(t).to receive(:pattern=).with(test_file_paths)
|
30
43
|
end
|
31
44
|
|
32
|
-
|
33
|
-
|
45
|
+
context 'when task already exists' do
|
46
|
+
before do
|
47
|
+
expect(Rake::Task).to receive(:task_defined?).with('knapsack_pro:rspec_run').and_return(true)
|
48
|
+
expect(task).to receive(:clear)
|
49
|
+
end
|
50
|
+
|
51
|
+
it do
|
52
|
+
result = double(:result)
|
53
|
+
expect(task).to receive(:invoke).and_return(result)
|
54
|
+
expect(subject).to eq result
|
55
|
+
end
|
34
56
|
end
|
35
|
-
end
|
36
57
|
|
37
|
-
|
38
|
-
|
58
|
+
context "when task doesn't exist" do
|
59
|
+
before do
|
60
|
+
expect(Rake::Task).to receive(:task_defined?).with('knapsack_pro:rspec_run').and_return(false)
|
61
|
+
expect(task).not_to receive(:clear)
|
62
|
+
end
|
39
63
|
|
40
|
-
|
41
|
-
|
64
|
+
it do
|
65
|
+
result = double(:result)
|
66
|
+
expect(task).to receive(:invoke).and_return(result)
|
67
|
+
expect(subject).to eq result
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when test files were not returned by Knapsack Pro API' do
|
73
|
+
let(:runner) do
|
74
|
+
instance_double(described_class,
|
75
|
+
test_files_to_execute_exist?: false)
|
42
76
|
end
|
43
77
|
|
44
|
-
it do
|
45
|
-
|
78
|
+
it "doesn't run tests" do
|
79
|
+
subject
|
46
80
|
end
|
47
81
|
end
|
48
82
|
end
|
@@ -6,41 +6,64 @@ describe KnapsackPro::Runners::SpinachRunner do
|
|
6
6
|
describe '.run' do
|
7
7
|
let(:args) { '--custom-arg' }
|
8
8
|
|
9
|
-
|
9
|
+
subject { described_class.run(args) }
|
10
10
|
|
11
11
|
before do
|
12
12
|
stub_const("ENV", { 'KNAPSACK_PRO_TEST_SUITE_TOKEN_SPINACH' => 'spinach-token' })
|
13
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
14
|
expect(described_class).to receive(:new)
|
18
15
|
.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
16
|
end
|
22
17
|
|
23
|
-
context 'when
|
24
|
-
let(:
|
18
|
+
context 'when test files were returned by Knapsack Pro API' do
|
19
|
+
let(:stringify_test_file_paths) { 'features/a.feature features/b.feature' }
|
20
|
+
let(:test_dir) { 'fake-test-dir' }
|
21
|
+
let(:runner) do
|
22
|
+
instance_double(described_class,
|
23
|
+
test_dir: test_dir,
|
24
|
+
stringify_test_file_paths: stringify_test_file_paths,
|
25
|
+
test_files_to_execute_exist?: true)
|
26
|
+
end
|
25
27
|
|
26
28
|
before do
|
27
|
-
expect(
|
29
|
+
expect(Kernel).to receive(:system).with('KNAPSACK_PRO_RECORDING_ENABLED=true KNAPSACK_PRO_TEST_SUITE_TOKEN=spinach-token bundle exec spinach --custom-arg --features_path fake-test-dir -- features/a.feature features/b.feature')
|
28
30
|
end
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
+
after { subject }
|
33
|
+
|
34
|
+
context 'when command exit with success code' do
|
35
|
+
let(:exitstatus) { 0 }
|
36
|
+
|
37
|
+
before do
|
38
|
+
expect($?).to receive(:exitstatus).and_return(exitstatus)
|
39
|
+
end
|
40
|
+
|
41
|
+
it do
|
42
|
+
expect(Kernel).not_to receive(:exit)
|
43
|
+
end
|
32
44
|
end
|
33
|
-
end
|
34
45
|
|
35
|
-
|
36
|
-
|
46
|
+
context 'when command exit without success code' do
|
47
|
+
let(:exitstatus) { 1 }
|
37
48
|
|
38
|
-
|
39
|
-
|
49
|
+
before do
|
50
|
+
expect($?).to receive(:exitstatus).twice.and_return(exitstatus)
|
51
|
+
end
|
52
|
+
|
53
|
+
it do
|
54
|
+
expect(Kernel).to receive(:exit).with(exitstatus)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'when test files were not returned by Knapsack Pro API' do
|
60
|
+
let(:runner) do
|
61
|
+
instance_double(described_class,
|
62
|
+
test_files_to_execute_exist?: false)
|
40
63
|
end
|
41
64
|
|
42
|
-
it do
|
43
|
-
|
65
|
+
it "doesn't run tests" do
|
66
|
+
subject
|
44
67
|
end
|
45
68
|
end
|
46
69
|
end
|
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.
|
4
|
+
version: 0.15.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-
|
11
|
+
date: 2016-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|