From fcbfc2f3885d473a70538274a3f61ec12d4ce4b7 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 5 Apr 2020 13:57:36 +0200 Subject: [PATCH] trigger missing task separation check only for real task names --- ansiblelater/rules/taskfiles.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ansiblelater/rules/taskfiles.py b/ansiblelater/rules/taskfiles.py index 80e0584..5d1bfaa 100644 --- a/ansiblelater/rules/taskfiles.py +++ b/ansiblelater/rules/taskfiles.py @@ -5,6 +5,7 @@ from collections import defaultdict from ansiblelater.command.candidates import Error from ansiblelater.command.candidates import Result +from ansiblelater.utils.rulehelper import get_normalized_tasks from ansiblelater.utils.rulehelper import get_normalized_yaml @@ -13,20 +14,28 @@ def check_line_between_tasks(candidate, settings): options.update(remove_empty=False) options.update(remove_markers=False) - lines, errors = get_normalized_yaml(candidate, settings, options) + lines, line_errors = get_normalized_yaml(candidate, settings, options) + tasks, task_errors = get_normalized_tasks(candidate, settings) description = "missing task separation (required: 1 empty line)" - task_regex = re.compile(r"-\sname:.*") + task_regex = re.compile(r"-\sname:(.*)") prevline = "#file_start_marker" allowed_prevline = ["---", "tasks:", "pre_tasks:", "post_tasks:", "block:"] + errors = task_errors + line_errors if not errors: for i, line in lines: match = task_regex.search(line) if match and prevline: + name = match.group(1).strip() + + if not any(task.get("name") == name for task in tasks): + continue + if not any(item in prevline for item in allowed_prevline): errors.append(Error(i, description)) + prevline = line.strip() return Result(candidate.path, errors)