pact_broker 2.72.0 → 2.73.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f848cc7a613de4d084d69d97bf1b835c1d1bb130eec3c4c968800e348daf95bf
4
- data.tar.gz: 1cbbbd2832eb98cd3904bba8aff8d909a95663c70abe7ad710473e46b3fb3e7c
3
+ metadata.gz: 1bc95def65b82d8d938fa3b245bb6f306092d8d00572778f8b3f8ae377479fd0
4
+ data.tar.gz: 2790ca52a1db8ba01ca02ef24b6816482a4fdf38a925e8eb737d998ff2ff1213
5
5
  SHA512:
6
- metadata.gz: 2200189e21700c21b67e1f8abc85574c3ed9367287568ce7dab4f808cd81ae01a80acd60fe3309cb134cd4466d2c243244429073d4e3af53b6b009bc58848782
7
- data.tar.gz: c304534b3125112f4bd2bead0509e7e711face5f0e84ec88594cae1eb6e14a1618a4e61884ffbb0f66dbd813c4e5d4ebd61867ce276120a471a6a77f4c1e6e61
6
+ metadata.gz: 9d2740784d48edea10528d9b3a1db0ec6f89d5474c2b7b3c4c4077a7b1d57c714f7f902066e7e76cf921ab5b51e8cc58b6d3146a2a752c3535394c87e7457831
7
+ data.tar.gz: 5fb6688a830ecd05bf7eb8985d651f0a406a5bfe348e29287b93328bb2cf9f36013fda31394e3499ee058c10e54c326366f59567dc3d5eadf02507d9512787f6
@@ -37,7 +37,7 @@ jobs:
37
37
  - uses: actions/setup-ruby@v1
38
38
  with:
39
39
  ruby-version: ${{ matrix.ruby_version }}
40
- - run: "bundle install"
40
+ - run: "gem install bundler && bundle install"
41
41
  env:
42
42
  INSTALL_PG: "true"
43
43
  - run: "bundle exec rake"
@@ -1,3 +1,22 @@
1
+ <a name="v2.73.0"></a>
2
+ ### v2.73.0 (2020-12-16)
3
+
4
+ #### Features
5
+
6
+ * **wip**
7
+ * permenently enable feature that keeps pacts as WIP when verified via the URL from a webhook triggered by pact publication ([70071373](/../../commit/70071373))
8
+
9
+ * allow error causes to be configured to log at warning level ([3a7bf5ea](/../../commit/3a7bf5ea))
10
+ * add self relations for tags in matrix resource ([727cee99](/../../commit/727cee99))
11
+ * add self relation to tags in extended pact and verification resources ([a560ce6d](/../../commit/a560ce6d))
12
+
13
+ * **metrics**
14
+ * timeout matrix count ([43091b57](/../../commit/43091b57))
15
+
16
+ #### Bug Fixes
17
+
18
+ * url encode tag name in tag URL ([80df832d](/../../commit/80df832d))
19
+
1
20
  <a name="v2.72.0"></a>
2
21
  ### v2.72.0 (2020-12-02)
3
22
 
data/lib/db.rb CHANGED
@@ -33,6 +33,7 @@ module DB
33
33
  con = Sequel.connect(db_credentials.merge(:logger => logger, :pool_class => Sequel::ThreadedConnectionPool, :encoding => 'utf8'))
34
34
  con.extension(:connection_validator)
35
35
  con.extension(:pagination)
36
+ con.extension(:statement_timeout)
36
37
  con.extend_datasets do
37
38
  def any?
38
39
  !empty?
@@ -11,6 +11,14 @@ module PactBroker
11
11
  property :name
12
12
  property :latest, getter: ->(_) { true }
13
13
 
14
+ link :self do | options |
15
+ {
16
+ title: 'Tag',
17
+ name: represented.name,
18
+ href: tag_url(options[:base_url], represented)
19
+ }
20
+ end
21
+
14
22
  link "pb:latest-pact" do | opts |
15
23
  {
16
24
  name: "The latest pact with the tag #{represented.name}",
@@ -33,7 +41,7 @@ module PactBroker
33
41
 
34
42
  def head_tags
35
43
  represented.head_tag_names.collect do | tag_name |
36
- OpenStruct.new(name: tag_name, pact: represented)
44
+ OpenStruct.new(name: tag_name, pact: represented, version: represented.consumer_version)
37
45
  end
38
46
  end
39
47
  end
@@ -7,6 +7,14 @@ module PactBroker
7
7
  class TagDecorator < BaseDecorator
8
8
  property :name
9
9
  property :latest?, as: :latest
10
+
11
+ link :self do | options |
12
+ {
13
+ title: 'Tag',
14
+ name: represented.name,
15
+ href: tag_url(options[:base_url], represented)
16
+ }
17
+ end
10
18
  end
11
19
 
12
20
  collection :provider_version_tags, as: :tags, embedded: true, extend: TagDecorator
@@ -76,7 +76,7 @@ module PactBroker
76
76
  href: version_url(base_url, consumer_version)
77
77
  }
78
78
  },
79
- tags: tags(line.consumer_version_tags)
79
+ tags: tags(line.consumer_version_tags, base_url)
80
80
  },
81
81
  _links: {
82
82
  self: {
@@ -86,11 +86,16 @@ module PactBroker
86
86
  }
87
87
  end
88
88
 
89
- def tags(tags)
89
+ def tags(tags, base_url)
90
90
  tags.collect do | tag |
91
91
  {
92
92
  name: tag.name,
93
- latest: tag.latest?
93
+ latest: tag.latest?,
94
+ _links: {
95
+ self: {
96
+ href: tag_url(base_url, tag)
97
+ }
98
+ }
94
99
  }
95
100
  end
96
101
  end
@@ -114,7 +119,7 @@ module PactBroker
114
119
  href: version_url(base_url, provider_version)
115
120
  }
116
121
  },
117
- tags: tags(line.provider_version_tags)
122
+ tags: tags(line.provider_version_tags, base_url)
118
123
  }
119
124
  end
120
125
 
@@ -3,11 +3,8 @@ require_relative 'pact_pacticipant_decorator'
3
3
  require_relative 'timestamps'
4
4
 
5
5
  module PactBroker
6
-
7
6
  module Api
8
-
9
7
  module Decorators
10
-
11
8
  class TagDecorator < BaseDecorator
12
9
 
13
10
  property :name
@@ -201,7 +201,7 @@ module PactBroker
201
201
  end
202
202
 
203
203
  def tag_url base_url, tag
204
- "#{tags_url(base_url, tag.version)}/#{tag.name}"
204
+ "#{tags_url(base_url, tag.version)}/#{url_encode(tag.name)}"
205
205
  end
206
206
 
207
207
  def templated_tag_url_for_pacticipant pacticipant_name, base_url = ""
@@ -29,7 +29,7 @@ module PactBroker
29
29
  end
30
30
 
31
31
  def self.log_as_warning?(e)
32
- PactBroker.configuration.warning_error_classes.any? { |clazz| e.is_a?(clazz) }
32
+ PactBroker.configuration.warning_error_classes.any? { |clazz| e.is_a?(clazz) || e.cause&.is_a?(clazz) }
33
33
  end
34
34
 
35
35
  def self.display_message(e, obfuscated_message)
@@ -126,6 +126,7 @@ module PactBroker
126
126
  PactBroker::DB.validate_connection_config if configuration.validate_database_connection_config
127
127
  PactBroker::DB.set_mysql_strict_mode_if_mysql
128
128
  PactBroker::DB.connection.extension(:pagination)
129
+ PactBroker::DB.connection.extension(:statement_timeout)
129
130
 
130
131
  Sequel.datetime_class = DateTime
131
132
  Sequel.database_timezone = :utc # Store all dates in UTC, assume any date without a TZ is UTC
@@ -38,7 +38,8 @@ module PactBroker
38
38
  :log_dir,
39
39
  :allow_missing_migration_files,
40
40
  :auto_migrate_db_data,
41
- :use_rack_protection
41
+ :use_rack_protection,
42
+ :metrics_sql_statement_timeout
42
43
  ]
43
44
 
44
45
  attr_accessor :base_url, :log_dir, :database_connection, :auto_migrate_db, :auto_migrate_db_data, :allow_missing_migration_files, :example_data_seeder, :seed_example_data, :use_hal_browser, :html_pact_renderer, :use_rack_protection
@@ -57,6 +58,7 @@ module PactBroker
57
58
  attr_reader :api_error_reporters
58
59
  attr_reader :custom_logger
59
60
  attr_accessor :policy_builder, :policy_scope_builder, :base_resource_class_factory
61
+ attr_accessor :metrics_sql_statement_timeout
60
62
 
61
63
  alias_method :policy_finder=, :policy_builder=
62
64
  alias_method :policy_scope_finder=, :policy_scope_builder=
@@ -125,7 +127,8 @@ module PactBroker
125
127
  require 'pact_broker/api/resources/default_base_resource'
126
128
  PactBroker::Api::Resources::DefaultBaseResource
127
129
  }
128
- config.warning_error_class_names = ['Sequel::ForeignKeyConstraintViolation']
130
+ config.warning_error_class_names = ['Sequel::ForeignKeyConstraintViolation', 'PG::QueryCanceled']
131
+ config.metrics_sql_statement_timeout = 30
129
132
  config
130
133
  end
131
134
 
@@ -247,8 +250,13 @@ module PactBroker
247
250
 
248
251
  def warning_error_classes
249
252
  warning_error_class_names.collect do | class_name |
250
- Object.const_get(class_name)
251
- end
253
+ begin
254
+ Object.const_get(class_name)
255
+ rescue NameError => e
256
+ logger.warn("Class #{class_name} couldn't be loaded as a warning error class (#{e.class} - #{e.message}). Ignoring.")
257
+ nil
258
+ end
259
+ end.compact
252
260
  end
253
261
 
254
262
  private
@@ -1,3 +1,4 @@
1
+ require 'pact_broker/configuration'
1
2
  require 'pact_broker/pacts/pact_publication'
2
3
  require 'pact_broker/pacts/pact_version'
3
4
  require 'pact_broker/domain/pacticipant'
@@ -66,7 +67,7 @@ module PactBroker
66
67
  count: PactBroker::Webhooks::Execution.count
67
68
  },
68
69
  matrix: {
69
- count: PactBroker::Matrix::Row.count
70
+ count: matrix_count
70
71
  }
71
72
  }
72
73
  end
@@ -87,6 +88,16 @@ module PactBroker
87
88
  order by 1"
88
89
  PactBroker::Pacts::PactPublication.db[query].all.each_with_object({}) { |row, hash| hash[row[:number_of_verifications]] = row[:pact_version_count] }
89
90
  end
91
+
92
+ def matrix_count
93
+ begin
94
+ PactBroker::Matrix::Row.db.with_statement_timeout(PactBroker.configuration.metrics_sql_statement_timeout) do
95
+ PactBroker::Matrix::Row.count
96
+ end
97
+ rescue Sequel::DatabaseError => e
98
+ -1
99
+ end
100
+ end
90
101
  end
91
102
  end
92
103
  end
@@ -1,5 +1,3 @@
1
- require 'pact_broker/feature_toggle'
2
-
3
1
  module PactBroker
4
2
  module Pacts
5
3
  module Metadata
@@ -33,7 +31,7 @@ module PactBroker
33
31
  consumer_version_number: pact.consumer_version_number,
34
32
  consumer_version_tags: pact.consumer_version_tag_names
35
33
  }
36
- metadata[:wip] = "true" if PactBroker.feature_enabled?(:experimental_webhook_wip)
34
+ metadata[:wip] = "true"
37
35
  metadata
38
36
  end
39
37
  end
@@ -5,6 +5,8 @@ module PactBroker
5
5
  module Tags
6
6
  # The tag associated with the latest verification for a given tag
7
7
  class TagWithLatestFlag < Sequel::Model(:tags_with_latest_flag)
8
+ associate(:many_to_one, :version, :class => "PactBroker::Domain::Version", :key => :version_id, :primary_key => :id)
9
+
8
10
  dataset_module do
9
11
  include PactBroker::Repositories::Helpers
10
12
  end
@@ -77,7 +77,7 @@ module PactBroker
77
77
  consumerVersionSelectors: consumer_version_selectors,
78
78
  includePendingStatus: enable_pending,
79
79
  includeWipPactsSince: include_wip_pacts_since
80
- }
80
+ }.compact
81
81
  puts body.to_yaml
82
82
  puts ""
83
83
  @pacts_for_verification_response = client.post("/pacts/provider/#{encode(provider)}/for-verification", body)
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '2.72.0'
2
+ VERSION = '2.73.0'
3
3
  end
@@ -0,0 +1,22 @@
1
+ module Sequel
2
+ module StatementTimeout
3
+ def with_statement_timeout(timeout_seconds = 20)
4
+ # Might not have postgres class loaded, use class name
5
+ if self.class.name == "Sequel::Postgres::Database"
6
+ # Don't want to use a transaction because this will often be a read and a transaction is unnecessary.
7
+ # Also, when using it for clean, want to control the transactions outside this.
8
+ current_statement_timeout = execute("show statement_timeout") { |r| r.first.values.first }
9
+ run("SET statement_timeout = '#{timeout_seconds}s'")
10
+ begin
11
+ yield
12
+ ensure
13
+ run("SET statement_timeout = '#{current_statement_timeout}'")
14
+ end
15
+ else
16
+ yield
17
+ end
18
+ end
19
+ end
20
+
21
+ Database.register_extension(:statement_timeout){|db| db.extend(StatementTimeout) }
22
+ end
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << "#{Dir.pwd}/lib"
4
+
5
+ begin
6
+
7
+ require 'pact_broker/test/http_test_data_builder'
8
+ base_url = ENV['PACT_BROKER_BASE_URL'] || 'http://localhost:9292'
9
+
10
+ td = PactBroker::Test::HttpTestDataBuilder.new(base_url, { })
11
+ td.delete_integration(consumer: "MyConsumer", provider: "MyProvider")
12
+ .can_i_deploy(pacticipant: "MyProvider", version: "1", to: "prod")
13
+ .can_i_deploy(pacticipant: "MyConsumer", version: "1", to: "prod")
14
+ .publish_pact(consumer: "MyConsumer", consumer_version: "1", provider: "MyProvider", content_id: "111", tag: "feature/a")
15
+ .can_i_deploy(pacticipant: "MyProvider", version: "1", to: "prod")
16
+ .get_pacts_for_verification(
17
+ enable_pending: true,
18
+ provider_version_tag: "main",
19
+ include_wip_pacts_since: "2020-01-01",
20
+ consumer_version_selectors: [{ tag: "main", latest: true }])
21
+ .verify_pact(
22
+ index: 0,
23
+ provider_version_tag: "main",
24
+ provider_version: "1",
25
+ success: false
26
+ )
27
+ .get_pacts_for_verification(
28
+ enable_pending: true,
29
+ provider_version_tag: "main",
30
+ include_wip_pacts_since: "2020-01-01",
31
+ consumer_version_selectors: [{ tag: "main", latest: true }])
32
+ .can_i_deploy(pacticipant: "MyProvider", version: "1", to: "prod")
33
+ .can_i_deploy(pacticipant: "MyConsumer", version: "1", to: "prod")
34
+ .deploy_to_prod(pacticipant: "MyProvider", version: "1")
35
+ .can_i_deploy(pacticipant: "MyConsumer", version: "1", to: "prod")
36
+ .deploy_to_prod(pacticipant: "MyConsumer", version: "1")
37
+
38
+ rescue StandardError => e
39
+ puts "#{e.class} #{e.message}"
40
+ puts e.backtrace
41
+ exit 1
42
+ end
43
+
@@ -9,31 +9,11 @@ begin
9
9
 
10
10
  td = PactBroker::Test::HttpTestDataBuilder.new(base_url, { })
11
11
  td.delete_integration(consumer: "MyConsumer", provider: "MyProvider")
12
- .can_i_deploy(pacticipant: "MyProvider", version: "1", to: "prod")
13
- .can_i_deploy(pacticipant: "MyConsumer", version: "1", to: "prod")
14
- .publish_pact(consumer: "MyConsumer", consumer_version: "1", provider: "MyProvider", content_id: "111", tag: "feature/a")
15
- .can_i_deploy(pacticipant: "MyProvider", version: "1", to: "prod")
12
+ .publish_pact(consumer: "MyConsumer", consumer_version: "1", provider: "MyProvider", content_id: "111", tag: "main")
16
13
  .get_pacts_for_verification(
17
- enable_pending: true,
18
14
  provider_version_tag: "main",
19
- include_wip_pacts_since: "2020-01-01",
20
15
  consumer_version_selectors: [{ tag: "main", latest: true }])
21
- .verify_pact(
22
- index: 0,
23
- provider_version_tag: "main",
24
- provider_version: "1",
25
- success: false
26
- )
27
- .get_pacts_for_verification(
28
- enable_pending: true,
29
- provider_version_tag: "main",
30
- include_wip_pacts_since: "2020-01-01",
31
- consumer_version_selectors: [{ tag: "main", latest: true }])
32
- .can_i_deploy(pacticipant: "MyProvider", version: "1", to: "prod")
33
- .can_i_deploy(pacticipant: "MyConsumer", version: "1", to: "prod")
34
- .deploy_to_prod(pacticipant: "MyProvider", version: "1")
35
- .can_i_deploy(pacticipant: "MyConsumer", version: "1", to: "prod")
36
- .deploy_to_prod(pacticipant: "MyConsumer", version: "1")
16
+
37
17
 
38
18
  rescue StandardError => e
39
19
  puts "#{e.class} #{e.message}"
@@ -46,6 +46,7 @@ module PactBroker
46
46
  expect(subject[:_embedded][:tags].first).to include name: 'prod', latest: true
47
47
  # Can't seem to stub the verification_publication_url method on the TagDecorator
48
48
  expect(subject[:_embedded][:tags].first[:_links][:'pb:latest-pact'][:href]).to eq "http://example.org/pacts/provider/A%20Provider/consumer/A%20Consumer/latest/prod"
49
+ expect(subject[:_embedded][:tags].first[:_links][:self][:href]).to eq "http://example.org/pacticipants/A%20Consumer/versions/1234/tags/prod"
49
50
  end
50
51
 
51
52
  it "includes the pact contents under the contract key" do
@@ -66,8 +66,12 @@ module PactBroker
66
66
  tags: [
67
67
  {
68
68
  name: 'prod',
69
- latest: true
70
-
69
+ latest: true,
70
+ _links: {
71
+ self: {
72
+ href: 'http://example.org/pacticipants/Consumer/versions/1.0.0/tags/prod'
73
+ }
74
+ }
71
75
  }
72
76
  ]
73
77
  }
@@ -92,10 +96,14 @@ module PactBroker
92
96
  tags: [
93
97
  {
94
98
  name: 'master',
95
- latest: false
99
+ latest: false,
100
+ _links: {
101
+ self: {
102
+ href: 'http://example.org/pacticipants/Provider/versions/4.5.6/tags/master'
103
+ }
104
+ }
96
105
  }
97
106
  ]
98
-
99
107
  }
100
108
  }
101
109
  end
@@ -123,15 +131,19 @@ module PactBroker
123
131
  }
124
132
  end
125
133
 
134
+ let(:consumer_version) { double("consumer version", number: "1.0.0", pacticipant: double("consumer", name: "Consumer")) }
135
+
126
136
  let(:consumer_version_tags) do
127
137
  [
128
- double('tag', name: 'prod', latest?: true)
138
+ double("tag", name: "prod", latest?: true, version: consumer_version)
129
139
  ]
130
140
  end
131
141
 
142
+ let(:provider_version) { double("provider version", number: "4.5.6", pacticipant: double("provider", name: "Provider")) }
143
+
132
144
  let(:provider_version_tags) do
133
145
  [
134
- double('tag', name: 'master', latest?: false)
146
+ double("tag", name: "master", latest?: false, version: provider_version)
135
147
  ]
136
148
  end
137
149
 
@@ -158,11 +170,11 @@ module PactBroker
158
170
  let(:parsed_json) { JSON.parse(json, symbolize_names: true) }
159
171
 
160
172
  it "includes the consumer details" do
161
- expect(parsed_json[:matrix][0][:consumer]).to eq consumer_hash
173
+ expect(parsed_json[:matrix][0][:consumer]).to match_pact consumer_hash
162
174
  end
163
175
 
164
176
  it "includes the provider details" do
165
- expect(parsed_json[:matrix][0][:provider]).to eq provider_hash
177
+ expect(parsed_json[:matrix][0][:provider]).to match_pact provider_hash
166
178
  end
167
179
 
168
180
  it "includes the verification details" do
@@ -36,6 +36,7 @@ module PactBroker
36
36
  pacticipant: consumer,
37
37
  number: "2/4")
38
38
  end
39
+ let(:tag) { double('tag', name: "feat/foo", version: version) }
39
40
 
40
41
  matcher :match_route_in_api do |api|
41
42
  match do |url|
@@ -168,6 +169,13 @@ module PactBroker
168
169
 
169
170
  it { is_expected.to eq "http://example.org/matrix/provider/Bar%2FBar/latest/meep/consumer/Foo%2FFoo/latest/bar/badge.svg" }
170
171
  end
172
+
173
+ describe "tag_url" do
174
+ subject { PactBrokerUrls.tag_url(base_url, tag) }
175
+
176
+ it { is_expected.to match_route_in_api(PactBroker::API) }
177
+ it { is_expected.to eq "http://example.org/pacticipants/Foo%2FFoo/versions/2%2F4/tags/feat%2Ffoo" }
178
+ end
171
179
  end
172
180
  end
173
181
  end
@@ -53,6 +53,22 @@ module PactBroker
53
53
  end
54
54
  end
55
55
 
56
+ context "when the error cause class is in the warning_error_classes list" do
57
+ class TestCauseError < StandardError; end
58
+
59
+ before do
60
+ allow(PactBroker.configuration).to receive(:warning_error_classes).and_return([TestCauseError])
61
+ allow(error).to receive(:cause).and_return(TestCauseError.new)
62
+ end
63
+
64
+ let(:error) { StandardError.new("message") }
65
+
66
+ it "logs at warn so as not to wake everyone up in the middle of the night" do
67
+ expect(logger).to receive(:warn).with(/bYWfnyWPlf/, error)
68
+ subject
69
+ end
70
+ end
71
+
56
72
  context "when the error is not reportable and not a warning level" do
57
73
  let(:error) { PactBroker::Error.new('foo') }
58
74
 
@@ -0,0 +1,23 @@
1
+ require 'pact_broker/pacts/selected_pact'
2
+
3
+ module PactBroker
4
+ module Pacts
5
+ describe SelectedPact do
6
+ describe ".merge" do
7
+ let(:pact_1) { double("pact 1", consumer_version_number: "1", consumer_version: double("version", order: 1)) }
8
+ let(:selectors_1) { Selectors.new([Selector.overall_latest]) }
9
+ let(:selected_pact_1) { SelectedPact.new(pact_1, selectors_1) }
10
+
11
+ let(:pact_2) { double("pact 2", consumer_version_number: "2", consumer_version: double("version", order: 2)) }
12
+ let(:selectors_2) { Selectors.new([Selector.latest_for_tag("foo")]) }
13
+ let(:selected_pact_2) { SelectedPact.new(pact_2, selectors_2) }
14
+
15
+ subject { SelectedPact.merge([selected_pact_1, selected_pact_2]) }
16
+
17
+ it "merges them" do
18
+ expect(subject.selectors).to eq Selectors.new([Selector.overall_latest, Selector.latest_for_tag("foo")])
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.72.0
4
+ version: 2.73.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-12-02 00:00:00.000000000 Z
13
+ date: 2020-12-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -965,6 +965,7 @@ files:
965
965
  - lib/rack/pact_broker/ui_authentication.rb
966
966
  - lib/rack/pact_broker/ui_request_filter.rb
967
967
  - lib/rack/pact_broker/use_when.rb
968
+ - lib/sequel/extensions/statement_timeout.rb
968
969
  - lib/sequel/plugins/insert_ignore.rb
969
970
  - lib/sequel/plugins/upsert.rb
970
971
  - lib/webmachine/rack_adapter_monkey_patch.rb
@@ -1055,6 +1056,7 @@ files:
1055
1056
  - script/recreate-test-database.sh
1056
1057
  - script/release-via-github-action.sh
1057
1058
  - script/release.sh
1059
+ - script/reproduce-issue-starting-up.rb
1058
1060
  - script/reproduce-issue.rb
1059
1061
  - script/restart.sh
1060
1062
  - script/run-with-ssl.rb
@@ -1299,6 +1301,7 @@ files:
1299
1301
  - spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb
1300
1302
  - spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_spec.rb
1301
1303
  - spec/lib/pact_broker/pacts/repository_spec.rb
1304
+ - spec/lib/pact_broker/pacts/selected_pact_spec.rb
1302
1305
  - spec/lib/pact_broker/pacts/selector_spec.rb
1303
1306
  - spec/lib/pact_broker/pacts/selectors_spec.rb
1304
1307
  - spec/lib/pact_broker/pacts/service_find_for_verification_spec.rb
@@ -1460,7 +1463,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1460
1463
  - !ruby/object:Gem::Version
1461
1464
  version: '0'
1462
1465
  requirements: []
1463
- rubygems_version: 3.1.4
1466
+ rubygems_version: 3.2.1
1464
1467
  signing_key:
1465
1468
  specification_version: 4
1466
1469
  summary: See description
@@ -1697,6 +1700,7 @@ test_files:
1697
1700
  - spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb
1698
1701
  - spec/lib/pact_broker/pacts/repository_find_wip_pact_versions_for_provider_spec.rb
1699
1702
  - spec/lib/pact_broker/pacts/repository_spec.rb
1703
+ - spec/lib/pact_broker/pacts/selected_pact_spec.rb
1700
1704
  - spec/lib/pact_broker/pacts/selector_spec.rb
1701
1705
  - spec/lib/pact_broker/pacts/selectors_spec.rb
1702
1706
  - spec/lib/pact_broker/pacts/service_find_for_verification_spec.rb