Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(503)

Side by Side Diff: tests/gcl_unittest.py

Issue 113650: Fix error printing in gcl.GetRepositoryRoot() and fix its unit tests. (Closed)
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gcl.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2009 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2009 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 """Unit tests for gcl.py.""" 6 """Unit tests for gcl.py."""
7 7
8 import StringIO 8 import StringIO
9 import os 9 import os
10 import sys 10 import sys
11 import unittest 11 import unittest
12 12
13 # Local imports 13 # Local imports
14 import __init__ 14 import __init__
15 import gcl 15 import gcl
16 mox = __init__.mox 16 mox = __init__.mox
17 17
18 18
19 class GclTestsBase(unittest.TestCase): 19 class GclTestsBase(unittest.TestCase):
20 """Setups and tear downs the mocks but doesn't test anything as-is.""" 20 """Setups and tear downs the mocks but doesn't test anything as-is."""
21 def setUp(self): 21 def setUp(self):
22 self.mox = mox.Mox()
22 def RunShellMock(filename): 23 def RunShellMock(filename):
23 return filename 24 return filename
24 self._RunShell = gcl.RunShell 25 self._RunShell = gcl.RunShell
25 gcl.RunShell = RunShellMock 26 gcl.RunShell = RunShellMock
27 self._gcl_gclient_CaptureSVNInfo = gcl.gclient.CaptureSVNInfo
28 gcl.gclient.CaptureSVNInfo = self.mox.CreateMockAnything()
29 self._gcl_os_getcwd = gcl.os.getcwd
30 gcl.os.getcwd = self.mox.CreateMockAnything()
26 31
27 def tearDown(self): 32 def tearDown(self):
28 gcl.RunShell = self._RunShell 33 gcl.RunShell = self._RunShell
34 gcl.gclient.CaptureSVNInfo = self._gcl_gclient_CaptureSVNInfo
35 gcl.os.getcwd = self._gcl_os_getcwd
29 36
30 def compareMembers(self, object, members): 37 def compareMembers(self, object, members):
31 """If you add a member, be sure to add the relevant test!""" 38 """If you add a member, be sure to add the relevant test!"""
32 # Skip over members starting with '_' since they are usually not meant to 39 # Skip over members starting with '_' since they are usually not meant to
33 # be for public use. 40 # be for public use.
34 actual_members = [x for x in sorted(dir(object)) 41 actual_members = [x for x in sorted(dir(object))
35 if not x.startswith('_')] 42 if not x.startswith('_')]
36 expected_members = sorted(members) 43 expected_members = sorted(members)
37 if actual_members != expected_members: 44 if actual_members != expected_members:
38 diff = ([i for i in actual_members if i not in expected_members] + 45 diff = ([i for i in actual_members if i not in expected_members] +
(...skipping 29 matching lines...) Expand all
68 def testHelp(self): 75 def testHelp(self):
69 old_stdout = sys.stdout 76 old_stdout = sys.stdout
70 try: 77 try:
71 dummy = StringIO.StringIO() 78 dummy = StringIO.StringIO()
72 gcl.sys.stdout = dummy 79 gcl.sys.stdout = dummy
73 gcl.Help() 80 gcl.Help()
74 self.assertEquals(len(dummy.getvalue()), 1813) 81 self.assertEquals(len(dummy.getvalue()), 1813)
75 finally: 82 finally:
76 gcl.sys.stdout = old_stdout 83 gcl.sys.stdout = old_stdout
77 84
78 def testGetRepositoryRoot(self): 85 def testGetRepositoryRootNone(self):
79 try: 86 gcl.repository_root = None
80 def RunShellMock(filename): 87 gcl.os.getcwd().AndReturn("/bleh/prout")
81 return '<?xml version="1.0"?>\n<info>' 88 result = {
82 gcl.RunShell = RunShellMock 89 "Repository Root": ""
83 gcl.GetRepositoryRoot() 90 }
84 except Exception,e: 91 gcl.gclient.CaptureSVNInfo("/bleh/prout", print_error=False).AndReturn(resul t)
Nicolas Sylvain 2009/05/20 18:26:57 80 chars
85 self.assertEquals(e.args[0], "gcl run outside of repository") 92 self.mox.ReplayAll()
86 pass 93 self.assertRaises(Exception, gcl.GetRepositoryRoot)
94 self.mox.VerifyAll()
95
96 def testGetRepositoryRootGood(self):
97 gcl.repository_root = None
98 root_path = os.path.join('bleh', 'prout', 'pouet')
99 gcl.os.getcwd().AndReturn(root_path)
100 result1 = { "Repository Root": "Some root" }
101 gcl.gclient.CaptureSVNInfo(root_path, print_error=False).AndReturn(result1)
102 gcl.os.getcwd().AndReturn(root_path)
103 results2 = { "Repository Root": "A different root" }
104 gcl.gclient.CaptureSVNInfo(
105 os.path.dirname(root_path),
106 print_error=False).AndReturn(results2)
107 self.mox.ReplayAll()
108 self.assertEquals(gcl.GetRepositoryRoot(), root_path)
109 self.mox.VerifyAll()
87 110
88 111
89 class ChangeInfoUnittest(GclTestsBase): 112 class ChangeInfoUnittest(GclTestsBase):
90 def testChangeInfoMembers(self): 113 def testChangeInfoMembers(self):
91 members = [ 114 members = [
92 'CloseIssue', 'Delete', 'FileList', 'MissingTests', 'Save', 115 'CloseIssue', 'Delete', 'FileList', 'MissingTests', 'Save',
93 'UpdateRietveldDescription', 'description', 'files', 'issue', 'name', 116 'UpdateRietveldDescription', 'description', 'files', 'issue', 'name',
94 'patch' 117 'patch'
95 ] 118 ]
96 # If this test fails, you should add the relevant test. 119 # If this test fails, you should add the relevant test.
97 self.compareMembers(gcl.ChangeInfo(), members) 120 self.compareMembers(gcl.ChangeInfo(), members)
98 121
99 def testChangeInfoBase(self): 122 def testChangeInfoBase(self):
100 files = [('M', 'foo'), ('A', 'bar')] 123 files = [('M', 'foo'), ('A', 'bar')]
101 o = gcl.ChangeInfo('name2', 'issue2', 'description2', files) 124 o = gcl.ChangeInfo('name2', 'issue2', 'description2', files)
102 self.assertEquals(o.name, 'name2') 125 self.assertEquals(o.name, 'name2')
103 self.assertEquals(o.issue, 'issue2') 126 self.assertEquals(o.issue, 'issue2')
104 self.assertEquals(o.description, 'description2') 127 self.assertEquals(o.description, 'description2')
105 self.assertEquals(o.files, files) 128 self.assertEquals(o.files, files)
106 self.assertEquals(o.patch, None) 129 self.assertEquals(o.patch, None)
107 self.assertEquals(o.FileList(), ['foo', 'bar']) 130 self.assertEquals(o.FileList(), ['foo', 'bar'])
108 131
109 132
110 class UploadCLUnittest(GclTestsBase): 133 class UploadCLUnittest(GclTestsBase):
111 def setUp(self): 134 def setUp(self):
112 GclTestsBase.setUp(self) 135 GclTestsBase.setUp(self)
113 self.mox = mox.Mox()
114 self._os_chdir = gcl.os.chdir 136 self._os_chdir = gcl.os.chdir
115 gcl.os.chdir = self.mox.CreateMockAnything() 137 gcl.os.chdir = self.mox.CreateMockAnything()
116 self._os_close = gcl.os.close 138 self._os_close = gcl.os.close
117 gcl.os.close = self.mox.CreateMockAnything() 139 gcl.os.close = self.mox.CreateMockAnything()
118 self._os_getcwd = gcl.os.getcwd
119 gcl.os.getcwd = self.mox.CreateMockAnything()
120 self._os_remove = gcl.os.remove 140 self._os_remove = gcl.os.remove
121 gcl.os.remove = self.mox.CreateMockAnything() 141 gcl.os.remove = self.mox.CreateMockAnything()
122 self._os_write = gcl.os.write 142 self._os_write = gcl.os.write
123 gcl.os.write = self.mox.CreateMockAnything() 143 gcl.os.write = self.mox.CreateMockAnything()
124 self._tempfile = gcl.tempfile 144 self._tempfile = gcl.tempfile
125 gcl.tempfile = self.mox.CreateMockAnything() 145 gcl.tempfile = self.mox.CreateMockAnything()
126 self._upload_RealMain = gcl.upload.RealMain 146 self._upload_RealMain = gcl.upload.RealMain
127 gcl.upload.RealMain = self.mox.CreateMockAnything() 147 gcl.upload.RealMain = self.mox.CreateMockAnything()
128 self._DoPresubmitChecks = gcl.DoPresubmitChecks 148 self._DoPresubmitChecks = gcl.DoPresubmitChecks
129 gcl.DoPresubmitChecks = self.mox.CreateMockAnything() 149 gcl.DoPresubmitChecks = self.mox.CreateMockAnything()
130 self._GenerateDiff = gcl.GenerateDiff 150 self._GenerateDiff = gcl.GenerateDiff
131 gcl.GenerateDiff = self.mox.CreateMockAnything() 151 gcl.GenerateDiff = self.mox.CreateMockAnything()
132 self._GetCodeReviewSetting = gcl.GetCodeReviewSetting 152 self._GetCodeReviewSetting = gcl.GetCodeReviewSetting
133 gcl.GetCodeReviewSetting = self.mox.CreateMockAnything() 153 gcl.GetCodeReviewSetting = self.mox.CreateMockAnything()
134 self._GetRepositoryRoot = gcl.GetRepositoryRoot 154 self._GetRepositoryRoot = gcl.GetRepositoryRoot
135 gcl.GetRepositoryRoot = self.mox.CreateMockAnything() 155 gcl.GetRepositoryRoot = self.mox.CreateMockAnything()
136 self._SendToRietveld = gcl.SendToRietveld 156 self._SendToRietveld = gcl.SendToRietveld
137 gcl.SendToRietveld = self.mox.CreateMockAnything() 157 gcl.SendToRietveld = self.mox.CreateMockAnything()
138 self._TryChange = gcl.TryChange 158 self._TryChange = gcl.TryChange
139 gcl.TryChange = self.mox.CreateMockAnything() 159 gcl.TryChange = self.mox.CreateMockAnything()
140 160
141 def tearDown(self): 161 def tearDown(self):
142 GclTestsBase.tearDown(self) 162 GclTestsBase.tearDown(self)
143 gcl.os.chdir = self._os_chdir 163 gcl.os.chdir = self._os_chdir
144 gcl.os.close = self._os_close 164 gcl.os.close = self._os_close
145 gcl.os.getcwd = self._os_getcwd
146 gcl.os.remove = self._os_remove 165 gcl.os.remove = self._os_remove
147 gcl.os.write = self._os_write 166 gcl.os.write = self._os_write
148 gcl.tempfile = self._tempfile 167 gcl.tempfile = self._tempfile
149 gcl.upload.RealMain = self._upload_RealMain 168 gcl.upload.RealMain = self._upload_RealMain
150 gcl.DoPresubmitChecks = self._DoPresubmitChecks 169 gcl.DoPresubmitChecks = self._DoPresubmitChecks
151 gcl.GenerateDiff = self._GenerateDiff 170 gcl.GenerateDiff = self._GenerateDiff
152 gcl.GetCodeReviewSetting = self._GetCodeReviewSetting 171 gcl.GetCodeReviewSetting = self._GetCodeReviewSetting
153 gcl.GetRepositoryRoot = self._GetRepositoryRoot 172 gcl.GetRepositoryRoot = self._GetRepositoryRoot
154 gcl.SendToRietveld = self._SendToRietveld 173 gcl.SendToRietveld = self._SendToRietveld
155 gcl.TryChange = self._TryChange 174 gcl.TryChange = self._TryChange
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 ['--issue', '1', '--patchset', '2'], 276 ['--issue', '1', '--patchset', '2'],
258 swallow_exception=True) 277 swallow_exception=True)
259 gcl.os.chdir('somewhere') 278 gcl.os.chdir('somewhere')
260 self.mox.ReplayAll() 279 self.mox.ReplayAll()
261 gcl.UploadCL(change_info, args) 280 gcl.UploadCL(change_info, args)
262 self.mox.VerifyAll() 281 self.mox.VerifyAll()
263 282
264 283
265 if __name__ == '__main__': 284 if __name__ == '__main__':
266 unittest.main() 285 unittest.main()
OLDNEW
« no previous file with comments | « gcl.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698