Skip to content

Commit ea0b7b2

Browse files
committed
feat: MediaConchValidato,validate can run without a policy file
1 parent 7283f52 commit ea0b7b2

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

src/uiucprescon/tripwire/metadata.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import abc
99
import itertools
10+
import warnings
1011
from collections import defaultdict
1112
import json
1213
from dataclasses import dataclass, field
@@ -231,13 +232,14 @@ def _iter_failing_rules(
231232
yield self.issue_formatter(rule)
232233

233234
def validate(self, glob: str) -> ValidationResult:
234-
if not self.policy_file:
235-
raise ValueError("Policy file must be set before validation.")
236235

237236
mc = self.mediaconch or self._get_media_conch()
238-
if not self.validate_policy_file(self.policy_file):
239-
raise ValueError("Policy file must be valid policy file.")
240-
mc.add_policy(str(self.policy_file))
237+
if not self.policy_file:
238+
warnings.warn(UserWarning("No policy was set before validation"))
239+
else:
240+
if not self.validate_policy_file(self.policy_file):
241+
raise ValueError("Policy file must be valid policy file.")
242+
mc.add_policy(str(self.policy_file))
241243
final_results = MediaConchValidator._Results()
242244

243245
try:
@@ -280,7 +282,7 @@ def get_mediaconch_results(
280282
assert item["ref"] == str(filepath), (
281283
f"Expected {item['ref']} to be {filepath}"
282284
)
283-
failing_rules = set(self._iter_failing_rules(item["policies"]))
285+
failing_rules = set(self._iter_failing_rules(item.get("policies", [])))
284286
if failing_rules:
285287
file_is_valid = False
286288
results.files_with_issues.add(

tests/test_metadata.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,12 +251,11 @@ def test_validate_loging_valid(
251251
assert "Validating dummy.mov" in str(caplog.records[0])
252252
assert caplog.records[1].levelname == expected_levelname
253253

254-
def test_validate_raises_without_policy_file(self):
254+
def test_validate_without_policy_file_produces_warning(self):
255255
validator = metadata_module.MediaConchValidator()
256256
validator.iglob = lambda *_, **__: ["dummy.mov"]
257-
with pytest.raises(
258-
ValueError, match="Policy file must be set before validation."
259-
):
257+
validator.get_mediaconch_results = Mock(name="get_mediaconch_results", return_value=validator._Results())
258+
with pytest.warns(UserWarning):
260259
validator.validate("*.mov")
261260

262261
def test_validate_raises_with_invalid_policy_file(self):

0 commit comments

Comments
 (0)