Chromium Code Reviews| Index: tests/gclient_scm_test.py |
| diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py |
| index 4e90a21e039264a1fb3ce873bf3bb604b963061b..3267745bb5c674d4d7152b0c719620f258612384 100755 |
| --- a/tests/gclient_scm_test.py |
| +++ b/tests/gclient_scm_test.py |
| @@ -8,6 +8,7 @@ |
| # Import before super_mox to keep valid references. |
| from os import rename |
| from shutil import rmtree |
| +import StringIO |
| from subprocess import Popen, PIPE, STDOUT |
| import tempfile |
| import __builtin__ |
| @@ -46,6 +47,20 @@ class BaseTestCase(GCBaseTestCase): |
| self._scm_wrapper = gclient_scm.CreateSCM |
| gclient_scm.sys.stdout.flush = lambda: None |
| gclient_scm.scm.SVN.current_version = None |
| + self.stdout = StringIO.StringIO() |
| + |
| + def tearDown(self): |
| + GCBaseTestCase.tearDown(self) |
| + try: |
| + self.stdout.getvalue() |
| + self.fail() |
| + except AttributeError: |
| + pass |
| + |
| + def checkstdout(self, expected): |
| + value = self.stdout.getvalue() |
| + self.stdout.close() |
| + self.assertEquals(expected, value) |
| class SVNWrapperTestCase(BaseTestCase): |
| @@ -58,7 +73,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| self.force = False |
| self.reset = False |
| self.nohooks = False |
| - self.stdout = gclient_scm.sys.stdout |
| + self.stdout = test_case.stdout |
| def Options(self, *args, **kwargs): |
| return self.OptionsObject(self, *args, **kwargs) |
| @@ -80,11 +95,13 @@ class SVNWrapperTestCase(BaseTestCase): |
| # If you add a member, be sure to add the relevant test! |
| self.compareMembers(self._scm_wrapper('svn://a'), members) |
| + self.checkstdout('') |
| def testUnsupportedSCM(self): |
| args = ['gopher://foo', self.root_dir, self.relpath] |
| exception_msg = 'No SCM found for url gopher://foo' |
| self.assertRaisesError(exception_msg, self._scm_wrapper, *args) |
| + self.checkstdout('') |
| def testSVNFullUrlForRelativeUrl(self): |
| self.url = 'svn://a/b/c/d' |
| @@ -93,6 +110,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| self.assertEqual(scm.FullUrlForRelativeUrl('/crap'), 'svn://a/b/crap') |
| + self.checkstdout('') |
| def testGITFullUrlForRelativeUrl(self): |
| self.url = 'git://a/b/c/d' |
| @@ -101,6 +119,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| self.assertEqual(scm.FullUrlForRelativeUrl('/crap'), 'git://a/b/c/crap') |
| + self.checkstdout('') |
| def testRunCommandException(self): |
| options = self.Options(verbose=False) |
| @@ -113,10 +132,11 @@ class SVNWrapperTestCase(BaseTestCase): |
| exception = "Unsupported argument(s): %s" % ','.join(self.args) |
| self.assertRaisesError(exception, scm.RunCommand, |
| 'update', options, self.args) |
| + self.checkstdout('') |
| def testRunCommandUnknown(self): |
| # TODO(maruel): if ever used. |
| - pass |
| + self.checkstdout('') |
| def testRevertMissing(self): |
| options = self.Options(verbose=True) |
| @@ -127,7 +147,6 @@ class SVNWrapperTestCase(BaseTestCase): |
| # It'll to a checkout instead. |
| gclient_scm.os.path.exists(gclient_scm.os.path.join(base_path, '.git') |
| ).AndReturn(False) |
| - print("\n_____ %s is missing, synching instead" % self.relpath) |
| # Checkout. |
| gclient_scm.os.path.exists(base_path).AndReturn(False) |
| files_list = self.mox.CreateMockAnything() |
| @@ -142,6 +161,8 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.revert(options, self.args, files_list) |
| + self.checkstdout( |
| + ('\n_____ %s is missing, synching instead\n' % self.relpath)) |
| def testRevertNone(self): |
| options = self.Options(verbose=True) |
| @@ -159,6 +180,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| relpath=self.relpath) |
| file_list = [] |
| scm.revert(options, self.args, file_list) |
| + self.checkstdout('') |
| def testRevert2Files(self): |
| options = self.Options(verbose=True) |
| @@ -182,14 +204,15 @@ class SVNWrapperTestCase(BaseTestCase): |
| cwd=base_path, |
| file_list=mox.IgnoreArg(), |
| stdout=options.stdout) |
| - print(gclient_scm.os.path.join(base_path, 'a')) |
| - print(gclient_scm.os.path.join(base_path, 'b')) |
| self.mox.ReplayAll() |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| file_list = [] |
| scm.revert(options, self.args, file_list) |
| + self.checkstdout( |
| + ('%s\n%s\n' % (gclient_scm.os.path.join(base_path, 'a'), |
| + gclient_scm.os.path.join(base_path, 'b')))) |
| def testRevertDirectory(self): |
| options = self.Options(verbose=True) |
| @@ -200,7 +223,6 @@ class SVNWrapperTestCase(BaseTestCase): |
| ] |
| gclient_scm.scm.SVN.CaptureStatus(base_path).AndReturn(items) |
| file_path = gclient_scm.os.path.join(base_path, 'a') |
| - print(file_path) |
| gclient_scm.os.path.exists(file_path).AndReturn(True) |
| gclient_scm.os.path.isfile(file_path).AndReturn(False) |
| gclient_scm.os.path.islink(file_path).AndReturn(False) |
| @@ -218,6 +240,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| relpath=self.relpath) |
| file_list2 = [] |
| scm.revert(options, self.args, file_list2) |
| + self.checkstdout(('%s\n' % file_path)) |
| def testStatus(self): |
| options = self.Options(verbose=True) |
| @@ -233,7 +256,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| relpath=self.relpath) |
| file_list = [] |
| self.assertEqual(scm.status(options, self.args, file_list), None) |
| - |
| + self.checkstdout('') |
| # TODO(maruel): TEST REVISIONS!!! |
| # TODO(maruel): TEST RELOCATE!!! |
| @@ -262,6 +285,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.update(options, (), files_list) |
| + self.checkstdout('') |
| def testUpdateUpdate(self): |
| options = self.Options(verbose=True) |
| @@ -284,10 +308,9 @@ class SVNWrapperTestCase(BaseTestCase): |
| # Checkout or update. |
| gclient_scm.os.path.exists(base_path).AndReturn(True) |
| gclient_scm.scm.SVN.CaptureInfo( |
| - gclient_scm.os.path.join(base_path, "."), '.' |
| - ).AndReturn(file_info) |
| + gclient_scm.os.path.join(base_path, ".")).AndReturn(file_info) |
| # Cheat a bit here. |
| - gclient_scm.scm.SVN.CaptureInfo(file_info['URL'], '.').AndReturn(file_info) |
| + gclient_scm.scm.SVN.CaptureInfo(file_info['URL']).AndReturn(file_info) |
| additional_args = [] |
| if options.manually_grab_svn_rev: |
| additional_args = ['--revision', str(file_info['Revision'])] |
| @@ -304,6 +327,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.update(options, (), files_list) |
| + self.checkstdout('') |
| def testUpdateSingleCheckout(self): |
| options = self.Options(verbose=True) |
| @@ -339,9 +363,8 @@ class SVNWrapperTestCase(BaseTestCase): |
| ).AndReturn(False) |
| gclient_scm.os.path.exists(base_path).AndReturn(True) |
| gclient_scm.scm.SVN.CaptureInfo( |
| - gclient_scm.os.path.join(base_path, "."), '.' |
| - ).AndReturn(file_info) |
| - gclient_scm.scm.SVN.CaptureInfo(file_info['URL'], '.').AndReturn(file_info) |
| + gclient_scm.os.path.join(base_path, ".")).AndReturn(file_info) |
| + gclient_scm.scm.SVN.CaptureInfo(file_info['URL']).AndReturn(file_info) |
| options.stdout.write("\n_____ %s at 42" % self.relpath) |
| options.stdout.write('\n') |
| @@ -349,6 +372,8 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.updatesingle(options, ['DEPS'], files_list) |
| + self.checkstdout( |
| + 2 * ('\n_____ %s at 42\n' % self.relpath)) |
| def testUpdateSingleCheckoutSVN14(self): |
| options = self.Options(verbose=True) |
| @@ -376,6 +401,7 @@ class SVNWrapperTestCase(BaseTestCase): |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.updatesingle(options, ['DEPS'], files_list) |
| + self.checkstdout('') |
| def testUpdateSingleCheckoutSVNUpgrade(self): |
| options = self.Options(verbose=True) |
| @@ -414,15 +440,15 @@ class SVNWrapperTestCase(BaseTestCase): |
| ).AndReturn(False) |
| gclient_scm.os.path.exists(base_path).AndReturn(True) |
| gclient_scm.scm.SVN.CaptureInfo( |
| - gclient_scm.os.path.join(base_path, "."), '.' |
| - ).AndReturn(file_info) |
| - gclient_scm.scm.SVN.CaptureInfo(file_info['URL'], '.').AndReturn(file_info) |
| - print("\n_____ %s at 42" % self.relpath) |
| + gclient_scm.os.path.join(base_path, ".")).AndReturn(file_info) |
| + gclient_scm.scm.SVN.CaptureInfo(file_info['URL']).AndReturn(file_info) |
| self.mox.ReplayAll() |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.updatesingle(options, ['DEPS'], files_list) |
| + self.checkstdout( |
| + ('\n_____ %s at 42\n' % self.relpath)) |
| def testUpdateSingleUpdate(self): |
| options = self.Options(verbose=True) |
| @@ -448,27 +474,27 @@ class SVNWrapperTestCase(BaseTestCase): |
| ).AndReturn(False) |
| gclient_scm.os.path.exists(base_path).AndReturn(True) |
| gclient_scm.scm.SVN.CaptureInfo( |
| - gclient_scm.os.path.join(base_path, "."), '.' |
| - ).AndReturn(file_info) |
| - gclient_scm.scm.SVN.CaptureInfo(file_info['URL'], '.').AndReturn(file_info) |
| - print("\n_____ %s at 42" % self.relpath) |
| + gclient_scm.os.path.join(base_path, ".")).AndReturn(file_info) |
| + gclient_scm.scm.SVN.CaptureInfo(file_info['URL']).AndReturn(file_info) |
| self.mox.ReplayAll() |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| scm.updatesingle(options, ['DEPS'], files_list) |
| + self.checkstdout('\n_____ %s at 42\n' % self.relpath) |
| def testUpdateGit(self): |
| options = self.Options(verbose=True) |
| file_path = gclient_scm.os.path.join(self.root_dir, self.relpath, '.git') |
| gclient_scm.os.path.exists(file_path).AndReturn(True) |
| - print("________ found .git directory; skipping %s" % self.relpath) |
| self.mox.ReplayAll() |
| scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, |
| relpath=self.relpath) |
| file_list = [] |
| scm.update(options, self.args, file_list) |
|
bradn
2010/09/09 05:13:38
I suppose you could add self.expected_stdout defau
M-A Ruel
2010/09/09 13:24:15
scm.update() is the actual function being tested,
|
| + self.checkstdout( |
| + ('________ found .git directory; skipping %s\n' % self.relpath)) |
| class GitWrapperTestCase(BaseTestCase): |
| @@ -482,6 +508,7 @@ class GitWrapperTestCase(BaseTestCase): |
| self.force = False |
| self.reset = False |
| self.nohooks = False |
| + self.stdout = StringIO.StringIO() |
| sample_git_import = """blob |
| mark :1 |
| @@ -560,10 +587,10 @@ from :3 |
| self.relpath = '.' |
| self.base_path = gclient_scm.os.path.join(self.root_dir, self.relpath) |
| self.enabled = self.CreateGitRepo(self.sample_git_import, self.base_path) |
| - SuperMoxBaseTestBase.setUp(self) |
| + BaseTestBase.setUp(self) |
| def tearDown(self): |
| - SuperMoxBaseTestBase.tearDown(self) |
| + BaseTestBase.tearDown(self) |
| rmtree(self.root_dir) |
| def testDir(self): |