| Index: tests/gclient_scm_test.py
|
| diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py
|
| index 5607f85dda123b20633d3daaf9003d91e43fda66..741727e34f69c58b42145616866fff6377fae95c 100755
|
| --- a/tests/gclient_scm_test.py
|
| +++ b/tests/gclient_scm_test.py
|
| @@ -16,7 +16,6 @@ import os
|
| import sys
|
| import tempfile
|
| import unittest
|
| -import __builtin__
|
|
|
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
| @@ -752,6 +751,20 @@ from :3
|
| M 100644 :4 a
|
| M 100644 :5 b
|
|
|
| +blob
|
| +mark :7
|
| +data 5
|
| +Mooh
|
| +
|
| +commit refs/heads/feature
|
| +mark :8
|
| +author Bob <bob@example.com> 1390311986 -0000
|
| +committer Bob <bob@example.com> 1390311986 -0000
|
| +data 6
|
| +Add C
|
| +from :3
|
| +M 100644 :7 c
|
| +
|
| reset refs/heads/master
|
| from :3
|
| """
|
| @@ -785,6 +798,12 @@ from :3
|
| stderr=STDOUT, cwd=path).communicate()
|
| return True
|
|
|
| + def _GetAskForDataCallback(self, expected_prompt, return_value):
|
| + def AskForData(prompt, options):
|
| + self.assertEquals(prompt, expected_prompt)
|
| + return return_value
|
| + return AskForData
|
| +
|
| def setUp(self):
|
| TestCaseUtils.setUp(self)
|
| unittest.TestCase.setUp(self)
|
| @@ -967,6 +986,51 @@ class ManagedGitWrapperTestCase(BaseGitWrapperTestCase):
|
| 'a7142dc9f0009350b96a11f372b6ea658592aa95')
|
| sys.stdout.close()
|
|
|
| + def testUpdateMerge(self):
|
| + if not self.enabled:
|
| + return
|
| + options = self.Options()
|
| + options.merge = True
|
| + scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
|
| + relpath=self.relpath)
|
| + scm._Run(['checkout', '-q', 'feature'], options)
|
| + rev = scm.revinfo(options, (), None)
|
| + file_list = []
|
| + scm.update(options, (), file_list)
|
| + self.assertEquals(file_list, [join(self.base_path, x)
|
| + for x in ['a', 'b', 'c']])
|
| + # The actual commit that is created is unstable, so we verify its tree and
|
| + # parents instead.
|
| + self.assertEquals(scm._Capture(['rev-parse', 'HEAD:']),
|
| + 'd2e35c10ac24d6c621e14a1fcadceb533155627d')
|
| + self.assertEquals(scm._Capture(['rev-parse', 'HEAD^1']), rev)
|
| + self.assertEquals(scm._Capture(['rev-parse', 'HEAD^2']),
|
| + scm._Capture(['rev-parse', 'origin/master']))
|
| + sys.stdout.close()
|
| +
|
| + def testUpdateRebase(self):
|
| + if not self.enabled:
|
| + return
|
| + options = self.Options()
|
| + scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir,
|
| + relpath=self.relpath)
|
| + scm._Run(['checkout', '-q', 'feature'], options)
|
| + file_list = []
|
| + # Fake a 'y' key press.
|
| + scm._AskForData = self._GetAskForDataCallback(
|
| + 'Cannot fast-forward merge, attempt to rebase? '
|
| + '(y)es / (q)uit / (s)kip : ', 'y')
|
| + scm.update(options, (), file_list)
|
| + self.assertEquals(file_list, [join(self.base_path, x)
|
| + for x in ['a', 'b', 'c']])
|
| + # The actual commit that is created is unstable, so we verify its tree and
|
| + # parent instead.
|
| + self.assertEquals(scm._Capture(['rev-parse', 'HEAD:']),
|
| + 'd2e35c10ac24d6c621e14a1fcadceb533155627d')
|
| + self.assertEquals(scm._Capture(['rev-parse', 'HEAD^']),
|
| + scm._Capture(['rev-parse', 'origin/master']))
|
| + sys.stdout.close()
|
| +
|
| def testUpdateReset(self):
|
| if not self.enabled:
|
| return
|
| @@ -1039,7 +1103,9 @@ class ManagedGitWrapperTestCase(BaseGitWrapperTestCase):
|
| file_path = join(self.base_path, 'b')
|
| open(file_path, 'w').writelines('conflict\n')
|
| scm._Run(['commit', '-am', 'test'], options)
|
| - __builtin__.raw_input = lambda x: 'y'
|
| + scm._AskForData = self._GetAskForDataCallback(
|
| + 'Cannot fast-forward merge, attempt to rebase? '
|
| + '(y)es / (q)uit / (s)kip : ', 'y')
|
| exception = ('Conflict while rebasing this branch.\n'
|
| 'Fix the conflict and run gclient again.\n'
|
| 'See \'man git-rebase\' for details.\n')
|
|
|