knapsack_pro 7.3.0 → 7.4.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 +14 -0
- data/CHANGELOG.md +7 -0
- data/lib/knapsack_pro/config/env.rb +24 -26
- data/lib/knapsack_pro/version.rb +1 -1
- data/spec/knapsack_pro/config/env_spec.rb +294 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 965d1d9b1d138cf0db8abe0fb44fc1672d5992d9f40f014c0f1f72c370d82585
|
4
|
+
data.tar.gz: 9570a9c2ffd20d1324451106f7a6144a298b6efb02981eabdc1f354d5c289940
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7b335edb2e4107b44b0bf69b7cffdf0af110e316ad3d1f07190d919e23fe7172cae3081c5f97450174f1e0597f9d71387dafd8a0861aca604531a9cb1b1c26c
|
7
|
+
data.tar.gz: 269bc36e25e5a2048f2105f973523bc00dfba73b38ebf7eac482b121a8cd22a129f72c671579bd230830bcb3aa600428d2f7a5a3410ce1515c7ee4353fc36dde
|
data/.circleci/config.yml
CHANGED
@@ -152,6 +152,12 @@ jobs:
|
|
152
152
|
command: |
|
153
153
|
export KNAPSACK_PRO_BRANCH="$CIRCLE_BRANCH--$CIRCLE_BUILD_NUM--regular"
|
154
154
|
bundle exec rake knapsack_pro:rspec
|
155
|
+
- run:
|
156
|
+
working_directory: ~/rails-app-with-knapsack_pro
|
157
|
+
command: |
|
158
|
+
# retry the same split ||
|
159
|
+
export KNAPSACK_PRO_BRANCH="$CIRCLE_BRANCH--$CIRCLE_BUILD_NUM--regular"
|
160
|
+
bundle exec rake knapsack_pro:rspec
|
155
161
|
- run:
|
156
162
|
working_directory: ~/rails-app-with-knapsack_pro
|
157
163
|
command: |
|
@@ -285,6 +291,7 @@ jobs:
|
|
285
291
|
RACK_ENV: test
|
286
292
|
KNAPSACK_PRO_ENDPOINT: https://api-staging.knapsackpro.com
|
287
293
|
KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST: $KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST
|
294
|
+
KNAPSACK_PRO_RSPEC_DISABLED: true
|
288
295
|
EXTRA_TEST_FILES_DELAY: 10
|
289
296
|
- image: cimg/postgres:14.7
|
290
297
|
environment:
|
@@ -308,6 +315,12 @@ jobs:
|
|
308
315
|
command: |
|
309
316
|
export KNAPSACK_PRO_BRANCH="$CIRCLE_BRANCH--$CIRCLE_BUILD_NUM--regular"
|
310
317
|
bundle exec rake knapsack_pro:minitest[--verbose]
|
318
|
+
- run:
|
319
|
+
working_directory: ~/rails-app-with-knapsack_pro
|
320
|
+
command: |
|
321
|
+
# retry the same split ||
|
322
|
+
export KNAPSACK_PRO_BRANCH="$CIRCLE_BRANCH--$CIRCLE_BUILD_NUM--regular"
|
323
|
+
bundle exec rake knapsack_pro:minitest[--verbose]
|
311
324
|
|
312
325
|
e2e-queue-minitest:
|
313
326
|
parameters:
|
@@ -325,6 +338,7 @@ jobs:
|
|
325
338
|
RACK_ENV: test
|
326
339
|
KNAPSACK_PRO_ENDPOINT: https://api-staging.knapsackpro.com
|
327
340
|
KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST: $KNAPSACK_PRO_TEST_SUITE_TOKEN_MINITEST
|
341
|
+
KNAPSACK_PRO_RSPEC_DISABLED: true
|
328
342
|
EXTRA_TEST_FILES_DELAY: 10
|
329
343
|
- image: cimg/postgres:14.7
|
330
344
|
environment:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
### 7.4.0
|
4
|
+
* Warn when `KNAPSACK_PRO_*` environment variables are set manually if their values could be automatically determined from supported CI environments.
|
5
|
+
|
6
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/pull/254
|
7
|
+
|
8
|
+
https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v7.3.0...v7.4.0
|
9
|
+
|
3
10
|
### 7.3.0
|
4
11
|
|
5
12
|
* [Queue Mode][RSpec] Pass each batch of tests to the queue hooks: `KnapsackPro::Hooks::Queue.before_subset_queue` and `KnapsackPro::Hooks::Queue.after_subset_queue`
|
@@ -13,30 +13,21 @@ module KnapsackPro
|
|
13
13
|
|
14
14
|
class << self
|
15
15
|
def ci_node_total
|
16
|
-
(
|
17
|
-
ci_env_for(:node_total) ||
|
18
|
-
1).to_i
|
16
|
+
(env_for('KNAPSACK_PRO_CI_NODE_TOTAL', :node_total) || 1).to_i
|
19
17
|
end
|
20
18
|
|
21
19
|
def ci_node_index
|
22
|
-
(
|
23
|
-
ci_env_for(:node_index) ||
|
24
|
-
0).to_i
|
20
|
+
(env_for('KNAPSACK_PRO_CI_NODE_INDEX', :node_index) || 0).to_i
|
25
21
|
end
|
26
22
|
|
27
23
|
def ci_node_build_id
|
28
24
|
env_name = 'KNAPSACK_PRO_CI_NODE_BUILD_ID'
|
29
|
-
|
30
|
-
ci_env_for(:node_build_id) ||
|
25
|
+
env_for(env_name, :node_build_id) ||
|
31
26
|
raise("Missing environment variable #{env_name}. Read more at #{KnapsackPro::Urls::KNAPSACK_PRO_CI_NODE_BUILD_ID}")
|
32
27
|
end
|
33
28
|
|
34
29
|
def ci_node_retry_count
|
35
|
-
(
|
36
|
-
ENV['KNAPSACK_PRO_CI_NODE_RETRY_COUNT'] ||
|
37
|
-
ci_env_for(:node_retry_count) ||
|
38
|
-
0
|
39
|
-
).to_i
|
30
|
+
(env_for('KNAPSACK_PRO_CI_NODE_RETRY_COUNT', :node_retry_count) || 0).to_i
|
40
31
|
end
|
41
32
|
|
42
33
|
def max_request_retries
|
@@ -47,23 +38,19 @@ module KnapsackPro
|
|
47
38
|
end
|
48
39
|
|
49
40
|
def commit_hash
|
50
|
-
|
51
|
-
ci_env_for(:commit_hash)
|
41
|
+
env_for('KNAPSACK_PRO_COMMIT_HASH', :commit_hash)
|
52
42
|
end
|
53
43
|
|
54
44
|
def branch
|
55
|
-
|
56
|
-
ci_env_for(:branch)
|
45
|
+
env_for('KNAPSACK_PRO_BRANCH', :branch)
|
57
46
|
end
|
58
47
|
|
59
48
|
def project_dir
|
60
|
-
|
61
|
-
ci_env_for(:project_dir)
|
49
|
+
env_for('KNAPSACK_PRO_PROJECT_DIR', :project_dir)
|
62
50
|
end
|
63
51
|
|
64
52
|
def user_seat
|
65
|
-
|
66
|
-
ci_env_for(:user_seat)
|
53
|
+
env_for('KNAPSACK_PRO_USER_SEAT', :user_seat)
|
67
54
|
end
|
68
55
|
|
69
56
|
def masked_user_seat
|
@@ -183,7 +170,7 @@ module KnapsackPro
|
|
183
170
|
def fixed_queue_split
|
184
171
|
@fixed_queue_split ||= begin
|
185
172
|
env_name = 'KNAPSACK_PRO_FIXED_QUEUE_SPLIT'
|
186
|
-
computed =
|
173
|
+
computed = env_for(env_name, :fixed_queue_split).to_s
|
187
174
|
|
188
175
|
if !ENV.key?(env_name)
|
189
176
|
KnapsackPro.logger.info("#{env_name} is not set. Using default value: #{computed}. Learn more at #{KnapsackPro::Urls::FIXED_QUEUE_SPLIT}")
|
@@ -249,10 +236,6 @@ module KnapsackPro
|
|
249
236
|
end
|
250
237
|
end
|
251
238
|
|
252
|
-
def ci_env_for(env_name)
|
253
|
-
detected_ci.new.send(env_name)
|
254
|
-
end
|
255
|
-
|
256
239
|
def detected_ci
|
257
240
|
detected = KnapsackPro::Config::CI.constants.map do |constant|
|
258
241
|
Object.const_get("KnapsackPro::Config::CI::#{constant}").new.detected
|
@@ -293,6 +276,21 @@ module KnapsackPro
|
|
293
276
|
def required_env(env_name)
|
294
277
|
ENV[env_name] || raise("Missing environment variable #{env_name}")
|
295
278
|
end
|
279
|
+
|
280
|
+
def env_for(knapsack_env_name, ci_env_method)
|
281
|
+
knapsack_env_value = ENV[knapsack_env_name]
|
282
|
+
ci_env_value = ci_env_for(ci_env_method)
|
283
|
+
|
284
|
+
if !knapsack_env_value.nil? && !ci_env_value.nil? && knapsack_env_value != ci_env_value.to_s
|
285
|
+
KnapsackPro.logger.info("You have set the environment variable #{knapsack_env_name} to #{knapsack_env_value} which could be automatically determined from the CI environment as #{ci_env_value}.")
|
286
|
+
end
|
287
|
+
|
288
|
+
knapsack_env_value != nil ? knapsack_env_value : ci_env_value
|
289
|
+
end
|
290
|
+
|
291
|
+
def ci_env_for(env_name)
|
292
|
+
detected_ci.new.send(env_name)
|
293
|
+
end
|
296
294
|
end
|
297
295
|
end
|
298
296
|
end
|
data/lib/knapsack_pro/version.rb
CHANGED
@@ -17,6 +17,40 @@ describe KnapsackPro::Config::Env do
|
|
17
17
|
|
18
18
|
it { should eq 4 }
|
19
19
|
end
|
20
|
+
|
21
|
+
context 'when both KNAPSACK_PRO_CI_NODE_TOTAL and CI environment have value' do
|
22
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
23
|
+
|
24
|
+
before do
|
25
|
+
stub_const("ENV", { 'KNAPSACK_PRO_CI_NODE_TOTAL' => env_value })
|
26
|
+
expect(described_class).to receive(:ci_env_for).with(:node_total).and_return(ci_value)
|
27
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when values are different' do
|
31
|
+
let(:env_value) { '5' }
|
32
|
+
let(:ci_value) { 4 }
|
33
|
+
|
34
|
+
it { should eq 5 }
|
35
|
+
|
36
|
+
it 'logs a warning' do
|
37
|
+
expect(logger).to receive(:info).with(
|
38
|
+
'You have set the environment variable KNAPSACK_PRO_CI_NODE_TOTAL to 5 which could be automatically determined from the CI environment as 4.'
|
39
|
+
)
|
40
|
+
subject
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when values are the same' do
|
45
|
+
let(:env_value) { '5' }
|
46
|
+
let(:ci_value) { 5 }
|
47
|
+
|
48
|
+
it 'does not log a warning' do
|
49
|
+
expect(logger).not_to receive(:info)
|
50
|
+
subject
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
20
54
|
end
|
21
55
|
|
22
56
|
context "when ENV doesn't exist" do
|
@@ -41,6 +75,40 @@ describe KnapsackPro::Config::Env do
|
|
41
75
|
it { should eq 2 }
|
42
76
|
end
|
43
77
|
|
78
|
+
context 'when both KNAPSACK_PRO_CI_NODE_INDEX and CI environment have value' do
|
79
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
80
|
+
|
81
|
+
before do
|
82
|
+
stub_const("ENV", { 'KNAPSACK_PRO_CI_NODE_INDEX' => env_value })
|
83
|
+
expect(described_class).to receive(:ci_env_for).with(:node_index).and_return(ci_value)
|
84
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
85
|
+
end
|
86
|
+
|
87
|
+
context 'when values are different' do
|
88
|
+
let(:env_value) { '3' }
|
89
|
+
let(:ci_value) { 2 }
|
90
|
+
|
91
|
+
it { should eq 3 }
|
92
|
+
|
93
|
+
it 'logs a warning' do
|
94
|
+
expect(logger).to receive(:info).with(
|
95
|
+
'You have set the environment variable KNAPSACK_PRO_CI_NODE_INDEX to 3 which could be automatically determined from the CI environment as 2.'
|
96
|
+
)
|
97
|
+
subject
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'when values are the same' do
|
102
|
+
let(:env_value) { '3' }
|
103
|
+
let(:ci_value) { 3 }
|
104
|
+
|
105
|
+
it 'does not log a warning' do
|
106
|
+
expect(logger).not_to receive(:info)
|
107
|
+
subject
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
44
112
|
context 'when order of loading envs does matter' do
|
45
113
|
context 'when GitLab CI' do
|
46
114
|
before { stub_const("ENV", { 'CI_NODE_INDEX' => '2', 'GITLAB_CI' => 'true' }) }
|
@@ -70,6 +138,40 @@ describe KnapsackPro::Config::Env do
|
|
70
138
|
|
71
139
|
it { should eq '8' }
|
72
140
|
end
|
141
|
+
|
142
|
+
context 'when both KNAPSACK_PRO_CI_NODE_BUILD_ID and CI environment have value' do
|
143
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
144
|
+
|
145
|
+
before do
|
146
|
+
stub_const("ENV", { 'KNAPSACK_PRO_CI_NODE_BUILD_ID' => env_value })
|
147
|
+
expect(described_class).to receive(:ci_env_for).with(:node_build_id).and_return(ci_value)
|
148
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
149
|
+
end
|
150
|
+
|
151
|
+
context 'when values are different' do
|
152
|
+
let(:env_value) { '7' }
|
153
|
+
let(:ci_value) { '8' }
|
154
|
+
|
155
|
+
it { should eq '7' }
|
156
|
+
|
157
|
+
it 'logs a warning' do
|
158
|
+
expect(logger).to receive(:info).with(
|
159
|
+
'You have set the environment variable KNAPSACK_PRO_CI_NODE_BUILD_ID to 7 which could be automatically determined from the CI environment as 8.'
|
160
|
+
)
|
161
|
+
subject
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
context 'when values are the same' do
|
166
|
+
let(:env_value) { '7' }
|
167
|
+
let(:ci_value) { '7' }
|
168
|
+
|
169
|
+
it 'does not log a warning' do
|
170
|
+
expect(logger).not_to receive(:info)
|
171
|
+
subject
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
73
175
|
end
|
74
176
|
|
75
177
|
context "when ENV does not exist" do
|
@@ -95,6 +197,40 @@ describe KnapsackPro::Config::Env do
|
|
95
197
|
|
96
198
|
it { should eq 2 }
|
97
199
|
end
|
200
|
+
|
201
|
+
context 'when both KNAPSACK_PRO_CI_NODE_RETRY_COUNT and CI environment have value' do
|
202
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
203
|
+
|
204
|
+
before do
|
205
|
+
stub_const("ENV", { 'KNAPSACK_PRO_CI_NODE_RETRY_COUNT' => env_value })
|
206
|
+
expect(described_class).to receive(:ci_env_for).with(:node_retry_count).and_return(ci_value)
|
207
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
208
|
+
end
|
209
|
+
|
210
|
+
context 'when values are different' do
|
211
|
+
let(:env_value) { '1' }
|
212
|
+
let(:ci_value) { 2 }
|
213
|
+
|
214
|
+
it { should eq 1 }
|
215
|
+
|
216
|
+
it 'logs a warning' do
|
217
|
+
expect(logger).to receive(:info).with(
|
218
|
+
'You have set the environment variable KNAPSACK_PRO_CI_NODE_RETRY_COUNT to 1 which could be automatically determined from the CI environment as 2.'
|
219
|
+
)
|
220
|
+
subject
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
context 'when values are the same' do
|
225
|
+
let(:env_value) { '7' }
|
226
|
+
let(:ci_value) { '7' }
|
227
|
+
|
228
|
+
it 'does not log a warning' do
|
229
|
+
expect(logger).not_to receive(:info)
|
230
|
+
subject
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
98
234
|
end
|
99
235
|
|
100
236
|
context "when ENV doesn't exist" do
|
@@ -131,6 +267,40 @@ describe KnapsackPro::Config::Env do
|
|
131
267
|
|
132
268
|
it { should eq 'fe61a08118d0d52e97c38666eba1eaf3' }
|
133
269
|
end
|
270
|
+
|
271
|
+
context 'when both KNAPSACK_PRO_COMMIT_HASH and CI environment have value' do
|
272
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
273
|
+
|
274
|
+
before do
|
275
|
+
stub_const("ENV", { 'KNAPSACK_PRO_COMMIT_HASH' => env_value })
|
276
|
+
expect(described_class).to receive(:ci_env_for).with(:commit_hash).and_return(ci_value)
|
277
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
278
|
+
end
|
279
|
+
|
280
|
+
context 'when values are different' do
|
281
|
+
let(:env_value) { '3fa64859337f6e56409d49f865d13fd7' }
|
282
|
+
let(:ci_value) { 'fe61a08118d0d52e97c38666eba1eaf3' }
|
283
|
+
|
284
|
+
it { should eq '3fa64859337f6e56409d49f865d13fd7' }
|
285
|
+
|
286
|
+
it 'logs a warning' do
|
287
|
+
expect(logger).to receive(:info).with(
|
288
|
+
'You have set the environment variable KNAPSACK_PRO_COMMIT_HASH to 3fa64859337f6e56409d49f865d13fd7 which could be automatically determined from the CI environment as fe61a08118d0d52e97c38666eba1eaf3.'
|
289
|
+
)
|
290
|
+
subject
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
context 'when values are the same' do
|
295
|
+
let(:env_value) { '3fa64859337f6e56409d49f865d13fd7' }
|
296
|
+
let(:ci_value) { '3fa64859337f6e56409d49f865d13fd7' }
|
297
|
+
|
298
|
+
it 'does not log a warning' do
|
299
|
+
expect(logger).not_to receive(:info)
|
300
|
+
subject
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
134
304
|
end
|
135
305
|
|
136
306
|
context "when ENV doesn't exist" do
|
@@ -154,6 +324,40 @@ describe KnapsackPro::Config::Env do
|
|
154
324
|
|
155
325
|
it { should eq 'feature-branch' }
|
156
326
|
end
|
327
|
+
|
328
|
+
context 'when both KNAPSACK_PRO_BRANCH and CI environment have value' do
|
329
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
330
|
+
|
331
|
+
before do
|
332
|
+
stub_const("ENV", { 'KNAPSACK_PRO_BRANCH' => env_value })
|
333
|
+
expect(described_class).to receive(:ci_env_for).with(:branch).and_return(ci_value)
|
334
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
335
|
+
end
|
336
|
+
|
337
|
+
context 'when values are different' do
|
338
|
+
let(:env_value) { 'master' }
|
339
|
+
let(:ci_value) { 'feature-branch' }
|
340
|
+
|
341
|
+
it { should eq 'master' }
|
342
|
+
|
343
|
+
it 'logs a warning' do
|
344
|
+
expect(logger).to receive(:info).with(
|
345
|
+
'You have set the environment variable KNAPSACK_PRO_BRANCH to master which could be automatically determined from the CI environment as feature-branch.'
|
346
|
+
)
|
347
|
+
subject
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
context 'when values are the same' do
|
352
|
+
let(:env_value) { 'master' }
|
353
|
+
let(:ci_value) { 'master' }
|
354
|
+
|
355
|
+
it 'does not log a warning' do
|
356
|
+
expect(logger).not_to receive(:info)
|
357
|
+
subject
|
358
|
+
end
|
359
|
+
end
|
360
|
+
end
|
157
361
|
end
|
158
362
|
|
159
363
|
context "when ENV doesn't exist" do
|
@@ -177,6 +381,40 @@ describe KnapsackPro::Config::Env do
|
|
177
381
|
|
178
382
|
it { should eq '/home/runner/myapp' }
|
179
383
|
end
|
384
|
+
|
385
|
+
context 'when both KNAPSACK_PRO_PROJECT_DIR and CI environment have value' do
|
386
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
387
|
+
|
388
|
+
before do
|
389
|
+
stub_const("ENV", { 'KNAPSACK_PRO_PROJECT_DIR' => env_value })
|
390
|
+
expect(described_class).to receive(:ci_env_for).with(:project_dir).and_return(ci_value)
|
391
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
392
|
+
end
|
393
|
+
|
394
|
+
context 'when values are different' do
|
395
|
+
let(:env_value) { '/home/user/myapp' }
|
396
|
+
let(:ci_value) { '/home/runner/myapp' }
|
397
|
+
|
398
|
+
it { should eq '/home/user/myapp' }
|
399
|
+
|
400
|
+
it 'logs a warning' do
|
401
|
+
expect(logger).to receive(:info).with(
|
402
|
+
'You have set the environment variable KNAPSACK_PRO_PROJECT_DIR to /home/user/myapp which could be automatically determined from the CI environment as /home/runner/myapp.'
|
403
|
+
)
|
404
|
+
subject
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
context 'when values are the same' do
|
409
|
+
let(:env_value) { '/home/user/myapp' }
|
410
|
+
let(:ci_value) { '/home/user/myapp' }
|
411
|
+
|
412
|
+
it 'does not log a warning' do
|
413
|
+
expect(logger).not_to receive(:info)
|
414
|
+
subject
|
415
|
+
end
|
416
|
+
end
|
417
|
+
end
|
180
418
|
end
|
181
419
|
|
182
420
|
context "when ENV doesn't exist" do
|
@@ -200,6 +438,40 @@ describe KnapsackPro::Config::Env do
|
|
200
438
|
|
201
439
|
it { should eq 'Jane Doe' }
|
202
440
|
end
|
441
|
+
|
442
|
+
context 'when both KNAPSACK_PRO_USER_SEAT and CI environment have value' do
|
443
|
+
let(:logger) { instance_double(Logger, info: nil) }
|
444
|
+
|
445
|
+
before do
|
446
|
+
stub_const("ENV", { 'KNAPSACK_PRO_USER_SEAT' => env_value })
|
447
|
+
expect(described_class).to receive(:ci_env_for).with(:user_seat).and_return(ci_value)
|
448
|
+
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
449
|
+
end
|
450
|
+
|
451
|
+
context 'when values are different' do
|
452
|
+
let(:env_value) { 'John Doe' }
|
453
|
+
let(:ci_value) { 'Jane Doe' }
|
454
|
+
|
455
|
+
it { should eq 'John Doe' }
|
456
|
+
|
457
|
+
it 'logs a warning' do
|
458
|
+
expect(logger).to receive(:info).with(
|
459
|
+
'You have set the environment variable KNAPSACK_PRO_USER_SEAT to John Doe which could be automatically determined from the CI environment as Jane Doe.'
|
460
|
+
)
|
461
|
+
subject
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
context 'when values are the same' do
|
466
|
+
let(:env_value) { 'John Doe' }
|
467
|
+
let(:ci_value) { 'John Doe' }
|
468
|
+
|
469
|
+
it 'does not log a warning' do
|
470
|
+
expect(logger).not_to receive(:info)
|
471
|
+
subject
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
203
475
|
end
|
204
476
|
|
205
477
|
context "when ENV doesn't exist" do
|
@@ -345,7 +617,6 @@ describe KnapsackPro::Config::Env do
|
|
345
617
|
end
|
346
618
|
end
|
347
619
|
|
348
|
-
|
349
620
|
describe '.regular_mode?' do
|
350
621
|
subject { described_class.regular_mode? }
|
351
622
|
|
@@ -645,11 +916,18 @@ describe KnapsackPro::Config::Env do
|
|
645
916
|
['Unsupported CI', {}],
|
646
917
|
].each do |ci, env|
|
647
918
|
it "on #{ci} it is false" do
|
919
|
+
stub_const("ENV", env.merge({ 'KNAPSACK_PRO_FIXED_QUEUE_SPLIT' => 'false' }))
|
920
|
+
|
648
921
|
logger = instance_double(Logger)
|
649
922
|
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
650
|
-
|
651
|
-
|
652
|
-
|
923
|
+
ci_env = described_class.detected_ci.new.fixed_queue_split
|
924
|
+
if ci_env == false
|
925
|
+
expect(logger).not_to receive(:info)
|
926
|
+
else
|
927
|
+
expect(logger).to receive(:info).with(
|
928
|
+
'You have set the environment variable KNAPSACK_PRO_FIXED_QUEUE_SPLIT to false which could be automatically determined from the CI environment as true.'
|
929
|
+
)
|
930
|
+
end
|
653
931
|
|
654
932
|
expect(subject).to eq(false)
|
655
933
|
end
|
@@ -673,11 +951,18 @@ describe KnapsackPro::Config::Env do
|
|
673
951
|
['Unsupported CI', {}],
|
674
952
|
].each do |ci, env|
|
675
953
|
it "on #{ci} it is true" do
|
954
|
+
stub_const("ENV", env.merge({ 'KNAPSACK_PRO_FIXED_QUEUE_SPLIT' => 'true' }))
|
955
|
+
|
676
956
|
logger = instance_double(Logger)
|
677
957
|
allow(KnapsackPro).to receive(:logger).and_return(logger)
|
678
|
-
|
679
|
-
|
680
|
-
|
958
|
+
ci_env = described_class.detected_ci.new.fixed_queue_split
|
959
|
+
if ci_env == true
|
960
|
+
expect(logger).not_to receive(:info)
|
961
|
+
else
|
962
|
+
expect(logger).to receive(:info).with(
|
963
|
+
'You have set the environment variable KNAPSACK_PRO_FIXED_QUEUE_SPLIT to true which could be automatically determined from the CI environment as false.'
|
964
|
+
)
|
965
|
+
end
|
681
966
|
|
682
967
|
expect(subject).to eq(true)
|
683
968
|
end
|
@@ -702,12 +987,12 @@ describe KnapsackPro::Config::Env do
|
|
702
987
|
['Unsupported CI', {}, true],
|
703
988
|
].each do |ci, env, expected|
|
704
989
|
it "on #{ci} it is #{expected}" do
|
990
|
+
stub_const("ENV", env)
|
991
|
+
|
705
992
|
logger = instance_double(Logger)
|
706
993
|
expect(KnapsackPro).to receive(:logger).and_return(logger)
|
707
994
|
expect(logger).to receive(:info).with("KNAPSACK_PRO_FIXED_QUEUE_SPLIT is not set. Using default value: #{expected}. Learn more at #{KnapsackPro::Urls::FIXED_QUEUE_SPLIT}")
|
708
995
|
|
709
|
-
stub_const("ENV", env)
|
710
|
-
|
711
996
|
expect(subject).to eq(expected)
|
712
997
|
end
|
713
998
|
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: 7.
|
4
|
+
version: 7.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ArturT
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -415,7 +415,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
415
415
|
- !ruby/object:Gem::Version
|
416
416
|
version: '0'
|
417
417
|
requirements: []
|
418
|
-
rubygems_version: 3.
|
418
|
+
rubygems_version: 3.5.6
|
419
419
|
signing_key:
|
420
420
|
specification_version: 4
|
421
421
|
summary: Knapsack Pro splits tests across parallel CI nodes and ensures each parallel
|