From e5b6917c11e9645e2607921f2dd9f0f14c301db360c410d54538c7c598380f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Fri, 1 Feb 2019 13:32:19 +0000 Subject: [PATCH] - Add patches from Fedora: * always-use-fully-versioned-python-command-in-tests.patch * no-coverage.patch * 0001-Fix-tests-for-the-drop-the-unversion-python.patch * pep-0538-test-fix.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-sh?expand=0&rev=18 --- ...ts-for-the-drop-the-unversion-python.patch | 29 +++++++ ...ly-versioned-python-command-in-tests.patch | 77 +++++++++++++++++++ no-coverage.patch | 61 +++++++++++++++ pep-0538-test-fix.patch | 50 ++++++++++++ python-sh.changes | 9 +++ python-sh.spec | 13 ++-- 6 files changed, 232 insertions(+), 7 deletions(-) create mode 100644 0001-Fix-tests-for-the-drop-the-unversion-python.patch create mode 100644 always-use-fully-versioned-python-command-in-tests.patch create mode 100644 no-coverage.patch create mode 100644 pep-0538-test-fix.patch diff --git a/0001-Fix-tests-for-the-drop-the-unversion-python.patch b/0001-Fix-tests-for-the-drop-the-unversion-python.patch new file mode 100644 index 0000000..b2ffa36 --- /dev/null +++ b/0001-Fix-tests-for-the-drop-the-unversion-python.patch @@ -0,0 +1,29 @@ +From 392a0471ed19d71a226442270127a9414ccc7908 Mon Sep 17 00:00:00 2001 +From: Pierre-Yves Chibon +Date: Tue, 24 Jul 2018 17:39:58 +0200 +Subject: [PATCH] Fix tests for the drop the unversion python + +Signed-off-by: Pierre-Yves Chibon +--- + test.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/test.py b/test.py +index 68ef40c..71994fa 100644 +--- a/test.py ++++ b/test.py +@@ -3007,7 +3007,10 @@ class ExecutionContextTests(unittest.TestCase): + import sh + _sh = sh() + omg = _sh +- from omg import python ++ if IS_PY2: ++ from omg import python2 ++ else: ++ from omg import python3 + + def test_importer_only_works_with_sh(self): + def unallowed_import(): +-- +2.14.4 + diff --git a/always-use-fully-versioned-python-command-in-tests.patch b/always-use-fully-versioned-python-command-in-tests.patch new file mode 100644 index 0000000..283cfff --- /dev/null +++ b/always-use-fully-versioned-python-command-in-tests.patch @@ -0,0 +1,77 @@ +From 94774d2574668aa9f7bc775cc13087a7aed03f12 Mon Sep 17 00:00:00 2001 +From: Carl George +Date: Wed, 20 Jun 2018 11:02:01 -0500 +Subject: [PATCH] always use fully versioned python command in tests + +--- + test.py | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/test.py b/test.py +index 68ef40c..ef4f589 100644 +--- a/test.py ++++ b/test.py +@@ -93,13 +93,13 @@ def append_module_path(env, m): + ioStringIO = StringIO + from io import BytesIO as cStringIO + iocStringIO = cStringIO +- python = sh.Command(sh.which("python%d.%d" % sys.version_info[:2])) + else: + from StringIO import StringIO + from cStringIO import StringIO as cStringIO + from io import StringIO as ioStringIO + from io import BytesIO as iocStringIO +- python = sh.python ++ ++system_python = sh.Command(sh.which("python%d.%d" % sys.version_info[:2])) + + THIS_DIR = dirname(os.path.abspath(__file__)) + +@@ -108,7 +108,7 @@ def append_module_path(env, m): + # module, and not the system one + baked_env = os.environ.copy() + append_module_path(baked_env, sh) +-python = python.bake(_env=baked_env) ++python = system_python.bake(_env=baked_env) + + + if hasattr(logging, 'NullHandler'): +@@ -1634,10 +1634,10 @@ def test_cmd_eq(self): + + def test_fg(self): + py = create_tmp_test("exit(0)") +- # notice we're using `sh.python`, and not `python`. this is because ++ # notice we're using `system_python`, and not `python`. this is because + # `python` has an env baked into it, and we want `_env` to be None for + # coverage +- sh.python(py.name, _fg=True) ++ system_python(py.name, _fg=True) + + def test_fg_env(self): + py = create_tmp_test(""" +@@ -2058,8 +2058,10 @@ def test_signal_group(self): + """) + + parent = create_tmp_test(""" ++import sys + import sh +-p = sh.python("{child_file}", _bg=True, _new_session=False) ++system_python = sh.Command(sh.which("python%d.%d" % sys.version_info[:2])) ++p = system_python("{child_file}", _bg=True, _new_session=False) + print(p.pid) + print(p.process.pgid) + p.wait() +@@ -2875,11 +2877,11 @@ def test_threaded_with_contexts(self): + def f1(): + with p1: + time.sleep(1) +- results[0] = str(sh.python("one")) ++ results[0] = str(system_python("one")) + + def f2(): + with p2: +- results[1] = str(sh.python("two")) ++ results[1] = str(system_python("two")) + + t1 = threading.Thread(target=f1) + t1.start() diff --git a/no-coverage.patch b/no-coverage.patch new file mode 100644 index 0000000..094293b --- /dev/null +++ b/no-coverage.patch @@ -0,0 +1,61 @@ +diff -Naurp sh-1.12.14.orig/sh.py sh-1.12.14/sh.py +--- sh-1.12.14.orig/sh.py 2017-06-06 21:51:42.000000000 -0500 ++++ sh-1.12.14/sh.py 2017-06-07 08:49:59.350791975 -0500 +@@ -3519,14 +3519,9 @@ if __name__ == "__main__": # pragma: no + + if action in ("test", "travis"): + import test +- coverage = None +- if test.HAS_UNICODE_LITERAL: +- import coverage + + env = os.environ.copy() + env["SH_TESTS_RUNNING"] = "1" +- if coverage: +- test.append_module_path(env, coverage) + + # if we're testing locally, run all versions of python on the system + if action == "test": +diff -Naurp sh-1.12.14.orig/test.py sh-1.12.14/test.py +--- sh-1.12.14.orig/test.py 2017-06-06 21:51:42.000000000 -0500 ++++ sh-1.12.14/test.py 2017-06-07 08:49:59.351791993 -0500 +@@ -6,31 +6,6 @@ IS_PY3 = sys.version_info[0] == 3 + IS_PY2 = not IS_PY3 + MINOR_VER = sys.version_info[1] + +-# coverage doesn't work in python 3.1, 3.2 due to it just being a shit +-# python +-HAS_UNICODE_LITERAL = not (IS_PY3 and MINOR_VER in (1, 2)) +- +-cov = None +-if HAS_UNICODE_LITERAL: +- run_idx = int(os.environ.pop("SH_TEST_RUN_IDX", "0")) +- first_run = run_idx == 0 +- +- import coverage +- +- # for some reason, we can't run auto_data on the first run, or the coverage +- # numbers get really screwed up +- auto_data = True +- if first_run: +- auto_data = False +- +- cov = coverage.Coverage(auto_data=auto_data) +- +- if first_run: +- cov.erase() +- +- cov.start() +- +- + from os.path import exists, join, realpath, dirname, split + import unittest + try: +@@ -3045,6 +3020,4 @@ if __name__ == "__main__": + exit(1) + + finally: +- if cov: +- cov.stop() +- cov.save() ++ pass diff --git a/pep-0538-test-fix.patch b/pep-0538-test-fix.patch new file mode 100644 index 0000000..1ec4b25 --- /dev/null +++ b/pep-0538-test-fix.patch @@ -0,0 +1,50 @@ +diff -Naurp sh-1.12.14.orig/test.py sh-1.12.14/test.py +--- sh-1.12.14.orig/test.py 2017-06-06 21:51:42.000000000 -0500 ++++ sh-1.12.14/test.py 2017-06-07 11:27:04.912212886 -0500 +@@ -515,17 +515,28 @@ while True: + "VERSIONER_PYTHON_VERSION", + ] + ++ # Fedora adds some extra environment variables as well. ++ # See https://www.python.org/dev/peps/pep-0538/ for more info. ++ fedora_cruft = [ ++ "LC_CTYPE", ++ "LANG" ++ ] ++ + # first we test that the environment exists in our child process as + # we've set it + py = create_tmp_test(""" + import os + + osx_cruft = %s ++fedora_cruft = %s + for key in osx_cruft: + try: del os.environ[key] + except: pass ++for key in fedora_cruft: ++ try: del os.environ[key] ++ except: pass + print(os.environ["HERP"] + " " + str(len(os.environ))) +-""" % osx_cruft) ++""" % (osx_cruft, fedora_cruft)) + out = python(py.name, _env=env).strip() + self.assertEqual(out, "DERP 1") + +@@ -534,11 +545,15 @@ import os, sys + sys.path.insert(0, os.getcwd()) + import sh + osx_cruft = %s ++fedora_cruft = %s + for key in osx_cruft: + try: del os.environ[key] + except: pass ++for key in fedora_cruft: ++ try: del os.environ[key] ++ except: pass + print(sh.HERP + " " + str(len(os.environ))) +-""" % osx_cruft) ++""" % (osx_cruft, fedora_cruft)) + out = python(py.name, _env=env, _cwd=THIS_DIR).strip() + self.assertEqual(out, "DERP 1") + diff --git a/python-sh.changes b/python-sh.changes index 409f231..9f811fb 100644 --- a/python-sh.changes +++ b/python-sh.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Fri Feb 1 13:16:33 UTC 2019 - Tomáš Chvátal + +- Add patches from Fedora: + * always-use-fully-versioned-python-command-in-tests.patch + * no-coverage.patch + * 0001-Fix-tests-for-the-drop-the-unversion-python.patch + * pep-0538-test-fix.patch + ------------------------------------------------------------------- Tue Dec 4 12:54:15 UTC 2018 - Matej Cepl diff --git a/python-sh.spec b/python-sh.spec index 89a8376..979a7ca 100644 --- a/python-sh.spec +++ b/python-sh.spec @@ -1,7 +1,7 @@ # # spec file for package python-sh # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,6 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} -%bcond_without test Name: python-sh Version: 1.12.14 Release: 0 @@ -26,12 +25,13 @@ License: MIT Group: Development/Languages/Python URL: https://github.com/amoffat/sh Source: https://files.pythonhosted.org/packages/source/s/sh/sh-%{version}.tar.gz +Patch0: always-use-fully-versioned-python-command-in-tests.patch +Patch1: no-coverage.patch +Patch2: 0001-Fix-tests-for-the-drop-the-unversion-python.patch +Patch3: pep-0538-test-fix.patch BuildRequires: %{python_module setuptools} BuildRequires: python-rpm-macros BuildArch: noarch -%if %{with test} -BuildRequires: %{python_module coverage} -%endif %python_subpackages %description @@ -46,6 +46,7 @@ sh is not a collection of system commands implemented in Python. %prep %setup -q -n sh-%{version} +%autopatch -p1 %build %python_build @@ -53,10 +54,8 @@ sh is not a collection of system commands implemented in Python. %install %python_install -%if %{with test} %check %python_exec test.py -%endif %files %{python_files} %license LICENSE.txt