1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-01-31 10:11:14 +00:00

#N/A Add ability to disable memoization in tests

This commit is contained in:
nvbn 2015-07-10 17:06:05 +03:00
parent 4b4e7acc0f
commit f40b63f44b
3 changed files with 17 additions and 2 deletions

View File

@ -2,7 +2,7 @@ import pytest
from mock import Mock
from thefuck.utils import sudo_support, wrap_settings, memoize, get_closest
from thefuck.types import Settings
from tests.utils import Command
from tests.utils import Command, no_memoize
@pytest.mark.parametrize('override, old, new', [
@ -34,6 +34,15 @@ def test_memoize():
fn.assert_called_once_with()
@pytest.mark.usefixtures('no_memoize')
def test_no_memoize():
fn = Mock(__name__='fn')
memoized = memoize(fn)
memoized()
memoized()
assert fn.call_count == 2
class TestGetClosest(object):
def test_when_can_match(self):

View File

@ -1,3 +1,4 @@
import pytest
from thefuck import types
from thefuck.conf import DEFAULT_PRIORITY
@ -14,3 +15,7 @@ def Rule(name='', match=lambda *_: True,
return types.Rule(name, match, get_new_command,
enabled_by_default, side_effect,
priority)
@pytest.fixture
def no_memoize(monkeypatch):
monkeypatch.setattr('thefuck.utils.memoize.disabled', True)

View File

@ -80,12 +80,13 @@ def memoize(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
key = pickle.dumps((args, kwargs))
if key not in memo:
if key not in memo or memoize.disabled:
memo[key] = fn(*args, **kwargs)
return memo[key]
return wrapper
memoize.disabled = False
def get_closest(word, possibilities, n=3, cutoff=0.6):