percy-client 0.9.0 → 0.10.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/lib/percy/client/builds.rb +6 -2
- data/lib/percy/client/environment.rb +12 -0
- data/lib/percy/client/version.rb +1 -1
- data/spec/cassettes/Percy_Client_Builds/_create_build/parallel_test_environment/passes_through_parallelism_variables.yml +63 -0
- data/spec/lib/percy/client/builds_spec.rb +8 -7
- data/spec/lib/percy/client/environment_spec.rb +17 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cb1162a266bd022d172fd7f3480434d70a32c64
|
4
|
+
data.tar.gz: fd764e8b3a6a1474ffa6f59e1bb54765c6e20ae6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16d2abf05c798b824d7e3387b1404df556596fa4c52652571075572a69d34e6cd7f9a18f533ffe79c262dbd28068a150593eb41fe761de04b41038f9fa29a61a
|
7
|
+
data.tar.gz: a2d8c8e124c448f6fd99da12d85b1b26e9fba3b295ec20a9022df370dea539d06ea528064ccc949841823971a74c7e7cf476da19d0198990a0cb668f07b78a8a
|
data/lib/percy/client/builds.rb
CHANGED
@@ -10,8 +10,12 @@ module Percy
|
|
10
10
|
parallel_total_shards = options[:parallel_total_shards] \
|
11
11
|
|| Percy::Client::Environment.parallel_total_shards
|
12
12
|
|
13
|
-
if
|
14
|
-
|
13
|
+
# Only pass parallelism data if it all exists and there is more than 1 shard.
|
14
|
+
in_parallel_environment = parallel_nonce && \
|
15
|
+
parallel_total_shards && parallel_total_shards > 1
|
16
|
+
if !in_parallel_environment
|
17
|
+
parallel_nonce = nil
|
18
|
+
parallel_total_shards = nil
|
15
19
|
end
|
16
20
|
|
17
21
|
data = {
|
@@ -156,12 +156,24 @@ module Percy
|
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
159
|
+
# A nonce which will be the same for all nodes of a parallel build, used to identify shards
|
160
|
+
# of the same CI build. This is usually just the CI environment build ID.
|
159
161
|
def self.parallel_nonce
|
160
162
|
return ENV['PERCY_PARALLEL_NONCE'] if ENV['PERCY_PARALLEL_NONCE']
|
163
|
+
|
164
|
+
case current_ci
|
165
|
+
when :circle
|
166
|
+
ENV['CIRCLE_BUILD_NUM']
|
167
|
+
end
|
161
168
|
end
|
162
169
|
|
163
170
|
def self.parallel_total_shards
|
164
171
|
return Integer(ENV['PERCY_PARALLEL_TOTAL']) if ENV['PERCY_PARALLEL_TOTAL']
|
172
|
+
|
173
|
+
case current_ci
|
174
|
+
when :circle
|
175
|
+
Integer(ENV['CIRCLE_NODE_TOTAL']) if !ENV['CIRCLE_NODE_TOTAL'].empty?
|
176
|
+
end
|
165
177
|
end
|
166
178
|
|
167
179
|
# @private
|
data/lib/percy/client/version.rb
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://localhost:3000/api/v1/repos/fotinakis/percy-examples/builds/
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"data":{"type":"builds","attributes":{"commit-sha":"fc4d2c2e6b55d995a005dba2d071e2f2fca5e04b","commit-branch":"master","commit-committed-at":"2015-06-09
|
9
|
+
23:22:31 -0700","commit-author-name":"<COMMIT_AUTHOR_NAME>","commit-author-email":"<COMMIT_AUTHOR_EMAIL>","commit-committer-name":"<COMMIT_AUTHOR_NAME>","commit-committer-email":"<COMMIT_AUTHOR_EMAIL>","commit-message":"Fix
|
10
|
+
test environment issue.","pull-request-number":"123","parallel-nonce":"nonce","parallel-total-shards":2}}}'
|
11
|
+
headers:
|
12
|
+
User-Agent:
|
13
|
+
- Faraday v0.9.1
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
Date:
|
17
|
+
- Thu, 11 Jun 2015 00:20:38 GMT
|
18
|
+
Content-Type:
|
19
|
+
- application/vnd.api+json
|
20
|
+
Authorization:
|
21
|
+
- Token token="<FILTERED_PERCY_TOKEN>"
|
22
|
+
response:
|
23
|
+
status:
|
24
|
+
code: 201
|
25
|
+
message: Created
|
26
|
+
headers:
|
27
|
+
Date:
|
28
|
+
- Thu, 11 Jun 2015 00:20:39 GMT
|
29
|
+
Status:
|
30
|
+
- 201 Created
|
31
|
+
Connection:
|
32
|
+
- close
|
33
|
+
X-Frame-Options:
|
34
|
+
- SAMEORIGIN
|
35
|
+
X-Xss-Protection:
|
36
|
+
- 1; mode=block
|
37
|
+
X-Content-Type-Options:
|
38
|
+
- nosniff
|
39
|
+
Access-Control-Allow-Origin:
|
40
|
+
- "*"
|
41
|
+
Access-Control-Allow-Methods:
|
42
|
+
- GET, POST, PUT, PATCH, DELETE, OPTIONS
|
43
|
+
Access-Control-Allow-Headers:
|
44
|
+
- Authorization, Content-Type
|
45
|
+
Cache-Control:
|
46
|
+
- no-cache, no-store, max-age=0, must-revalidate
|
47
|
+
Expires:
|
48
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
49
|
+
Content-Type:
|
50
|
+
- application/json; charset=utf-8
|
51
|
+
X-Request-Id:
|
52
|
+
- 446304d0-e682-46b1-b0c0-39eefc375c40
|
53
|
+
X-Runtime:
|
54
|
+
- '0.422910'
|
55
|
+
Transfer-Encoding:
|
56
|
+
- chunked
|
57
|
+
body:
|
58
|
+
encoding: UTF-8
|
59
|
+
string: '{"data":{"id":"31","type":"builds","attributes":{"build-number":31,"state":"pending","is-pull-request":true,"pull-request-number":123,"pull-request-title":null,"approved-at":null,"parallel-nonce":"nonce","parallel-total-shards":2,"created-at":"2015-06-11T00:20:38.926Z","updated-at":"2015-06-11T00:20:38.926Z"},"links":{"self":"/api/v1/builds/31"},"relationships":{"commit":{"links":{"self":"/api/v1/builds/31/relationships/commit","related":"/api/v1/builds/31/commit"},"data":{"type":"commits","id":"2"}},"repo":{"links":{"self":"/api/v1/builds/31/relationships/repo","related":"/api/v1/builds/31/repo"}},"base-build":{"links":{"self":"/api/v1/builds/31/relationships/base-build","related":"/api/v1/builds/31/base-build"},"data":{"type":"builds","id":"29"}},"approved-by":{"links":{"self":"/api/v1/builds/31/relationships/approved-by","related":"/api/v1/builds/31/approved-by"}},"snapshots":{"links":{"self":"/api/v1/builds/31/relationships/snapshots","related":"/api/v1/builds/31/snapshots"}},"comparisons":{"links":{"self":"/api/v1/builds/31/relationships/comparisons","related":"/api/v1/builds/31/comparisons"}},"missing-resources":{"links":{"self":"/api/v1/builds/31/relationships/missing-resources","related":"/api/v1/builds/31/missing-resources"}}},"meta":{"finalize-link":"/api/v1/builds/31/finalize","approve-link":"/api/v1/builds/31/approve"}},"included":[{"id":"2","type":"commits","attributes":{"sha":"fc4d2c2e6b55d995a005dba2d071e2f2fca5e04b","branch":"master","message":"Fix
|
60
|
+
test environment issue.","committed-at":"2015-06-09 23:22:31 -0700","author-name":"<COMMIT_AUTHOR_NAME>","committer-name":"<COMMIT_AUTHOR_NAME>","created-at":"2015-06-11T00:15:24.000Z","updated-at":"2015-06-11T00:15:24.000Z"},"links":{"self":"/api/v1/commits/2"}},{"id":"29","type":"builds","attributes":{"build-number":29,"state":"finished","is-pull-request":false,"pull-request-number":0,"pull-request-title":null,"approved-at":null,"created-at":"2015-06-11T00:20:38.000Z","updated-at":"2015-06-11T00:20:38.000Z"},"links":{"self":"/api/v1/builds/29"},"relationships":{"commit":{"links":{"self":"/api/v1/builds/29/relationships/commit","related":"/api/v1/builds/29/commit"},"data":{"type":"commits","id":"2"}},"repo":{"links":{"self":"/api/v1/builds/29/relationships/repo","related":"/api/v1/builds/29/repo"}},"base-build":{"links":{"self":"/api/v1/builds/29/relationships/base-build","related":"/api/v1/builds/29/base-build"}},"approved-by":{"links":{"self":"/api/v1/builds/29/relationships/approved-by","related":"/api/v1/builds/29/approved-by"}},"snapshots":{"links":{"self":"/api/v1/builds/29/relationships/snapshots","related":"/api/v1/builds/29/snapshots"}},"comparisons":{"links":{"self":"/api/v1/builds/29/relationships/comparisons","related":"/api/v1/builds/29/comparisons"}},"missing-resources":{"links":{"self":"/api/v1/builds/29/relationships/missing-resources","related":"/api/v1/builds/29/missing-resources"}}},"meta":{"finalize-link":"/api/v1/builds/29/finalize","approve-link":"/api/v1/builds/29/approve"}}]}'
|
61
|
+
http_version:
|
62
|
+
recorded_at: Thu, 11 Jun 2015 00:20:39 GMT
|
63
|
+
recorded_with: VCR 2.9.3
|
@@ -34,13 +34,14 @@ RSpec.describe Percy::Client::Builds, :vcr do
|
|
34
34
|
expect(build['data']['relationships']['missing-resources']['data'].length).to eq(1)
|
35
35
|
end
|
36
36
|
context 'parallel test environment' do
|
37
|
-
it '
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
it 'passes through parallelism variables' do
|
38
|
+
build = Percy.create_build(
|
39
|
+
'fotinakis/percy-examples',
|
40
|
+
parallel_nonce: 'nonce',
|
41
|
+
parallel_total_shards: 2,
|
42
|
+
)
|
43
|
+
expect(build['data']['attributes']['parallel-nonce']).to eq('nonce')
|
44
|
+
expect(build['data']['attributes']['parallel-total-shards']).to eq(2)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
@@ -27,6 +27,7 @@ RSpec.describe Percy::Client::Environment do
|
|
27
27
|
ENV['CIRCLE_BRANCH'] = nil
|
28
28
|
ENV['CIRCLE_PROJECT_USERNAME'] = nil
|
29
29
|
ENV['CIRCLE_PROJECT_REPONAME'] = nil
|
30
|
+
ENV['CIRCLE_BUILD_NUM'] = nil
|
30
31
|
ENV['CI_PULL_REQUESTS'] = nil
|
31
32
|
|
32
33
|
# Unset Codeship vars.
|
@@ -236,6 +237,8 @@ RSpec.describe Percy::Client::Environment do
|
|
236
237
|
ENV['CIRCLE_SHA1'] = 'circle-commit-sha'
|
237
238
|
ENV['CIRCLE_PROJECT_USERNAME'] = 'circle'
|
238
239
|
ENV['CIRCLE_PROJECT_REPONAME'] = 'repo-name'
|
240
|
+
ENV['CIRCLE_BUILD_NUM'] = 'build-number'
|
241
|
+
ENV['CIRCLE_NODE_TOTAL'] = '2'
|
239
242
|
ENV['CI_PULL_REQUESTS'] = 'https://github.com/owner/repo-name/pull/123'
|
240
243
|
end
|
241
244
|
|
@@ -265,6 +268,20 @@ RSpec.describe Percy::Client::Environment do
|
|
265
268
|
expect(Percy::Client::Environment.repo).to eq('circle/repo-name')
|
266
269
|
end
|
267
270
|
end
|
271
|
+
describe '#parallel_nonce' do
|
272
|
+
it 'reads from the CI environment (the CI build ID)' do
|
273
|
+
expect(Percy::Client::Environment.parallel_nonce).to eq('build-number')
|
274
|
+
end
|
275
|
+
end
|
276
|
+
describe '#parallel_total_shards' do
|
277
|
+
it 'reads from the CI environment (the number of nodes)' do
|
278
|
+
expect(Percy::Client::Environment.parallel_total_shards).to eq(2)
|
279
|
+
end
|
280
|
+
it 'is nil if empty' do
|
281
|
+
ENV['CIRCLE_NODE_TOTAL'] = ''
|
282
|
+
expect(Percy::Client::Environment.parallel_total_shards).to be_nil
|
283
|
+
end
|
284
|
+
end
|
268
285
|
end
|
269
286
|
context 'in Codeship' do
|
270
287
|
before(:each) do
|
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: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Perceptual Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -135,6 +135,7 @@ files:
|
|
135
135
|
- percy-client.gemspec
|
136
136
|
- spec/cassettes/Percy_Client_Builds/_create_build/accepts_optional_resources.yml
|
137
137
|
- spec/cassettes/Percy_Client_Builds/_create_build/creates_a_build.yml
|
138
|
+
- spec/cassettes/Percy_Client_Builds/_create_build/parallel_test_environment/passes_through_parallelism_variables.yml
|
138
139
|
- spec/cassettes/Percy_Client_Builds/_finalize_build/finalizes_a_build.yml
|
139
140
|
- spec/cassettes/Percy_Client_Resources/_upload_resource/returns_true_with_success.yml
|
140
141
|
- spec/cassettes/Percy_Client_Snapshots/_create_snapshot/creates_a_snapshot.yml
|
@@ -176,6 +177,7 @@ summary: Percy::Client
|
|
176
177
|
test_files:
|
177
178
|
- spec/cassettes/Percy_Client_Builds/_create_build/accepts_optional_resources.yml
|
178
179
|
- spec/cassettes/Percy_Client_Builds/_create_build/creates_a_build.yml
|
180
|
+
- spec/cassettes/Percy_Client_Builds/_create_build/parallel_test_environment/passes_through_parallelism_variables.yml
|
179
181
|
- spec/cassettes/Percy_Client_Builds/_finalize_build/finalizes_a_build.yml
|
180
182
|
- spec/cassettes/Percy_Client_Resources/_upload_resource/returns_true_with_success.yml
|
181
183
|
- spec/cassettes/Percy_Client_Snapshots/_create_snapshot/creates_a_snapshot.yml
|