From 77b7687e4837223f820e1e98c369d36696f3f2b3 Mon Sep 17 00:00:00 2001 From: Dirk Pranke Date: Thu, 5 Oct 2017 18:29:27 -0700 Subject: [PATCH] gclient conditionals are supposed to allow '!=', but don't currently. R=smut@chromium.org TBR=phajdan.jr@chromium.org BUG=570091 Change-Id: I9e0cce71105e9b819019d64c8857c2e86796a16f Reviewed-on: https://chromium-review.googlesource.com/704224 Commit-Queue: Dirk Pranke Reviewed-by: Dirk Pranke Reviewed-by: smut --- gclient_eval.py | 2 ++ tests/gclient_eval_unittest.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/gclient_eval.py b/gclient_eval.py index 110cdaceea..34ac4d65f1 100644 --- a/gclient_eval.py +++ b/gclient_eval.py @@ -306,6 +306,8 @@ def EvaluateCondition(condition, variables, referenced_variables=None): if isinstance(node.ops[0], ast.Eq): return left == right + if isinstance(node.ops[0], ast.NotEq): + return left != right raise ValueError( 'unexpected operator: %s %s (inside %r)' % ( diff --git a/tests/gclient_eval_unittest.py b/tests/gclient_eval_unittest.py index 3fe3077912..bc0b5923dd 100755 --- a/tests/gclient_eval_unittest.py +++ b/tests/gclient_eval_unittest.py @@ -142,9 +142,17 @@ class EvaluateConditionTest(unittest.TestCase): 'a or b', {'a': 'b and c', 'b': 'not c', 'c': 'False'})) def test_string_equality(self): + self.assertTrue(gclient_eval.EvaluateCondition( + 'foo == "baz"', {'foo': '"baz"'})) self.assertFalse(gclient_eval.EvaluateCondition( 'foo == "bar"', {'foo': '"baz"'})) + def test_string_inequality(self): + self.assertTrue(gclient_eval.EvaluateCondition( + 'foo != "bar"', {'foo': '"baz"'})) + self.assertFalse(gclient_eval.EvaluateCondition( + 'foo != "baz"', {'foo': '"baz"'})) + def test_string_bool(self): self.assertFalse(gclient_eval.EvaluateCondition( 'false_str_var and true_var',