From 255c57641a4410f0715ec3f4bdf7587f953f6ec2 Mon Sep 17 00:00:00 2001 From: liksh Date: Mon, 14 Feb 2022 17:32:25 +0800 Subject: [PATCH] update pytest-mock from 1.10 to 2.0.0 --- ...-fix-tests-expectations-with-pytest4.patch | 50 ------- ...le-new-output-format-with-Python-3.8.patch | 72 ---------- pytest-mock-1.10.0.tar.gz | Bin 20754 -> 0 bytes pytest-mock-2.0.0.tar.gz | Bin 0 -> 24665 bytes python-pytest-mock.spec | 126 +++++++++++------- 5 files changed, 81 insertions(+), 167 deletions(-) delete mode 100644 0001-fix-tests-expectations-with-pytest4.patch delete mode 100644 backport-tests-handle-new-output-format-with-Python-3.8.patch delete mode 100644 pytest-mock-1.10.0.tar.gz create mode 100644 pytest-mock-2.0.0.tar.gz diff --git a/0001-fix-tests-expectations-with-pytest4.patch b/0001-fix-tests-expectations-with-pytest4.patch deleted file mode 100644 index d6d6c1d..0000000 --- a/0001-fix-tests-expectations-with-pytest4.patch +++ /dev/null @@ -1,50 +0,0 @@ -From b4d1b1166d4d9e5a9df1b1fdea73021c936891b6 Mon Sep 17 00:00:00 2001 -From: baizg1107 -Date: Tue, 12 Jan 2021 10:25:28 +0800 -Subject: [PATCH] fix tests expectations with pytest4 - -reference: https://github.com/nicoddemus/pytest-mock/commit/970e4b1f8cfd6bd750b4c8240efad378cbf049c2 ---- - test_pytest_mock.py | 2 +- - tox.ini | 8 +++++++- - 2 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/test_pytest_mock.py b/test_pytest_mock.py -index e50b5b8..45dbe3f 100644 ---- a/test_pytest_mock.py -+++ b/test_pytest_mock.py -@@ -585,7 +585,7 @@ def test_detailed_introspection(testdir): - "*Use -v to get the full diff*", - "*Kwargs:*", - "*assert {} == {'bar': 4}*", -- "*Right contains more items:*", -+ "*Right contains* more item*", - "*{'bar': 4}*", - "*Use -v to get the full diff*", - ] -diff --git a/tox.ini b/tox.ini -index 7a270b1..bc9eaa0 100644 ---- a/tox.ini -+++ b/tox.ini -@@ -12,7 +12,7 @@ commands = - - [testenv:norewrite] - commands = -- pytest test_pytest_mock.py --assert=plain -ra -+ pytest test_pytest_mock.py --assert=plain - - [testenv:linting] - skip_install=True -@@ -23,3 +23,9 @@ deps = - commands = - py.test --flakes pytest_mock.py test_pytest_mock.py -m flakes - rst-lint CHANGELOG.rst README.rst -+ -+[tool:pytest] -+addopts = -r a -+ -+[flake8] -+max-line-length = 88 --- -2.23.0 - diff --git a/backport-tests-handle-new-output-format-with-Python-3.8.patch b/backport-tests-handle-new-output-format-with-Python-3.8.patch deleted file mode 100644 index 0f5efa6..0000000 --- a/backport-tests-handle-new-output-format-with-Python-3.8.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 91ece5ec239e7bf68e928e0377c5335ca5fc214a Mon Sep 17 00:00:00 2001 -From: Daniel Hahler -Date: Sat, 30 Mar 2019 10:58:12 +0100 -Subject: [PATCH] tests: handle new output format with Python 3.8 - -Fixes https://github.com/pytest-dev/pytest-mock/issues/139. ---- - test_pytest_mock.py | 43 +++++++++++++++++++++++++++++-------------- - 1 file changed, 29 insertions(+), 14 deletions(-) - -diff --git a/test_pytest_mock.py b/test_pytest_mock.py -index 1cb3889..2413593 100644 ---- a/test_pytest_mock.py -+++ b/test_pytest_mock.py -@@ -12,6 +12,9 @@ pytest_plugins = 'pytester' - skip_pypy = pytest.mark.skipif(platform.python_implementation() == 'PyPy', - reason='could not make work on pypy') - -+# Python 3.8 changed the output formatting (bpo-35500). -+PY38 = sys.version_info >= (3, 8) -+ - - @pytest.fixture - def needs_assert_rewrite(pytestconfig): -@@ -179,7 +182,11 @@ class TestMockerStub: - - def __test_failure_message(self, mocker, **kwargs): - expected_name = kwargs.get('name') or 'mock' -- expected_message = 'Expected call: {0}()\nNot called'.format(expected_name) -+ if PY38: -+ msg = "expected call not found.\nExpected: {0}()\nActual: not called." -+ else: -+ msg = "Expected call: {0}()\nNot called" -+ expected_message = msg.format(expected_name) - stub = mocker.stub(**kwargs) - with pytest.raises(AssertionError) as exc_info: - stub.assert_called_with() -@@ -559,11 +566,20 @@ def test_detailed_introspection(testdir): - m.assert_called_once_with('', bar=4) - """) - result = testdir.runpytest('-s') -- result.stdout.fnmatch_lines([ -- "*AssertionError: Expected call: mock('', bar=4)*", -- "*Actual call: mock('fo')*", -+ if PY38: -+ expected_lines = [ -+ "*AssertionError: expected call not found.", -+ "*Expected: mock('', bar=4)", -+ "*Actual: mock('fo')", -+ ] -+ else: -+ expected_lines = [ -+ "*AssertionError: Expected call: mock('', bar=4)*", -+ "*Actual call: mock('fo')*", -+ ] -+ expected_lines += [ - "*pytest introspection follows:*", -- '*Args:', -+ "*Args:", - "*assert ('fo',) == ('',)", - "*At index 0 diff: 'fo' != ''*", - "*Use -v to get the full diff*", -@@ -572,7 +588,8 @@ def test_detailed_introspection(testdir): - "*Right contains more items:*", - "*{'bar': 4}*", - "*Use -v to get the full diff*", -- ]) -+ ] -+ result.stdout.fnmatch_lines(expected_lines) - - - def test_assert_called_with_unicode_arguments(mocker): diff --git a/pytest-mock-1.10.0.tar.gz b/pytest-mock-1.10.0.tar.gz deleted file mode 100644 index 9247fa744698d58b6e095e3701622f468ea75b5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20754 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%0A*`nPWnKlJ>a?~>!_hn-h( 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 literal 0 HcmV?d00001 diff --git a/python-pytest-mock.spec b/python-pytest-mock.spec index f951eef..b0d68e3 100644 --- a/python-pytest-mock.spec +++ b/python-pytest-mock.spec @@ -1,68 +1,104 @@ +%global _empty_manifest_terminate_build 0 Name: python-pytest-mock -Version: 1.10.0 -Release: 8 +Version: 2.0.0 +Release: 1 Summary: Thin-wrapper around the mock package for easier use with py.test License: MIT -URL: https://pypi.python.org/pypi/pytest-mock -Source0: https://files.pythonhosted.org/packages/source/p/pytest-mock/pytest-mock-%{version}.tar.gz -Patch0001: backport-tests-handle-new-output-format-with-Python-3.8.patch -Patch0002: 0001-fix-tests-expectations-with-pytest4.patch +URL: https://github.com/pytest-dev/pytest-mock/ +Source0: https://files.pythonhosted.org/packages/e2/8b/b9671ce133aed04838fdd37ef408bfdd402e81ad634beca1c6cd0b8a7524/pytest-mock-2.0.0.tar.gz BuildArch: noarch - %description -This plugin provides a mocker fixture which is a thin-wrapper around the -patching API provided by the mock package. -Besides undoing the mocking automatically after the end of the test, -it also provides other nice utilities. + pytest-mock This plugin provides a mocker fixture which is a thin-wrapper +around the patching API provided by the mock package < code-block:: python +import os class UnixFS: @staticmethod def rm(filename): os.remove(filename) def +test_unix_fs(mocker): mocker.patch('os.remove') UnixFS.rm('file') +os.remove.assert_called_once_with('file') Besides undoing the mocking +automatically after the end of the test, it also provides other nice utilities +such as spy and stub, and uses pytest introspection when comparing calls. -%package -n python3-pytest-mock +%package -n python3-pytest-mock Summary: Thin-wrapper around the mock package for easier use with py.test -BuildArch: noarch -BuildRequires: python3-devel python3-pytest >= 2.7 python3-setuptools_scm -Requires: python3-pytest >= 2.7 -%{?python_provide:%python_provide python3-pytest-mock} - +Provides: python-pytest-mock +# Base build requires +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pbr +BuildRequires: python3-pip +BuildRequires: python3-wheel +# General requires +BuildRequires: python3-pytest +BuildRequires: python3-pre-commit +BuildRequires: python3-tox +# General requires +Requires: python3-pytest +Requires: python3-pre-commit +Requires: python3-tox %description -n python3-pytest-mock -This plugin provides a mocker fixture which is a thin-wrapper around the -patching API provided by the mock package. -Besides undoing the mocking automatically after the end of the test, -it also provides other nice utilities. + pytest-mock This plugin provides a mocker fixture which is a thin-wrapper +around the patching API provided by the mock package < code-block:: python +import os class UnixFS: @staticmethod def rm(filename): os.remove(filename) def +test_unix_fs(mocker): mocker.patch('os.remove') UnixFS.rm('file') +os.remove.assert_called_once_with('file') Besides undoing the mocking +automatically after the end of the test, it also provides other nice utilities +such as spy and stub, and uses pytest introspection when comparing calls. + +%package help +Summary: Thin-wrapper around the mock package for easier use with py.test +Provides: python3-pytest-mock-doc +%description help + pytest-mock This plugin provides a mocker fixture which is a thin-wrapper +around the patching API provided by the mock package < code-block:: python +import os class UnixFS: @staticmethod def rm(filename): os.remove(filename) def +test_unix_fs(mocker): mocker.patch('os.remove') UnixFS.rm('file') +os.remove.assert_called_once_with('file') Besides undoing the mocking +automatically after the end of the test, it also provides other nice utilities +such as spy and stub, and uses pytest introspection when comparing calls. %prep -%autosetup -n pytest-mock-%{version} -p1 -rm -rf *.egg-info +%autosetup -n pytest-mock-%{version} %build %py3_build - %install %py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . %check -PYTHONPATH="$(pwd)" py.test-%{python3_version} test_pytest_mock.py - -%files -n python3-pytest-mock -%doc README.rst -%license LICENSE -%{python3_sitelib}/pytest_mock-%{version}-py%{python3_version}.egg-info/ -%{python3_sitelib}/pytest_mock.py* -%{python3_sitelib}/_pytest_mock_version.py* -%{python3_sitelib}/__pycache__/* +%{__python3} setup.py test -%changelog -* Mon Jan 11 2021 maminjie - 1.10.0-8 -- fix tests expectations with pytest4 +%files -n python3-pytest-mock -f filelist.lst +%dir %{python3_sitelib}/* -* Tue Aug 11 2020 lingsheng - 1.10.0-7 -- Remove python2-pytest-mock subpackage +%files help -f doclist.lst +%{_docdir}/* -* Sun Jun 28 2020 lingsheng - 1.10.0-6 -- Tests handle new output format with Python 3.8 - -* Wed Jun 24 2020 lizhenhua - 1.10.0-5 -- Modify test cases for python3.8 +%changelog +* Mon Feb 14 2022 OpenStack_SIG - 2.0.0-1 +- Init package python3-pytest-mock of version 2.0.0 -* Wed Jan 08 2019 yangjian - 1.10.0-4 -- Package init -- Gitee