diff --git a/src/check_datapackage/check.py b/src/check_datapackage/check.py index 2d3a8c6c..49db8600 100644 --- a/src/check_datapackage/check.py +++ b/src/check_datapackage/check.py @@ -89,11 +89,12 @@ class for more details, especially about the default values. issues = _check_object_against_json_schema(properties, schema) issues += apply_extensions(properties, config.extensions) issues = exclude(issues, config.exclusions, properties) + issues = sorted(set(issues)) if error and issues: raise DataPackageError(issues) - return sorted(set(issues)) + return issues def _set_should_fields_to_required(schema: dict[str, Any]) -> dict[str, Any]: diff --git a/tests/test_check.py b/tests/test_check.py index aaee4e68..1038d91e 100644 --- a/tests/test_check.py +++ b/tests/test_check.py @@ -10,7 +10,7 @@ example_resource_properties, ) from check_datapackage.exclusion import Exclusion -from check_datapackage.extensions import Extensions +from check_datapackage.extensions import Extensions, RequiredCheck from check_datapackage.internals import _map from tests.test_extensions import lowercase_check @@ -636,3 +636,19 @@ def test_error_as_true(): with raises(DataPackageError): check(properties, error=True) + + +def test_error_true_no_duplicate_issues(): + resources_required = RequiredCheck( + jsonpath="$.resources", + message="'resources' is a required property", + ) + + with raises(DataPackageError) as error: + check( + {}, + error=True, + config=Config(extensions=Extensions(required_checks=[resources_required])), + ) + + assert str(error).count(resources_required.message) == 1