Source: pykwalify Version: 1.7.0-3 Severity: important User: pyt...@packages.debian.org 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