Source: pykwalify
Version: 1.7.0-3
Severity: important
User: [email protected]
Usertags: pytest-v6
Hi,
pykwalify FTBFS with pytest 6 in experimental because it uses a feature
that has been removed:
https://docs.pytest.org/en/stable/deprecations.html#raises-warns-with-a-string-as-the-second-argument
The top of the error log below has more details.
> I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build;
> python3.9 -m pytest tests
> ============================= test session starts
> ==============================
> platform linux -- Python 3.9.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collected 47 items
>
> tests/test_cli.py .. [
> 4%]
> tests/test_core.py ...........F. [
> 31%]
> tests/test_core_methods.py .... [
> 40%]
> tests/test_exceptions.py .. [
> 44%]
> tests/test_rule.py ....................... [
> 93%]
> tests/test_types.py . [
> 95%]
> tests/test_unicode.py ..
> [100%]
>
> =================================== FAILURES
> ===================================
> _______________________ TestCore.test_multi_file_support
> _______________________
>
> self = <tests.test_core.TestCore object at 0x7f0c6575fcd0>
>
> def test_multi_file_support(self):
> """
> This should test that multiple files is supported correctly
> """
> pass_tests = [
> # Test that include directive can be used at top level of the
> schema
> (
> [
> self.f("partial_schemas", "1s-schema.yaml"),
> self.f("partial_schemas", "1s-partials.yaml"),
> ],
> self.f("partial_schemas", "1s-data.yaml"),
> {
> 'sequence': [{'include': 'fooone'}],
> 'type': 'seq',
> }
> ),
> # # This test that include directive works inside sequence
> # ([self.f("33a.yaml"), self.f("33b.yaml")], self.f("33c.yaml"),
> {'sequence': [{'include': 'fooone'}], 'type': 'seq'}),
> # This test recursive schemas
> (
> [
> self.f("partial_schemas", "2s-schema.yaml"),
> self.f("partial_schemas", "2s-partials.yaml"),
> ],
> self.f("partial_schemas", "2s-data.yaml"),
> {
> 'sequence': [{'include': 'fooone'}],
> 'type': 'seq',
> }
> ),
> # This tests that you can include a partial schema alongside
> other rules in a map
> (
> [
> self.f("partial_schemas", "7s-schema.yaml"),
> ],
> self.f("partial_schemas", "7s-data.yaml"),
> {
> 'type': 'map',
> 'mapping': {
> 'foo': {
> 'type': 'str',
> 'required': True
> },
> 'bar': {
> 'include': 'bar'
> }
> }
> }
> )
> ]
>
> failing_tests = [
> # Test include inside partial schema
> (
> [
> self.f("partial_schemas", "1f-schema.yaml"),
> self.f("partial_schemas", "1f-partials.yaml")
> ],
> self.f("partial_schemas", "1f-data.yaml"),
> SchemaError,
> ["Cannot find partial schema with name 'fooonez'. Existing
> partial schemas: 'bar, fooone, foothree, footwo'. Path: '/0'"]
> ),
> (
> [
> self.f('partial_schemas', '2f-schema.yaml')
> ],
> self.f('partial_schemas', '2f-data.yaml'),
> SchemaError,
> ["Value 'True' is not of type 'str'. Path: '/0'"]
> ),
> (
> [
> self.f('partial_schemas', '3f-schema.yaml')
> ],
> self.f('partial_schemas', '3f-data.yaml'),
> SchemaError,
> ["Value 'True' is not of type 'str'. Path: ''"]
> ),
> (
> [
> self.f('partial_schemas', '4f-schema.yaml')
> ],
> self.f('partial_schemas', '4f-data.yaml'),
> SchemaError,
> ["Value 'True' is not of type 'str'. Path: '/0/foo/0/bar'"]
> ),
> (
> [
> self.f('partial_schemas', '5f-schema.yaml')
> ],
> self.f('partial_schemas', '5f-data.yaml'),
> SchemaError,
> ["Value 'True' is not of type 'str'. Path: '/0/0/0/0'"]
> ),
> (
> [
> self.f('partial_schemas', '6f-schema.yaml')
> ],
> self.f('partial_schemas', '6f-data.yaml'),
> SchemaError,
> ["Value 'True' is not of type 'str'. Path:
> '/foo/bar/qwe/ewq'"]
> )
> ]
>
> for passing_test in pass_tests:
> try:
> c = Core(source_file=passing_test[1],
> schema_files=passing_test[0])
> c.validate()
> compare(c.validation_errors, [], prefix="No validation errors
> should exist...")
> except Exception as e:
> print("ERROR RUNNING FILE: {0} : {1}".format(passing_test[0],
> passing_test[1]))
> raise e
>
> # This serve as an extra schema validation that tests more
> complex structures then testrule.py do
> compare(c.root_rule.schema_str, passing_test[2], prefix="Parsed
> rules is not correct, something have changed...")
>
> for failing_test in failing_tests:
>> with pytest.raises(failing_test[2], message="Test files: {0} :
>> {1}".format(", ".join(failing_test[0]), failing_test[1])):
> E TypeError: Unexpected keyword arguments passed to pytest.raises:
> message
> E Use context-manager form instead?
>
> tests/test_core.py:339: TypeError
> =============================== warnings summary
> ===============================
> pykwalify/core.py:7
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/pykwalify/core.py:7:
> DeprecationWarning: the imp module is deprecated in favour of importlib; see
> the module's documentation for alternative uses
> import imp
>
> pykwalify/rule.py:343
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/pykwalify/rule.py:343:
> SyntaxWarning: 'tuple' object is not callable; perhaps you missed a comma?
> ('nullable', 'nullable')
>
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info
> ============================
> FAILED tests/test_core.py::TestCore::test_multi_file_support - TypeError:
> Une...
> =================== 1 failed, 46 passed, 2 warnings in 0.64s
> ===================
> E: pybuild pybuild:353: test: plugin distutils failed with: exit code=1: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9
> returned exit code 13
> make: *** [debian/rules:8: build] Error 25
> dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
_______________________________________________
Python-modules-team mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/python-modules-team