summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAnthony Sottile <asottile@umich.edu>2019-02-16 17:28:31 -0800
committerAnthony Sottile <asottile@umich.edu>2019-02-17 00:15:00 -0800
commite8f43e12431b15e31a265408b6f79955c6da1690 (patch)
treeddd3b142a94664169e97f564c24f4e02ca06ab82 /tests
parent684ffb3306af89e4092c4598aa9ae4294eb52eb8 (diff)
downloadflake8-e8f43e12431b15e31a265408b6f79955c6da1690.tar.gz
Speed up flake8 when only 1 filename is passed
~40% improvement over status quo (perf measurements are best-of-5) ### before ```console $ time flake8 /dev/null real 0m0.337s user 0m0.212s sys 0m0.028s ``` ### after ```console $ time flake8 /dev/null real 0m0.197s user 0m0.182s sys 0m0.012s ```
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_checker_manager.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/tests/unit/test_checker_manager.py b/tests/unit/test_checker_manager.py
index 2b6cb76..50f4084 100644
--- a/tests/unit/test_checker_manager.py
+++ b/tests/unit/test_checker_manager.py
@@ -16,27 +16,33 @@ def style_guide_mock(**kwargs):
return style_guide
+def _parallel_checker_manager():
+ """Call Manager.run() and return the number of calls to `run_serial`."""
+ style_guide = style_guide_mock()
+ manager = checker.Manager(style_guide, [], [])
+ # multiple checkers is needed for parallel mode
+ manager.checkers = [mock.Mock(), mock.Mock()]
+ return manager
+
+
def test_oserrors_cause_serial_fall_back():
"""Verify that OSErrors will cause the Manager to fallback to serial."""
err = OSError(errno.ENOSPC, 'Ominous message about spaceeeeee')
- style_guide = style_guide_mock()
with mock.patch('_multiprocessing.SemLock', side_effect=err):
- manager = checker.Manager(style_guide, [], [])
+ manager = _parallel_checker_manager()
with mock.patch.object(manager, 'run_serial') as serial:
manager.run()
assert serial.call_count == 1
- assert manager.using_multiprocessing is False
@mock.patch('flake8.utils.is_windows', return_value=False)
def test_oserrors_are_reraised(is_windows):
"""Verify that unexpected OSErrors will cause the Manager to reraise."""
err = OSError(errno.EAGAIN, 'Ominous message')
- style_guide = style_guide_mock()
with mock.patch('_multiprocessing.SemLock', side_effect=err):
- with pytest.raises(OSError):
- manager = checker.Manager(style_guide, [], [])
- with mock.patch.object(manager, 'run_serial') as serial:
+ manager = _parallel_checker_manager()
+ with mock.patch.object(manager, 'run_serial') as serial:
+ with pytest.raises(OSError):
manager.run()
assert serial.call_count == 0