============================= test session starts ============================== platform linux -- Python 3.10.1, pytest-6.2.5, py-1.11.0, pluggy-0.13.1 -- /usr/bin/python cachedir: .pytest_cache rootdir: /build/python-prance/src/prance-0.21.8.0, configfile: setup.cfg, testpaths: tests plugins: cov-2.12.1 collecting ... collected 163 items tests/test_backends.py::test_bad_backend FAILED [ 0%] tests/test_backends.py::test_flex_issue_5_integer_keys SKIPPED (Miss...) [ 1%] tests/test_backends.py::test_flex_validate_success SKIPPED (Missing ...) [ 1%] tests/test_backends.py::test_flex_validate_failure SKIPPED (Missing ...) [ 2%] tests/test_backends.py::test_swagger_spec_validator_issue_5_integer_keys SKIPPED [ 3%] tests/test_backends.py::test_swagger_spec_validator_validate_success SKIPPED [ 3%] tests/test_backends.py::test_swagger_spec_validator_validate_failure SKIPPED [ 4%] tests/test_backends.py::test_openapi_spec_validator_issue_5_integer_keys SKIPPED [ 4%] tests/test_backends.py::test_openapi_spec_validator_issue_36_error_reporting SKIPPED [ 5%] tests/test_backends.py::test_openapi_spec_validator_validate_success SKIPPED [ 6%] tests/test_backends.py::test_openapi_spec_validator_validate_failure SKIPPED [ 6%] tests/test_backends.py::test_openapi_spec_validator_issue_20_spec_version_handling SKIPPED [ 7%] tests/test_base_parser.py::test_load_fail FAILED [ 7%] tests/test_base_parser.py::test_parse_fail FAILED [ 8%] tests/test_base_parser.py::test_version_fail FAILED [ 9%] tests/test_base_parser.py::test_filename_or_spec PASSED [ 9%] tests/test_base_parser.py::test_load_and_parse_valid SKIPPED (Backen...) [ 10%] tests/test_base_parser.py::test_load_and_parse_lazy SKIPPED (Backend...) [ 11%] tests/test_base_parser.py::test_yaml_valid SKIPPED (Backends missing.) [ 11%] tests/test_base_parser.py::test_json_valid SKIPPED (Backends missing.) [ 12%] tests/test_base_parser.py::test_cache_specs_mixin SKIPPED (Backends ...) [ 12%] tests/test_base_parser.py::test_relative_urls_from_string SKIPPED (B...) [ 13%] tests/test_cli.py::test_validate_defaults FAILED [ 14%] tests/test_cli.py::test_validate_multiple FAILED [ 14%] tests/test_cli.py::test_validate_no_resolve FAILED [ 15%] tests/test_cli.py::test_validate_output_too_many_inputs FAILED [ 15%] tests/test_cli.py::test_validate_output FAILED [ 16%] tests/test_cli.py::test_compile_defaults FAILED [ 17%] tests/test_cli.py::test_compile_output FAILED [ 17%] tests/test_cli.py::test_convert_defaults FAILED [ 18%] tests/test_cli.py::test_convert_output FAILED [ 19%] tests/test_convert.py::test_convert_petstore_yaml PASSED [ 19%] tests/test_convert.py::test_convert_petstore_json PASSED [ 20%] tests/test_convert.py::test_convert_petstore_yaml_explicit_name PASSED [ 20%] tests/test_convert.py::test_convert_url PASSED [ 21%] tests/test_convert.py::test_convert_spec XFAIL [ 22%] tests/test_convert.py::test_convert_parser_lazy_swagger_backend XFAIL [ 22%] tests/test_convert.py::test_convert_parser_validated SKIPPED (Missin...) [ 23%] tests/test_resolving_parser.py::test_basics SKIPPED (Missing backends) [ 23%] tests/test_resolving_parser.py::test_petstore_resolve SKIPPED (Missi...) [ 24%] tests/test_resolving_parser.py::test_with_externals_resolve SKIPPED [ 25%] tests/test_resolving_parser.py::test_relative_urls_from_string SKIPPED [ 25%] tests/test_resolving_parser.py::test_issue_1_relative_path_references SKIPPED [ 26%] tests/test_resolving_parser.py::test_issue_39_sequence_indices SKIPPED [ 26%] tests/test_resolving_parser.py::test_issue_51_encoding_error SKIPPED [ 27%] tests/test_resolving_parser.py::test_issue_65_partial_resolution_files SKIPPED [ 28%] tests/test_resolving_parser.py::test_issue_83_skip_propagation SKIPPED [ 28%] tests/test_resolving_parser.py::test_value_not_converted_to_boolean SKIPPED [ 29%] tests/test_translating_parser.py::test_local_reference_from_root ERROR [ 30%] tests/test_translating_parser.py::test_file_reference_from_root ERROR [ 30%] tests/test_translating_parser.py::test_local_reference_from_file ERROR [ 31%] tests/test_translating_parser.py::test_same_file_reference_from_file ERROR [ 31%] tests/test_translating_parser.py::test_different_file_reference_from_file ERROR [ 32%] tests/test_translating_parser.py::test_root_file_reference_from_file ERROR [ 33%] tests/test_translating_parser.py::test_root_file_reference_from_root ERROR [ 33%] tests/test_translating_parser.py::test_recursive_reference_in_root ERROR [ 34%] tests/test_translating_parser.py::test_recursive_reference_in_file ERROR [ 34%] tests/test_translating_parser.py::test_nested_recursive_reference_in_file ERROR [ 35%] tests/test_util.py::test_stringify_keys PASSED [ 36%] tests/test_util_exceptions.py::test_reraise_without_value_no_extra_message PASSED [ 36%] tests/test_util_exceptions.py::test_reraise_without_value_extra_message PASSED [ 37%] tests/test_util_exceptions.py::test_reraise_with_value_no_extra_message PASSED [ 38%] tests/test_util_exceptions.py::test_reraise_with_value_extra_message PASSED [ 38%] tests/test_util_exceptions.py::test_reraise_with_empty_value_string_extra_message PASSED [ 39%] tests/test_util_formats.py::test_format_info_yaml PASSED [ 39%] tests/test_util_formats.py::test_format_info_json PASSED [ 40%] tests/test_util_formats.py::test_format_info_bad_format PASSED [ 41%] tests/test_util_formats.py::test_parse_details_yaml PASSED [ 41%] tests/test_util_formats.py::test_parse_yaml PASSED [ 42%] tests/test_util_formats.py::test_parse_yaml_ctype PASSED [ 42%] tests/test_util_formats.py::test_parse_json PASSED [ 43%] tests/test_util_formats.py::test_parse_json_ctype PASSED [ 44%] tests/test_util_formats.py::test_parse_unknown PASSED [ 44%] tests/test_util_formats.py::test_parse_unknown_ext PASSED [ 45%] tests/test_util_formats.py::test_parse_unknown_ctype PASSED [ 46%] tests/test_util_formats.py::test_serialize_json PASSED [ 46%] tests/test_util_formats.py::test_serialize_yaml PASSED [ 47%] tests/test_util_formats.py::test_serialize_json_ctype PASSED [ 47%] tests/test_util_formats.py::test_serialize_yaml_ctype PASSED [ 48%] tests/test_util_fs.py::test_canonical PASSED [ 49%] tests/test_util_fs.py::test_to_posix_rel PASSED [ 49%] tests/test_util_fs.py::test_to_posix_abs_posix PASSED [ 50%] tests/test_util_fs.py::test_to_posix_abs_win32 SKIPPED (Skip on !win32) [ 50%] tests/test_util_fs.py::test_from_posix_rel PASSED [ 51%] tests/test_util_fs.py::test_from_posix_abs_posix PASSED [ 52%] tests/test_util_fs.py::test_from_posix_abs_win32 SKIPPED (Skip on !w...) [ 52%] tests/test_util_fs.py::test_abspath_basics PASSED [ 53%] tests/test_util_fs.py::test_abspath_relative PASSED [ 53%] tests/test_util_fs.py::test_abspath_relative_dir PASSED [ 54%] tests/test_util_fs.py::test_detect_encoding PASSED [ 55%] tests/test_util_fs.py::test_issue_51_detect_encoding PASSED [ 55%] tests/test_util_fs.py::test_load_nobom PASSED [ 56%] tests/test_util_fs.py::test_load_utf8bom PASSED [ 57%] tests/test_util_fs.py::test_load_utf8bom_override PASSED [ 57%] tests/test_util_fs.py::test_write_file PASSED [ 58%] tests/test_util_fs.py::test_write_file_bom PASSED [ 58%] tests/test_util_fs.py::test_valid_pathname PASSED [ 59%] tests/test_util_iterators.py::test_item_iterator PASSED [ 60%] tests/test_util_iterators.py::test_item_iterator_empty PASSED [ 60%] tests/test_util_iterators.py::test_reference_iterator_empty_dict PASSED [ 61%] tests/test_util_iterators.py::test_reference_iterator_dict_without_references PASSED [ 61%] tests/test_util_iterators.py::test_reference_iterator_dict_with_references PASSED [ 62%] tests/test_util_path.py::test_get_bad_path PASSED [ 63%] tests/test_util_path.py::test_get_value_default PASSED [ 63%] tests/test_util_path.py::test_get_value_no_default PASSED [ 64%] tests/test_util_path.py::test_get_collection_default PASSED [ 65%] tests/test_util_path.py::test_get_collection_no_default PASSED [ 65%] tests/test_util_path.py::test_get_mapping_default PASSED [ 66%] tests/test_util_path.py::test_set_bad_path PASSED [ 66%] tests/test_util_path.py::test_set_value PASSED [ 67%] tests/test_util_path.py::test_set_sequence_no_create PASSED [ 68%] tests/test_util_path.py::test_set_sequence_create PASSED [ 68%] tests/test_util_path.py::test_set_mapping_no_create PASSED [ 69%] tests/test_util_path.py::test_set_mapping_create PASSED [ 69%] tests/test_util_path.py::test_set_mixed_no_create PASSED [ 70%] tests/test_util_path.py::test_set_mixed_create PASSED [ 71%] tests/test_util_path.py::test_set_mixed_create_no_fill PASSED [ 71%] tests/test_util_path.py::test_get_informative_key_error PASSED [ 72%] tests/test_util_path.py::test_get_informative_index_error PASSED [ 73%] tests/test_util_resolver.py::test_resolver_noname PASSED [ 73%] tests/test_util_resolver.py::test_resolver_named PASSED [ 74%] tests/test_util_resolver.py::test_resolver_missing_reference PASSED [ 74%] tests/test_util_resolver.py::test_resolver_recursive_objects PASSED [ 75%] tests/test_util_resolver.py::test_resolver_recursive_files PASSED [ 76%] tests/test_util_resolver.py::test_recursion_limit_do_not_recurse_raise PASSED [ 76%] tests/test_util_resolver.py::test_recursion_limit_do_not_recurse_ignore PASSED [ 77%] tests/test_util_resolver.py::test_recursion_limit_set_limit_ignore PASSED [ 77%] tests/test_util_resolver.py::test_recursion_limit_do_not_recurse_raise_files PASSED [ 78%] tests/test_util_resolver.py::test_recursion_limit_do_not_recurse_ignore_files PASSED [ 79%] tests/test_util_resolver.py::test_recursion_limit_set_limit_ignore_files PASSED [ 79%] tests/test_util_resolver.py::test_issue_22_empty_path PASSED [ 80%] tests/test_util_resolver.py::test_issue_38_tilde_one PASSED [ 80%] tests/test_util_resolver.py::test_issue_23_partial_resolution_all PASSED [ 81%] tests/test_util_resolver.py::test_issue_23_partial_resolution_internal PASSED [ 82%] tests/test_util_resolver.py::test_issue_23_partial_resolution_files PASSED [ 82%] tests/test_util_resolver.py::test_issue_65_partial_resolution_files SKIPPED [ 83%] tests/test_util_resolver.py::test_issue_23_partial_resolution_http PASSED [ 84%] tests/test_util_resolver.py::test_issue_23_partial_resolution_invalid_scheme PASSED [ 84%] tests/test_util_resolver.py::test_issue_69_urlparse_error PASSED [ 85%] tests/test_util_resolver.py::test_issue_72_nonexistent_file_error PASSED [ 85%] tests/test_util_resolver.py::test_issue_78_resolve_internal_bug SKIPPED [ 86%] tests/test_util_resolver.py::test_issue_77_translate_external SKIPPED [ 87%] tests/test_util_resolver.py::test_issue_77_translate_external_refs_internal SKIPPED [ 87%] tests/test_util_resolver.py::test_issue_77_internal_refs_unresolved SKIPPED [ 88%] tests/test_util_resolver.py::test_issue_205_swagger_resolution_failure XFAIL [ 88%] tests/test_util_resolver.py::test_resolve_package_ref PASSED [ 89%] tests/test_util_url.py::test_absurl_http PASSED [ 90%] tests/test_util_url.py::test_absurl_http_fragment PASSED [ 90%] tests/test_util_url.py::test_absurl_file_posix PASSED [ 91%] tests/test_util_url.py::test_absurl_file_win32 SKIPPED (Skip on !win32) [ 92%] tests/test_util_url.py::test_absurl_absfile_posix PASSED [ 92%] tests/test_util_url.py::test_absurl_absfile_win32 SKIPPED (Skip on !...) [ 93%] tests/test_util_url.py::test_absurl_fragment PASSED [ 93%] tests/test_util_url.py::test_absurl_relfile PASSED [ 94%] tests/test_util_url.py::test_absurl_paths_posix PASSED [ 95%] tests/test_util_url.py::test_absurl_paths_win32 SKIPPED (Skip on !win32) [ 95%] tests/test_util_url.py::test_urlresource PASSED [ 96%] tests/test_util_url.py::test_split_url_reference PASSED [ 96%] tests/test_util_url.py::test_fetch_url_file PASSED [ 97%] tests/test_util_url.py::test_fetch_url_cached PASSED [ 98%] tests/test_util_url.py::test_fetch_url_text_cached PASSED [ 98%] tests/test_util_url.py::test_fetch_url_http PASSED [ 99%] tests/test_util_url.py::test_fetch_url_python PASSED [100%] ==================================== ERRORS ==================================== _______________ ERROR at setup of test_local_reference_from_root _______________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _______________ ERROR at setup of test_file_reference_from_root ________________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _______________ ERROR at setup of test_local_reference_from_file _______________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________ ERROR at setup of test_same_file_reference_from_file _____________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError __________ ERROR at setup of test_different_file_reference_from_file ___________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________ ERROR at setup of test_root_file_reference_from_file _____________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________ ERROR at setup of test_root_file_reference_from_root _____________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ______________ ERROR at setup of test_recursive_reference_in_root ______________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ______________ ERROR at setup of test_recursive_reference_in_file ______________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError __________ ERROR at setup of test_nested_recursive_reference_in_file ___________ request = > @fixture def tester(request): pattern = r"test_(.+)" test_function_name = request.node.name name_match = match(pattern, test_function_name) test_name = name_match[1] file_name = f"{test_name}.spec.yaml" path = join("tests", "specs", "translating_parser", file_name) > return SpecificationTester(path) tests/test_translating_parser.py:18: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_translating_parser.py:46: in __init__ parser = _TranslatingParser(url) prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError =================================== FAILURES =================================== _______________________________ test_bad_backend _______________________________ def test_bad_backend(): with pytest.raises(ValueError): > BaseParser("tests/specs/petstore.yaml", backend="does_not_exist") tests/test_backends.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ________________________________ test_load_fail ________________________________ def test_load_fail(): from prance.util.url import ResolutionError with pytest.raises(ResolutionError): > BaseParser("tests/specs/missing.yaml") tests/test_base_parser.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _______________________________ test_parse_fail ________________________________ def test_parse_fail(): with pytest.raises(ValidationError): > BaseParser( spec_string="""--- invalid 'a'sda YAML""" ) tests/test_base_parser.py:40: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ______________________________ test_version_fail _______________________________ def test_version_fail(): with pytest.raises(ValidationError): > BaseParser( spec_string="""--- openapi: 4.0.0""" ) tests/test_base_parser.py:48: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/__init__.py:108: in __init__ self.backend = self.options.get("backend", default_validation_backend()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ____________________________ test_validate_defaults ____________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_validate_defaults(runner): > from prance import cli tests/test_cli.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ____________________________ test_validate_multiple ____________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_validate_multiple(runner): > from prance import cli tests/test_cli.py:41: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ___________________________ test_validate_no_resolve ___________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_validate_no_resolve(runner): > from prance import cli tests/test_cli.py:59: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________________ test_validate_output_too_many_inputs _____________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_validate_output_too_many_inputs(runner): > from prance import cli tests/test_cli.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________________________ test_validate_output _____________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_validate_output(runner): > from prance import cli tests/test_cli.py:85: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ____________________________ test_compile_defaults _____________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_compile_defaults(runner): > from prance import cli tests/test_cli.py:120: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________________________ test_compile_output ______________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") def test_compile_output(runner): > from prance import cli tests/test_cli.py:139: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError ____________________________ test_convert_defaults _____________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") @pytest.mark.requires_network() def test_convert_defaults(runner): > from prance import cli tests/test_cli.py:175: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError _____________________________ test_convert_output ______________________________ runner = @pytest.mark.skipif(none_of("click"), reason="Click does not exist") @pytest.mark.requires_network() def test_convert_output(runner): > from prance import cli tests/test_cli.py:192: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ prance/cli.py:129: in default=default_validation_backend(), _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def default_validation_backend(): """Return the default validation backend, or raise an error.""" backends = validation_backends() if len(backends) <= 0: # pragma: nocover > raise RuntimeError( "No validation backend available! Install one of " '"flex", "openapi-spec-validator" or "swagger-spec-validator".' ) E RuntimeError: No validation backend available! Install one of "flex", "openapi-spec-validator" or "swagger-spec-validator". prance/util/__init__.py:63: RuntimeError =============================== warnings summary =============================== tests/test_convert.py: 248 warnings /usr/lib/python3.10/site-packages/packaging/version.py:111: DeprecationWarning: Creating a LegacyVersion has been deprecated and will be removed in the next major release warnings.warn( -- Docs: https://docs.pytest.org/en/stable/warnings.html ---------- coverage: platform linux, python 3.10.1-final-0 ----------- Name Stmts Miss Cover Missing --------------------------------------------------------- prance/__init__.py 102 58 43% 109-116, 126-146, 150-186, 189-198, 264-269, 289-291, 299-322, 328-334 prance/cli.py 115 96 17% 20-23, 29-55, 60-73, 86-94, 97-115, 136-308 prance/convert.py 38 17 55% 113-146 prance/mixins.py 29 16 45% 30-42, 62-66, 86-90 prance/util/__init__.py 27 1 96% 67 prance/util/exceptions.py 17 0 100% prance/util/formats.py 83 0 100% prance/util/fs.py 89 0 100% prance/util/iterators.py 20 0 100% prance/util/path.py 83 0 100% prance/util/resolver.py 99 11 89% 117-122, 174-175, 185-187, 274 prance/util/translator.py 68 68 0% 3-162 prance/util/url.py 104 2 98% 249-251 --------------------------------------------------------- TOTAL 874 269 69% FAIL Required test coverage of 90% not reached. Total coverage: 69.22% =========================== short test summary info ============================ FAILED tests/test_backends.py::test_bad_backend - RuntimeError: No validation... FAILED tests/test_base_parser.py::test_load_fail - RuntimeError: No validatio... FAILED tests/test_base_parser.py::test_parse_fail - RuntimeError: No validati... FAILED tests/test_base_parser.py::test_version_fail - RuntimeError: No valida... FAILED tests/test_cli.py::test_validate_defaults - RuntimeError: No validatio... FAILED tests/test_cli.py::test_validate_multiple - RuntimeError: No validatio... FAILED tests/test_cli.py::test_validate_no_resolve - RuntimeError: No validat... FAILED tests/test_cli.py::test_validate_output_too_many_inputs - RuntimeError... FAILED tests/test_cli.py::test_validate_output - RuntimeError: No validation ... FAILED tests/test_cli.py::test_compile_defaults - RuntimeError: No validation... FAILED tests/test_cli.py::test_compile_output - RuntimeError: No validation b... FAILED tests/test_cli.py::test_convert_defaults - RuntimeError: No validation... FAILED tests/test_cli.py::test_convert_output - RuntimeError: No validation b... ERROR tests/test_translating_parser.py::test_local_reference_from_root - Runt... ERROR tests/test_translating_parser.py::test_file_reference_from_root - Runti... ERROR tests/test_translating_parser.py::test_local_reference_from_file - Runt... ERROR tests/test_translating_parser.py::test_same_file_reference_from_file - ... ERROR tests/test_translating_parser.py::test_different_file_reference_from_file ERROR tests/test_translating_parser.py::test_root_file_reference_from_file - ... ERROR tests/test_translating_parser.py::test_root_file_reference_from_root - ... ERROR tests/test_translating_parser.py::test_recursive_reference_in_root - Ru... ERROR tests/test_translating_parser.py::test_recursive_reference_in_file - Ru... ERROR tests/test_translating_parser.py::test_nested_recursive_reference_in_file = 13 failed, 99 passed, 38 skipped, 3 xfailed, 248 warnings, 10 errors in 34.80s = ==> ERROR: A failure occurred in check().  Aborting...