knapsack_pro 2.16.0 → 2.17.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/.circleci/config.yml +1 -1
- data/CHANGELOG.md +8 -0
- data/knapsack_pro.gemspec +4 -5
- data/lib/knapsack_pro/config/ci/circle.rb +1 -2
- data/lib/knapsack_pro/repository_adapters/git_adapter.rb +2 -1
- data/lib/knapsack_pro/runners/base_runner.rb +4 -0
- data/lib/knapsack_pro/runners/queue/base_runner.rb +4 -0
- data/lib/knapsack_pro/runners/queue/cucumber_runner.rb +3 -5
- data/lib/knapsack_pro/runners/spinach_runner.rb +1 -1
- data/lib/knapsack_pro/runners/test_unit_runner.rb +14 -3
- data/lib/knapsack_pro/version.rb +1 -1
- data/spec/knapsack_pro/adapters/test_unit_adapter_spec.rb +8 -1
- data/spec/knapsack_pro/config/ci/circle_spec.rb +3 -3
- data/spec/knapsack_pro/repository_adapters/git_adapter_spec.rb +3 -3
- data/spec/knapsack_pro/runners/queue/cucumber_runner_spec.rb +4 -2
- data/spec/knapsack_pro/runners/spinach_runner_spec.rb +5 -2
- data/spec/knapsack_pro/runners/test_unit_runner_spec.rb +1 -3
- data/spec/spec_helper.rb +0 -3
- metadata +21 -35
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e22a25e69f6cfda9a42568aed336631f601423b0b930525fc8becbc1b1ee7fe9
|
|
4
|
+
data.tar.gz: ac1df0750000066a933cc4814f185d09a6d38ce09028680c8f20678bb7b0473e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 91687797a4f7c80bcd852f7c8e5ec18f523eb5a9375b3dc069b6abce67bc58ccda010f36b6c003fefa01971e628518bf0b9f9e855d7992c86d9ea7dcb375be4b
|
|
7
|
+
data.tar.gz: c32195b9e6fd4fdee7b5087f61f7d1b28fdb7a6a995930d23e109eda296156026a79fea579e06540e2a64c75ee3a03a6b216f2a8492eb48e422bc9193aad0146
|
data/.circleci/config.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
### 2.17.0
|
|
4
|
+
|
|
5
|
+
* Use Ruby 3 in development and add small improvements
|
|
6
|
+
|
|
7
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/pull/147
|
|
8
|
+
|
|
9
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v2.16.0...v2.17.0
|
|
10
|
+
|
|
3
11
|
### 2.16.0
|
|
4
12
|
|
|
5
13
|
* Improve test time execution tracking for RSpec
|
data/knapsack_pro.gemspec
CHANGED
|
@@ -29,14 +29,13 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
|
|
30
30
|
spec.add_development_dependency 'bundler', '>= 1.6'
|
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.0', '>= 2.10.0'
|
|
32
|
-
spec.add_development_dependency 'rspec-its', '~> 1.
|
|
32
|
+
spec.add_development_dependency 'rspec-its', '~> 1.3'
|
|
33
33
|
spec.add_development_dependency 'cucumber', '>= 0'
|
|
34
34
|
spec.add_development_dependency 'spinach', '>= 0.8'
|
|
35
35
|
spec.add_development_dependency 'minitest', '>= 5.0.0'
|
|
36
36
|
spec.add_development_dependency 'test-unit', '>= 3.0.0'
|
|
37
|
-
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0'
|
|
38
37
|
spec.add_development_dependency 'pry', '~> 0'
|
|
39
|
-
spec.add_development_dependency 'vcr', '
|
|
40
|
-
spec.add_development_dependency 'webmock', '
|
|
41
|
-
spec.add_development_dependency 'timecop', '>= 0.
|
|
38
|
+
spec.add_development_dependency 'vcr', '>= 6.0'
|
|
39
|
+
spec.add_development_dependency 'webmock', '>= 3.13'
|
|
40
|
+
spec.add_development_dependency 'timecop', '>= 0.9.4'
|
|
42
41
|
end
|
|
@@ -95,16 +95,14 @@ module KnapsackPro
|
|
|
95
95
|
# which is defined in lib/knapsack_pro/adapters/cucumber_adapter.rb
|
|
96
96
|
ENV['KNAPSACK_PRO_BEFORE_QUEUE_HOOK_CALLED'] = 'true'
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
unless process_status.exited?
|
|
98
|
+
unless child_status.exited?
|
|
101
99
|
raise "Cucumber process execution failed. It's likely that your CI server has exceeded"\
|
|
102
100
|
" its available memory. Please try changing CI config or retrying the CI build.\n"\
|
|
103
101
|
"Failed command: #{cmd}\n"\
|
|
104
|
-
"Process status: #{
|
|
102
|
+
"Process status: #{child_status.inspect}"
|
|
105
103
|
end
|
|
106
104
|
|
|
107
|
-
|
|
105
|
+
child_status.exitstatus
|
|
108
106
|
end
|
|
109
107
|
end
|
|
110
108
|
end
|
|
@@ -13,7 +13,7 @@ module KnapsackPro
|
|
|
13
13
|
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}]
|
|
14
14
|
|
|
15
15
|
Kernel.system(cmd)
|
|
16
|
-
Kernel.exit(
|
|
16
|
+
Kernel.exit(child_status.exitstatus) unless child_status.exitstatus.zero?
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -11,21 +11,32 @@ module KnapsackPro
|
|
|
11
11
|
if runner.test_files_to_execute_exist?
|
|
12
12
|
adapter_class.verify_bind_method_called
|
|
13
13
|
|
|
14
|
-
require 'test/unit'
|
|
15
|
-
|
|
16
14
|
cli_args =
|
|
17
15
|
(args || '').split +
|
|
18
16
|
runner.test_file_paths.map do |f|
|
|
19
17
|
File.expand_path(f)
|
|
20
18
|
end
|
|
21
19
|
|
|
22
|
-
exit
|
|
20
|
+
exit test_unit_autorunner_run(
|
|
23
21
|
true,
|
|
24
22
|
runner.test_dir,
|
|
25
23
|
cli_args
|
|
26
24
|
)
|
|
27
25
|
end
|
|
28
26
|
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
# https://www.rubydoc.info/github/test-unit/test-unit/Test/Unit/AutoRunner#run-class_method
|
|
31
|
+
def self.test_unit_autorunner_run(force_standalone, default_dir, argv)
|
|
32
|
+
require 'test/unit'
|
|
33
|
+
|
|
34
|
+
::Test::Unit::AutoRunner.run(
|
|
35
|
+
force_standalone,
|
|
36
|
+
default_dir,
|
|
37
|
+
argv
|
|
38
|
+
)
|
|
39
|
+
end
|
|
29
40
|
end
|
|
30
41
|
end
|
|
31
42
|
end
|
data/lib/knapsack_pro/version.rb
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
require 'test/unit/testcase'
|
|
1
|
+
# fake class to make tests pass and to avoid require 'test/unit/testcase' to not break RSpec
|
|
2
|
+
# https://www.rubydoc.info/gems/test-unit/3.4.1/Test/Unit/TestSuite
|
|
3
|
+
module Test
|
|
4
|
+
module Unit
|
|
5
|
+
class TestSuite
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
2
9
|
|
|
3
10
|
describe KnapsackPro::Adapters::TestUnitAdapter do
|
|
4
11
|
it do
|
|
@@ -75,9 +75,9 @@ describe KnapsackPro::Config::CI::Circle do
|
|
|
75
75
|
describe '#project_dir' do
|
|
76
76
|
subject { described_class.new.project_dir }
|
|
77
77
|
|
|
78
|
-
context 'when environment exists' do
|
|
79
|
-
let(:env) { { '
|
|
80
|
-
it { should eql '
|
|
78
|
+
context 'when CIRCLE_WORKING_DIRECTORY environment variable exists' do
|
|
79
|
+
let(:env) { { 'CIRCLE_WORKING_DIRECTORY' => '~/knapsack_pro-ruby' } }
|
|
80
|
+
it { should eql '~/knapsack_pro-ruby' }
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
context "when environment doesn't exist" do
|
|
@@ -15,20 +15,20 @@ describe KnapsackPro::RepositoryAdapters::GitAdapter do
|
|
|
15
15
|
|
|
16
16
|
it { should_not be_nil }
|
|
17
17
|
its(:size) { should eq 40 }
|
|
18
|
-
it { should eq circle_sha1 } if ENV['
|
|
18
|
+
it { should eq circle_sha1 } if ENV['CIRCLECI']
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe '#branch' do
|
|
22
22
|
subject { described_class.new.branch }
|
|
23
23
|
|
|
24
24
|
it { should_not be_nil }
|
|
25
|
-
it { should eq circle_branch } if ENV['
|
|
25
|
+
it { should eq circle_branch } if ENV['CIRCLECI']
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
describe '#branches' do
|
|
29
29
|
subject { described_class.new.branches }
|
|
30
30
|
|
|
31
31
|
it { expect(subject.include?('master')).to be true }
|
|
32
|
-
it { expect(subject.include?(circle_branch)).to be true } if ENV['
|
|
32
|
+
it { expect(subject.include?(circle_branch)).to be true } if ENV['CIRCLECI']
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -100,6 +100,7 @@ describe KnapsackPro::Runners::Queue::CucumberRunner do
|
|
|
100
100
|
|
|
101
101
|
context 'when test files exist' do
|
|
102
102
|
let(:test_file_paths) { ['features/a.feature', 'features/b.feature'] }
|
|
103
|
+
let(:child_status) { double }
|
|
103
104
|
|
|
104
105
|
before do
|
|
105
106
|
subset_queue_id = 'fake-subset-queue-id'
|
|
@@ -117,8 +118,9 @@ describe KnapsackPro::Runners::Queue::CucumberRunner do
|
|
|
117
118
|
|
|
118
119
|
expect(ENV).to receive(:[]=).with('KNAPSACK_PRO_BEFORE_QUEUE_HOOK_CALLED', 'true')
|
|
119
120
|
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
allow(described_class).to receive(:child_status).and_return(child_status)
|
|
122
|
+
expect(child_status).to receive(:exited?).and_return(process_exited)
|
|
123
|
+
allow(child_status).to receive(:exitstatus).and_return(exitstatus)
|
|
122
124
|
end
|
|
123
125
|
|
|
124
126
|
context 'when system process finished its work (exited)' do
|
|
@@ -24,11 +24,14 @@ describe KnapsackPro::Runners::SpinachRunner do
|
|
|
24
24
|
stringify_test_file_paths: stringify_test_file_paths,
|
|
25
25
|
test_files_to_execute_exist?: true)
|
|
26
26
|
end
|
|
27
|
+
let(:child_status) { double }
|
|
27
28
|
|
|
28
29
|
before do
|
|
29
30
|
expect(KnapsackPro::Adapters::SpinachAdapter).to receive(:verify_bind_method_called)
|
|
30
31
|
|
|
31
32
|
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')
|
|
33
|
+
|
|
34
|
+
allow(described_class).to receive(:child_status).and_return(child_status)
|
|
32
35
|
end
|
|
33
36
|
|
|
34
37
|
after { subject }
|
|
@@ -37,7 +40,7 @@ describe KnapsackPro::Runners::SpinachRunner do
|
|
|
37
40
|
let(:exitstatus) { 0 }
|
|
38
41
|
|
|
39
42
|
before do
|
|
40
|
-
expect(
|
|
43
|
+
expect(child_status).to receive(:exitstatus).and_return(exitstatus)
|
|
41
44
|
end
|
|
42
45
|
|
|
43
46
|
it do
|
|
@@ -49,7 +52,7 @@ describe KnapsackPro::Runners::SpinachRunner do
|
|
|
49
52
|
let(:exitstatus) { 1 }
|
|
50
53
|
|
|
51
54
|
before do
|
|
52
|
-
expect(
|
|
55
|
+
expect(child_status).to receive(:exitstatus).twice.and_return(exitstatus)
|
|
53
56
|
end
|
|
54
57
|
|
|
55
58
|
it do
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'test/unit'
|
|
2
|
-
|
|
3
1
|
describe KnapsackPro::Runners::TestUnitRunner do
|
|
4
2
|
subject { described_class.new(KnapsackPro::Adapters::TestUnitAdapter) }
|
|
5
3
|
|
|
@@ -27,7 +25,7 @@ describe KnapsackPro::Runners::TestUnitRunner do
|
|
|
27
25
|
.with(KnapsackPro::Adapters::TestUnitAdapter).and_return(runner)
|
|
28
26
|
|
|
29
27
|
auto_runner_exit_code = 0
|
|
30
|
-
expect(
|
|
28
|
+
expect(described_class).to receive(:test_unit_autorunner_run) do |flag, test_dir, cli_args|
|
|
31
29
|
expect(flag).to be true
|
|
32
30
|
expect(test_dir).to eq 'test-unit_fake'
|
|
33
31
|
expect(cli_args.size).to eq 4
|
data/spec/spec_helper.rb
CHANGED
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: 2.
|
|
4
|
+
version: 2.17.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ArturT
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-05-
|
|
11
|
+
date: 2021-05-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -42,36 +42,36 @@ dependencies:
|
|
|
42
42
|
name: rspec
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: 2.10.0
|
|
48
45
|
- - "~>"
|
|
49
46
|
- !ruby/object:Gem::Version
|
|
50
47
|
version: '3.0'
|
|
48
|
+
- - ">="
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: 2.10.0
|
|
51
51
|
type: :development
|
|
52
52
|
prerelease: false
|
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
54
54
|
requirements:
|
|
55
|
-
- - ">="
|
|
56
|
-
- !ruby/object:Gem::Version
|
|
57
|
-
version: 2.10.0
|
|
58
55
|
- - "~>"
|
|
59
56
|
- !ruby/object:Gem::Version
|
|
60
57
|
version: '3.0'
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 2.10.0
|
|
61
61
|
- !ruby/object:Gem::Dependency
|
|
62
62
|
name: rspec-its
|
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '1.
|
|
67
|
+
version: '1.3'
|
|
68
68
|
type: :development
|
|
69
69
|
prerelease: false
|
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
71
|
requirements:
|
|
72
72
|
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '1.
|
|
74
|
+
version: '1.3'
|
|
75
75
|
- !ruby/object:Gem::Dependency
|
|
76
76
|
name: cucumber
|
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -128,20 +128,6 @@ dependencies:
|
|
|
128
128
|
- - ">="
|
|
129
129
|
- !ruby/object:Gem::Version
|
|
130
130
|
version: 3.0.0
|
|
131
|
-
- !ruby/object:Gem::Dependency
|
|
132
|
-
name: codeclimate-test-reporter
|
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
|
134
|
-
requirements:
|
|
135
|
-
- - "~>"
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
137
|
-
version: '0'
|
|
138
|
-
type: :development
|
|
139
|
-
prerelease: false
|
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
141
|
-
requirements:
|
|
142
|
-
- - "~>"
|
|
143
|
-
- !ruby/object:Gem::Version
|
|
144
|
-
version: '0'
|
|
145
131
|
- !ruby/object:Gem::Dependency
|
|
146
132
|
name: pry
|
|
147
133
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -160,44 +146,44 @@ dependencies:
|
|
|
160
146
|
name: vcr
|
|
161
147
|
requirement: !ruby/object:Gem::Requirement
|
|
162
148
|
requirements:
|
|
163
|
-
- - "
|
|
149
|
+
- - ">="
|
|
164
150
|
- !ruby/object:Gem::Version
|
|
165
|
-
version: '
|
|
151
|
+
version: '6.0'
|
|
166
152
|
type: :development
|
|
167
153
|
prerelease: false
|
|
168
154
|
version_requirements: !ruby/object:Gem::Requirement
|
|
169
155
|
requirements:
|
|
170
|
-
- - "
|
|
156
|
+
- - ">="
|
|
171
157
|
- !ruby/object:Gem::Version
|
|
172
|
-
version: '
|
|
158
|
+
version: '6.0'
|
|
173
159
|
- !ruby/object:Gem::Dependency
|
|
174
160
|
name: webmock
|
|
175
161
|
requirement: !ruby/object:Gem::Requirement
|
|
176
162
|
requirements:
|
|
177
|
-
- - "
|
|
163
|
+
- - ">="
|
|
178
164
|
- !ruby/object:Gem::Version
|
|
179
|
-
version: '
|
|
165
|
+
version: '3.13'
|
|
180
166
|
type: :development
|
|
181
167
|
prerelease: false
|
|
182
168
|
version_requirements: !ruby/object:Gem::Requirement
|
|
183
169
|
requirements:
|
|
184
|
-
- - "
|
|
170
|
+
- - ">="
|
|
185
171
|
- !ruby/object:Gem::Version
|
|
186
|
-
version: '
|
|
172
|
+
version: '3.13'
|
|
187
173
|
- !ruby/object:Gem::Dependency
|
|
188
174
|
name: timecop
|
|
189
175
|
requirement: !ruby/object:Gem::Requirement
|
|
190
176
|
requirements:
|
|
191
177
|
- - ">="
|
|
192
178
|
- !ruby/object:Gem::Version
|
|
193
|
-
version: 0.
|
|
179
|
+
version: 0.9.4
|
|
194
180
|
type: :development
|
|
195
181
|
prerelease: false
|
|
196
182
|
version_requirements: !ruby/object:Gem::Requirement
|
|
197
183
|
requirements:
|
|
198
184
|
- - ">="
|
|
199
185
|
- !ruby/object:Gem::Version
|
|
200
|
-
version: 0.
|
|
186
|
+
version: 0.9.4
|
|
201
187
|
description: Run tests in parallel across CI server nodes based on tests execution
|
|
202
188
|
time. Split tests in a dynamic way to ensure parallel jobs are done at a similar
|
|
203
189
|
time. Thanks to that your CI build time is as fast as possible. It works with many
|
|
@@ -423,7 +409,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
423
409
|
- !ruby/object:Gem::Version
|
|
424
410
|
version: '0'
|
|
425
411
|
requirements: []
|
|
426
|
-
rubygems_version: 3.
|
|
412
|
+
rubygems_version: 3.2.15
|
|
427
413
|
signing_key:
|
|
428
414
|
specification_version: 4
|
|
429
415
|
summary: Knapsack Pro splits tests across parallel CI nodes and ensures each parallel
|