| 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 | 
|---|