knapsack_pro 7.3.0 → 7.4.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 +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
|