Index: tests/gclient_scm_test.py |
=================================================================== |
--- tests/gclient_scm_test.py (revision 101995) |
+++ tests/gclient_scm_test.py (working copy) |
@@ -442,8 +442,8 @@ |
('________ found .hg directory; skipping %s\n' % self.relpath)) |
-class GitWrapperTestCase(GCBaseTestCase, StdoutCheck, TestCaseUtils, |
- unittest.TestCase): |
+class BaseGitWrapperTestCase(GCBaseTestCase, StdoutCheck, TestCaseUtils, |
+ unittest.TestCase): |
"""This class doesn't use pymox.""" |
class OptionsObject(object): |
def __init__(self, verbose=False, revision=None): |
@@ -543,6 +543,8 @@ |
unittest.TestCase.tearDown(self) |
rmtree(self.root_dir) |
+ |
+class ManagedGitWrapperTestCase(BaseGitWrapperTestCase): |
def testDir(self): |
members = [ |
'FullUrlForRelativeUrl', 'GetRevisionDate', 'RunCommand', |
@@ -823,6 +825,64 @@ |
self.assertEquals(rev_info, '069c602044c5388d2d15c3f875b057c852003458') |
+class UnmanagedGitWrapperTestCase(BaseGitWrapperTestCase): |
+ def testUpdateCheckout(self): |
+ if not self.enabled: |
+ return |
+ options = self.Options(verbose=True) |
+ root_dir = gclient_scm.os.path.realpath(tempfile.mkdtemp()) |
+ relpath = 'foo' |
+ base_path = join(root_dir, relpath) |
+ url = join(self.base_path, '.git') |
+ try: |
+ scm = gclient_scm.CreateSCM(url=url, root_dir=root_dir, |
+ relpath=relpath) |
+ file_list = [] |
+ options.revision = 'unmanaged' |
+ scm.update(options, (), file_list) |
+ self.assertEquals(len(file_list), 2) |
+ self.assert_(gclient_scm.os.path.isfile(join(base_path, 'a'))) |
+ self.assertEquals(scm.revinfo(options, (), None), |
+ '069c602044c5388d2d15c3f875b057c852003458') |
+ finally: |
+ rmtree(root_dir) |
+ msg1 = ( |
+ "\n_____ foo at refs/heads/master\n\n" |
+ "________ running 'git clone -b master --verbose %s %s' in '%s'\n" |
+ "Initialized empty Git repository in %s\n") % ( |
+ join(self.root_dir, '.', '.git'), |
+ join(root_dir, 'foo'), |
+ root_dir, |
+ join(gclient_scm.os.path.realpath(root_dir), 'foo', '.git') + '/') |
+ msg2 = ( |
+ "\n_____ foo at refs/heads/master\n\n" |
+ "________ running 'git clone -b master --verbose %s %s' in '%s'\n" |
+ "Cloning into %s...\ndone.\n") % ( |
+ join(self.root_dir, '.', '.git'), |
+ join(root_dir, 'foo'), |
+ root_dir, |
+ join(gclient_scm.os.path.realpath(root_dir), 'foo')) |
+ out = sys.stdout.getvalue() |
+ sys.stdout.close() |
+ sys.stdout = self._old_stdout |
+ self.assertTrue(out in (msg1, msg2), (out, msg1, msg2)) |
+ |
+ def testUpdateUpdate(self): |
+ if not self.enabled: |
+ return |
+ options = self.Options() |
+ expected_file_list = [] |
+ scm = gclient_scm.CreateSCM(url=self.url, root_dir=self.root_dir, |
+ relpath=self.relpath) |
+ file_list = [] |
+ options.revision = 'unmanaged' |
+ scm.update(options, (), file_list) |
+ self.assertEquals(file_list, expected_file_list) |
+ self.assertEquals(scm.revinfo(options, (), None), |
+ '069c602044c5388d2d15c3f875b057c852003458') |
+ self.checkstdout('________ unmanaged solution; skipping .\n') |
+ |
+ |
if __name__ == '__main__': |
if '-v' in sys.argv: |
logging.basicConfig( |