Chromium Code Reviews| Index: tests/gclient_scm_test.py |
| diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py |
| index a79bc25571ddce081db923179bb2f36d31e85b02..0341229c37f775d0826f43501b3f6d5b457eed87 100755 |
| --- a/tests/gclient_scm_test.py |
| +++ b/tests/gclient_scm_test.py |
| @@ -891,7 +891,9 @@ from :3 |
| TestCaseUtils.setUp(self) |
| unittest.TestCase.setUp(self) |
| self.url = 'git://foo' |
| - self.root_dir = tempfile.mkdtemp() |
| + # The .git suffix allows gclient_scm to recognize the dir as a git repo |
| + # when cloning it locally |
| + self.root_dir = tempfile.mkdtemp('.git') |
| self.relpath = '.' |
| self.base_path = join(self.root_dir, self.relpath) |
| self.enabled = self.CreateGitRepo(self.sample_git_import, self.base_path) |
| @@ -1377,6 +1379,181 @@ class ManagedGitWrapperTestCaseMox(BaseTestCase): |
| class UnmanagedGitWrapperTestCase(BaseGitWrapperTestCase): |
| + def checkInStdout(self, expected): |
| + value = sys.stdout.getvalue() |
| + sys.stdout.close() |
| + # pylint: disable=E1101 |
| + self.assertIn(expected, value) |
| + |
| + def checkNotInStdout(self, expected): |
| + value = sys.stdout.getvalue() |
| + sys.stdout.close() |
| + # pylint: disable=E1101 |
| + self.assertNotIn(expected, value) |
| + |
| + def getCurrentBranch(self): |
| + # Returns name of current branch or HEAD for detached HEAD |
| + branch = gclient_scm.scm.GIT.Capture(['rev-parse', '--abbrev-ref', 'HEAD'], |
| + cwd=self.base_path) |
| + if branch == 'HEAD': |
| + return None |
| + return branch |
| + |
| + def testUpdateClone(self): |
| + if not self.enabled: |
| + return |
| + options = self.Options() |
| + |
| + origin_root_dir = self.root_dir |
| + self.root_dir = tempfile.mkdtemp() |
| + self.relpath = '.' |
| + self.base_path = join(self.root_dir, self.relpath) |
| + |
| + scm = gclient_scm.CreateSCM(url=origin_root_dir, |
| + root_dir=self.root_dir, |
| + relpath=self.relpath) |
| + |
| + expected_file_list = [join(self.base_path, "a"), |
| + join(self.base_path, "b")] |
| + file_list = [] |
| + options.revision = 'unmanaged' |
| + scm.update(options, (), file_list) |
| + |
| + self.assertEquals(file_list, expected_file_list) |
| + self.assertEquals(scm.revinfo(options, (), None), |
| + '069c602044c5388d2d15c3f875b057c852003458') |
| + # indicates detached HEAD |
| + self.assertEquals(self.getCurrentBranch(), None) |
| + self.checkInStdout( |
| + 'Checked out refs/remotes/origin/master to a detached HEAD') |
| + |
| + rmtree(origin_root_dir) |
| + |
| + def testUpdateCloneOnCommit(self): |
| + if not self.enabled: |
| + return |
| + options = self.Options() |
| + |
| + origin_root_dir = self.root_dir |
| + self.root_dir = tempfile.mkdtemp() |
| + self.relpath = '.' |
| + self.base_path = join(self.root_dir, self.relpath) |
| + url_with_commit_ref = origin_root_dir +\ |
| + '@a7142dc9f0009350b96a11f372b6ea658592aa95' |
| + |
| + scm = gclient_scm.CreateSCM(url=url_with_commit_ref, |
| + root_dir=self.root_dir, |
| + relpath=self.relpath) |
| + |
| + expected_file_list = [join(self.base_path, "a"), |
| + join(self.base_path, "b")] |
| + file_list = [] |
| + options.revision = 'unmanaged' |
| + scm.update(options, (), file_list) |
| + |
| + self.assertEquals(file_list, expected_file_list) |
| + self.assertEquals(scm.revinfo(options, (), None), |
| + 'a7142dc9f0009350b96a11f372b6ea658592aa95') |
| + # indicates detached HEAD |
| + self.assertEquals(self.getCurrentBranch(), None) |
| + self.checkInStdout( |
| + 'Checked out a7142dc9f0009350b96a11f372b6ea658592aa95 to a detached HEAD') |
| + |
| + rmtree(origin_root_dir) |
| + |
| + def testUpdateCloneOnBranch(self): |
| + if not self.enabled: |
| + return |
| + options = self.Options() |
| + |
| + origin_root_dir = self.root_dir |
| + self.root_dir = tempfile.mkdtemp() |
| + self.relpath = '.' |
| + self.base_path = join(self.root_dir, self.relpath) |
| + url_with_branch_ref = origin_root_dir + '@feature' |
| + |
| + scm = gclient_scm.CreateSCM(url=url_with_branch_ref, |
| + root_dir=self.root_dir, |
| + relpath=self.relpath) |
| + |
| + expected_file_list = [join(self.base_path, "a"), |
| + join(self.base_path, "b"), |
| + join(self.base_path, "c")] |
| + file_list = [] |
| + options.revision = 'unmanaged' |
| + scm.update(options, (), file_list) |
| + |
| + self.assertEquals(file_list, expected_file_list) |
| + self.assertEquals(scm.revinfo(options, (), None), |
| + '9a51244740b25fa2ded5252ca00a3178d3f665a9') |
| + self.assertEquals(self.getCurrentBranch(), 'feature') |
| + self.checkNotInStdout('Checked out feature to a detached HEAD') |
| + |
| + rmtree(origin_root_dir) |
| + |
| + def testUpdateCloneOnDetachedBranch(self): |
| + if not self.enabled: |
| + return |
| + options = self.Options() |
| + |
| + origin_root_dir = self.root_dir |
| + self.root_dir = tempfile.mkdtemp() |
| + self.relpath = '.' |
| + self.base_path = join(self.root_dir, self.relpath) |
| + url_with_branch_ref = origin_root_dir + '@refs/remotes/origin/feature' |
| + |
| + scm = gclient_scm.CreateSCM(url=url_with_branch_ref, |
| + root_dir=self.root_dir, |
| + relpath=self.relpath) |
| + |
| + expected_file_list = [join(self.base_path, "a"), |
| + join(self.base_path, "b"), |
| + join(self.base_path, "c")] |
| + file_list = [] |
| + options.revision = 'unmanaged' |
| + scm.update(options, (), file_list) |
| + |
| + self.assertEquals(file_list, expected_file_list) |
| + self.assertEquals(scm.revinfo(options, (), None), |
| + '9a51244740b25fa2ded5252ca00a3178d3f665a9') |
| + # indicates detached HEAD |
| + self.assertEquals(self.getCurrentBranch(), None) |
| + self.checkInStdout( |
| + 'Checked out refs/remotes/origin/feature to a detached HEAD') |
| + |
| + rmtree(origin_root_dir) |
| + |
| + def testUpdateCloneOnBranchHead(self): |
|
Michael Moss
2014/09/08 20:24:01
(Dredging up this old CL because this test is caus
|
| + if not self.enabled: |
| + return |
| + options = self.Options() |
| + |
| + origin_root_dir = self.root_dir |
| + self.root_dir = tempfile.mkdtemp() |
| + self.relpath = '.' |
| + self.base_path = join(self.root_dir, self.relpath) |
| + url_with_branch_ref = origin_root_dir + '@refs/heads/feature' |
| + |
| + scm = gclient_scm.CreateSCM(url=url_with_branch_ref, |
| + root_dir=self.root_dir, |
| + relpath=self.relpath) |
| + |
| + expected_file_list = [join(self.base_path, "a"), |
| + join(self.base_path, "b"), |
| + join(self.base_path, "c")] |
| + file_list = [] |
| + options.revision = 'unmanaged' |
| + scm.update(options, (), file_list) |
| + |
| + self.assertEquals(file_list, expected_file_list) |
| + self.assertEquals(scm.revinfo(options, (), None), |
| + '9a51244740b25fa2ded5252ca00a3178d3f665a9') |
| + self.assertEquals(self.getCurrentBranch(), 'feature') |
| + self.checkNotInStdout( |
| + 'Checked out refs/heads/feature to a detached HEAD') |
| + |
| + rmtree(origin_root_dir) |
| + |
| def testUpdateUpdate(self): |
| if not self.enabled: |
| return |