diff --git a/fix-mock-call.patch b/fix-mock-call.patch new file mode 100644 index 0000000..6cb20c0 --- /dev/null +++ b/fix-mock-call.patch @@ -0,0 +1,38 @@ +From 5054ade74d72cdcc2096ecbde3355253894a43a0 Mon Sep 17 00:00:00 2001 +From: Steve Kowalik +Date: Tue, 12 Mar 2024 15:12:00 +1100 +Subject: [PATCH] pytest-profiling: Fix mock in test_writes_summary + +In Python < 3.12, MagicMock's will blindly call any method provided to +them, which is masking a real issue in this testcase. The correct method +is assert_called_with(), and even worse, one of the arguments provided +isn't correct either. Correct the method call, and provide the correct +argument. +--- + pytest-profiling/tests/unit/test_profile.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +Index: pytest-profiling-1.7.0/tests/unit/test_profile.py +=================================================================== +--- pytest-profiling-1.7.0.orig/tests/unit/test_profile.py ++++ pytest-profiling-1.7.0/tests/unit/test_profile.py +@@ -2,6 +2,7 @@ + # the top-level code in pytest_profiling will be omitted from + # coverage, so force it to be reloaded within this test unit under coverage + ++import os.path + from importlib import reload # @UnresolvedImport + + import pytest_profiling +@@ -49,8 +50,10 @@ def test_writes_summary(): + with patch('pstats.Stats', return_value=stats) as Stats: + plugin.pytest_sessionfinish(Mock(), Mock()) + plugin.pytest_terminal_summary(terminalreporter) ++ combined = os.path.abspath( ++ os.path.join(os.path.curdir, "prof", "combined.prof")) + assert 'Profiling' in terminalreporter.write.call_args[0][0] +- assert Stats.called_with(stats, stream=terminalreporter) ++ Stats.assert_called_with(combined, stream=terminalreporter) + + + def test_writes_summary_svg(): diff --git a/python-pytest-profiling-no-six.patch b/python-pytest-profiling-no-six.patch index 7faf675..5406e51 100644 --- a/python-pytest-profiling-no-six.patch +++ b/python-pytest-profiling-no-six.patch @@ -36,3 +36,17 @@ Index: pytest-profiling-1.7.0/tests/unit/test_profile.py from pytest_profiling import Profiling, pytest_addoption, pytest_configure +Index: pytest-profiling-1.7.0/setup.py +=================================================================== +--- pytest-profiling-1.7.0.orig/setup.py ++++ pytest-profiling-1.7.0/setup.py +@@ -22,8 +22,7 @@ classifiers = [ + 'Programming Language :: Python :: 3.7', + ] + +-install_requires = ['six', +- 'pytest', ++install_requires = ['pytest', + 'gprof2dot', + ] + diff --git a/python-pytest-profiling.changes b/python-pytest-profiling.changes index d57a0ef..eb4155f 100644 --- a/python-pytest-profiling.changes +++ b/python-pytest-profiling.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Mar 12 04:30:03 UTC 2024 - Steve Kowalik + +- Switch to pyproject macros. +- Less globs in %files. +- Clean up Python 2 leftovers. +- Edit python-pytest-profiling-no-six.patch to also drop the + install_requires. +- Add patch fix-mock-call.patch: + * Correct mocking call to be assert_called_with(). + ------------------------------------------------------------------- Thu Dec 8 11:56:08 UTC 2022 - pgajdos@suse.com diff --git a/python-pytest-profiling.spec b/python-pytest-profiling.spec index 502e33e..74812e1 100644 --- a/python-pytest-profiling.spec +++ b/python-pytest-profiling.spec @@ -1,7 +1,7 @@ # # spec file for package python-pytest-profiling # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,22 +16,23 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} -%bcond_without python2 Name: python-pytest-profiling Version: 1.7.0 Release: 0 Summary: Profiling plugin for pytest License: MIT -Group: Development/Languages/Python URL: https://github.com/manahl/pytest-plugins Source: https://files.pythonhosted.org/packages/source/p/pytest-profiling/pytest-profiling-%{version}.tar.gz # PATCH-FEATURE-UPSTREAM pytest-fixtures-pr171-remove-mock.patch -- gh#man-group#pytest-plugins#171 Patch0: pytest-fixtures-pr171-remove-mock.patch # https://github.com/man-group/pytest-plugins/issues/209 Patch1: python-pytest-profiling-no-six.patch +# PATCH-FIX-UPSTREAM Based on gh#man-group/pytest-plugins#223 +Patch2: fix-mock-call.patch +BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools-git} BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-gprof2dot @@ -42,9 +43,6 @@ BuildRequires: %{python_module gprof2dot} BuildRequires: %{python_module more-itertools} BuildRequires: %{python_module pytest-virtualenv} BuildRequires: %{python_module pytest} -%if %{with python2} -BuildRequires: python2-mock -%endif # /SECTION %python_subpackages @@ -57,10 +55,10 @@ Profiling plugin for py.test sed -i 's/more-itertools==5.0.0/more-itertools/' tests/integration/test_profile_integration.py %build -%python_build +%pyproject_wheel %install -%python_install +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} %check @@ -70,8 +68,8 @@ sed -i 's/more-itertools==5.0.0/more-itertools/' tests/integration/test_profile_ %files %{python_files} %doc CHANGES.md README.md %license LICENSE -%{python_sitelib}/pytest_profiling.py* +%{python_sitelib}/pytest_profiling.py %pycache_only %{python_sitelib}/__pycache__/pytest_profiling*.pyc -%{python_sitelib}/pytest_profiling-%{version}*-info +%{python_sitelib}/pytest_profiling-%{version}.dist-info %changelog