def test_expands_vars_with_braces(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('"{bar}"', vars_dict={'bar': 'foo'})) self.assertEqual( 'baz', gclient_eval._gclient_eval( '"{bar}"', vars_dict={'bar': gclient_eval.ConstantString('baz')}))
def test_expands_vars(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('Var("bar")', vars_dict={'bar': 'foo'})) self.assertEqual( 'baz', gclient_eval._gclient_eval( 'Var("bar")', vars_dict={'bar': gclient_eval.ConstantString('baz')}))
def test_dict_ordered(self): for test_case in itertools.permutations(range(4)): input_data = ['{'] + ['"%s": "%s",' % (n, n) for n in test_case] + ['}'] expected = [(str(n), str(n)) for n in test_case] result = gclient_eval._gclient_eval(''.join(input_data)) self.assertEqual(expected, result.items())
def test_expands_vars_with_braces(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('"{bar}"', vars_dict={'bar': 'foo'}))
def test_invalid_call(self): with self.assertRaises(ValueError) as cm: gclient_eval._gclient_eval('Foo("bar")') self.assertIn('Var is the only allowed function', str(cm.exception))
def test_call(self): self.assertEqual( 'bar', gclient_eval._gclient_eval('Foo("bar")', {'Foo': lambda x: x}))
def test_invalid_var(self): with self.assertRaises(ValueError) as cm: gclient_eval._gclient_eval('"{bar}"', {}, True, '<unknwon>') self.assertIn('bar was used as a variable, but was not declared', str(cm.exception))
def test_plus(self): self.assertEqual('foo', gclient_eval._gclient_eval('"f" + "o" + "o"'))
def test_dict(self): self.assertEqual({'a': 'b'}, gclient_eval._gclient_eval('{"a": "b"}'))
def test_call(self): self.assertEqual( '{bar}', gclient_eval._gclient_eval('Var("bar")', None, False, '<unknown>'))
def test_name_safe(self): self.assertEqual( True, gclient_eval._gclient_eval('True', None, False, '<unknown>'))
def test_dict(self): self.assertEqual({'a': 'b'}, gclient_eval._gclient_eval('{"a": "b"}', None, False, '<unknown>'))
def test_list(self): self.assertEqual(['a', 'b'], gclient_eval._gclient_eval('["a", "b"]', None, False, '<unknown>'))
def test_tuple(self): self.assertEqual(('a', 'b'), gclient_eval._gclient_eval('("a", "b")', None, False, '<unknown>'))
def test_str(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('"foo"', None, False, '<unknown>'))
def test_format(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('"%s" % "foo"', None, False, '<unknown>'))
def test_tuple(self): self.assertEqual(('a', 'b'), gclient_eval._gclient_eval('("a", "b")'))
def test_str(self): self.assertEqual('foo', gclient_eval._gclient_eval('"foo"'))
def test_name_unsafe(self): with self.assertRaises(ValueError) as cm: gclient_eval._gclient_eval('UnsafeName') self.assertIn('invalid name \'UnsafeName\'', str(cm.exception))
def test_not_expression(self): with self.assertRaises(SyntaxError) as cm: gclient_eval._gclient_eval('def foo():\n pass') self.assertIn('invalid syntax', str(cm.exception))
def test_list(self): self.assertEqual(['a', 'b'], gclient_eval._gclient_eval('["a", "b"]'))
def test_name_safe(self): self.assertEqual(True, gclient_eval._gclient_eval('True'))
def test_expands_vars(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('Var("bar")', {'bar': 'foo'}, True))
def test_expands_vars(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('Var("bar")', vars_dict={'bar': 'foo'}))
def test_invalid_var(self): with self.assertRaises(KeyError) as cm: gclient_eval._gclient_eval('"{bar}"', vars_dict={}) self.assertIn('bar was used as a variable, but was not declared', str(cm.exception))
def test_format(self): self.assertEqual('foo', gclient_eval._gclient_eval('"%s" % "foo"'))
def test_call(self): self.assertEqual('{bar}', gclient_eval._gclient_eval('Var("bar")'))
def test_not_whitelisted(self): with self.assertRaises(ValueError) as cm: gclient_eval._gclient_eval('[x for x in [1, 2, 3]]') self.assertIn( 'unexpected AST node: <_ast.ListComp object', str(cm.exception))
def test_not_whitelisted(self): with self.assertRaises(ValueError) as cm: gclient_eval._gclient_eval('[x for x in [1, 2, 3]]') self.assertIn('unexpected AST node: <_ast.ListComp object', str(cm.exception))
def test_expands_vars_with_braces(self): self.assertEqual( 'foo', gclient_eval._gclient_eval('"{bar}"', {'bar': 'foo'}, True, '<unknown>'))