percy-client 1.13.5 → 1.13.6
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/lib/percy/client.rb +32 -12
- data/lib/percy/client/connection.rb +3 -0
- data/lib/percy/client/version.rb +1 -1
- data/spec/cassettes/Percy_Client_Builds/_create_build/{parallel_test_environment → when_in_a_parallel_test_environment}/passes_through_parallelism_variables.yml +0 -0
- data/spec/lib/percy/client/builds_spec.rb +6 -1
- data/spec/lib/percy/client/connection_spec.rb +9 -0
- data/spec/lib/percy/client/environment_spec.rb +24 -17
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd84cf9ac38282cc0057f714197b65e0e75a8122
|
4
|
+
data.tar.gz: 01f640d98197a7e4a34b0f09b33d31e8e05e7900
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 015eec97ba845a645d0a9e3f309bc4542746bc101970ae5506a6c40df5444d7948393166361a4206e33683584cc0b57d97c9a50cb5e323dc408f5b3a781e14c3
|
7
|
+
data.tar.gz: 5513c0a98c57e71cb980f33373d2f0aa447bd4bbdd680cebc6af1ead78c01b9af58415429d3a6f3658a006a187a7a0d4d2263a8eac1a56179671bda28a432da3
|
data/lib/percy/client.rb
CHANGED
@@ -32,18 +32,38 @@ module Percy
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
class
|
37
|
-
|
38
|
-
|
39
|
-
class
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
class
|
46
|
-
|
35
|
+
# 4xx
|
36
|
+
class ClientError < HttpError; end
|
37
|
+
|
38
|
+
# 400
|
39
|
+
class BadRequestError < ClientError; end
|
40
|
+
|
41
|
+
# 401
|
42
|
+
class UnauthorizedError < ClientError; end
|
43
|
+
|
44
|
+
# 402
|
45
|
+
class PaymentRequiredError < ClientError; end
|
46
|
+
|
47
|
+
# 403
|
48
|
+
class ForbiddenError < ClientError; end
|
49
|
+
|
50
|
+
# 404
|
51
|
+
class NotFoundError < ClientError; end
|
52
|
+
|
53
|
+
# 409
|
54
|
+
class ConflictError < ClientError; end
|
55
|
+
|
56
|
+
# 5xx
|
57
|
+
class ServerError < HttpError; end
|
58
|
+
|
59
|
+
# 500
|
60
|
+
class InternalServerError < ServerError; end
|
61
|
+
|
62
|
+
# 502
|
63
|
+
class BadGatewayError < ServerError; end
|
64
|
+
|
65
|
+
# 503
|
66
|
+
class ServiceUnavailableError < ServerError; end
|
47
67
|
|
48
68
|
attr_reader :config, :client_info, :environment_info
|
49
69
|
|
data/lib/percy/client/version.rb
CHANGED
File without changes
|
@@ -39,6 +39,7 @@ RSpec.describe Percy::Client::Builds, :vcr do
|
|
39
39
|
expect(build['data']['relationships']['missing-resources']).to be
|
40
40
|
expect(build['data']['relationships']['missing-resources']['data']).to_not be
|
41
41
|
end
|
42
|
+
|
42
43
|
it 'accepts optional resources' do
|
43
44
|
resources = []
|
44
45
|
resources << Percy::Client::Resource.new('/css/test.css', sha: sha)
|
@@ -64,6 +65,7 @@ RSpec.describe Percy::Client::Builds, :vcr do
|
|
64
65
|
ENV['PERCY_PARALLEL_NONCE'] = 'nonce'
|
65
66
|
ENV['PERCY_PARALLEL_TOTAL'] = '4'
|
66
67
|
end
|
68
|
+
|
67
69
|
after(:each) do
|
68
70
|
ENV['PERCY_BRANCH'] = nil
|
69
71
|
ENV['PERCY_TARGET_BRANCH'] = nil
|
@@ -71,6 +73,7 @@ RSpec.describe Percy::Client::Builds, :vcr do
|
|
71
73
|
ENV['PERCY_PARALLEL_NONCE'] = nil
|
72
74
|
ENV['PERCY_PARALLEL_TOTAL'] = nil
|
73
75
|
end
|
76
|
+
|
74
77
|
it 'passes through some attributes from environment' do
|
75
78
|
# Whitebox test to check POST data.
|
76
79
|
expect_any_instance_of(Percy::Client).to \
|
@@ -99,7 +102,8 @@ RSpec.describe Percy::Client::Builds, :vcr do
|
|
99
102
|
Percy.create_build('fotinakis/percy-examples')
|
100
103
|
end
|
101
104
|
end
|
102
|
-
|
105
|
+
|
106
|
+
context 'when in a parallel test environment' do
|
103
107
|
it 'passes through parallelism variables' do
|
104
108
|
build = Percy.create_build(
|
105
109
|
'fotinakis/percy-examples',
|
@@ -111,6 +115,7 @@ RSpec.describe Percy::Client::Builds, :vcr do
|
|
111
115
|
end
|
112
116
|
end
|
113
117
|
end
|
118
|
+
|
114
119
|
describe '#finalize_build' do
|
115
120
|
it 'finalizes a build' do
|
116
121
|
build = Percy.create_build('fotinakis/percy-examples')
|
@@ -94,6 +94,15 @@ RSpec.describe Percy::Client::Connection do
|
|
94
94
|
expect { response }.to raise_error(Percy::Client::ConnectionFailed)
|
95
95
|
end
|
96
96
|
|
97
|
+
context 'with retries enabled' do
|
98
|
+
subject(:response) { Percy.client.post(uri, {}, retries: 3) }
|
99
|
+
|
100
|
+
it 'raises an exception on retry exhaustion' do
|
101
|
+
stub_request(:post, uri).to_raise(Faraday::TimeoutError)
|
102
|
+
expect { response }.to raise_error(Percy::Client::TimeoutError)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
97
106
|
shared_examples_for 'HTTP status raises custom error class' do |http_status, error_class|
|
98
107
|
subject(:request) { Percy.client.post(uri, {}, retries: 0) }
|
99
108
|
|
@@ -103,7 +103,7 @@ RSpec.describe Percy::Client::Environment do
|
|
103
103
|
ENV['TRAVIS_REPO_SLUG'] = @original_env['TRAVIS_REPO_SLUG']
|
104
104
|
end
|
105
105
|
|
106
|
-
context 'no known CI environment' do
|
106
|
+
context 'with no known CI environment' do
|
107
107
|
describe '#current_ci' do
|
108
108
|
it 'is nil' do
|
109
109
|
expect(Percy::Client::Environment.current_ci).to be_nil
|
@@ -243,7 +243,7 @@ RSpec.describe Percy::Client::Environment do
|
|
243
243
|
end
|
244
244
|
end
|
245
245
|
|
246
|
-
context 'in Jenkins CI' do
|
246
|
+
context 'when in Jenkins CI' do
|
247
247
|
before(:each) do
|
248
248
|
ENV['JENKINS_URL'] = 'http://localhost:8080/'
|
249
249
|
ENV['BUILD_NUMBER'] = '111'
|
@@ -263,7 +263,7 @@ RSpec.describe Percy::Client::Environment do
|
|
263
263
|
end
|
264
264
|
end
|
265
265
|
|
266
|
-
context 'in Travis CI' do
|
266
|
+
context 'when in Travis CI' do
|
267
267
|
before(:each) do
|
268
268
|
ENV['TRAVIS_BUILD_ID'] = '1234'
|
269
269
|
ENV['TRAVIS_BUILD_NUMBER'] = 'build-number'
|
@@ -286,7 +286,7 @@ RSpec.describe Percy::Client::Environment do
|
|
286
286
|
expect(Percy::Client::Environment.parallel_total_shards).to be_nil
|
287
287
|
end
|
288
288
|
|
289
|
-
context '
|
289
|
+
context ' with a pull request build' do
|
290
290
|
before(:each) do
|
291
291
|
ENV['TRAVIS_PULL_REQUEST'] = '256'
|
292
292
|
ENV['TRAVIS_PULL_REQUEST_BRANCH'] = 'travis-pr-branch'
|
@@ -300,7 +300,7 @@ RSpec.describe Percy::Client::Environment do
|
|
300
300
|
end
|
301
301
|
end
|
302
302
|
|
303
|
-
context 'parallel build' do
|
303
|
+
context 'with parallel build' do
|
304
304
|
before(:each) do
|
305
305
|
ENV['CI_NODE_TOTAL'] = '3'
|
306
306
|
end
|
@@ -312,7 +312,7 @@ RSpec.describe Percy::Client::Environment do
|
|
312
312
|
end
|
313
313
|
end
|
314
314
|
|
315
|
-
context 'in Circle CI' do
|
315
|
+
context 'when in Circle CI' do
|
316
316
|
before(:each) do
|
317
317
|
ENV['CIRCLECI'] = 'true'
|
318
318
|
ENV['CIRCLE_BRANCH'] = 'circle-branch'
|
@@ -334,7 +334,7 @@ RSpec.describe Percy::Client::Environment do
|
|
334
334
|
expect(Percy::Client::Environment.parallel_total_shards).to be_nil
|
335
335
|
end
|
336
336
|
|
337
|
-
context 'parallel build' do
|
337
|
+
context 'with a parallel build' do
|
338
338
|
before(:each) do
|
339
339
|
ENV['CIRCLE_NODE_TOTAL'] = '3'
|
340
340
|
end
|
@@ -346,7 +346,7 @@ RSpec.describe Percy::Client::Environment do
|
|
346
346
|
end
|
347
347
|
end
|
348
348
|
|
349
|
-
context 'in Codeship' do
|
349
|
+
context 'when in Codeship' do
|
350
350
|
before(:each) do
|
351
351
|
ENV['CI_NAME'] = 'codeship'
|
352
352
|
ENV['CI_BRANCH'] = 'codeship-branch'
|
@@ -366,7 +366,7 @@ RSpec.describe Percy::Client::Environment do
|
|
366
366
|
expect(Percy::Client::Environment.parallel_total_shards).to be_nil
|
367
367
|
end
|
368
368
|
|
369
|
-
context 'parallel build' do
|
369
|
+
context 'with a parallel build' do
|
370
370
|
before(:each) do
|
371
371
|
ENV['CI_NODE_TOTAL'] = '3'
|
372
372
|
end
|
@@ -378,7 +378,7 @@ RSpec.describe Percy::Client::Environment do
|
|
378
378
|
end
|
379
379
|
end
|
380
380
|
|
381
|
-
context 'in Drone' do
|
381
|
+
context 'when in Drone' do
|
382
382
|
before(:each) do
|
383
383
|
ENV['DRONE'] = 'true'
|
384
384
|
ENV['DRONE_COMMIT'] = 'drone-commit-sha'
|
@@ -395,7 +395,7 @@ RSpec.describe Percy::Client::Environment do
|
|
395
395
|
end
|
396
396
|
end
|
397
397
|
|
398
|
-
context 'in Semaphore CI' do
|
398
|
+
context 'when in Semaphore CI' do
|
399
399
|
before(:each) do
|
400
400
|
ENV['SEMAPHORE'] = 'true'
|
401
401
|
ENV['BRANCH_NAME'] = 'semaphore-branch'
|
@@ -418,7 +418,7 @@ RSpec.describe Percy::Client::Environment do
|
|
418
418
|
expect(Percy::Client::Environment.parallel_total_shards).to be_nil
|
419
419
|
end
|
420
420
|
|
421
|
-
context 'parallel build' do
|
421
|
+
context 'with a parallel build' do
|
422
422
|
before(:each) do
|
423
423
|
ENV['SEMAPHORE_THREAD_COUNT'] = '3'
|
424
424
|
end
|
@@ -431,7 +431,7 @@ RSpec.describe Percy::Client::Environment do
|
|
431
431
|
end
|
432
432
|
end
|
433
433
|
|
434
|
-
context 'in Buildkite' do
|
434
|
+
context 'when in Buildkite' do
|
435
435
|
before(:each) do
|
436
436
|
ENV['BUILDKITE'] = 'true'
|
437
437
|
ENV['BUILDKITE_COMMIT'] = 'buildkite-commit-sha'
|
@@ -450,7 +450,8 @@ RSpec.describe Percy::Client::Environment do
|
|
450
450
|
expect(Percy::Client::Environment.parallel_nonce).to eq('buildkite-build-id')
|
451
451
|
expect(Percy::Client::Environment.parallel_total_shards).to be_nil
|
452
452
|
end
|
453
|
-
|
453
|
+
|
454
|
+
context 'when running a parallel build' do
|
454
455
|
before(:each) do
|
455
456
|
ENV['BUILDKITE_PARALLEL_JOB_COUNT'] = '3'
|
456
457
|
end
|
@@ -459,7 +460,8 @@ RSpec.describe Percy::Client::Environment do
|
|
459
460
|
expect(Percy::Client::Environment.parallel_total_shards).to eq(3)
|
460
461
|
end
|
461
462
|
end
|
462
|
-
|
463
|
+
|
464
|
+
context 'with a pull request build' do
|
463
465
|
before(:each) do
|
464
466
|
ENV['BUILDKITE_PULL_REQUEST'] = '123'
|
465
467
|
end
|
@@ -467,7 +469,8 @@ RSpec.describe Percy::Client::Environment do
|
|
467
469
|
expect(Percy::Client::Environment.pull_request_number).to eq('123')
|
468
470
|
end
|
469
471
|
end
|
470
|
-
|
472
|
+
|
473
|
+
context 'with a UI-triggered HEAD build' do
|
471
474
|
before(:each) do
|
472
475
|
ENV['BUILDKITE_COMMIT'] = 'HEAD'
|
473
476
|
end
|
@@ -476,7 +479,8 @@ RSpec.describe Percy::Client::Environment do
|
|
476
479
|
end
|
477
480
|
end
|
478
481
|
end
|
479
|
-
|
482
|
+
|
483
|
+
context 'when in Gitlab CI' do
|
480
484
|
before(:each) do
|
481
485
|
ENV['GITLAB_CI'] = 'yes'
|
482
486
|
ENV['CI_BUILD_REF'] = 'gitlab-commit-sha'
|
@@ -495,6 +499,7 @@ RSpec.describe Percy::Client::Environment do
|
|
495
499
|
expect(Percy::Client::Environment.repo).to eq('percy/percy-client') # From git, not env.
|
496
500
|
end
|
497
501
|
end
|
502
|
+
|
498
503
|
describe 'local git repo methods' do
|
499
504
|
describe '#commit' do
|
500
505
|
it 'returns current local commit data' do
|
@@ -510,6 +515,7 @@ RSpec.describe Percy::Client::Environment do
|
|
510
515
|
expect(commit[:committer_name]).to_not be_empty
|
511
516
|
expect(commit[:message]).to_not be_empty
|
512
517
|
end
|
518
|
+
|
513
519
|
it 'returns only branch if commit data cannot be found' do
|
514
520
|
expect(Percy::Client::Environment).to receive(:_raw_commit_output).once.and_return(nil)
|
515
521
|
|
@@ -524,6 +530,7 @@ RSpec.describe Percy::Client::Environment do
|
|
524
530
|
expect(commit[:committer_name]).to be_nil
|
525
531
|
expect(commit[:message]).to be_nil
|
526
532
|
end
|
533
|
+
|
527
534
|
it 'handles unicode characters in environment where LANG is not set' do
|
528
535
|
output = "COMMIT_SHA:\nAUTHOR_NAME:Spêcìal Ñàme\nAUTHOR_EMAIL:\nCOMMITTER_NAME:\n" \
|
529
536
|
"COMMITTER_EMAIL:\nCOMMITTED_DATE:\nCOMMIT_MESSAGE:".force_encoding('US-ASCII')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percy-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.13.
|
4
|
+
version: 1.13.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perceptual Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -166,7 +166,7 @@ files:
|
|
166
166
|
- percy-client.gemspec
|
167
167
|
- spec/cassettes/Percy_Client_Builds/_create_build/accepts_optional_resources.yml
|
168
168
|
- spec/cassettes/Percy_Client_Builds/_create_build/creates_a_build.yml
|
169
|
-
- spec/cassettes/Percy_Client_Builds/_create_build/
|
169
|
+
- spec/cassettes/Percy_Client_Builds/_create_build/when_in_a_parallel_test_environment/passes_through_parallelism_variables.yml
|
170
170
|
- spec/cassettes/Percy_Client_Builds/_finalize_build/finalizes_a_build.yml
|
171
171
|
- spec/cassettes/Percy_Client_Resources/_upload_resource/returns_true_with_success.yml
|
172
172
|
- spec/cassettes/Percy_Client_Snapshots/_create_snapshot/creates_a_snapshot.yml
|
@@ -210,7 +210,7 @@ summary: Percy::Client
|
|
210
210
|
test_files:
|
211
211
|
- spec/cassettes/Percy_Client_Builds/_create_build/accepts_optional_resources.yml
|
212
212
|
- spec/cassettes/Percy_Client_Builds/_create_build/creates_a_build.yml
|
213
|
-
- spec/cassettes/Percy_Client_Builds/_create_build/
|
213
|
+
- spec/cassettes/Percy_Client_Builds/_create_build/when_in_a_parallel_test_environment/passes_through_parallelism_variables.yml
|
214
214
|
- spec/cassettes/Percy_Client_Builds/_finalize_build/finalizes_a_build.yml
|
215
215
|
- spec/cassettes/Percy_Client_Resources/_upload_resource/returns_true_with_success.yml
|
216
216
|
- spec/cassettes/Percy_Client_Snapshots/_create_snapshot/creates_a_snapshot.yml
|