From 54b7669355ff86c47eadbf1c384d8266e7d807da Mon Sep 17 00:00:00 2001 From: Anders Eknert Date: Tue, 27 Jun 2023 10:14:39 +0200 Subject: [PATCH] Fix unconditional-assignment with else clause (#179) To be revisited once the issue in OPA is resolved. Fixes #178 Signed-off-by: Anders Eknert --- bundle/regal/rules/style/unconditional_assignment.rego | 5 +++++ .../regal/rules/style/unconditional_assignment_test.rego | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/bundle/regal/rules/style/unconditional_assignment.rego b/bundle/regal/rules/style/unconditional_assignment.rego index b887fedf..72908ac4 100644 --- a/bundle/regal/rules/style/unconditional_assignment.rego +++ b/bundle/regal/rules/style/unconditional_assignment.rego @@ -17,6 +17,11 @@ report contains violation if { # a `print` call.. but let's keep it simple for now count(rule.body) == 1 + # Remove this and consider proper handling of else once + # https://github.com/open-policy-agent/opa/issues/5777 + # is resolved + not rule["else"] + # Var assignment in rule head rule.head.value.type == "var" rule_head_var := rule.head.value.value diff --git a/bundle/regal/rules/style/unconditional_assignment_test.rego b/bundle/regal/rules/style/unconditional_assignment_test.rego index 0f0a9343..0f4fa0fd 100644 --- a/bundle/regal/rules/style/unconditional_assignment_test.rego +++ b/bundle/regal/rules/style/unconditional_assignment_test.rego @@ -49,3 +49,10 @@ test_success_unconditional_assignment_but_with_in_body if { r := rule.report with input as ast.policy(`x := y { y := 5 with input as 1 }`) r == set() } + +test_success_unconditional_assignment_but_else if { + r := rule.report with input as ast.policy(`msg := x { + x := input.foo + } else := input.bar`) + r == set() +}