Commit e05f18d4 authored by Edward Lemur's avatar Edward Lemur Committed by Commit Bot

Reland "Reland "Expand variables in gclient flattened output.""

This is a reland of ff622244
should_process was set to None in the previous attempt, so CIPD dependencies were not processed.
This CL fixed that.

Original change's description:
> Reland "Expand variables in gclient flattened output."
>
> This is a reland of a32f98e6
>
> Original change's description:
> > Expand variables in gclient flattened output.
> >
> > Bug: 848990
> > Change-Id: I0ad7e4f965973edbc5a335bd30f9cbd7b04abff2
> > Reviewed-on: https://chromium-review.googlesource.com/1085996
> > Reviewed-by: Michael Moss <mmoss@chromium.org>
> > Reviewed-by: Aaron Gable <agable@chromium.org>
> > Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
>
> Tbr: agable@chromium.org
> Bug: 848990
> Change-Id: I7843544b79b2ab7e2046c187d13ea3eb65fc1b7d
> Reviewed-on: https://chromium-review.googlesource.com/1085975
> Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>

Bug: 848990
Change-Id: Ic804be1b84bf8402a741a4189b60372075dfb6f3
Reviewed-on: https://chromium-review.googlesource.com/1087368Reviewed-by: 's avatarAaron Gable <agable@chromium.org>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
parent 8e6f58c7
This diff is collapsed.
......@@ -206,8 +206,7 @@ _GCLIENT_SCHEMA = schema.Schema(_NodeDictSchema({
}))
def _gclient_eval(node_or_string, vars_dict=None, expand_vars=False,
filename='<unknown>'):
def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
"""Safely evaluates a single expression. Returns the result."""
_allowed_names = {'None': None, 'True': True, 'False': False}
if isinstance(node_or_string, basestring):
......@@ -216,12 +215,12 @@ def _gclient_eval(node_or_string, vars_dict=None, expand_vars=False,
node_or_string = node_or_string.body
def _convert(node):
if isinstance(node, ast.Str):
if not expand_vars:
if vars_dict is None:
return node.s
try:
return node.s.format(**vars_dict)
except KeyError as e:
raise ValueError(
raise KeyError(
'%s was used as a variable, but was not declared in the vars dict '
'(file %r, line %s)' % (
e.message, filename, getattr(node, 'lineno', '<unknown>')))
......@@ -254,14 +253,10 @@ def _gclient_eval(node_or_string, vars_dict=None, expand_vars=False,
raise ValueError(
'Var\'s argument must be a variable name (file %r, line %s)' % (
filename, getattr(node, 'lineno', '<unknown>')))
if not expand_vars:
return '{%s}' % arg
if vars_dict is None:
raise ValueError(
'vars must be declared before Var can be used (file %r, line %s)'
% (filename, getattr(node, 'lineno', '<unknown>')))
return '{' + arg + '}'
if arg not in vars_dict:
raise ValueError(
raise KeyError(
'%s was used as a variable, but was not declared in the vars dict '
'(file %r, line %s)' % (
arg, filename, getattr(node, 'lineno', '<unknown>')))
......@@ -278,7 +273,7 @@ def _gclient_eval(node_or_string, vars_dict=None, expand_vars=False,
return _convert(node_or_string)
def Exec(content, expand_vars=True, filename='<unknown>', vars_override=None):
def Exec(content, filename='<unknown>', vars_override=None):
"""Safely execs a set of assignments."""
def _validate_statement(node, local_scope):
if not isinstance(node, ast.Assign):
......@@ -330,7 +325,7 @@ def Exec(content, expand_vars=True, filename='<unknown>', vars_override=None):
vars_dict = {}
if 'vars' in statements:
vars_statement = statements['vars']
value = _gclient_eval(vars_statement, None, False, filename)
value = _gclient_eval(vars_statement, filename)
local_scope.SetNode('vars', value, vars_statement)
# Update the parsed vars with the overrides, but only if they are already
# present (overrides do not introduce new variables).
......@@ -342,14 +337,13 @@ def Exec(content, expand_vars=True, filename='<unknown>', vars_override=None):
if k in vars_dict})
for name, node in statements.iteritems():
value = _gclient_eval(node, vars_dict, expand_vars, filename)
value = _gclient_eval(node, filename, vars_dict)
local_scope.SetNode(name, value, node)
return _GCLIENT_SCHEMA.validate(local_scope)
def ExecLegacy(content, expand_vars=True, filename='<unknown>',
vars_override=None):
def ExecLegacy(content, filename='<unknown>', vars_override=None):
"""Executes a DEPS file |content| using exec."""
local_scope = {}
global_scope = {'Var': lambda var_name: '{%s}' % var_name}
......@@ -360,7 +354,7 @@ def ExecLegacy(content, expand_vars=True, filename='<unknown>',
# as "exec a in b, c" (See https://bugs.python.org/issue21591).
eval(compile(content, filename, 'exec'), global_scope, local_scope)
if 'vars' not in local_scope or not expand_vars:
if 'vars' not in local_scope:
return local_scope
vars_dict = {}
......@@ -455,7 +449,7 @@ def UpdateCondition(info_dict, op, new_condition):
del info_dict['condition']
def Parse(content, expand_vars, validate_syntax, filename, vars_override=None):
def Parse(content, validate_syntax, filename, vars_override=None):
"""Parses DEPS strings.
Executes the Python-like string stored in content, resulting in a Python
......@@ -464,7 +458,6 @@ def Parse(content, expand_vars, validate_syntax, filename, vars_override=None):
Args:
content: str. DEPS file stored as a string.
expand_vars: bool. Whether variables should be expanded to their values.
validate_syntax: bool. Whether syntax should be validated using the schema
defined above.
filename: str. The name of the DEPS file, or a string describing the source
......@@ -477,9 +470,9 @@ def Parse(content, expand_vars, validate_syntax, filename, vars_override=None):
schema above.
"""
if validate_syntax:
result = Exec(content, expand_vars, filename, vars_override)
result = Exec(content, filename, vars_override)
else:
result = ExecLegacy(content, expand_vars, filename, vars_override)
result = ExecLegacy(content, filename, vars_override)
vars_dict = result.get('vars', {})
if 'deps' in result:
......
......@@ -9,4 +9,4 @@ As the CI needs of the browser grew, Batty, the Build and Test Yeti, got
a new friend:
The End!
The End.
......@@ -225,7 +225,7 @@ def main():
# First gather all the information without modifying anything, except for a
# git fetch.
deps_path, deps_content = get_deps(current_dir)
gclient_dict = gclient_eval.Exec(deps_content, True, deps_path)
gclient_dict = gclient_eval.Exec(deps_content, deps_path)
is_relative = gclient_dict.get('use_relative_paths', False)
root_dir = current_dir if is_relative else gclient_root
rolls = {}
......
......@@ -44,22 +44,19 @@ class GClientEvalTest(unittest.TestCase):
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('Var("bar")'))
def test_expands_vars(self):
self.assertEqual(
'foo',
gclient_eval._gclient_eval('Var("bar")', {'bar': 'foo'}, True))
gclient_eval._gclient_eval('Var("bar")', vars_dict={'bar': 'foo'}))
def test_expands_vars_with_braces(self):
self.assertEqual(
'foo',
gclient_eval._gclient_eval('"{bar}"', {'bar': 'foo'}, True))
gclient_eval._gclient_eval('"{bar}"', vars_dict={'bar': 'foo'}))
def test_invalid_var(self):
with self.assertRaises(ValueError) as cm:
gclient_eval._gclient_eval('"{bar}"', {}, True)
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))
......@@ -140,20 +137,6 @@ class ExecTest(unittest.TestCase):
'deps': collections.OrderedDict([('a_dep', 'abarb')]),
}, local_scope)
def test_var_unexpanded(self):
local_scope = gclient_eval.Exec('\n'.join([
'vars = {',
' "foo": "bar",',
'}',
'deps = {',
' "a_dep": "a" + Var("foo") + "b",',
'}',
]), False)
self.assertEqual({
'vars': collections.OrderedDict([('foo', 'bar')]),
'deps': collections.OrderedDict([('a_dep', 'a{foo}b')]),
}, local_scope)
def test_empty_deps(self):
local_scope = gclient_eval.Exec('deps = {}')
self.assertEqual({'deps': {}}, local_scope)
......@@ -166,14 +149,14 @@ class ExecTest(unittest.TestCase):
'deps = {',
' "a_dep": "a{foo}b",',
'}',
]), True, vars_override={'foo': 'baz'})
]), vars_override={'foo': 'baz'})
self.assertEqual({
'vars': collections.OrderedDict([('foo', 'bar')]),
'deps': collections.OrderedDict([('a_dep', 'abazb')]),
}, local_scope)
def test_doesnt_override_undeclared_vars(self):
with self.assertRaises(ValueError) as cm:
with self.assertRaises(KeyError) as cm:
gclient_eval.Exec('\n'.join([
'vars = {',
' "foo": "bar",',
......@@ -181,7 +164,7 @@ class ExecTest(unittest.TestCase):
'deps = {',
' "a_dep": "a{baz}b",',
'}',
]), True, vars_override={'baz': 'lalala'})
]), vars_override={'baz': 'lalala'})
self.assertIn('baz was used as a variable, but was not declared',
str(cm.exception))
......@@ -601,8 +584,7 @@ class RevisionTest(unittest.TestCase):
class ParseTest(unittest.TestCase):
def callParse(self, expand_vars=True, validate_syntax=True,
vars_override=None):
def callParse(self, validate_syntax=True, vars_override=None):
return gclient_eval.Parse('\n'.join([
'vars = {',
' "foo": "bar",',
......@@ -610,24 +592,39 @@ class ParseTest(unittest.TestCase):
'deps = {',
' "a_dep": "a{foo}b",',
'}',
]), expand_vars, validate_syntax, '<unknown>', vars_override)
]), validate_syntax, '<unknown>', vars_override)
def test_expands_vars(self):
for validate_syntax in True, False:
local_scope = self.callParse(validate_syntax=validate_syntax)
def test_supports_vars_inside_vars(self):
deps_file = '\n'.join([
'vars = {',
' "foo": "bar",',
' "baz": "\\"{foo}\\" == \\"bar\\"",',
'}',
'deps = {',
' "src/baz": {',
' "url": "baz_url",',
' "condition": "baz",',
' },',
'}',
])
for validate_syntax in False, True:
local_scope = gclient_eval.Parse(
deps_file, validate_syntax, '<unknown>', None)
self.assertEqual({
'vars': {'foo': 'bar'},
'deps': {'a_dep': {'url': 'abarb',
'dep_type': 'git'}},
'vars': {'foo': 'bar',
'baz': '"bar" == "bar"'},
'deps': {'src/baz': {'url': 'baz_url',
'dep_type': 'git',
'condition': 'baz'}},
}, local_scope)
def test_no_expands_vars(self):
def test_expands_vars(self):
for validate_syntax in True, False:
local_scope = self.callParse(False,
validate_syntax=validate_syntax)
local_scope = self.callParse(validate_syntax=validate_syntax)
self.assertEqual({
'vars': {'foo': 'bar'},
'deps': {'a_dep': {'url': 'a{foo}b',
'deps': {'a_dep': {'url': 'abarb',
'dep_type': 'git'}},
}, local_scope)
......@@ -651,17 +648,15 @@ class ParseTest(unittest.TestCase):
'}',
])
with self.assertRaises(ValueError) as cm:
with self.assertRaises(KeyError) as cm:
gclient_eval.Parse(
deps_file, True, True,
'<unknown>', {'baz': 'lalala'})
deps_file, True, '<unknown>', {'baz': 'lalala'})
self.assertIn('baz was used as a variable, but was not declared',
str(cm.exception))
with self.assertRaises(KeyError) as cm:
gclient_eval.Parse(
deps_file, True, False,
'<unknown>', {'baz': 'lalala'})
deps_file, False, '<unknown>', {'baz': 'lalala'})
self.assertIn('baz', str(cm.exception))
def test_standardizes_deps_string_dep(self):
......@@ -670,7 +665,7 @@ class ParseTest(unittest.TestCase):
'deps = {',
' "a_dep": "a_url@a_rev",',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {'a_dep': {'url': 'a_url@a_rev',
'dep_type': 'git'}},
......@@ -685,7 +680,7 @@ class ParseTest(unittest.TestCase):
' "condition": "checkout_android",',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {'a_dep': {'url': 'a_url@a_rev',
'dep_type': 'git',
......@@ -703,7 +698,7 @@ class ParseTest(unittest.TestCase):
' "a_dep": None,',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {'a_dep': {'url': 'a_url@a_rev',
'dep_type': 'git'}},
......@@ -720,7 +715,7 @@ class ParseTest(unittest.TestCase):
' "b_dep": "b_url@b_rev"',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {'a_dep': {'url': 'a_url@a_rev',
'dep_type': 'git'},
......@@ -740,7 +735,7 @@ class ParseTest(unittest.TestCase):
' "a_dep": "a_url@a_rev"',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {'a_dep': {'url': 'a_url@a_rev',
'dep_type': 'git'}},
......@@ -760,7 +755,7 @@ class ParseTest(unittest.TestCase):
' "a_dep": "a_url@a_rev"',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {
'a_dep': {'url': 'a_url@a_rev',
......@@ -780,7 +775,7 @@ class ParseTest(unittest.TestCase):
' "a_dep": "a_url@a_rev"',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
'deps': {
'a_dep': {'url': 'a_url@a_rev',
......@@ -804,7 +799,7 @@ class ParseTest(unittest.TestCase):
' "a_dep": "a_url@b_rev"',
' },',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertIn('conflicts with existing deps', str(cm.exception))
def test_merges_hooks_os(self):
......@@ -822,7 +817,7 @@ class ParseTest(unittest.TestCase):
' },',
' ]',
'}',
]), False, validate_syntax, '<unknown>')
]), validate_syntax, '<unknown>')
self.assertEqual({
"hooks": [{"action": ["a", "action"]},
{"action": ["b", "action"], "condition": "checkout_mac"}],
......
......@@ -839,13 +839,15 @@ class GClientSmokeGIT(GClientSmokeBase):
'}',
]))
self.gclient([
results = self.gclient([
'setdep', '-r', 'foo@new_foo', '-r', 'bar@new_bar',
'--var', 'foo_var=new_val', '--deps-file', fake_deps])
with open(fake_deps) as f:
contents = f.read().splitlines()
self.assertEqual('', results[1])
self.assertEqual(0, results[2])
self.assertEqual([
'vars = { ',
' "foo_var": "new_val",',
......@@ -879,11 +881,13 @@ class GClientSmokeGIT(GClientSmokeBase):
'getdep', '-r', 'foo', '-r', 'bar','--var', 'foo_var',
'--deps-file', fake_deps])
self.assertEqual('', results[1])
self.assertEqual([
'foo_val',
'foo_rev',
'bar_rev',
], results[0].splitlines())
self.assertEqual(0, results[2])
def testFlatten(self):
if not self.enabled:
......@@ -928,7 +932,7 @@ class GClientSmokeGIT(GClientSmokeBase):
'deps = {',
' # src -> src/repo2 -> foo/bar',
' "foo/bar": {',
' "url": "/repo_3",',
' "url": "' + self.git_base + 'repo_3",',
' "condition": \'(repo2_false_var) and (true_str_var)\',',
' },',
'',
......@@ -939,43 +943,43 @@ class GClientSmokeGIT(GClientSmokeBase):
'',
' # src -> src/mac_repo',
' "src/mac_repo": {',
' "url": "{repo5_var}",',
' "url": "' + self.git_base + 'repo_5",',
' "condition": \'checkout_mac\',',
' },',
'',
' # src -> src/repo8 -> src/recursed_os_repo',
' "src/recursed_os_repo": {',
' "url": "/repo_5",',
' "url": "' + self.git_base + 'repo_5",',
' "condition": \'(checkout_linux) or (checkout_mac)\',',
' },',
'',
' # src -> src/repo2',
' "src/repo2": {',
' "url": "{git_base}repo_2@%s",' % (
' "url": "' + self.git_base + 'repo_2@%s",' % (
self.githash('repo_2', 1)[:7]),
' "condition": \'true_str_var\',',
' },',
'',
' # src -> src/repo4',
' "src/repo4": {',
' "url": "/repo_4",',
' "url": "' + self.git_base + 'repo_4",',
' "condition": \'False\',',
' },',
'',
' # src -> src/repo8',
' "src/repo8": {',
' "url": "/repo_8",',
' "url": "' + self.git_base + 'repo_8",',
' },',
'',
' # src -> src/unix_repo',
' "src/unix_repo": {',
' "url": "{repo5_var}",',
' "url": "' + self.git_base + 'repo_5",',
' "condition": \'checkout_linux\',',
' },',
'',
' # src -> src/win_repo',
' "src/win_repo": {',
' "url": "{repo5_var}",',
' "url": "' + self.git_base + 'repo_5",',
' "condition": \'checkout_win\',',
' },',
'',
......@@ -991,7 +995,7 @@ class GClientSmokeGIT(GClientSmokeBase):
' "python",',
' "-c",',
' "open(\'src/git_hooked1\', \'w\')'
'.write(\'{hook1_contents}\')",',
'.write(\'git_hooked1\')",',
' ]',
' },',
'',
......@@ -1089,7 +1093,8 @@ class GClientSmokeGIT(GClientSmokeBase):
'deps = {',
' # src -> src/repo2 -> foo/bar',
' "foo/bar": {',
' "url": "/repo_3@%s",' % (self.githash('repo_3', 2)),
' "url": "' + self.git_base + 'repo_3@%s",' % (
self.githash('repo_3', 2)),
' "condition": \'(repo2_false_var) and (true_str_var)\',',
' },',
'',
......@@ -1101,43 +1106,49 @@ class GClientSmokeGIT(GClientSmokeBase):
'',
' # src -> src/mac_repo',
' "src/mac_repo": {',
' "url": "{repo5_var}@%s",' % (self.githash('repo_5', 3)),
' "url": "' + self.git_base + 'repo_5@%s",' % (
self.githash('repo_5', 3)),
' "condition": \'checkout_mac\',',
' },',
'',
' # src -> src/repo8 -> src/recursed_os_repo',
' "src/recursed_os_repo": {',
' "url": "/repo_5@%s",' % (self.githash('repo_5', 3)),
' "url": "' + self.git_base + 'repo_5@%s",' % (
self.githash('repo_5', 3)),
' "condition": \'(checkout_linux) or (checkout_mac)\',',
' },',
'',
' # src -> src/repo2',
' "src/repo2": {',
' "url": "{git_base}repo_2@%s",' % (
' "url": "' + self.git_base + 'repo_2@%s",' % (
self.githash('repo_2', 1)),
' "condition": \'true_str_var\',',
' },',
'',
' # src -> src/repo4',
' "src/repo4": {',
' "url": "/repo_4@%s",' % (self.githash('repo_4', 2)),
' "url": "' + self.git_base + 'repo_4@%s",' % (
self.githash('repo_4', 2)),
' "condition": \'False\',',
' },',
'',
' # src -> src/repo8',
' "src/repo8": {',
' "url": "/repo_8@%s",' % (self.githash('repo_8', 1)),
' "url": "' + self.git_base + 'repo_8@%s",' % (
self.githash('repo_8', 1)),
' },',
'',
' # src -> src/unix_repo',
' "src/unix_repo": {',
' "url": "{repo5_var}@%s",' % (self.githash('repo_5', 3)),
' "url": "' + self.git_base + 'repo_5@%s",' % (
self.githash('repo_5', 3)),
' "condition": \'checkout_linux\',',
' },',
'',
' # src -> src/win_repo',
' "src/win_repo": {',
' "url": "{repo5_var}@%s",' % (self.githash('repo_5', 3)),
' "url": "' + self.git_base + 'repo_5@%s",' % (
self.githash('repo_5', 3)),
' "condition": \'checkout_win\',',
' },',
'',
......@@ -1153,7 +1164,7 @@ class GClientSmokeGIT(GClientSmokeBase):
' "python",',
' "-c",',
' "open(\'src/git_hooked1\', \'w\')'
'.write(\'{hook1_contents}\')",',
'.write(\'git_hooked1\')",',
' ]',
' },',
'',
......@@ -1256,46 +1267,46 @@ class GClientSmokeGIT(GClientSmokeBase):
'',
' # src -> src/repo9 -> src/repo8 -> src/recursed_os_repo',
' "src/recursed_os_repo": {',
' "url": "/repo_5",',
' "url": "' + self.git_base + 'repo_5",',
' "condition": \'(checkout_linux) or (checkout_mac)\',',
' },',
'',
' # src -> src/repo11',
' "src/repo11": {',
' "url": "/repo_11",',
' "url": "' + self.git_base + 'repo_11",',
' "condition": \'(checkout_ios) or (checkout_mac)\',',
' },',
'',
' # src -> src/repo11 -> src/repo12',
' "src/repo12": {',
' "url": "/repo_12",',
' "url": "' + self.git_base + 'repo_12",',
' "condition": \'(checkout_ios) or (checkout_mac)\',',
' },',
'',
' # src -> src/repo9 -> src/repo4',
' "src/repo4": {',
' "url": "/repo_4",',
' "url": "' + self.git_base + 'repo_4",',
' "condition": \'checkout_android\',',
' },',
'',
' # src -> src/repo6',
' "src/repo6": {',
' "url": "/repo_6",',
' "url": "' + self.git_base + 'repo_6",',
' },',
'',
' # src -> src/repo9 -> src/repo7',
' "src/repo7": {',
' "url": "/repo_7",',
' "url": "' + self.git_base + 'repo_7",',
' },',
'',
' # src -> src/repo9 -> src/repo8',
' "src/repo8": {',
' "url": "/repo_8",',
' "url": "' + self.git_base + 'repo_8",',
' },',
'',
' # src -> src/repo9',
' "src/repo9": {',
' "url": "/repo_9",',
' "url": "' + self.git_base + 'repo_9",',
' },',
'',
'}',
......
......@@ -201,7 +201,7 @@ class GclientTest(trial_dir.TestCase):
# auto-fixed.
url = 'proto://host/path/@revision'
d = gclient.Dependency(
None, 'name', url, url, None, None, None,
None, 'name', url, None, None, None,
None, '', True, False, None, True)
self.assertEquals('proto://host/path@revision', d.url)
......@@ -212,10 +212,10 @@ class GclientTest(trial_dir.TestCase):
obj.add_dependencies_and_close(
[
gclient.Dependency(
obj, 'foo', 'svn://example.com/foo', 'svn://example.com/foo', None,
obj, 'foo', 'svn://example.com/foo', None,
None, None, None, 'DEPS', True, False, None, True),
gclient.Dependency(
obj, 'bar', 'svn://example.com/bar', 'svn://example.com/bar', None,
obj, 'bar', 'svn://example.com/bar', None,
None, None, None, 'DEPS', True, False, None, True),
],
[])
......@@ -223,7 +223,7 @@ class GclientTest(trial_dir.TestCase):
[
gclient.Dependency(
obj.dependencies[0], 'foo/dir1', 'svn://example.com/foo/dir1',
'svn://example.com/foo/dir1', None, None, None, None, 'DEPS', True,
None, None, None, None, 'DEPS', True,
False, None, True),
],
[])
......@@ -1130,7 +1130,7 @@ class GclientTest(trial_dir.TestCase):
obj.add_dependencies_and_close(
[
gclient.Dependency(
obj, 'foo', 'svn://example.com/foo', 'svn://example.com/foo', None,
obj, 'foo', 'svn://example.com/foo', None,
None, None, None, 'DEPS', True,
False, None, True),
],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment