1b1751adaSGeorge Keishing#!/usr/bin/env python3
269c5c1c6SGeorge Keishingr"""
369c5c1c6SGeorge KeishingCustom rules file for robotframework-lint.
469c5c1c6SGeorge KeishingInstallation : pip3 install --upgrade robotframework-lint
569c5c1c6SGeorge KeishingExample usage:
669c5c1c6SGeorge Keishing    python3 -m rflint -rA robot_standards -R robot_custom_rules.py .
769c5c1c6SGeorge Keishing"""
869c5c1c6SGeorge Keishing
9b1751adaSGeorge Keishingimport re
10b1751adaSGeorge Keishing
11b1751adaSGeorge Keishingfrom rflint.common import ERROR, SuiteRule
12b1751adaSGeorge Keishing
13b1751adaSGeorge Keishing
14b1751adaSGeorge Keishingclass ExtendInvalidTable(SuiteRule):
15b1751adaSGeorge Keishing    r"""
1669c5c1c6SGeorge Keishing    Extend robotframework-lint SuiteRule function for InvalidTable to allow a
1769c5c1c6SGeorge Keishing    table section if it is a section of comments.
1869c5c1c6SGeorge Keishing    e.g "*** Comments ***"
19b1751adaSGeorge Keishing    """
20*9c223095SGeorge Keishing
21b1751adaSGeorge Keishing    severity = ERROR
22b1751adaSGeorge Keishing
23b1751adaSGeorge Keishing    def apply(self, suite):
2469c5c1c6SGeorge Keishing        r"""
2569c5c1c6SGeorge Keishing        Walk through the code and report.
2669c5c1c6SGeorge Keishing        """
27b1751adaSGeorge Keishing        for table in suite.tables:
28b1751adaSGeorge Keishing            if not re.match(
29b1751adaSGeorge Keishing                r"^(settings?|metadata|(test )?cases?|(user"
30b1751adaSGeorge Keishing                r" )?keywords?|variables?|comments?)$",
31b1751adaSGeorge Keishing                table.name,
32b1751adaSGeorge Keishing                re.IGNORECASE,
33b1751adaSGeorge Keishing            ):
34b1751adaSGeorge Keishing                self.report(
35b1751adaSGeorge Keishing                    suite,
3669c5c1c6SGeorge Keishing                    table.name,
37b1751adaSGeorge Keishing                    table.linenumber,
38b1751adaSGeorge Keishing                )
39