diff --git a/factory_tests.patch b/factory_tests.patch new file mode 100644 index 0000000..c6f42b7 --- /dev/null +++ b/factory_tests.patch @@ -0,0 +1,117 @@ +--- a/tests/test_all.py ++++ b/tests/test_all.py +@@ -13,7 +13,7 @@ if __name__ == '__main__': + import os + import platform + +- from xmlschema.testing import tests_factory, make_schema_test_class, \ ++ from xmlschema.testing import factory_tests, make_schema_test_class, \ + make_validation_test_class, get_test_program_args_parser + + DEFAULT_TESTFILES = os.path.join(os.path.dirname(__file__), 'test_cases/testfiles') +@@ -46,7 +46,7 @@ if __name__ == '__main__': + + args = get_test_program_args_parser(DEFAULT_TESTFILES).parse_args() + +- schema_tests = tests_factory( ++ schema_tests = factory_tests( + test_class_builder=make_schema_test_class, + testfiles=args.testfiles, + suffix='xsd', +@@ -54,7 +54,7 @@ if __name__ == '__main__': + ) + globals().update(schema_tests) + +- validation_tests = tests_factory( ++ validation_tests = factory_tests( + test_class_builder=make_validation_test_class, + testfiles=args.testfiles, + suffix='xml', +--- a/tests/test_schemas.py ++++ b/tests/test_schemas.py +@@ -13,7 +13,7 @@ + import os + + from xmlschema.testing import get_test_program_args_parser, \ +- tests_factory, make_schema_test_class ++ factory_tests, make_schema_test_class + + DEFAULT_TESTFILES = os.path.join(os.path.dirname(__file__), 'test_cases/testfiles') + +@@ -24,7 +24,7 @@ if __name__ == '__main__': + + args = get_test_program_args_parser(DEFAULT_TESTFILES).parse_args() + +- schema_tests = tests_factory( ++ schema_tests = factory_tests( + test_class_builder=make_schema_test_class, + testfiles=args.testfiles, + suffix='xsd', +@@ -47,7 +47,7 @@ if __name__ == '__main__': + catchbreak=args.catchbreak, buffer=args.buffer) + else: + # Creates schema tests from XSD files +- globals().update(tests_factory( ++ globals().update(factory_tests( + test_class_builder=make_schema_test_class, + suffix='xsd', + testfiles=DEFAULT_TESTFILES +--- a/tests/test_validation.py ++++ b/tests/test_validation.py +@@ -13,7 +13,7 @@ + import os + + from xmlschema.testing import get_test_program_args_parser, \ +- tests_factory, make_validation_test_class ++ factory_tests, make_validation_test_class + + DEFAULT_TESTFILES = os.path.join(os.path.dirname(__file__), 'test_cases/testfiles') + +@@ -24,7 +24,7 @@ if __name__ == '__main__': + + args = get_test_program_args_parser(DEFAULT_TESTFILES).parse_args() + +- validation_tests = tests_factory( ++ validation_tests = factory_tests( + test_class_builder=make_validation_test_class, + testfiles=args.testfiles, + suffix='xml', +@@ -47,7 +47,7 @@ if __name__ == '__main__': + catchbreak=args.catchbreak, buffer=args.buffer) + else: + # Creates schema tests from XSD files +- globals().update(tests_factory( ++ globals().update(factory_tests( + test_class_builder=make_validation_test_class, + suffix='xml', + testfiles=DEFAULT_TESTFILES +--- a/xmlschema/testing/__init__.py ++++ b/xmlschema/testing/__init__.py +@@ -23,7 +23,7 @@ from urllib.error import URLError + from .case_class import XsdValidatorTestCase + from .builders import make_schema_test_class, make_validation_test_class + from .factory import get_test_args, xsd_version_number, defuse_data, \ +- get_test_program_args_parser, get_test_line_args_parser, tests_factory ++ get_test_program_args_parser, get_test_line_args_parser, factory_tests + from .observers import SchemaObserver, ObservedXMLSchema10, ObservedXMLSchema11 + + +@@ -46,6 +46,6 @@ SKIP_REMOTE_TESTS = not has_network_acce + __all__ = [ + 'XsdValidatorTestCase', 'make_schema_test_class', 'make_validation_test_class', + 'get_test_args', 'xsd_version_number', 'defuse_data', 'get_test_program_args_parser', +- 'get_test_line_args_parser', 'tests_factory', 'SchemaObserver', 'ObservedXMLSchema10', ++ 'get_test_line_args_parser', 'factory_tests', 'SchemaObserver', 'ObservedXMLSchema10', + 'ObservedXMLSchema11', 'has_network_access', 'SKIP_REMOTE_TESTS', + ] +--- a/xmlschema/testing/factory.py ++++ b/xmlschema/testing/factory.py +@@ -117,7 +117,7 @@ def get_test_line_args_parser(): + return parser + + +-def tests_factory(test_class_builder, testfiles, suffix, check_with_lxml=False): ++def factory_tests(test_class_builder, testfiles, suffix, check_with_lxml=False): + """ + Factory function for file based schema/validation cases. + diff --git a/location_testing_script.patch b/location_testing_script.patch new file mode 100644 index 0000000..ddc2c38 --- /dev/null +++ b/location_testing_script.patch @@ -0,0 +1,23 @@ +--- + tests/test_etree_import.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/tests/test_etree_import.py ++++ b/tests/test_etree_import.py +@@ -15,7 +15,6 @@ import importlib + import subprocess + import platform + +- + def is_element_tree_imported(): + return '_elementtree' in sys.modules or 'xml.etree.ElementTree' in sys.modules + +@@ -42,7 +41,7 @@ class TestElementTreeImport(unittest.Tes + def test_element_tree_import_script(self): + test_dir = os.path.dirname(__file__) or '.' + +- cmd = [os.path.join(test_dir, 'check_etree_import.py')] ++ cmd = [sys.executable, os.path.join(test_dir, 'check_etree_import.py')] + process = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + stderr = process.stderr.decode('utf-8') diff --git a/python-xmlschema.changes b/python-xmlschema.changes index 824939e..b11dd69 100644 --- a/python-xmlschema.changes +++ b/python-xmlschema.changes @@ -7,6 +7,11 @@ Mon Nov 9 15:32:59 UTC 2020 - Matej Cepl - Refactoring of XMLResource to support ElementTree-like XPath API on both full and lazy modes - Remove skip_network_tests.patch +- Add patches + - factory_tests.patch rename tests_factory to tests so it is + not recognized by pytest + - remove_shebang.patch just cleaning superfluous shebang + - location_testing_script.patch use actual Python executable ------------------------------------------------------------------- Sun Oct 11 16:18:52 UTC 2020 - Matej Cepl diff --git a/python-xmlschema.spec b/python-xmlschema.spec index 76809dd..f7cc7a6 100644 --- a/python-xmlschema.spec +++ b/python-xmlschema.spec @@ -25,6 +25,15 @@ Summary: An XML Schema validator and decoder License: MIT URL: https://github.com/sissaschool/xmlschema Source: https://files.pythonhosted.org/packages/source/x/xmlschema/xmlschema-%{version}.tar.gz +# PATCH-FIX-UPSTREAM factory_tests.patch gh#sissaschool/xmlschema#210 mcepl@suse.com +# rename tests_factory to factory_tests so it is not discovered by pytest. +Patch0: factory_tests.patch +# PATCH-FIX-UPSTREAM remove_shebang.patch gh#sissaschool/xmlschema#210 mcepl@suse.com +# Remove superfluous shebang +Patch1: remove_shebang.patch +# PATCH-FIX-UPSTREAM location_testing_script.patch gh#sissaschool/xmlschema#210 mcepl@suse.com +# this patch makes things totally awesome +Patch2: location_testing_script.patch BuildRequires: %{python_module elementpath >= 1.4.0} BuildRequires: %{python_module lxml} BuildRequires: %{python_module pip} @@ -52,8 +61,6 @@ sed -i -e 's:~=:>=:' setup.py rm tests/check_memory.py rm tests/test_memory.py -sed -i -e '1s@/usr/bin/env python@/usr/bin/python@' xmlschema/testing/builders.py - %build export LANG="en_US.UTF8" %python_build @@ -71,11 +78,11 @@ done export LANG="en_US.UTF8" # test_element_tree_import_script is (easily workaroundable) gh#sissaschool/xmlschema#167 # tests_factory setup is broken -SKIP_TESTS="test_element_tree_import_script or tests_factory" +# SKIP_TESTS="test_element_tree_import_script" # gh#sissaschool/xmlschema#210 -SKIP_TESTS="$SKIP_TESTS or test_imported_element_tree or test_xml_resource_defuse" +SKIP_TESTS="test_imported_element_tree or test_xml_resource_defuse" SKIP_TESTS="$SKIP_TESTS or test_xml_resource_from_string" -%pytest -k "not ($SKIP_TESTS)" tests +%pytest -s -k "not ($SKIP_TESTS)" tests %post %python_install_alternative xmlschema-json2xml diff --git a/remove_shebang.patch b/remove_shebang.patch new file mode 100644 index 0000000..81fbf6f --- /dev/null +++ b/remove_shebang.patch @@ -0,0 +1,8 @@ +--- a/xmlschema/testing/builders.py ++++ b/xmlschema/testing/builders.py +@@ -1,5 +1,3 @@ +-#!/usr/bin/env python +-# + # Copyright (c), 2016-2020, SISSA (International School for Advanced Studies). + # All rights reserved. + # This file is distributed under the terms of the MIT License.