From 9f0344ba42d7f70de20ee45f07548aed292be97e Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Wed, 28 Jun 2023 15:45:26 +0200 Subject: [PATCH] fix: ignore complex changed when checks in rule CheckChangedInWhen --- ansiblelater/rules/CheckChangedInWhen.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ansiblelater/rules/CheckChangedInWhen.py b/ansiblelater/rules/CheckChangedInWhen.py index 09e63fd..d45c021 100644 --- a/ansiblelater/rules/CheckChangedInWhen.py +++ b/ansiblelater/rules/CheckChangedInWhen.py @@ -36,7 +36,7 @@ class CheckChangedInWhen(StandardBase): for task in tasks: when = None - if task["__ansible_action_type__"] == "task": + if task["__ansible_action_type__"] in ["task", "meta"]: when = task.get("when") if isinstance(when, str): @@ -54,6 +54,15 @@ class CheckChangedInWhen(StandardBase): if not isinstance(item, str): return False + if not {"and", "or", "not"}.isdisjoint(item.split()): + return False + return any( - changed in item for changed in [".changed", "|changed", '["changed"]', "['changed']"] + changed in item for changed in [ + ".changed", + "|changed", + '["changed"]', + "['changed']", + "is changed", + ] )