Skip to content

Commit e6c9ed0

Browse files
author
Maciej Olko
committed
feat(verifier): support --enable-pending flag in CLI
Closes #164
1 parent 2b57446 commit e6c9ed0

File tree

2 files changed

+29
-11
lines changed

2 files changed

+29
-11
lines changed

pact/cli/verify.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,17 @@
110110
@click.option(
111111
'log_level', '--log-level',
112112
help='The logging level.')
113+
@click.option(
114+
'enable_pending', '--enable-pending',
115+
default=False,
116+
help='Allow pacts which are in pending state to be verified without causing the '
117+
'overall task to fail. For more information, see https://pact.io/pending',
118+
is_flag=True)
113119
def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
114120
username, broker_base_url, consumer_version_tag, consumer_version_selector,
115121
provider_version_tag, password, token, provider, headers, timeout,
116-
provider_app_version, publish_verification_results, verbose, log_dir, log_level):
122+
provider_app_version, publish_verification_results, verbose, log_dir,
123+
log_level, enable_pending):
117124
"""
118125
Verify one or more contracts against a provider service.
119126
@@ -168,7 +175,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
168175
'consumer_tags': list(consumer_version_tag),
169176
'consumer_selectors': list(consumer_version_selector),
170177
'provider_tags': list(provider_version_tag),
171-
'provider_states_setup_url': states_setup_url
178+
'provider_states_setup_url': states_setup_url,
172179
}
173180

174181
options = dict(filter(lambda item: item[1] is not None, options.items()))
@@ -178,6 +185,7 @@ def main(pacts, base_url, pact_url, pact_urls, states_url, states_setup_url,
178185
success, logs = VerifyWrapper().call_verify(*all_pact_urls,
179186
provider=provider,
180187
provider_base_url=base_url,
188+
enable_pending=enable_pending,
181189
**options)
182190
sys.exit(success)
183191

tests/cli/test_verify.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ def test_successful_verification(self, mock_isfile, mock_wrapper):
110110
provider='provider',
111111
provider_base_url='http://localhost',
112112
timeout=30,
113-
verbose=True)
113+
verbose=True,
114+
enable_pending=False)
114115

115116
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
116117
@patch("pact.verify_wrapper.isfile", return_value=True)
@@ -137,7 +138,9 @@ def test_pact_url_param_supported(self, mock_isfile, mock_wrapper):
137138
provider='provider',
138139
provider_base_url='http://localhost',
139140
timeout=30,
140-
verbose=False)
141+
verbose=False,
142+
enable_pending=False,
143+
)
141144
self.assertEqual(result.exit_code, 0)
142145

143146
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
@@ -157,7 +160,8 @@ def test_pact_urls_param_supported(self, mock_isfile, mock_wrapper):
157160
provider='provider',
158161
provider_base_url='http://localhost',
159162
timeout=30,
160-
verbose=False)
163+
verbose=False,
164+
enable_pending=False)
161165
self.assertEqual(result.exit_code, 0)
162166

163167
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
@@ -181,7 +185,8 @@ def test_failed_verification(self, mock_isfile, mock_wrapper):
181185
provider='provider',
182186
provider_base_url='http://localhost',
183187
timeout=30,
184-
verbose=False)
188+
verbose=False,
189+
enable_pending=False)
185190

186191
@patch.dict(os.environ, {'PACT_BROKER_PASSWORD': 'pwd',
187192
'PACT_BROKER_USERNAME': 'broker_user',
@@ -202,7 +207,8 @@ def test_broker_creds_from_env_var(self, mock_isfile, mock_wrapper):
202207
broker_username='broker_user',
203208
broker_url='http://broker/',
204209
timeout=30,
205-
verbose=False)
210+
verbose=False,
211+
enable_pending=False)
206212

207213
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
208214
@patch("pact.verify_wrapper.isfile", return_value=True)
@@ -228,7 +234,8 @@ def test_all_url_options(self, mock_isfile, mock_wrapper):
228234
'--log-dir=tmp/logs/pact.test.log',
229235
'--log-level=INFO',
230236
'--timeout=60',
231-
'--verbose'
237+
'--verbose',
238+
'--enable-pending',
232239
])
233240
self.assertEqual(result.exit_code, 0, result.output)
234241

@@ -250,7 +257,8 @@ def test_all_url_options(self, mock_isfile, mock_wrapper):
250257
log_dir='tmp/logs/pact.test.log',
251258
log_level='INFO',
252259
timeout=60,
253-
verbose=True)
260+
verbose=True,
261+
enable_pending=True)
254262

255263
@patch("pact.verify_wrapper.VerifyWrapper.call_verify")
256264
def test_all_broker_options(self, mock_wrapper):
@@ -273,7 +281,8 @@ def test_all_broker_options(self, mock_wrapper):
273281
'--provider-app-version=1.2.3',
274282
'--timeout=60',
275283
'--publish-verification-results',
276-
'--verbose'
284+
'--verbose',
285+
'--enable-pending'
277286
])
278287

279288
self.assertEqual(result.exit_code, 0, result.output)
@@ -293,7 +302,8 @@ def test_all_broker_options(self, mock_wrapper):
293302
# custom_provider_header=['Authorization: Basic cGFj', 'CustomHeader: somevalue'],
294303
provider_states_setup_url='http://localhost/provider-states/set',
295304
timeout=60,
296-
verbose=True)
305+
verbose=True,
306+
enable_pending=True)
297307

298308
@patch("pact.verify_wrapper.isfile", return_value=True)
299309
def test_publishing_missing_version(self, mock_isfile):

0 commit comments

Comments
 (0)