mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 20:11:17 +00:00
parent
9d3bcad229
commit
22efa8f70e
@ -66,20 +66,22 @@ class TestRule(object):
|
||||
== Rule('bash', match, get_new_command, priority=900))
|
||||
load_source.assert_called_once_with('bash', rule_path)
|
||||
|
||||
@pytest.mark.parametrize('rules, exclude_rules, rule, is_enabled', [
|
||||
(const.DEFAULT_RULES, [], Rule('git', enabled_by_default=True), True),
|
||||
(const.DEFAULT_RULES, [], Rule('git', enabled_by_default=False), False),
|
||||
([], [], Rule('git', enabled_by_default=False), False),
|
||||
([], [], Rule('git', enabled_by_default=True), False),
|
||||
(const.DEFAULT_RULES + ['git'], [], Rule('git', enabled_by_default=False), True),
|
||||
(['git'], [], Rule('git', enabled_by_default=False), True),
|
||||
(const.DEFAULT_RULES, ['git'], Rule('git', enabled_by_default=True), False),
|
||||
(const.DEFAULT_RULES, ['git'], Rule('git', enabled_by_default=False), False),
|
||||
([], ['git'], Rule('git', enabled_by_default=True), False),
|
||||
([], ['git'], Rule('git', enabled_by_default=False), False)])
|
||||
def test_is_enabled(self, settings, rules, exclude_rules, rule, is_enabled):
|
||||
settings.update(rules=rules,
|
||||
exclude_rules=exclude_rules)
|
||||
def test_from_path_excluded_rule(self, mocker, settings):
|
||||
load_source = mocker.patch('thefuck.types.load_source')
|
||||
settings.update(exclude_rules=['git'])
|
||||
rule_path = os.path.join(os.sep, 'rules', 'git.py')
|
||||
assert Rule.from_path(Path(rule_path)) is None
|
||||
assert not load_source.called
|
||||
|
||||
@pytest.mark.parametrize('rules, rule, is_enabled', [
|
||||
(const.DEFAULT_RULES, Rule('git', enabled_by_default=True), True),
|
||||
(const.DEFAULT_RULES, Rule('git', enabled_by_default=False), False),
|
||||
([], Rule('git', enabled_by_default=False), False),
|
||||
([], Rule('git', enabled_by_default=True), False),
|
||||
(const.DEFAULT_RULES + ['git'], Rule('git', enabled_by_default=False), True),
|
||||
(['git'], Rule('git', enabled_by_default=False), True)])
|
||||
def test_is_enabled(self, settings, rules, rule, is_enabled):
|
||||
settings.update(rules=rules)
|
||||
assert rule.is_enabled == is_enabled
|
||||
|
||||
def test_isnt_match(self):
|
||||
|
@ -136,6 +136,9 @@ class Rule(object):
|
||||
|
||||
"""
|
||||
name = path.name[:-3]
|
||||
if name in settings.exclude_rules:
|
||||
logs.debug(u'Ignoring excluded rule: {}'.format(name))
|
||||
return
|
||||
with logs.debug_time(u'Importing rule: {};'.format(name)):
|
||||
try:
|
||||
rule_module = load_source(name, str(path))
|
||||
@ -157,14 +160,11 @@ class Rule(object):
|
||||
:rtype: bool
|
||||
|
||||
"""
|
||||
if self.name in settings.exclude_rules:
|
||||
return False
|
||||
elif self.name in settings.rules:
|
||||
return True
|
||||
elif self.enabled_by_default and ALL_ENABLED in settings.rules:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
return (
|
||||
self.name in settings.rules
|
||||
or self.enabled_by_default
|
||||
and ALL_ENABLED in settings.rules
|
||||
)
|
||||
|
||||
def is_match(self, command):
|
||||
"""Returns `True` if rule matches the command.
|
||||
|
Loading…
x
Reference in New Issue
Block a user