diff --git a/gclient_eval.py b/gclient_eval.py index 2a9b4bf22..154f58631 100644 --- a/gclient_eval.py +++ b/gclient_eval.py @@ -602,7 +602,9 @@ def RenderDEPSFile(gclient_dict): def _UpdateAstString(tokens, node, value): position = node.lineno, node.col_offset - quote_char = tokens[position][1][0] + quote_char = '' + if isinstance(node, ast.Str): + quote_char = tokens[position][1][0] tokens[position][1] = quote_char + value + quote_char node.s = value diff --git a/tests/gclient_eval_unittest.py b/tests/gclient_eval_unittest.py index d97c10ea9..6c999d05a 100755 --- a/tests/gclient_eval_unittest.py +++ b/tests/gclient_eval_unittest.py @@ -325,6 +325,26 @@ class VarTest(unittest.TestCase): '}', ])) + def test_gets_and_sets_var_non_string(self): + local_scope = gclient_eval.Exec('\n'.join([ + 'vars = {', + ' "foo": True,', + '}', + ])) + + result = gclient_eval.GetVar(local_scope, 'foo') + self.assertEqual(result, True) + + gclient_eval.SetVar(local_scope, 'foo', 'False') + result = gclient_eval.RenderDEPSFile(local_scope) + + self.assertEqual(result, '\n'.join([ + 'vars = {', + ' "foo": False,', + '}', + ])) + + def test_add_preserves_formatting(self): before = [ '# Copyright stuff',