pact 1.59.0 → 1.63.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af00495e49852d068acbf8b6506801223c8f0760abfd757fcb73d49f06781060
4
- data.tar.gz: cc0598bbde870c213eddcc20bcea43bfc47db77a5fc0faf008239b7a79ef6c5f
3
+ metadata.gz: 3bbef2d45df174d528bf23ecd3c5b380196789c842d49b32dd7c49478aca0942
4
+ data.tar.gz: ef0bdd2ea78d03ab7db7eec95c5b5e293495ce5aab33d614daca1ffe4215229b
5
5
  SHA512:
6
- metadata.gz: 89598a20ef196beff002e418f4aa903b9975c75774ce9c8aa2b7bb4ea978a1d9668bfb83e49325d5c88fbe39c43ed15af880ae7e0e757f9fb44112577f401716
7
- data.tar.gz: 6de032e0069da9cb7705e9fb02db2383145449e38865f2367eb68cbea68daa7887ae410ee7bab015ceb292272ab8696d5488bc4a0c310a66127d627fec70dd24
6
+ metadata.gz: 30e6ab38f2b4475474af538a149ba504462a36438f9b2cd2a4ccf148c2081ee92c973b3bb0d61d07edf19389869e631b6bc7011d4a758b54f752baa341eec715
7
+ data.tar.gz: abc1767938dcc4e417b3d76798c742f7e4bccbd850cd19cd3034d9ad9e28502c063c5b3272ac75cfd98c008dd5e3786e7a8708fb3f8b3332bb933c6a6b8c1acb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,42 @@
1
+ <a name="v1.63.0"></a>
2
+ ### v1.63.0 (2022-09-28)
3
+
4
+ #### Features
5
+
6
+ * relax rack-test dependency to allow version 2 (#270) ([a619deb](/../../commit/a619deb))
7
+ * only print metrics warning once per thread ([91da38f](/../../commit/91da38f))
8
+ * provide configuration for build url to be published in verification results (#252) ([ce1c9bc](/../../commit/ce1c9bc))
9
+
10
+ #### Bug Fixes
11
+
12
+ * example/animal-service/Gemfile to reduce vulnerabilities (#263) ([8f3b732](/../../commit/8f3b732))
13
+ * Fixup ruby warnings (#262) ([3640593](/../../commit/3640593))
14
+
15
+ <a name="v1.62.0"></a>
16
+ ### v1.62.0 (2022-02-21)
17
+
18
+ #### Features
19
+
20
+ * add telemetry (#256) ([4497ee9](/../../commit/4497ee9))
21
+
22
+ <a name="v1.61.0"></a>
23
+ ### v1.61.0 (2021-12-16)
24
+
25
+ #### Features
26
+
27
+ * support description of matching_branch and matching_tag consumer version selectors ([8e8bb22](/../../commit/8e8bb22))
28
+
29
+ #### Bug Fixes
30
+
31
+ * pass through includePendingStatus to the 'pacts for verification' API when it is false ([f0e37a4](/../../commit/f0e37a4))
32
+
33
+ <a name="v1.60.0"></a>
34
+ ### v1.60.0 (2021-10-01)
35
+
36
+ #### Features
37
+
38
+ * allow SSL verification to be disabled in the HAL client by setting the environment variable PACT_DISABLE_SSL_VERIFICATION=true ([ce07d32](/../../commit/ce07d32))
39
+
1
40
  <a name="v1.59.0"></a>
2
41
  ### v1.59.0 (2021-09-07)
3
42
 
@@ -2,6 +2,7 @@ require 'pact/retry'
2
2
  require 'pact/hal/authorization_header_redactor'
3
3
  require 'net/http'
4
4
  require 'rack'
5
+ require 'openssl'
5
6
 
6
7
  module Pact
7
8
  module Hal
@@ -48,10 +49,16 @@ module Pact
48
49
  def perform_request request, uri
49
50
  response = Retry.until_true do
50
51
  http = Net::HTTP.new(uri.host, uri.port, :ENV)
51
- http.set_debug_output(output_stream) if verbose || ENV['VERBOSE'] == 'true'
52
+ http.set_debug_output(output_stream) if verbose?
52
53
  http.use_ssl = (uri.scheme == 'https')
53
54
  http.ca_file = ENV['SSL_CERT_FILE'] if ENV['SSL_CERT_FILE'] && ENV['SSL_CERT_FILE'] != ''
54
55
  http.ca_path = ENV['SSL_CERT_DIR'] if ENV['SSL_CERT_DIR'] && ENV['SSL_CERT_DIR'] != ''
56
+ if disable_ssl_verification?
57
+ if verbose?
58
+ Pact.configuration.output_stream.puts("SSL verification is disabled")
59
+ end
60
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
61
+ end
55
62
  http.start do |http|
56
63
  http.request request
57
64
  end
@@ -63,6 +70,14 @@ module Pact
63
70
  AuthorizationHeaderRedactor.new(Pact.configuration.output_stream)
64
71
  end
65
72
 
73
+ def verbose?
74
+ verbose || ENV['VERBOSE'] == 'true'
75
+ end
76
+
77
+ def disable_ssl_verification?
78
+ ENV['PACT_DISABLE_SSL_VERIFICATION'] == 'true' || ENV['PACT_BROKER_DISABLE_SSL_VERIFICATION'] == 'true'
79
+ end
80
+
66
81
  class Response < SimpleDelegator
67
82
  def body
68
83
  bod = raw_body
@@ -0,0 +1,17 @@
1
+ module Pact
2
+ module HashRefinements
3
+ refine Hash do
4
+ def compact
5
+ h = {}
6
+ each do |key, value|
7
+ h[key] = value unless value == nil
8
+ end
9
+ h
10
+ end unless Hash.method_defined? :compact
11
+
12
+ def compact!
13
+ reject! {|_key, value| value == nil}
14
+ end unless Hash.method_defined? :compact!
15
+ end
16
+ end
17
+ end
@@ -5,10 +5,13 @@ require 'pact/errors'
5
5
  require 'pact/pact_broker/fetch_pacts'
6
6
  require 'pact/pact_broker/notices'
7
7
  require 'pact/pact_broker/pact_selection_description'
8
+ require "pact/hash_refinements"
8
9
 
9
10
  module Pact
10
11
  module PactBroker
11
12
  class FetchPactURIsForVerification
13
+ using Pact::HashRefinements
14
+
12
15
  include PactSelectionDescription
13
16
  attr_reader :provider, :consumer_version_selectors, :provider_version_branch, :provider_version_tags, :broker_base_url, :http_client_options, :http_client, :options
14
17
 
@@ -74,12 +77,12 @@ module Pact
74
77
 
75
78
  def query
76
79
  q = {}
77
- q["includePendingStatus"] = true if options[:include_pending_status]
80
+ q["includePendingStatus"] = options[:include_pending_status]
78
81
  q["consumerVersionSelectors"] = consumer_version_selectors if consumer_version_selectors.any?
79
82
  q["providerVersionTags"] = provider_version_tags if provider_version_tags.any?
80
- q["providerVersionBranch"] = provider_version_branch if provider_version_branch
81
- q["includeWipPactsSince"] = options[:include_wip_pacts_since] if options[:include_wip_pacts_since]
82
- q
83
+ q["providerVersionBranch"] = provider_version_branch
84
+ q["includeWipPactsSince"] = options[:include_wip_pacts_since]
85
+ q.compact
83
86
  end
84
87
 
85
88
  def extract_notices(pact)
@@ -39,6 +39,12 @@ module Pact
39
39
  elsif selector[:environment]
40
40
  desc = "currently in #{selector[:environment]}"
41
41
  desc = "#{selector[:consumer]} #{desc}" if selector[:consumer]
42
+ elsif selector[:matchingBranch]
43
+ desc = "matching current branch"
44
+ desc = "#{desc} for #{selector[:consumer]}" if selector[:consumer]
45
+ elsif selector[:matchingTag]
46
+ desc = "matching tag"
47
+ desc = "#{desc} for #{selector[:consumer]}" if selector[:consumer]
42
48
  else
43
49
  desc = selector.to_s
44
50
  end
@@ -46,7 +46,7 @@ module Pact
46
46
  end
47
47
 
48
48
  def honours_pacts_from_pact_broker &block
49
- create_pact_verification_from_broker &block
49
+ create_pact_verification_from_broker(&block)
50
50
  end
51
51
 
52
52
  def builder &block
@@ -4,14 +4,15 @@ module Pact
4
4
  class ServiceProviderConfig
5
5
 
6
6
  attr_accessor :application_version
7
- attr_reader :branch
7
+ attr_reader :branch, :build_url
8
8
 
9
- def initialize application_version, branch, tags, publish_verification_results, &app_block
9
+ def initialize application_version, branch, tags, publish_verification_results, build_url, &app_block
10
10
  @application_version = application_version
11
11
  @branch = branch
12
12
  @tags = [*tags]
13
13
  @publish_verification_results = publish_verification_results
14
14
  @app_block = app_block
15
+ @build_url = build_url
15
16
  end
16
17
 
17
18
  def app
@@ -15,7 +15,7 @@ module Pact
15
15
 
16
16
  extend Pact::DSL
17
17
 
18
- attr_accessor :name, :app_block, :application_version, :branch, :tags, :publish_verification_results
18
+ attr_accessor :name, :app_block, :application_version, :branch, :tags, :publish_verification_results, :build_url
19
19
 
20
20
  CONFIG_RU_APP = lambda {
21
21
  unless File.exist? Pact.configuration.config_ru_path
@@ -48,6 +48,10 @@ module Pact
48
48
  self.branch = branch
49
49
  end
50
50
 
51
+ def build_url build_url
52
+ self.build_url = build_url
53
+ end
54
+
51
55
  def publish_verification_results publish_verification_results
52
56
  self.publish_verification_results = publish_verification_results
53
57
  Pact::RSpec.with_rspec_2 do
@@ -60,7 +64,7 @@ module Pact
60
64
  end
61
65
 
62
66
  def honours_pacts_from_pact_broker &block
63
- create_pact_verification_from_broker &block
67
+ create_pact_verification_from_broker(&block)
64
68
  end
65
69
  end
66
70
 
@@ -89,7 +93,7 @@ module Pact
89
93
  end
90
94
 
91
95
  def create_service_provider
92
- Pact.configuration.provider = ServiceProviderConfig.new(application_version, branch, tags, publish_verification_results, &@app_block)
96
+ Pact.configuration.provider = ServiceProviderConfig.new(application_version, branch, tags, publish_verification_results, build_url, &@app_block)
93
97
  end
94
98
  end
95
99
  end
@@ -12,6 +12,7 @@ require 'pact/provider/rspec/pact_broker_formatter'
12
12
  require 'pact/provider/rspec/json_formatter'
13
13
  require 'pact/provider/rspec'
14
14
  require 'pact/provider/rspec/calculate_exit_code'
15
+ require 'pact/utils/metrics'
15
16
 
16
17
  module Pact
17
18
  module Provider
@@ -130,6 +131,8 @@ module Pact
130
131
  ignore_failures: options[:ignore_failures],
131
132
  request_customizer: options[:request_customizer]
132
133
  }
134
+ Pact::Utils::Metrics.report_metric("Pacts verified", "ProviderTest", "Completed")
135
+
133
136
  honour_pactfile pact_source, ordered_pact_json(pact_source.pact_json), spec_options
134
137
  end
135
138
  end
@@ -3,7 +3,7 @@ module Pact
3
3
  class PactURI
4
4
  attr_reader :uri, :options, :metadata
5
5
 
6
- def initialize (uri, options = nil, metadata = nil)
6
+ def initialize(uri, options = nil, metadata = nil)
7
7
  @uri = uri
8
8
  @options = options || {}
9
9
  @metadata = metadata || {} # make sure it's not nil if nil is passed in
@@ -12,11 +12,11 @@ module Pact
12
12
  end
13
13
 
14
14
  def set_up &block
15
- ProviderStates.base_provider_state.register.register_set_up &block
15
+ ProviderStates.base_provider_state.register.register_set_up(&block)
16
16
  end
17
17
 
18
18
  def tear_down &block
19
- ProviderStates.base_provider_state.register_tear_down &block
19
+ ProviderStates.base_provider_state.register_tear_down(&block)
20
20
  end
21
21
 
22
22
  def provider_states_for name, &block
@@ -60,7 +60,7 @@ module Pact
60
60
  end
61
61
 
62
62
  def self.namespaced_name name, options = {}
63
- fullname = options[:for] ? "#{options[:for]}.#{name}" : name
63
+ options[:for] ? "#{options[:for]}.#{name}" : name
64
64
  end
65
65
  end
66
66
 
@@ -81,11 +81,11 @@ module Pact
81
81
 
82
82
  dsl do
83
83
  def set_up &block
84
- self.register_set_up &block
84
+ self.register_set_up(&block)
85
85
  end
86
86
 
87
87
  def tear_down &block
88
- self.register_tear_down &block
88
+ self.register_tear_down(&block)
89
89
  end
90
90
 
91
91
  def no_op
@@ -14,7 +14,13 @@ module Pact
14
14
  end
15
15
 
16
16
  def call
17
- VerificationResult.new(publishable?, !any_failures?, Pact.configuration.provider.application_version, test_results_hash_for_pact_uri)
17
+ VerificationResult.new(
18
+ publishable?,
19
+ !any_failures?,
20
+ Pact.configuration.provider.application_version,
21
+ test_results_hash_for_pact_uri,
22
+ Pact.configuration.provider.build_url
23
+ )
18
24
  end
19
25
 
20
26
  private
@@ -6,11 +6,12 @@ module Pact
6
6
  class VerificationResult
7
7
  attr_reader :success, :provider_application_version, :test_results_hash
8
8
 
9
- def initialize publishable, success, provider_application_version, test_results_hash
9
+ def initialize publishable, success, provider_application_version, test_results_hash, build_url
10
10
  @publishable = publishable
11
11
  @success = success
12
12
  @provider_application_version = provider_application_version
13
13
  @test_results_hash = test_results_hash
14
+ @build_url = build_url
14
15
  end
15
16
 
16
17
  def publishable?
@@ -25,7 +26,8 @@ module Pact
25
26
  {
26
27
  success: success,
27
28
  providerApplicationVersion: provider_application_version,
28
- testResults: test_results_hash
29
+ testResults: test_results_hash,
30
+ buildUrl: @build_url
29
31
  }.to_json(options)
30
32
  end
31
33
 
@@ -0,0 +1,100 @@
1
+ require 'securerandom'
2
+ require 'digest'
3
+ require 'socket'
4
+ require 'pact/version'
5
+ require 'net/http'
6
+
7
+ module Pact
8
+ module Utils
9
+ class Metrics
10
+
11
+ def self.report_metric(event, category, action, value = 1)
12
+ do_once_per_thread(:pact_metrics_message_shown) do
13
+ if track_events?
14
+ Pact.configuration.output_stream.puts "pact WARN: Please note: we are tracking events anonymously to gather important usage statistics like Pact-Ruby version
15
+ and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment
16
+ variable to 'true'."
17
+ end
18
+ end
19
+
20
+ in_thread do
21
+ begin
22
+ if track_events?
23
+ uri = URI('https://www.google-analytics.com/collect')
24
+ req = Net::HTTP::Post.new(uri)
25
+ req.set_form_data(create_tracking_event(event, category, action, value))
26
+
27
+ Net::HTTP.start(uri.hostname, uri.port, read_timeout:2, open_timeout:2, :use_ssl => true ) do |http|
28
+ http.request(req)
29
+ end
30
+ end
31
+ rescue StandardError => e
32
+ handle_error(e)
33
+ end
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def self.handle_error e
40
+ if ENV['PACT_METRICS_DEBUG'] == 'true'
41
+ Pact.configuration.output_stream.puts("DEBUG: #{e.inspect}\n" + e.backtrace.join("\n"))
42
+ end
43
+ end
44
+
45
+ def self.in_thread
46
+ Thread.new do
47
+ yield
48
+ end
49
+ end
50
+
51
+ # not super safe to use the thread, but it's good enough for this usecase
52
+ def self.do_once_per_thread(key)
53
+ result = nil
54
+ if !Thread.current[key]
55
+ result = yield
56
+ end
57
+ Thread.current[key] = true
58
+ result
59
+ end
60
+
61
+ def self.create_tracking_event(event, category, action, value)
62
+ {
63
+ "v" => 1,
64
+ "t" => "event",
65
+ "tid" => "UA-117778936-1",
66
+ "cid" => calculate_cid,
67
+ "an" => "Pact Ruby",
68
+ "av" => Pact::VERSION,
69
+ "aid" => "pact-ruby",
70
+ "aip" => 1,
71
+ "ds" => ENV['PACT_EXECUTING_LANGUAGE'] ? "client" : "cli",
72
+ "cd2" => ENV['CI'] == "true" ? "CI" : "unknown",
73
+ "cd3" => RUBY_PLATFORM,
74
+ "cd6" => ENV['PACT_EXECUTING_LANGUAGE'] || "unknown",
75
+ "cd7" => ENV['PACT_EXECUTING_LANGUAGE_VERSION'],
76
+ "el" => event,
77
+ "ec" => category,
78
+ "ea" => action,
79
+ "ev" => value
80
+ }
81
+ end
82
+
83
+ def self.track_events?
84
+ ENV['PACT_DO_NOT_TRACK'] != 'true'
85
+ end
86
+
87
+ def self.calculate_cid
88
+ if RUBY_PLATFORM.include? "windows"
89
+ hostname = ENV['COMPUTERNAME']
90
+ else
91
+ hostname = ENV['HOSTNAME']
92
+ end
93
+ if !hostname
94
+ hostname = Socket.gethostname
95
+ end
96
+ Digest::MD5.hexdigest hostname || SecureRandom.urlsafe_base64(5)
97
+ end
98
+ end
99
+ end
100
+ end
data/lib/pact/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # Remember to bump pact-provider-proxy when this changes major version
2
2
  module Pact
3
- VERSION = "1.59.0"
3
+ VERSION = "1.63.0"
4
4
  end
data/pact.gemspec CHANGED
@@ -27,20 +27,20 @@ Gem::Specification.new do |gem|
27
27
  }
28
28
 
29
29
  gem.add_runtime_dependency 'rspec', '~> 3.0'
30
- gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 2.0.0'
30
+ gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 3.0.0'
31
31
  gem.add_runtime_dependency 'thor', '>= 0.20', '< 2.0'
32
32
  gem.add_runtime_dependency 'webrick', '~> 1.3'
33
33
  gem.add_runtime_dependency 'term-ansicolor', '~> 1.0'
34
34
 
35
- gem.add_runtime_dependency 'pact-support', '~> 1.15'
35
+ gem.add_runtime_dependency 'pact-support', '~> 1.16', '>= 1.16.9'
36
36
  gem.add_runtime_dependency 'pact-mock_service', '~> 3.0', '>= 3.3.1'
37
37
 
38
38
  gem.add_development_dependency 'rake', '~> 13.0'
39
39
  gem.add_development_dependency 'webmock', '~> 3.0'
40
40
  gem.add_development_dependency 'fakefs', '0.5' # 0.6.0 blows up
41
41
  gem.add_development_dependency 'hashie', '~> 2.0'
42
- gem.add_development_dependency 'activesupport', '~> 5.2'
43
- gem.add_development_dependency 'faraday', '~> 0.13'
42
+ gem.add_development_dependency 'faraday', '~>1.0', '<3.0'
43
+ gem.add_development_dependency 'faraday-multipart', '~> 1.0'
44
44
  gem.add_development_dependency 'conventional-changelog', '~> 1.3'
45
45
  gem.add_development_dependency 'bump', '~> 0.5'
46
46
  gem.add_development_dependency 'pact-message', '~> 0.8'
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.59.0
4
+ version: 1.63.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Fraser
@@ -9,10 +9,10 @@ authors:
9
9
  - Brent Snook
10
10
  - Ronald Holshausen
11
11
  - Beth Skurrie
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-09-07 00:00:00.000000000 Z
15
+ date: 2022-09-29 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rspec
@@ -37,7 +37,7 @@ dependencies:
37
37
  version: 0.6.3
38
38
  - - "<"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.0
40
+ version: 3.0.0
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: 0.6.3
48
48
  - - "<"
49
49
  - !ruby/object:Gem::Version
50
- version: 2.0.0
50
+ version: 3.0.0
51
51
  - !ruby/object:Gem::Dependency
52
52
  name: thor
53
53
  requirement: !ruby/object:Gem::Requirement
@@ -102,14 +102,20 @@ dependencies:
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: '1.15'
105
+ version: '1.16'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 1.16.9
106
109
  type: :runtime
107
110
  prerelease: false
108
111
  version_requirements: !ruby/object:Gem::Requirement
109
112
  requirements:
110
113
  - - "~>"
111
114
  - !ruby/object:Gem::Version
112
- version: '1.15'
115
+ version: '1.16'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 1.16.9
113
119
  - !ruby/object:Gem::Dependency
114
120
  name: pact-mock_service
115
121
  requirement: !ruby/object:Gem::Requirement
@@ -187,33 +193,39 @@ dependencies:
187
193
  - !ruby/object:Gem::Version
188
194
  version: '2.0'
189
195
  - !ruby/object:Gem::Dependency
190
- name: activesupport
196
+ name: faraday
191
197
  requirement: !ruby/object:Gem::Requirement
192
198
  requirements:
193
199
  - - "~>"
194
200
  - !ruby/object:Gem::Version
195
- version: '5.2'
201
+ version: '1.0'
202
+ - - "<"
203
+ - !ruby/object:Gem::Version
204
+ version: '3.0'
196
205
  type: :development
197
206
  prerelease: false
198
207
  version_requirements: !ruby/object:Gem::Requirement
199
208
  requirements:
200
209
  - - "~>"
201
210
  - !ruby/object:Gem::Version
202
- version: '5.2'
211
+ version: '1.0'
212
+ - - "<"
213
+ - !ruby/object:Gem::Version
214
+ version: '3.0'
203
215
  - !ruby/object:Gem::Dependency
204
- name: faraday
216
+ name: faraday-multipart
205
217
  requirement: !ruby/object:Gem::Requirement
206
218
  requirements:
207
219
  - - "~>"
208
220
  - !ruby/object:Gem::Version
209
- version: '0.13'
221
+ version: '1.0'
210
222
  type: :development
211
223
  prerelease: false
212
224
  version_requirements: !ruby/object:Gem::Requirement
213
225
  requirements:
214
226
  - - "~>"
215
227
  - !ruby/object:Gem::Version
216
- version: '0.13'
228
+ version: '1.0'
217
229
  - !ruby/object:Gem::Dependency
218
230
  name: conventional-changelog
219
231
  requirement: !ruby/object:Gem::Requirement
@@ -321,6 +333,7 @@ files:
321
333
  - lib/pact/hal/http_client.rb
322
334
  - lib/pact/hal/link.rb
323
335
  - lib/pact/hal/non_json_entity.rb
336
+ - lib/pact/hash_refinements.rb
324
337
  - lib/pact/pact_broker.rb
325
338
  - lib/pact/pact_broker/fetch_pact_uris_for_verification.rb
326
339
  - lib/pact/pact_broker/fetch_pacts.rb
@@ -378,6 +391,7 @@ files:
378
391
  - lib/pact/tasks/verification_task.rb
379
392
  - lib/pact/templates/help.erb
380
393
  - lib/pact/templates/provider_state.erb
394
+ - lib/pact/utils/metrics.rb
381
395
  - lib/pact/utils/string.rb
382
396
  - lib/pact/version.rb
383
397
  - lib/tasks/pact.rake
@@ -390,7 +404,7 @@ metadata:
390
404
  source_code_uri: https://github.com/pact-foundation/pact-ruby
391
405
  bug_tracker_uri: https://github.com/pact-foundation/pact-ruby/issues
392
406
  documentation_uri: https://github.com/pact-foundation/pact-ruby/blob/master/README.md
393
- post_install_message:
407
+ post_install_message:
394
408
  rdoc_options: []
395
409
  require_paths:
396
410
  - lib
@@ -405,8 +419,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
405
419
  - !ruby/object:Gem::Version
406
420
  version: '0'
407
421
  requirements: []
408
- rubygems_version: 3.2.27
409
- signing_key:
422
+ rubygems_version: 3.3.22
423
+ signing_key:
410
424
  specification_version: 4
411
425
  summary: Enables consumer driven contract testing, providing a mock service and DSL
412
426
  for the consumer project, and interaction playback and verification for the service