mirror of
https://github.com/nvbn/thefuck.git
synced 2025-02-20 20:09:07 +00:00
#364 Attach user_dir
to settings
This commit is contained in:
parent
df4d2cc88d
commit
f3525e9fe0
@ -1,3 +1,4 @@
|
||||
from pathlib import Path
|
||||
import pytest
|
||||
from thefuck import conf
|
||||
|
||||
@ -16,7 +17,12 @@ def no_memoize(monkeypatch):
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def settings(request):
|
||||
request.addfinalizer(lambda: conf.settings.update(conf.DEFAULT_SETTINGS))
|
||||
def _reset_settings():
|
||||
conf.settings.clear()
|
||||
conf.settings.update(conf.DEFAULT_SETTINGS)
|
||||
|
||||
request.addfinalizer(_reset_settings)
|
||||
conf.settings.user_dir = Path('~/.thefuck')
|
||||
return conf.settings
|
||||
|
||||
|
||||
|
@ -25,7 +25,7 @@ class TestGetRules(object):
|
||||
@pytest.fixture
|
||||
def glob(self, mocker):
|
||||
results = {}
|
||||
mocker.patch('thefuck.corrector.Path.glob',
|
||||
mocker.patch('pathlib.Path.glob',
|
||||
new_callable=lambda: lambda *_: results.pop('value', []))
|
||||
return lambda value: results.update({'value': value})
|
||||
|
||||
@ -54,7 +54,7 @@ class TestGetRules(object):
|
||||
settings.update(rules=self._prepare_rules(conf_rules),
|
||||
priority={},
|
||||
exclude_rules=self._prepare_rules(exclude_rules))
|
||||
rules = corrector.get_rules(Path('~'))
|
||||
rules = corrector.get_rules()
|
||||
self._compare_names(rules, loaded_rules)
|
||||
|
||||
|
||||
@ -98,5 +98,5 @@ def test_get_corrected_commands(mocker):
|
||||
get_new_command=lambda x: [x.script + '@', x.script + ';'],
|
||||
priority=60)]
|
||||
mocker.patch('thefuck.corrector.get_rules', return_value=rules)
|
||||
assert [cmd.script for cmd in get_corrected_commands(command, None)] \
|
||||
assert [cmd.script for cmd in get_corrected_commands(command)] \
|
||||
== ['test!', 'test@', 'test;']
|
||||
|
@ -109,6 +109,8 @@ def init_settings(user_dir):
|
||||
"""Fills `settings` with values from `settings.py` and env."""
|
||||
from .logs import exception
|
||||
|
||||
settings.user_dir = user_dir
|
||||
|
||||
try:
|
||||
settings.update(_settings_from_file(user_dir))
|
||||
except Exception:
|
||||
|
@ -31,12 +31,12 @@ def get_loaded_rules(rules):
|
||||
yield loaded_rule
|
||||
|
||||
|
||||
def get_rules(user_dir):
|
||||
def get_rules():
|
||||
"""Returns all enabled rules."""
|
||||
bundled = Path(__file__).parent \
|
||||
.joinpath('rules') \
|
||||
.glob('*.py')
|
||||
user = user_dir.joinpath('rules').glob('*.py')
|
||||
user = settings.user_dir.joinpath('rules').glob('*.py')
|
||||
return sorted(get_loaded_rules(sorted(bundled) + sorted(user)),
|
||||
key=lambda rule: rule.priority)
|
||||
|
||||
@ -66,9 +66,9 @@ def make_corrected_commands(command, rule):
|
||||
priority=(n + 1) * rule.priority)
|
||||
|
||||
|
||||
def get_corrected_commands(command, user_dir):
|
||||
def get_corrected_commands(command):
|
||||
corrected_commands = (
|
||||
corrected for rule in get_rules(user_dir)
|
||||
corrected for rule in get_rules()
|
||||
if is_rule_match(command, rule)
|
||||
for corrected in make_corrected_commands(command, rule))
|
||||
return SortedCorrectedCommandsSequence(corrected_commands)
|
||||
|
@ -98,7 +98,7 @@ def fix_command():
|
||||
logs.debug('Empty command, nothing to do')
|
||||
return
|
||||
|
||||
corrected_commands = get_corrected_commands(command, user_dir)
|
||||
corrected_commands = get_corrected_commands(command)
|
||||
selected_command = select_command(corrected_commands)
|
||||
if selected_command:
|
||||
run_command(command, selected_command)
|
||||
|
Loading…
x
Reference in New Issue
Block a user