pact 1.23.0 → 1.24.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/CHANGELOG.md +9 -0
- data/lib/pact/provider/verification_results/publish.rb +9 -9
- data/lib/pact/retry.rb +35 -0
- data/lib/pact/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 552d608df849af7001c18df8b94463ec9e9da3bf
|
4
|
+
data.tar.gz: 9a3c2bff39b66747e85af6056ce70c14b1d717ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74b503a7555d1a08fd19c179379e4eb2c809dcf4acb0b644c978f25468771d55766c1b2ecdcb285c928690644b905017518d6002798eeb73d91ee2ae51104665
|
7
|
+
data.tar.gz: c5b3f0d850f25e6641dcc84a053b79798f56e79f95dc2ec2825f9f4dc5b847f5acd54aaaa5b2c413b216c08e0e8f292466aac57e1f0cea9b8effa9c0fdd32577
|
data/CHANGELOG.md
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'pact/errors'
|
3
|
+
require 'pact/retry'
|
3
4
|
|
4
5
|
# TODO move this to the pact broker client
|
5
|
-
# TODO retries
|
6
6
|
|
7
7
|
module Pact
|
8
8
|
module Provider
|
9
9
|
module VerificationResults
|
10
|
-
|
11
10
|
class PublicationError < Pact::Error; end
|
12
11
|
|
13
12
|
class Publish
|
14
|
-
|
15
13
|
def self.call pact_source, verification_result
|
16
14
|
new(pact_source, verification_result).call
|
17
15
|
end
|
@@ -75,8 +73,10 @@ module Pact
|
|
75
73
|
response = nil
|
76
74
|
begin
|
77
75
|
options = {:use_ssl => uri.scheme == 'https'}
|
78
|
-
|
79
|
-
|
76
|
+
Retry.until_true do
|
77
|
+
response = Net::HTTP.start(uri.host, uri.port, options) do |http|
|
78
|
+
http.request request
|
79
|
+
end
|
80
80
|
end
|
81
81
|
rescue StandardError => e
|
82
82
|
error_message = "Failed to tag provider version due to: #{e.class} #{e.message}"
|
@@ -95,16 +95,16 @@ module Pact
|
|
95
95
|
response = nil
|
96
96
|
begin
|
97
97
|
options = {:use_ssl => uri.scheme == 'https'}
|
98
|
-
|
99
|
-
|
98
|
+
Retry.until_true do
|
99
|
+
response = Net::HTTP.start(uri.host, uri.port, options) do |http|
|
100
|
+
http.request request
|
101
|
+
end
|
100
102
|
end
|
101
103
|
rescue StandardError => e
|
102
104
|
error_message = "Failed to publish verification results due to: #{e.class} #{e.message}"
|
103
105
|
raise PublicationError.new(error_message)
|
104
106
|
end
|
105
107
|
|
106
|
-
|
107
|
-
|
108
108
|
if response.code.start_with?("2")
|
109
109
|
new_resource_url = JSON.parse(response.body)['_links']['self']['href']
|
110
110
|
Pact.configuration.output_stream.puts "INFO: Verification results published to #{new_resource_url}"
|
data/lib/pact/retry.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Pact
|
2
|
+
class Retry
|
3
|
+
class RescuableError
|
4
|
+
UNRESCUEABLE = [Pact::Error]
|
5
|
+
|
6
|
+
def self.===(e)
|
7
|
+
case e
|
8
|
+
when *UNRESCUEABLE then
|
9
|
+
false
|
10
|
+
else
|
11
|
+
true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.until_true options = {}
|
17
|
+
max_tries = options.fetch(:times, 3)
|
18
|
+
tries = 0
|
19
|
+
while true
|
20
|
+
begin
|
21
|
+
return yield
|
22
|
+
rescue RescuableError => e
|
23
|
+
tries += 1
|
24
|
+
$stderr.puts "Error making request - #{e.class} #{e.message} #{e.backtrace.find {|l| l.include?('pact_provider')}}, attempt #{tries} of #{max_tries}"
|
25
|
+
raise e if max_tries == tries
|
26
|
+
sleep options
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.sleep options
|
32
|
+
Kernel.sleep options.fetch(:sleep, 5)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/pact/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.24.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Fraser
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2018-04-
|
15
|
+
date: 2018-04-19 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: randexp
|
@@ -374,6 +374,7 @@ files:
|
|
374
374
|
- lib/pact/provider/verification_results/publish_all.rb
|
375
375
|
- lib/pact/provider/verification_results/verification_result.rb
|
376
376
|
- lib/pact/provider/world.rb
|
377
|
+
- lib/pact/retry.rb
|
377
378
|
- lib/pact/tasks.rb
|
378
379
|
- lib/pact/tasks/task_helper.rb
|
379
380
|
- lib/pact/tasks/verification_task.rb
|