Index: tests/gclient_test.py |
=================================================================== |
--- tests/gclient_test.py (revision 15861) |
+++ tests/gclient_test.py (working copy) |
@@ -77,21 +77,6 @@ |
else: |
self.fail('%s not raised' % msg) |
- def compareMembers(self, object, members): |
- """If you add a member, be sure to add the relevant test!""" |
- # Skip over members starting with '_' since they are usually not meant to |
- # be for public use. |
- actual_members = [x for x in sorted(dir(object)) |
- if not x.startswith('_')] |
- expected_members = sorted(members) |
- if actual_members != expected_members: |
- diff = ([i for i in actual_members if i not in expected_members] + |
- [i for i in expected_members if i not in actual_members]) |
- print diff |
- self.assertEqual(actual_members, expected_members) |
- |
- |
-class GClientBaseTestCase(BaseTestCase): |
def Options(self, *args, **kwargs): |
return self.OptionsObject(self, *args, **kwargs) |
@@ -114,8 +99,11 @@ |
gclient.RunSVN = self.mox.CreateMockAnything() |
self._RunSVNAndGetFileList = gclient.RunSVNAndGetFileList |
gclient.RunSVNAndGetFileList = self.mox.CreateMockAnything() |
- self._sys_stdout = gclient.sys.stdout |
- gclient.sys.stdout = self.mox.CreateMock(self._sys_stdout) |
+ # Doesn't seem to work very well: |
+ self._os = gclient.os |
+ gclient.os = self.mox.CreateMock(os) |
+ self._sys = gclient.sys |
+ gclient.sys = self.mox.CreateMock(sys) |
self._subprocess = gclient.subprocess |
gclient.subprocess = self.mox.CreateMock(subprocess) |
@@ -128,11 +116,13 @@ |
gclient.RemoveDirectory = self._RemoveDirectory |
gclient.RunSVN = self._RunSVN |
gclient.RunSVNAndGetFileList = self._RunSVNAndGetFileList |
- gclient.sys.stdout = self._sys_stdout |
+ # Doesn't seem to work very well: |
+ gclient.os = self._os |
+ gclient.sys = self._sys |
gclient.subprocess = self._subprocess |
-class GclientTestCase(GClientBaseTestCase): |
+class GclientTestCase(BaseTestCase): |
class OptionsObject(object): |
def __init__(self, test_case, verbose=False, spec=None, |
config_filename='a_file_name', |
@@ -150,16 +140,19 @@ |
self.head = False |
# Mox |
+ self.stdout = test_case.stdout |
self.path_exists = test_case.path_exists |
self.platform = test_case.platform |
self.gclient = test_case.gclient |
self.scm_wrapper = test_case.scm_wrapper |
def setUp(self): |
- GClientBaseTestCase.setUp(self) |
+ BaseTestCase.setUp(self) |
+ self.stdout = self.mox.CreateMock(sys.stdout) |
#self.subprocess = self.mox.CreateMock(subprocess) |
# Stub os.path.exists. |
self.path_exists = self.mox.CreateMockAnything() |
+ self.sys = self.mox.CreateMock(sys) |
self.platform = 'darwin' |
self.gclient = self.mox.CreateMock(gclient.GClient) |
@@ -170,7 +163,7 @@ |
self.url = Url() |
-class GClientCommandsTestCase(GClientBaseTestCase): |
+class GClientCommandsTestCase(BaseTestCase): |
def testCommands(self): |
known_commands = [gclient.DoCleanup, gclient.DoConfig, gclient.DoDiff, |
gclient.DoHelp, gclient.DoStatus, gclient.DoUpdate, |
@@ -231,23 +224,24 @@ |
class TestDoHelp(GclientTestCase): |
def testGetUsage(self): |
- print(gclient.COMMAND_USAGE_TEXT['config']) |
- self.mox.ReplayAll() |
options = self.Options() |
+ print >> options.stdout, gclient.COMMAND_USAGE_TEXT['config'] |
+ |
+ self.mox.ReplayAll() |
gclient.DoHelp(options, ('config',)) |
self.mox.VerifyAll() |
def testTooManyArgs(self): |
- self.mox.ReplayAll() |
options = self.Options() |
+ self.mox.ReplayAll() |
self.assertRaisesError("unknown subcommand 'config'; see 'gclient help'", |
gclient.DoHelp, options, ('config', |
'another argument')) |
self.mox.VerifyAll() |
def testUnknownSubcommand(self): |
- self.mox.ReplayAll() |
options = self.Options() |
+ self.mox.ReplayAll() |
self.assertRaisesError("unknown subcommand 'xyzzy'; see 'gclient help'", |
gclient.DoHelp, options, ('xyzzy',)) |
self.mox.VerifyAll() |
@@ -279,7 +273,7 @@ |
self.gclient.LoadCurrentConfig(options).AndReturn(self.gclient) |
text = "# Dummy content\nclient = 'my client'" |
self.gclient.ConfigContent().AndReturn(text) |
- print(text) |
+ print >>self.stdout, text |
self.gclient.RunOnDeps(command, self.args).AndReturn(0) |
self.mox.ReplayAll() |
@@ -337,7 +331,7 @@ |
self.gclient.GetVar("solutions") |
text = "# Dummy content\nclient = 'my client'" |
self.gclient.ConfigContent().AndReturn(text) |
- print(text) |
+ print >>self.stdout, text |
self.gclient.RunOnDeps(command, self.args).AndReturn(0) |
self.mox.ReplayAll() |
@@ -383,14 +377,18 @@ |
class GClientClassTestCase(GclientTestCase): |
def testDir(self): |
- members = [ |
- 'ConfigContent', 'FromImpl', 'GetVar', 'LoadCurrentConfig', |
- 'RunOnDeps', 'SaveConfig', 'SetConfig', 'SetDefaultConfig', |
- 'supported_commands', 'PrintRevInfo', |
- ] |
+ members = ['ConfigContent', 'FromImpl', '_VarImpl', '_ParseAllDeps', |
+ '_ParseSolutionDeps', 'GetVar', '_LoadConfig', 'LoadCurrentConfig', |
+ '_ReadEntries', '_RunHookAction', '_RunHooks', 'RunOnDeps', 'SaveConfig', |
+ '_SaveEntries', 'SetConfig', 'SetDefaultConfig', 'supported_commands', |
+ 'PrintRevInfo'] |
# If you add a member, be sure to add the relevant test! |
- self.compareMembers(gclient.GClient('root_dir', 'options'), members) |
+ actual_members = [x for x in sorted(dir(gclient.GClient)) |
+ if not x.startswith('__')] |
+ self.assertEqual(actual_members, sorted(members)) |
+ self.mox.ReplayAll() |
+ self.mox.VerifyAll() |
def testSetConfig_ConfigContent_GetVar_SaveConfig_SetDefaultConfig(self): |
options = self.Options() |
@@ -733,11 +731,11 @@ |
def testRunOnDepsRevisions(self): |
def OptIsRev(options, rev): |
if not options.revision == str(rev): |
- print("options.revision = %s" % options.revision) |
+ print "options.revision = %s" % options.revision |
return options.revision == str(rev) |
def OptIsRevNone(options): |
if options.revision: |
- print("options.revision = %s" % options.revision) |
+ print "options.revision = %s" % options.revision |
return options.revision == None |
def OptIsRev42(options): |
return OptIsRev(options, 42) |
@@ -1060,7 +1058,7 @@ |
pass |
-class SCMWrapperTestCase(GClientBaseTestCase): |
+class SCMWrapperTestCase(BaseTestCase): |
class OptionsObject(object): |
def __init__(self, test_case, verbose=False, revision=None): |
self.verbose = verbose |
@@ -1070,25 +1068,29 @@ |
self.force = False |
# Mox |
+ self.stdout = test_case.stdout |
self.path_exists = test_case.path_exists |
def setUp(self): |
- GClientBaseTestCase.setUp(self) |
+ BaseTestCase.setUp(self) |
self.root_dir = Dir() |
self.args = Args() |
self.url = Url() |
self.relpath = 'asf' |
+ self.stdout = self.mox.CreateMock(sys.stdout) |
# Stub os.path.exists. |
self.path_exists = self.mox.CreateMockAnything() |
def testDir(self): |
- members = [ |
- 'FullUrlForRelativeUrl', 'RunCommand', 'cleanup', 'diff', 'relpath', |
- 'revert', 'scm_name', 'status', 'update', 'url', |
- ] |
+ members = ['FullUrlForRelativeUrl', 'RunCommand', |
+ 'cleanup', 'diff', 'revert', 'status', 'update'] |
# If you add a member, be sure to add the relevant test! |
- self.compareMembers(gclient.SCMWrapper(), members) |
+ actual_members = [x for x in sorted(dir(gclient.SCMWrapper)) |
+ if not x.startswith('__')] |
+ self.assertEqual(actual_members, sorted(members)) |
+ self.mox.ReplayAll() |
+ self.mox.VerifyAll() |
def testFullUrlForRelativeUrl(self): |
self.url = 'svn://a/b/c/d' |
@@ -1123,11 +1125,12 @@ |
gclient.os.path.isdir(base_path).AndReturn(False) |
# It'll to a checkout instead. |
options.path_exists(os.path.join(base_path, '.git')).AndReturn(False) |
- print("\n_____ %s is missing, synching instead" % self.relpath) |
+ print >>options.stdout, ("\n_____ %s is missing, synching instead" % |
+ self.relpath) |
# Checkout. |
options.path_exists(base_path).AndReturn(False) |
files_list = self.mox.CreateMockAnything() |
- gclient.RunSVNAndGetFileList(['checkout', self.url, base_path], |
+ gclient.RunSVNAndGetFileList(options, ['checkout', self.url, base_path], |
self.root_dir, files_list) |
self.mox.ReplayAll() |
@@ -1142,7 +1145,7 @@ |
base_path = os.path.join(self.root_dir, self.relpath) |
gclient.os.path.isdir = self.mox.CreateMockAnything() |
gclient.os.path.isdir(base_path).AndReturn(True) |
- gclient.CaptureSVNStatus(base_path).AndReturn([]) |
+ gclient.CaptureSVNStatus(options, base_path).AndReturn([]) |
self.mox.ReplayAll() |
scm = gclient.SCMWrapper(url=self.url, root_dir=self.root_dir, |
@@ -1161,11 +1164,11 @@ |
gclient.FileStatus('a', 'M', ' ', ' ', ' '), |
gclient.FileStatus('b', 'A', ' ', ' ', ' '), |
] |
- gclient.CaptureSVNStatus(base_path).AndReturn(items) |
+ gclient.CaptureSVNStatus(options, base_path).AndReturn(items) |
- print(os.path.join(base_path, 'a')) |
- print(os.path.join(base_path, 'b')) |
- gclient.RunSVN(['revert', 'a', 'b'], base_path) |
+ print >>options.stdout, os.path.join(base_path, 'a') |
+ print >>options.stdout, os.path.join(base_path, 'b') |
+ gclient.RunSVN(options, ['revert', 'a', 'b'], base_path) |
self.mox.ReplayAll() |
scm = gclient.SCMWrapper(url=self.url, root_dir=self.root_dir, |
@@ -1180,7 +1183,7 @@ |
base_path = os.path.join(self.root_dir, self.relpath) |
gclient.os.path.isdir = self.mox.CreateMockAnything() |
gclient.os.path.isdir(base_path).AndReturn(True) |
- gclient.RunSVNAndGetFileList(['status'] + self.args, base_path, |
+ gclient.RunSVNAndGetFileList(options, ['status'] + self.args, base_path, |
[]).AndReturn(None) |
self.mox.ReplayAll() |
@@ -1205,7 +1208,7 @@ |
# Checkout. |
options.path_exists(base_path).AndReturn(False) |
files_list = self.mox.CreateMockAnything() |
- gclient.RunSVNAndGetFileList(['checkout', self.url, base_path], |
+ gclient.RunSVNAndGetFileList(options, ['checkout', self.url, base_path], |
self.root_dir, files_list) |
self.mox.ReplayAll() |
scm = gclient.SCMWrapper(url=self.url, root_dir=self.root_dir, |
@@ -1226,15 +1229,15 @@ |
options.path_exists(os.path.join(base_path, '.git')).AndReturn(False) |
# Checkout or update. |
options.path_exists(base_path).AndReturn(True) |
- gclient.CaptureSVNInfo(os.path.join(base_path, "."), '.' |
+ gclient.CaptureSVNInfo(options, os.path.join(base_path, "."), '.' |
).AndReturn(file_info) |
# Cheat a bit here. |
- gclient.CaptureSVNInfo(file_info['URL'], '.').AndReturn(file_info) |
+ gclient.CaptureSVNInfo(options, file_info['URL'], '.').AndReturn(file_info) |
additional_args = [] |
if options.manually_grab_svn_rev: |
additional_args = ['--revision', str(file_info['Revision'])] |
files_list = [] |
- gclient.RunSVNAndGetFileList(['update', base_path] + additional_args, |
+ gclient.RunSVNAndGetFileList(options, ['update', base_path] + additional_args, |
self.root_dir, files_list) |
self.mox.ReplayAll() |
@@ -1247,7 +1250,8 @@ |
options = self.Options(verbose=True) |
options.path_exists(os.path.join(self.root_dir, self.relpath, '.git') |
).AndReturn(True) |
- print("________ found .git directory; skipping %s" % self.relpath) |
+ print >> options.stdout, ( |
+ "________ found .git directory; skipping %s" % self.relpath) |
self.mox.ReplayAll() |
scm = gclient.SCMWrapper(url=self.url, root_dir=self.root_dir, |
@@ -1272,7 +1276,9 @@ |
</entry> |
</info> |
""" % self.url |
- gclient.CaptureSVN(['info', '--xml', self.url], '.').AndReturn(xml_text) |
+ options = self.Options(verbose=True) |
+ gclient.CaptureSVN(options, ['info', '--xml', self.url], |
+ '.').AndReturn(xml_text) |
expected = { |
'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d', |
'UUID': None, |
@@ -1285,7 +1291,7 @@ |
'Node Kind': 'file', |
} |
self.mox.ReplayAll() |
- file_info = self._CaptureSVNInfo(self.url, '.') |
+ file_info = self._CaptureSVNInfo(options, self.url, '.') |
self.assertEquals(sorted(file_info.items()), sorted(expected.items())) |
self.mox.VerifyAll() |
@@ -1313,9 +1319,11 @@ |
</entry> |
</info> |
""" % (self.url, self.root_dir) |
- gclient.CaptureSVN(['info', '--xml', self.url], '.').AndReturn(xml_text) |
+ options = self.Options(verbose=True) |
+ gclient.CaptureSVN(options, ['info', '--xml', self.url], |
+ '.').AndReturn(xml_text) |
self.mox.ReplayAll() |
- file_info = self._CaptureSVNInfo(self.url, '.') |
+ file_info = self._CaptureSVNInfo(options, self.url, '.') |
expected = { |
'URL': self.url, |
'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb', |
@@ -1331,23 +1339,6 @@ |
self.mox.VerifyAll() |
-class RunSVNTestCase(BaseTestCase): |
- def setUp(self): |
- self.mox = mox.Mox() |
- self._OldSubprocessCall = gclient.SubprocessCall |
- gclient.SubprocessCall = self.mox.CreateMockAnything() |
- |
- def tearDown(self): |
- gclient.SubprocessCall = self._OldSubprocessCall |
- |
- def testRunSVN(self): |
- param2 = 'bleh' |
- gclient.SubprocessCall(['svn', 'foo', 'bar'], param2).AndReturn(None) |
- self.mox.ReplayAll() |
- gclient.RunSVN(['foo', 'bar'], param2) |
- self.mox.VerifyAll() |
- |
- |
if __name__ == '__main__': |
unittest.main() |