gclient: Add a command to get revision/variable information.

Introduce a getdep command to get revision/version/variable value information
as a counterpart for gclient setdep.

It will be useful for autorollers.

Bug: 760633
Change-Id: Iabeae0e78c6fbdcb1a3a79cfb380ac2d83f256d5
Reviewed-on: https://chromium-review.googlesource.com/999171
Reviewed-by: Aaron Gable <agable@chromium.org>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
This commit is contained in:
Edward Lesmes
2018-04-05 20:12:55 -04:00
committed by Commit Bot
parent 5e79d07891
commit 411041f9be
3 changed files with 133 additions and 36 deletions

View File

@@ -236,7 +236,7 @@ class EvaluateConditionTest(unittest.TestCase):
str(cm.exception))
class AddVarTest(unittest.TestCase):
class VarTest(unittest.TestCase):
def assert_adds_var(self, before, after):
local_scope = gclient_eval.Exec('\n'.join(before))
gclient_eval.AddVar(local_scope, 'baz', 'lemur')
@@ -276,7 +276,26 @@ class AddVarTest(unittest.TestCase):
'}',
]))
def test_preserves_formatting(self):
def test_gets_and_sets_var(self):
local_scope = gclient_eval.Exec('\n'.join([
'vars = {',
' "foo": "bar",',
'}',
]))
result = gclient_eval.GetVar(local_scope, 'foo')
self.assertEqual(result, "bar")
gclient_eval.SetVar(local_scope, 'foo', 'baz')
result = gclient_eval.RenderDEPSFile(local_scope)
self.assertEqual(result, '\n'.join([
'vars = {',
' "foo": "baz",',
'}',
]))
def test_add_preserves_formatting(self):
before = [
'# Copyright stuff',
'# some initial comments',
@@ -310,25 +329,7 @@ class AddVarTest(unittest.TestCase):
]
self.assert_adds_var(before, after)
class SetVarTest(unittest.TestCase):
def test_sets_var(self):
local_scope = gclient_eval.Exec('\n'.join([
'vars = {',
' "foo": "bar",',
'}',
]))
gclient_eval.SetVar(local_scope, 'foo', 'baz')
result = gclient_eval.RenderDEPSFile(local_scope)
self.assertEqual(result, '\n'.join([
'vars = {',
' "foo": "baz",',
'}',
]))
def test_preserves_formatting(self):
def test_set_preserves_formatting(self):
local_scope = gclient_eval.Exec('\n'.join([
'vars = {',
' # Comment with trailing space ',
@@ -347,8 +348,8 @@ class SetVarTest(unittest.TestCase):
]))
class SetCipdTest(unittest.TestCase):
def test_sets_cipd(self):
class CipdTest(unittest.TestCase):
def test_gets_and_sets_cipd(self):
local_scope = gclient_eval.Exec('\n'.join([
'deps = {',
' "src/cipd/package": {',
@@ -368,6 +369,10 @@ class SetCipdTest(unittest.TestCase):
'}',
]))
result = gclient_eval.GetCIPD(
local_scope, 'src/cipd/package', 'another/cipd/package')
self.assertEqual(result, '5678')
gclient_eval.SetCIPD(
local_scope, 'src/cipd/package', 'another/cipd/package', '6.789')
result = gclient_eval.RenderDEPSFile(local_scope)
@@ -392,13 +397,17 @@ class SetCipdTest(unittest.TestCase):
]))
class SetRevisionTest(unittest.TestCase):
def assert_changes_revision(self, before, after):
class RevisionTest(unittest.TestCase):
def assert_gets_and_sets_revision(self, before, after, rev_before='deadbeef'):
local_scope = gclient_eval.Exec('\n'.join(before))
result = gclient_eval.GetRevision(local_scope, 'src/dep')
self.assertEqual(result, rev_before)
gclient_eval.SetRevision(local_scope, 'src/dep', 'deadfeed')
self.assertEqual('\n'.join(after), gclient_eval.RenderDEPSFile(local_scope))
def test_sets_revision(self):
def test_revision(self):
before = [
'deps = {',
' "src/dep": "https://example.com/dep.git@deadbeef",',
@@ -409,9 +418,9 @@ class SetRevisionTest(unittest.TestCase):
' "src/dep": "https://example.com/dep.git@deadfeed",',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
def test_sets_revision_new_line(self):
def test_revision_new_line(self):
before = [
'deps = {',
' "src/dep": "https://example.com/dep.git@"',
@@ -424,9 +433,9 @@ class SetRevisionTest(unittest.TestCase):
' + "deadfeed",',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
def test_sets_revision_inside_dict(self):
def test_revision_inside_dict(self):
before = [
'deps = {',
' "src/dep": {',
@@ -443,7 +452,7 @@ class SetRevisionTest(unittest.TestCase):
' },',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
def test_follows_var_braces(self):
before = [
@@ -462,7 +471,7 @@ class SetRevisionTest(unittest.TestCase):
' "src/dep": "https://example.com/dep.git@{dep_revision}",',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
def test_follows_var_braces_newline(self):
before = [
@@ -483,7 +492,7 @@ class SetRevisionTest(unittest.TestCase):
' + "@{dep_revision}",',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
def test_follows_var_function(self):
before = [
@@ -502,7 +511,7 @@ class SetRevisionTest(unittest.TestCase):
' "src/dep": "https://example.com/dep.git@" + Var("dep_revision"),',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
def test_pins_revision(self):
before = [
@@ -515,7 +524,7 @@ class SetRevisionTest(unittest.TestCase):
' "src/dep": "https://example.com/dep.git@deadfeed",',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after, rev_before=None)
def test_preserves_formatting(self):
@@ -545,7 +554,7 @@ class SetRevisionTest(unittest.TestCase):
' },',
'}',
]
self.assert_changes_revision(before, after)
self.assert_gets_and_sets_revision(before, after)
class ParseTest(unittest.TestCase):