From 4ca7b43c11fff232b2c450fc79bad16b3914564ed678fdeba61c641a0402a4d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Wed, 6 Feb 2019 21:25:51 +0000 Subject: [PATCH] Accepting request 672184 from home:alarrosa:branches:devel:languages:python - Add missing dependency on python3-typing when python3 < 3.5 - Add fix-mock-patch-with-python3.4.patch to fix building the package in Leap 42.3. In python 3.5, mock.patch uses create=True automatically if you are patching builtins in a module, but in python 3.4 the argument is still needed. - Enable tests - Add allow-bytes-filenames.patch to fix some tests that fail because they pass bytes objects as filenames. - Update remove_mock_dependency.patch to fix another test that used mock OBS-URL: https://build.opensuse.org/request/show/672184 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-flake8?expand=0&rev=45 --- fix-mock-patch-with-python3.4.patch | 58 +++++++++++ python-flake8.changes | 17 ++++ python-flake8.spec | 14 ++- remove_mock_dependency.patch | 146 +++++++++++++++++++--------- 4 files changed, 186 insertions(+), 49 deletions(-) create mode 100644 fix-mock-patch-with-python3.4.patch diff --git a/fix-mock-patch-with-python3.4.patch b/fix-mock-patch-with-python3.4.patch new file mode 100644 index 0000000..acc523e --- /dev/null +++ b/fix-mock-patch-with-python3.4.patch @@ -0,0 +1,58 @@ +From: Antonio Larrosa +Subject: Fix mock.patch with python3.4 + +In python 3.5, mock.patch uses create=True automatically if you are patching +builtins in a module, but in python 3.4 the argument is still needed. +Index: flake8-3.7.5/tests/unit/test_debug.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_debug.py ++++ flake8-3.7.5/tests/unit/test_debug.py +@@ -70,7 +70,7 @@ def test_information(system, pyversion, + system.assert_called_once_with() + + +-@mock.patch('flake8.main.debug.print') ++@mock.patch('flake8.main.debug.print', create=True) + @mock.patch('flake8.main.debug.information', return_value={}) + @mock.patch('json.dumps', return_value='{}') + def test_print_information_no_plugins(dumps, information, print_mock): +@@ -85,7 +85,7 @@ def test_print_information_no_plugins(du + assert print_mock.called is False + + +-@mock.patch('flake8.main.debug.print') ++@mock.patch('flake8.main.debug.print', create=True) + @mock.patch('flake8.main.debug.information', return_value={}) + @mock.patch('json.dumps', return_value='{}') + def test_print_information(dumps, information, print_mock): +Index: flake8-3.7.5/tests/unit/test_base_formatter.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_base_formatter.py ++++ flake8-3.7.5/tests/unit/test_base_formatter.py +@@ -23,7 +23,7 @@ def test_start(filename): + """Verify we open a new file in the start method.""" + mock_open = mock.mock_open() + formatter = base.BaseFormatter(options(output_file=filename)) +- with mock.patch('flake8.formatting.base.open', mock_open): ++ with mock.patch('flake8.formatting.base.open', mock_open, create=True): + formatter.start() + + if filename is None: +@@ -90,7 +90,7 @@ def test_write_uses_an_output_file(tee): + formatter = base.BaseFormatter(options(tee=tee)) + formatter.output_fd = filemock + +- with mock.patch('flake8.formatting.base.print') as print_func: ++ with mock.patch('flake8.formatting.base.print', create=True) as print_func: + formatter.write(line, source) + if tee: + assert print_func.called +@@ -109,7 +109,7 @@ def test_write_uses_an_output_file(tee): + ] + + +-@mock.patch('flake8.formatting.base.print') ++@mock.patch('flake8.formatting.base.print', create=True) + def test_write_uses_print(print_function): + """Verify that we use the print function without an output file.""" + line = 'Something to write' diff --git a/python-flake8.changes b/python-flake8.changes index fb602d4..bc329eb 100644 --- a/python-flake8.changes +++ b/python-flake8.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Wed Feb 6 09:42:40 UTC 2019 - Antonio Larrosa + +- Add missing dependency on python3-typing when python3 < 3.5 +- Add fix-mock-patch-with-python3.4.patch to fix building the package in + Leap 42.3. In python 3.5, mock.patch uses create=True automatically if + you are patching builtins in a module, but in python 3.4 the argument + is still needed. + +------------------------------------------------------------------- +Tue Feb 5 11:48:33 UTC 2019 - Antonio Larrosa + +- Enable tests +- Add allow-bytes-filenames.patch to fix some tests that fail because + they pass bytes objects as filenames. +- Update remove_mock_dependency.patch to fix another test that used mock + ------------------------------------------------------------------- Tue Feb 5 09:21:47 UTC 2019 - Antonio Larrosa diff --git a/python-flake8.spec b/python-flake8.spec index 857abe2..c82e6df 100644 --- a/python-flake8.spec +++ b/python-flake8.spec @@ -27,6 +27,7 @@ Group: Development/Languages/Python URL: https://gitlab.com/pycqa/flake8 Source: https://files.pythonhosted.org/packages/source/f/flake8/flake8-%{version}.tar.gz Patch0: remove_mock_dependency.patch +Patch1: fix-mock-patch-with-python3.4.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -45,22 +46,27 @@ BuildRequires: %{python_module pyflakes >= 2.1.0} BuildRequires: %{python_module pytest-runner} BuildRequires: %{python_module pytest} %if %{with python2} -BuildRequires: python2-configparser +BuildRequires: python2-configparser >= 3.7.0 BuildRequires: python2-enum34 BuildRequires: python2-functools32 BuildRequires: python2-mock BuildRequires: python2-typing %endif -%if 0%{?suse_version} < 1500 +%if 0%{?python3_version_nodots} < 35 BuildRequires: python3-typing %endif # /SECTION %ifpython2 -Requires: python-configparser +Requires: python-configparser >= 3.7.0 Requires: python-enum34 Requires: python-functools32 Requires: python-typing %endif +%ifpython3 +%if 0%{?python3_version_nodots} < 35 +Requires: python3-typing +%endif +%endif %python_subpackages %description @@ -91,7 +97,7 @@ Flake8 runs all the tools by launching the single ``flake8`` script. %python_uninstall_alternative flake8 %check -%python_exec setup.py test +%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} $python -m pytest tests %files %{python_files} %doc README.rst diff --git a/remove_mock_dependency.patch b/remove_mock_dependency.patch index e9c399a..7ee143a 100644 --- a/remove_mock_dependency.patch +++ b/remove_mock_dependency.patch @@ -1,5 +1,7 @@ ---- a/tests/integration/test_checker.py -+++ b/tests/integration/test_checker.py +Index: flake8-3.7.5/tests/integration/test_checker.py +=================================================================== +--- flake8-3.7.5.orig/tests/integration/test_checker.py ++++ flake8-3.7.5/tests/integration/test_checker.py @@ -1,5 +1,8 @@ """Integration tests for the checker submodule.""" -import mock @@ -10,8 +12,10 @@ import pytest from flake8 import checker ---- a/tests/unit/test_application.py -+++ b/tests/unit/test_application.py +Index: flake8-3.7.5/tests/unit/test_application.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_application.py ++++ flake8-3.7.5/tests/unit/test_application.py @@ -1,7 +1,10 @@ """Tests for the Application class.""" import optparse @@ -24,8 +28,10 @@ import pytest from flake8.main import application as app ---- a/tests/unit/test_base_formatter.py -+++ b/tests/unit/test_base_formatter.py +Index: flake8-3.7.5/tests/unit/test_base_formatter.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_base_formatter.py ++++ flake8-3.7.5/tests/unit/test_base_formatter.py @@ -1,7 +1,10 @@ """Tests for the BaseFormatter object.""" import optparse @@ -38,8 +44,10 @@ import pytest from flake8 import style_guide ---- a/tests/unit/test_checker_manager.py -+++ b/tests/unit/test_checker_manager.py +Index: flake8-3.7.5/tests/unit/test_checker_manager.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_checker_manager.py ++++ flake8-3.7.5/tests/unit/test_checker_manager.py @@ -1,7 +1,10 @@ """Tests for the Manager object for FileCheckers.""" import errno @@ -52,8 +60,10 @@ import pytest from flake8 import checker ---- a/tests/unit/test_config_file_finder.py -+++ b/tests/unit/test_config_file_finder.py +Index: flake8-3.7.5/tests/unit/test_config_file_finder.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_config_file_finder.py ++++ flake8-3.7.5/tests/unit/test_config_file_finder.py @@ -4,7 +4,10 @@ import configparser import os import sys @@ -66,8 +76,10 @@ import pytest from flake8.options import config ---- a/tests/unit/test_debug.py -+++ b/tests/unit/test_debug.py +Index: flake8-3.7.5/tests/unit/test_debug.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_debug.py ++++ flake8-3.7.5/tests/unit/test_debug.py @@ -1,6 +1,9 @@ """Tests for our debugging module.""" import entrypoints @@ -79,8 +91,10 @@ import pytest from flake8.main import debug ---- a/tests/unit/test_file_checker.py -+++ b/tests/unit/test_file_checker.py +Index: flake8-3.7.5/tests/unit/test_file_checker.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_file_checker.py ++++ flake8-3.7.5/tests/unit/test_file_checker.py @@ -1,5 +1,8 @@ """Unit tests for the FileChecker class.""" -import mock @@ -91,9 +105,11 @@ import pytest import flake8 ---- a/tests/unit/test_file_processor.py -+++ b/tests/unit/test_file_processor.py -@@ -5,7 +5,10 @@ import tokenize +Index: flake8-3.7.5/tests/unit/test_file_processor.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_file_processor.py ++++ flake8-3.7.5/tests/unit/test_file_processor.py +@@ -2,7 +2,10 @@ import ast import tokenize @@ -105,8 +121,10 @@ import pytest from flake8 import processor ---- a/tests/unit/test_get_local_plugins.py -+++ b/tests/unit/test_get_local_plugins.py +Index: flake8-3.7.5/tests/unit/test_get_local_plugins.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_get_local_plugins.py ++++ flake8-3.7.5/tests/unit/test_get_local_plugins.py @@ -1,5 +1,8 @@ """Tests for get_local_plugins.""" -import mock @@ -117,8 +135,10 @@ from flake8.options import config ---- a/tests/unit/test_git.py -+++ b/tests/unit/test_git.py +Index: flake8-3.7.5/tests/unit/test_git.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_git.py ++++ flake8-3.7.5/tests/unit/test_git.py @@ -1,5 +1,8 @@ """Tests around functionality in the git integration.""" -import mock @@ -129,8 +149,10 @@ import pytest from flake8.main import git ---- a/tests/unit/test_legacy_api.py -+++ b/tests/unit/test_legacy_api.py +Index: flake8-3.7.5/tests/unit/test_legacy_api.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_legacy_api.py ++++ flake8-3.7.5/tests/unit/test_legacy_api.py @@ -1,5 +1,8 @@ """Tests for Flake8's legacy API.""" -import mock @@ -141,8 +163,10 @@ import pytest from flake8.api import legacy as api ---- a/tests/unit/test_merged_config_parser.py -+++ b/tests/unit/test_merged_config_parser.py +Index: flake8-3.7.5/tests/unit/test_merged_config_parser.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_merged_config_parser.py ++++ flake8-3.7.5/tests/unit/test_merged_config_parser.py @@ -1,7 +1,10 @@ """Unit tests for flake8.options.config.MergedConfigParser.""" import os @@ -155,8 +179,10 @@ import pytest from flake8.options import config ---- a/tests/unit/test_option.py -+++ b/tests/unit/test_option.py +Index: flake8-3.7.5/tests/unit/test_option.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_option.py ++++ flake8-3.7.5/tests/unit/test_option.py @@ -1,5 +1,8 @@ """Unit tests for flake8.options.manager.Option.""" -import mock @@ -167,8 +193,10 @@ import pytest from flake8.options import manager ---- a/tests/unit/test_option_manager.py -+++ b/tests/unit/test_option_manager.py +Index: flake8-3.7.5/tests/unit/test_option_manager.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_option_manager.py ++++ flake8-3.7.5/tests/unit/test_option_manager.py @@ -2,7 +2,10 @@ import optparse import os @@ -181,8 +209,10 @@ import pytest from flake8 import utils ---- a/tests/unit/test_plugin.py -+++ b/tests/unit/test_plugin.py +Index: flake8-3.7.5/tests/unit/test_plugin.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_plugin.py ++++ flake8-3.7.5/tests/unit/test_plugin.py @@ -1,7 +1,10 @@ """Tests for flake8.plugins.manager.Plugin.""" import optparse @@ -195,8 +225,10 @@ import pytest from flake8 import exceptions ---- a/tests/unit/test_plugin_manager.py -+++ b/tests/unit/test_plugin_manager.py +Index: flake8-3.7.5/tests/unit/test_plugin_manager.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_plugin_manager.py ++++ flake8-3.7.5/tests/unit/test_plugin_manager.py @@ -1,5 +1,8 @@ """Tests for flake8.plugins.manager.PluginManager.""" -import mock @@ -207,8 +239,10 @@ from flake8.plugins import manager ---- a/tests/unit/test_plugin_type_manager.py -+++ b/tests/unit/test_plugin_type_manager.py +Index: flake8-3.7.5/tests/unit/test_plugin_type_manager.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_plugin_type_manager.py ++++ flake8-3.7.5/tests/unit/test_plugin_type_manager.py @@ -1,7 +1,10 @@ """Tests for flake8.plugins.manager.PluginTypeManager.""" import sys @@ -221,8 +255,10 @@ import pytest from flake8 import exceptions ---- a/tests/unit/test_style_guide.py -+++ b/tests/unit/test_style_guide.py +Index: flake8-3.7.5/tests/unit/test_style_guide.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_style_guide.py ++++ flake8-3.7.5/tests/unit/test_style_guide.py @@ -1,7 +1,10 @@ """Tests for the flake8.style_guide.StyleGuide class.""" import optparse @@ -235,8 +271,10 @@ import pytest from flake8 import statistics ---- a/tests/unit/test_utils.py -+++ b/tests/unit/test_utils.py +Index: flake8-3.7.5/tests/unit/test_utils.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_utils.py ++++ flake8-3.7.5/tests/unit/test_utils.py @@ -1,7 +1,10 @@ """Tests for flake8's utils module.""" import os @@ -249,8 +287,10 @@ import pytest from flake8 import exceptions ---- a/tests/unit/test_violation.py -+++ b/tests/unit/test_violation.py +Index: flake8-3.7.5/tests/unit/test_violation.py +=================================================================== +--- flake8-3.7.5.orig/tests/unit/test_violation.py ++++ flake8-3.7.5/tests/unit/test_violation.py @@ -1,5 +1,8 @@ """Tests for the flake8.style_guide.Violation class.""" -import mock @@ -261,9 +301,11 @@ import pytest from flake8 import style_guide ---- a/setup.py -+++ b/setup.py -@@ -11,6 +11,12 @@ +Index: flake8-3.7.5/setup.py +=================================================================== +--- flake8-3.7.5.orig/setup.py ++++ flake8-3.7.5/setup.py +@@ -11,6 +11,12 @@ sys.path.insert(0, os.path.join(os.path. import flake8 @@ -276,9 +318,23 @@ # NOTE(sigmavirus24): When updating these requirements, update them in # setup.cfg as well. -@@ -147,4 +153,5 @@ +@@ -147,4 +153,5 @@ setuptools.setup( "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Quality Assurance", ], + tests_require=tests_require, ) +Index: flake8-3.7.5/tests/integration/test_main.py +=================================================================== +--- flake8-3.7.5.orig/tests/integration/test_main.py ++++ flake8-3.7.5/tests/integration/test_main.py +@@ -1,5 +1,8 @@ + """Integration tests for the main entrypoint of flake8.""" +-import mock ++try: ++ import unittest.mock as mock ++except ImportError: ++ import mock + + from flake8 import utils + from flake8.main import application