Index: tests/gclient_scm_test.py |
diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py |
index f03b9ee2c5562fa5d7f8e162d0c8706129e48502..634ad9810ad0e2230b8b698bd688129f473955d2 100755 |
--- a/tests/gclient_scm_test.py |
+++ b/tests/gclient_scm_test.py |
@@ -10,9 +10,10 @@ from os import rename |
from shutil import rmtree |
from subprocess import Popen, PIPE, STDOUT |
import tempfile |
+import __builtin__ |
# Fixes include path. |
-from super_mox import mox, SuperMoxBaseTestBase |
+from super_mox import mox, SuperMoxBaseTestBase, SuperMoxTestBase |
import gclient_scm |
from gclient_test import BaseTestCase as GCBaseTestCase |
@@ -353,6 +354,14 @@ from :3 |
cwd=path).communicate(input=git_import) |
Popen(['git', 'checkout'], stdout=PIPE, stderr=STDOUT, |
cwd=path).communicate() |
+ Popen(['git', 'remote', 'add', '-f', 'origin', '.'], stdout=PIPE, |
+ stderr=STDOUT, cwd=path).communicate() |
+ Popen(['git', 'checkout', '-b', 'new', 'origin/master'], stdout=PIPE, |
+ stderr=STDOUT, cwd=path).communicate() |
+ Popen(['git', 'push', 'origin', 'origin/origin:origin/master'], stdout=PIPE, |
+ stderr=STDOUT, cwd=path).communicate() |
+ Popen(['git', 'config', '--unset', 'remote.origin.fetch'], stdout=PIPE, |
+ stderr=STDOUT, cwd=path).communicate() |
return True |
def setUp(self): |
@@ -512,6 +521,20 @@ from :3 |
self.assertEquals(scm.revinfo(options, (), None), |
'a7142dc9f0009350b96a11f372b6ea658592aa95') |
+ def testUpdateUnstagedConflict(self): |
+ if not self.enabled: |
+ return |
+ options = self.Options() |
+ scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, |
+ relpath=self.relpath) |
+ file_path = gclient_scm.os.path.join(self.base_path, 'b') |
+ f = open(file_path, 'w').writelines('conflict\n') |
+ exception = ( |
+ "error: Your local changes to 'b' would be overwritten by merge. " |
+ "Aborting.\n" |
+ "Please, commit your changes or stash them before you can merge.\n") |
+ self.assertRaisesError(exception, scm.update, options, (), []) |
+ |
def testUpdateConflict(self): |
if not self.enabled: |
return |
@@ -521,14 +544,19 @@ from :3 |
file_path = gclient_scm.os.path.join(self.base_path, 'b') |
f = open(file_path, 'w').writelines('conflict\n') |
scm._Run(['commit', '-am', 'test']) |
+ self.mox.StubOutWithMock(__builtin__, 'raw_input') |
+ __builtin__.raw_input.__call__(mox.StrContains('Cannot fast-forward merge, ' |
+ 'attempt to rebase? (y)es / ' |
+ '(q)uit / (s)kip : ') |
+ ).AndReturn('y') |
+ self.mox.ReplayAll() |
exception = \ |
- '\n____ .\n' \ |
- '\nConflict while rebasing this branch.\n' \ |
+ 'Conflict while rebasing this branch.\n' \ |
'Fix the conflict and run gclient again.\n' \ |
- 'See man git-rebase for details.\n' |
+ "See 'man git-rebase' for details.\n" |
self.assertRaisesError(exception, scm.update, options, (), []) |
exception = \ |
- '\n____ .\n' \ |
+ '\n____ . at refs/heads/master\n' \ |
'\tAlready in a conflict, i.e. (no branch).\n' \ |
'\tFix the conflict and run gclient again.\n' \ |
'\tOr to abort run:\n\t\tgit-rebase --abort\n' \ |
@@ -544,7 +572,7 @@ from :3 |
git_path = gclient_scm.os.path.join(self.base_path, '.git') |
rename(git_path, git_path + 'foo') |
exception = \ |
- '\n____ .\n' \ |
+ '\n____ . at refs/heads/master\n' \ |
'\tPath is not a git repo. No .git dir.\n' \ |
'\tTo resolve:\n' \ |
'\t\trm -rf .\n' \ |