summaryrefslogtreecommitdiffstats
path: root/src/ansiblelint/rules/syntax_check.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ansiblelint/rules/syntax_check.py')
-rw-r--r--src/ansiblelint/rules/syntax_check.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/ansiblelint/rules/syntax_check.py b/src/ansiblelint/rules/syntax_check.py
index c6a4c5e..9b072f6 100644
--- a/src/ansiblelint/rules/syntax_check.py
+++ b/src/ansiblelint/rules/syntax_check.py
@@ -1,4 +1,5 @@
"""Rule definition for ansible syntax check."""
+
from __future__ import annotations
import re
@@ -15,6 +16,8 @@ class KnownError:
regex: re.Pattern[str]
+# Order matters, we only report the first matching pattern, the one at the end
+# is used to match generic or less specific patterns.
OUTPUT_PATTERNS = (
KnownError(
tag="missing-file",
@@ -25,9 +28,9 @@ OUTPUT_PATTERNS = (
),
),
KnownError(
- tag="specific",
+ tag="no-file",
regex=re.compile(
- r"^ERROR! (?P<title>[^\n]*)\n\nThe error appears to be in '(?P<filename>[\w\/\.\-]+)': line (?P<line>\d+), column (?P<column>\d+)",
+ r"^ERROR! (?P<title>No file specified for [^\n]*)",
re.MULTILINE | re.S | re.DOTALL,
),
),
@@ -45,6 +48,28 @@ OUTPUT_PATTERNS = (
re.MULTILINE | re.S | re.DOTALL,
),
),
+ KnownError(
+ tag="unknown-module",
+ regex=re.compile(
+ r"^ERROR! (?P<title>couldn't resolve module/action [^\n]*)\n\nThe error appears to be in '(?P<filename>[\w\/\.\-]+)': line (?P<line>\d+), column (?P<column>\d+)",
+ re.MULTILINE | re.S | re.DOTALL,
+ ),
+ ),
+ KnownError(
+ tag="specific",
+ regex=re.compile(
+ r"^ERROR! (?P<title>[^\n]*)\n\nThe error appears to be in '(?P<filename>[\w\/\.\-]+)': line (?P<line>\d+), column (?P<column>\d+)",
+ re.MULTILINE | re.S | re.DOTALL,
+ ),
+ ),
+ # "ERROR! the role 'this_role_is_missing' was not found in ROLE_INCLUDE_PATHS\n\nThe error appears to be in 'FILE_PATH': line 5, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n roles:\n - this_role_is_missing\n ^ here\n"
+ KnownError(
+ tag="specific",
+ regex=re.compile(
+ r"^ERROR! (?P<title>the role '.*' was not found in[^\n]*)'(?P<filename>[\w\/\.\-]+)': line (?P<line>\d+), column (?P<column>\d+)",
+ re.MULTILINE | re.S | re.DOTALL,
+ ),
+ ),
)