| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import StringIO | 6 import StringIO |
| 7 | 7 |
| 8 # Fixes include path. | 8 # Fixes include path. |
| 9 from super_mox import SuperMoxTestBase | 9 from super_mox import SuperMoxTestBase |
| 10 | 10 |
| 11 import gclient_utils | 11 import gclient_utils |
| 12 | 12 |
| 13 | 13 |
| 14 class GclientUtilsUnittest(SuperMoxTestBase): | 14 class GclientUtilBase(SuperMoxTestBase): |
| 15 def setUp(self): |
| 16 super(GclientUtilBase, self).setUp() |
| 17 gclient_utils.sys.stdout.flush = lambda: None |
| 18 |
| 19 |
| 20 class GclientUtilsUnittest(GclientUtilBase): |
| 15 """General gclient_utils.py tests.""" | 21 """General gclient_utils.py tests.""" |
| 16 def testMembersChanged(self): | 22 def testMembersChanged(self): |
| 17 members = [ | 23 members = [ |
| 18 'CheckCall', 'CheckCallError', 'Error', 'ExecutionQueue', 'FileRead', | 24 'CheckCall', 'CheckCallError', 'Error', 'ExecutionQueue', 'FileRead', |
| 19 'FileWrite', 'FindFileUpwards', 'FindGclientRoot', | 25 'FileWrite', 'FindFileUpwards', 'FindGclientRoot', |
| 20 'GetGClientRootAndEntries', 'GetNamedNodeText', | 26 'GetGClientRootAndEntries', 'GetNamedNodeText', |
| 21 'GetNodeNamedAttributeText', 'PathDifference', 'ParseXML', | 27 'GetNodeNamedAttributeText', 'PathDifference', 'ParseXML', |
| 22 'PrintableObject', 'RemoveDirectory', 'SplitUrlRevision', | 28 'PrintableObject', 'RemoveDirectory', 'SplitUrlRevision', |
| 23 'SubprocessCall', 'SubprocessCallAndFilter', 'SyntaxErrorToError', | 29 'SubprocessCall', 'SubprocessCallAndFilter', 'SyntaxErrorToError', |
| 24 'WorkItem', | 30 'WorkItem', |
| 25 'errno', 'logging', 'os', 're', 'stat', 'subprocess', 'sys', | 31 'errno', 'logging', 'os', 're', 'stat', 'subprocess', 'sys', |
| 26 'threading', 'time', 'xml', | 32 'threading', 'time', 'xml', |
| 27 ] | 33 ] |
| 28 # If this test fails, you should add the relevant test. | 34 # If this test fails, you should add the relevant test. |
| 29 self.compareMembers(gclient_utils, members) | 35 self.compareMembers(gclient_utils, members) |
| 30 | 36 |
| 31 | 37 |
| 32 class CheckCallTestCase(SuperMoxTestBase): | 38 class CheckCallTestCase(GclientUtilBase): |
| 33 def testCheckCallSuccess(self): | 39 def testCheckCallSuccess(self): |
| 34 command = ['boo', 'foo', 'bar'] | 40 command = ['boo', 'foo', 'bar'] |
| 35 process = self.mox.CreateMockAnything() | 41 process = self.mox.CreateMockAnything() |
| 36 process.returncode = 0 | 42 process.returncode = 0 |
| 37 gclient_utils.subprocess.Popen( | 43 gclient_utils.subprocess.Popen( |
| 38 command, cwd=None, | 44 command, cwd=None, |
| 39 stderr=None, | 45 stderr=None, |
| 40 stdout=gclient_utils.subprocess.PIPE, | 46 stdout=gclient_utils.subprocess.PIPE, |
| 41 shell=gclient_utils.sys.platform.startswith('win')).AndReturn(process) | 47 shell=gclient_utils.sys.platform.startswith('win')).AndReturn(process) |
| 42 process.communicate().AndReturn(['bleh', 'foo']) | 48 process.communicate().AndReturn(['bleh', 'foo']) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 58 gclient_utils.CheckCall(command) | 64 gclient_utils.CheckCall(command) |
| 59 self.fail() | 65 self.fail() |
| 60 except gclient_utils.CheckCallError, e: | 66 except gclient_utils.CheckCallError, e: |
| 61 self.assertEqual(e.command, command) | 67 self.assertEqual(e.command, command) |
| 62 self.assertEqual(e.cwd, None) | 68 self.assertEqual(e.cwd, None) |
| 63 self.assertEqual(e.retcode, 42) | 69 self.assertEqual(e.retcode, 42) |
| 64 self.assertEqual(e.stdout, 'bleh') | 70 self.assertEqual(e.stdout, 'bleh') |
| 65 self.assertEqual(e.stderr, 'foo') | 71 self.assertEqual(e.stderr, 'foo') |
| 66 | 72 |
| 67 | 73 |
| 68 class SubprocessCallAndFilterTestCase(SuperMoxTestBase): | 74 class SubprocessCallAndFilterTestCase(GclientUtilBase): |
| 69 def testSubprocessCallAndFilter(self): | 75 def testSubprocessCallAndFilter(self): |
| 70 command = ['boo', 'foo', 'bar'] | 76 command = ['boo', 'foo', 'bar'] |
| 71 in_directory = 'bleh' | 77 in_directory = 'bleh' |
| 72 fail_status = None | 78 fail_status = None |
| 73 pattern = 'a(.*)b' | 79 pattern = 'a(.*)b' |
| 74 test_string = 'ahah\naccb\nallo\naddb\n' | 80 test_string = 'ahah\naccb\nallo\naddb\n' |
| 75 class Mock(object): | 81 class Mock(object): |
| 76 stdout = StringIO.StringIO(test_string) | 82 stdout = StringIO.StringIO(test_string) |
| 77 def wait(self): | 83 def wait(self): |
| 78 pass | 84 pass |
| (...skipping 16 matching lines...) Expand all Loading... |
| 95 if match: | 101 if match: |
| 96 capture_list.append(match.group(1)) | 102 capture_list.append(match.group(1)) |
| 97 gclient_utils.SubprocessCallAndFilter( | 103 gclient_utils.SubprocessCallAndFilter( |
| 98 command, in_directory, | 104 command, in_directory, |
| 99 True, True, | 105 True, True, |
| 100 fail_status, FilterLines) | 106 fail_status, FilterLines) |
| 101 self.assertEquals(line_list, ['ahah', 'accb', 'allo', 'addb']) | 107 self.assertEquals(line_list, ['ahah', 'accb', 'allo', 'addb']) |
| 102 self.assertEquals(capture_list, ['cc', 'dd']) | 108 self.assertEquals(capture_list, ['cc', 'dd']) |
| 103 | 109 |
| 104 | 110 |
| 105 class SplitUrlRevisionTestCase(SuperMoxTestBase): | 111 class SplitUrlRevisionTestCase(GclientUtilBase): |
| 106 def testSSHUrl(self): | 112 def testSSHUrl(self): |
| 107 url = "ssh://test@example.com/test.git" | 113 url = "ssh://test@example.com/test.git" |
| 108 rev = "ac345e52dc" | 114 rev = "ac345e52dc" |
| 109 out_url, out_rev = gclient_utils.SplitUrlRevision(url) | 115 out_url, out_rev = gclient_utils.SplitUrlRevision(url) |
| 110 self.assertEquals(out_rev, None) | 116 self.assertEquals(out_rev, None) |
| 111 self.assertEquals(out_url, url) | 117 self.assertEquals(out_url, url) |
| 112 out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) | 118 out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 113 self.assertEquals(out_rev, rev) | 119 self.assertEquals(out_rev, rev) |
| 114 self.assertEquals(out_url, url) | 120 self.assertEquals(out_url, url) |
| 115 url = "ssh://example.com/test.git" | 121 url = "ssh://example.com/test.git" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 140 out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) | 146 out_url, out_rev = gclient_utils.SplitUrlRevision("%s@%s" % (url, rev)) |
| 141 self.assertEquals(out_rev, rev) | 147 self.assertEquals(out_rev, rev) |
| 142 self.assertEquals(out_url, url) | 148 self.assertEquals(out_url, url) |
| 143 | 149 |
| 144 | 150 |
| 145 if __name__ == '__main__': | 151 if __name__ == '__main__': |
| 146 import unittest | 152 import unittest |
| 147 unittest.main() | 153 unittest.main() |
| 148 | 154 |
| 149 # vim: ts=2:sw=2:tw=80:et: | 155 # vim: ts=2:sw=2:tw=80:et: |
| OLD | NEW |