knapsack_pro 2.16.0 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|