Skip to content

Commit 50d4166

Browse files
committed
allow do_entity_test to accept arbitrary settings
1 parent dfe0136 commit 50d4166

1 file changed

Lines changed: 52 additions & 33 deletions

File tree

tests/shared.py

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,24 @@ def first(c: Collection[T]) -> T:
3838

3939

4040
def do_entity_test(
41-
rocrate_path: Union[Path, str],
42-
requirement_severity: models.Severity,
43-
expected_validation_result: bool,
44-
expected_triggered_requirements: Optional[list[str]] = None,
45-
expected_triggered_issues: Optional[list[str]] = None,
46-
abort_on_first: bool = False,
47-
profile_identifier: str = DEFAULT_PROFILE_IDENTIFIER,
48-
rocrate_entity_patch: Optional[dict] = None,
49-
skip_checks: Optional[list[str]] = (),
50-
rocrate_relative_root_path: Optional[str] = None,
51-
metadata_only: bool = False,
52-
metadata_dict: Optional[dict] = None
41+
rocrate_path: Union[Path, str],
42+
requirement_severity: models.Severity,
43+
expected_validation_result: bool,
44+
expected_triggered_requirements: Optional[list[str]] = None,
45+
expected_triggered_issues: Optional[list[str]] = None,
46+
abort_on_first: bool = False,
47+
profile_identifier: str = DEFAULT_PROFILE_IDENTIFIER,
48+
rocrate_entity_patch: Optional[dict] = None,
49+
skip_checks: Optional[list[str]] = (),
50+
rocrate_relative_root_path: Optional[str] = None,
51+
metadata_only: bool = False,
52+
metadata_dict: Optional[dict] = None,
53+
**kwargs,
5354
):
5455
"""
55-
Shared function to test a RO-Crate entity
56+
Shared function to test a RO-Crate entity.
57+
58+
Additional keyword arguments (kwargs) are passed along to initialise ValidationSettings.
5659
"""
5760
# declare variables
5861
failed_requirements = None
@@ -95,23 +98,28 @@ def do_entity_test(
9598
abort_on_first = abort_on_first
9699

97100
# validate RO-Crate
98-
result: models.ValidationResult = \
99-
services.validate(models.ValidationSettings(**{
100-
"rocrate_uri": rocrate_path,
101-
"requirement_severity": requirement_severity,
102-
"abort_on_first": abort_on_first,
103-
"profile_identifier": profile_identifier,
104-
"skip_checks": skip_checks,
105-
"rocrate_relative_root_path": rocrate_relative_root_path,
106-
"metadata_only": metadata_only,
107-
"metadata_dict": metadata_dict
108-
}))
101+
result: models.ValidationResult = services.validate(
102+
models.ValidationSettings(
103+
**{
104+
"rocrate_uri": rocrate_path,
105+
"requirement_severity": requirement_severity,
106+
"abort_on_first": abort_on_first,
107+
"profile_identifier": profile_identifier,
108+
"skip_checks": skip_checks,
109+
"rocrate_relative_root_path": rocrate_relative_root_path,
110+
"metadata_only": metadata_only,
111+
"metadata_dict": metadata_dict,
112+
},
113+
**kwargs,
114+
)
115+
)
109116
logger.debug("Expected validation result: %s", expected_validation_result)
110117

111118
assert result.context is not None, "Validation context should not be None"
112119
f"Expected requirement severity to be {requirement_severity}, but got {result.context.requirement_severity}"
113-
assert result.passed() == expected_validation_result, \
114-
f"RO-Crate should be {'valid' if expected_validation_result else 'invalid'}"
120+
assert (
121+
result.passed() == expected_validation_result
122+
), f"RO-Crate should be {'valid' if expected_validation_result else 'invalid'}"
115123

116124
# check requirement
117125
failed_requirements = [_.name for _ in result.failed_requirements]
@@ -122,24 +130,35 @@ def do_entity_test(
122130
# check that the expected requirements are triggered
123131
for expected_triggered_requirement in expected_triggered_requirements:
124132
if expected_triggered_requirement not in failed_requirements:
125-
assert False, f"The expected requirement " \
126-
f"\"{expected_triggered_requirement}\" was not found in the failed requirements"
133+
assert False, (
134+
f"The expected requirement "
135+
f'"{expected_triggered_requirement}" was not found in the failed requirements'
136+
)
127137

128138
# check requirement issues
129-
detected_issues = [issue.message for issue in result.get_issues(requirement_severity)
130-
if issue.message is not None]
139+
detected_issues = [
140+
issue.message
141+
for issue in result.get_issues(requirement_severity)
142+
if issue.message is not None
143+
]
131144
logger.debug("Detected issues: %s", detected_issues)
132145
logger.debug("Expected issues: %s", expected_triggered_issues)
133146
for expected_issue in expected_triggered_issues:
134-
if not any(expected_issue in issue for issue in detected_issues): # support partial match
135-
assert False, f"The expected issue \"{expected_issue}\" was not found in the detected issues"
147+
if not any(
148+
expected_issue in issue for issue in detected_issues
149+
): # support partial match
150+
assert (
151+
False
152+
), f'The expected issue "{expected_issue}" was not found in the detected issues'
136153
except Exception as e:
137154
if logger.isEnabledFor(logging.DEBUG):
138155
logger.exception(e)
139156
logger.debug("Failed to validate RO-Crate @ path: %s", rocrate_path)
140157
logger.debug("Requirement severity: %s", requirement_severity)
141158
logger.debug("Expected validation result: %s", expected_validation_result)
142-
logger.debug("Expected triggered requirements: %s", expected_triggered_requirements)
159+
logger.debug(
160+
"Expected triggered requirements: %s", expected_triggered_requirements
161+
)
143162
logger.debug("Expected triggered issues: %s", expected_triggered_issues)
144163
logger.debug("Failed requirements: %s", failed_requirements)
145164
logger.debug("Detected issues: %s", detected_issues)

0 commit comments

Comments
 (0)