def get_ruleset(self, config: Optional[FluffConfig] = None) -> List[BaseRule]: """Get hold of a set of rules.""" rs = get_ruleset() # Register any user rules for rule in self.user_rules: rs.register(rule) cfg = config or self.config return rs.get_rulelist(config=cfg)
def test_rule_exception_is_caught_to_validation(): """Assert that a rule that throws an exception on _eval returns it as a validation.""" std_rule_set = get_ruleset() @std_rule_set.register class Rule_T000(BaseCrawler): """Rule that throws an exception.""" def _eval(self, segment, parent_stack, **kwargs): raise Exception("Catch me or I'll deny any linting results from you") linter = Linter( config=FluffConfig(overrides=dict(rules="T000")), user_rules=[Rule_T000], ) assert linter.lint_string("select 1").check_tuples() == [("T000", 1, 1)]
def test_rule_must_belong_to_all_group(): """Assert correct 'groups' config for rule.""" std_rule_set = get_ruleset() with pytest.raises(AttributeError): @std_rule_set.register class Rule_T000(BaseRule): """Badly configured rule, no groups attribute.""" def _eval(self, segment, parent_stack, **kwargs): pass with pytest.raises(AssertionError): @std_rule_set.register class Rule_T001(BaseRule): """Badly configured rule, no 'all' group.""" groups = () def _eval(self, segment, parent_stack, **kwargs): pass
def get_rule_from_set(code, config): """Fetch a rule from the rule set.""" for r in get_ruleset().get_rulelist(config=config): if r.code == code: return r raise ValueError(f"{code!r} not in {get_ruleset()!r}")
def test_improper_configs_are_rejected(rule_config_dict): """Ensure that unsupported configs raise a ValueError.""" config = FluffConfig(configs={"rules": rule_config_dict}) with pytest.raises(ValueError): get_ruleset().get_rulelist(config)
def get_rule_from_set(code, config): """Fetch a rule from the rule set.""" for r in get_ruleset().get_rulelist(config=config): if r.code == code: return r raise ValueError("{0!r} not in {1!r}".format(code, get_ruleset()))