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

Side by Side Diff: tests/scm_unittest.py

Issue 8771042: Enforces using cwd in all svn calls. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 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 scm.py.""" 6 """Unit tests for scm.py."""
7 7
8 from __future__ import with_statement 8 from __future__ import with_statement
9 import logging 9 import logging
10 import os 10 import os
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 ] 101 ]
102 # If this test fails, you should add the relevant test. 102 # If this test fails, you should add the relevant test.
103 self.compareMembers(scm.SVN, members) 103 self.compareMembers(scm.SVN, members)
104 104
105 def testGetCheckoutRoot(self): 105 def testGetCheckoutRoot(self):
106 # pylint: disable=E1103 106 # pylint: disable=E1103
107 self.mox.StubOutWithMock(scm.SVN, 'CaptureInfo') 107 self.mox.StubOutWithMock(scm.SVN, 'CaptureInfo')
108 self.mox.StubOutWithMock(scm, 'GetCasedPath') 108 self.mox.StubOutWithMock(scm, 'GetCasedPath')
109 scm.os.path.abspath = lambda x: x 109 scm.os.path.abspath = lambda x: x
110 scm.GetCasedPath = lambda x: x 110 scm.GetCasedPath = lambda x: x
111 scm.SVN.CaptureInfo(self.root_dir + '/foo/bar').AndReturn({ 111 scm.SVN.CaptureInfo(None, self.root_dir + '/foo/bar').AndReturn({
112 'Repository Root': 'svn://svn.chromium.org/chrome', 112 'Repository Root': 'svn://svn.chromium.org/chrome',
113 'URL': 'svn://svn.chromium.org/chrome/trunk/src', 113 'URL': 'svn://svn.chromium.org/chrome/trunk/src',
114 }) 114 })
115 scm.SVN.CaptureInfo(self.root_dir + '/foo').AndReturn({ 115 scm.SVN.CaptureInfo(None, self.root_dir + '/foo').AndReturn({
116 'Repository Root': 'svn://svn.chromium.org/chrome', 116 'Repository Root': 'svn://svn.chromium.org/chrome',
117 'URL': 'svn://svn.chromium.org/chrome/trunk', 117 'URL': 'svn://svn.chromium.org/chrome/trunk',
118 }) 118 })
119 scm.SVN.CaptureInfo(self.root_dir).AndReturn({ 119 scm.SVN.CaptureInfo(None, self.root_dir).AndReturn({
120 'Repository Root': 'svn://svn.chromium.org/chrome', 120 'Repository Root': 'svn://svn.chromium.org/chrome',
121 'URL': 'svn://svn.chromium.org/chrome/trunk/tools/commit-queue/workdir', 121 'URL': 'svn://svn.chromium.org/chrome/trunk/tools/commit-queue/workdir',
122 }) 122 })
123 self.mox.ReplayAll() 123 self.mox.ReplayAll()
124 self.assertEquals(scm.SVN.GetCheckoutRoot(self.root_dir + '/foo/bar'), 124 self.assertEquals(scm.SVN.GetCheckoutRoot(self.root_dir + '/foo/bar'),
125 self.root_dir + '/foo') 125 self.root_dir + '/foo')
126 126
127 def testGetFileInfo(self): 127 def testGetFileInfo(self):
128 xml_text = r"""<?xml version="1.0"?> 128 xml_text = r"""<?xml version="1.0"?>
129 <info> 129 <info>
130 <entry kind="file" path="%s" revision="14628"> 130 <entry kind="file" path="%s" revision="14628">
131 <url>http://src.chromium.org/svn/trunk/src/chrome/app/d</url> 131 <url>http://src.chromium.org/svn/trunk/src/chrome/app/d</url>
132 <repository><root>http://src.chromium.org/svn</root></repository> 132 <repository><root>http://src.chromium.org/svn</root></repository>
133 <wc-info> 133 <wc-info>
134 <schedule>add</schedule> 134 <schedule>add</schedule>
135 <depth>infinity</depth> 135 <depth>infinity</depth>
136 <copy-from-url>http://src.chromium.org/svn/trunk/src/chrome/app/DEPS</copy-from- url> 136 <copy-from-url>http://src.chromium.org/svn/trunk/src/chrome/app/DEPS</copy-from- url>
137 <copy-from-rev>14628</copy-from-rev> 137 <copy-from-rev>14628</copy-from-rev>
138 <checksum>369f59057ba0e6d9017e28f8bdfb1f43</checksum> 138 <checksum>369f59057ba0e6d9017e28f8bdfb1f43</checksum>
139 </wc-info> 139 </wc-info>
140 </entry> 140 </entry>
141 </info> 141 </info>
142 """ % self.url 142 """ % self.url
143 scm.SVN.Capture(['info', '--xml', self.url]).AndReturn(xml_text) 143 scm.SVN.Capture(['info', '--xml', self.url], None).AndReturn(xml_text)
144 expected = { 144 expected = {
145 'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d', 145 'URL': 'http://src.chromium.org/svn/trunk/src/chrome/app/d',
146 'UUID': None, 146 'UUID': None,
147 'Repository Root': 'http://src.chromium.org/svn', 147 'Repository Root': 'http://src.chromium.org/svn',
148 'Schedule': 'add', 148 'Schedule': 'add',
149 'Copied From URL': 149 'Copied From URL':
150 'http://src.chromium.org/svn/trunk/src/chrome/app/DEPS', 150 'http://src.chromium.org/svn/trunk/src/chrome/app/DEPS',
151 'Copied From Rev': '14628', 151 'Copied From Rev': '14628',
152 'Path': self.url, 152 'Path': self.url,
153 'Revision': 14628, 153 'Revision': 14628,
154 'Node Kind': 'file', 154 'Node Kind': 'file',
155 } 155 }
156 self.mox.ReplayAll() 156 self.mox.ReplayAll()
157 file_info = scm.SVN.CaptureInfo(self.url) 157 file_info = scm.SVN.CaptureInfo(self.url, None)
158 self.assertEquals(sorted(file_info.items()), sorted(expected.items())) 158 self.assertEquals(sorted(file_info.items()), sorted(expected.items()))
159 159
160 def testCaptureInfo(self): 160 def testCaptureInfo(self):
161 xml_text = """<?xml version="1.0"?> 161 xml_text = """<?xml version="1.0"?>
162 <info> 162 <info>
163 <entry 163 <entry
164 kind="dir" 164 kind="dir"
165 path="." 165 path="."
166 revision="35"> 166 revision="35">
167 <url>%s</url> 167 <url>%s</url>
168 <repository> 168 <repository>
169 <root>%s</root> 169 <root>%s</root>
170 <uuid>7b9385f5-0452-0410-af26-ad4892b7a1fb</uuid> 170 <uuid>7b9385f5-0452-0410-af26-ad4892b7a1fb</uuid>
171 </repository> 171 </repository>
172 <wc-info> 172 <wc-info>
173 <schedule>normal</schedule> 173 <schedule>normal</schedule>
174 <depth>infinity</depth> 174 <depth>infinity</depth>
175 </wc-info> 175 </wc-info>
176 <commit 176 <commit
177 revision="35"> 177 revision="35">
178 <author>maruel</author> 178 <author>maruel</author>
179 <date>2008-12-04T20:12:19.685120Z</date> 179 <date>2008-12-04T20:12:19.685120Z</date>
180 </commit> 180 </commit>
181 </entry> 181 </entry>
182 </info> 182 </info>
183 """ % (self.url, self.root_dir) 183 """ % (self.url, self.root_dir)
184 scm.SVN.Capture(['info', '--xml', self.url]).AndReturn(xml_text) 184 scm.SVN.Capture(['info', '--xml', self.url], None).AndReturn(xml_text)
185 self.mox.ReplayAll() 185 self.mox.ReplayAll()
186 file_info = scm.SVN.CaptureInfo(self.url) 186 file_info = scm.SVN.CaptureInfo(self.url, None)
187 expected = { 187 expected = {
188 'URL': self.url, 188 'URL': self.url,
189 'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb', 189 'UUID': '7b9385f5-0452-0410-af26-ad4892b7a1fb',
190 'Revision': 35, 190 'Revision': 35,
191 'Repository Root': self.root_dir, 191 'Repository Root': self.root_dir,
192 'Schedule': 'normal', 192 'Schedule': 'normal',
193 'Copied From URL': None, 193 'Copied From URL': None,
194 'Copied From Rev': None, 194 'Copied From Rev': None,
195 'Path': '.', 195 'Path': '.',
196 'Node Kind': 'directory', 196 'Node Kind': 'directory',
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 <wc-status props="normal" item="conflicted" revision="14725"> 228 <wc-status props="normal" item="conflicted" revision="14725">
229 <commit revision="14633"> 229 <commit revision="14633">
230 <author>nsylvain@chromium.org</author> 230 <author>nsylvain@chromium.org</author>
231 <date>2009-04-27T19:37:17.977400Z</date> 231 <date>2009-04-27T19:37:17.977400Z</date>
232 </commit> 232 </commit>
233 </wc-status> 233 </wc-status>
234 </entry> 234 </entry>
235 </target> 235 </target>
236 </status> 236 </status>
237 """ 237 """
238 scm.SVN.Capture(['status', '--xml', '.']).AndReturn(text) 238 scm.SVN.Capture(['status', '--xml'], '.').AndReturn(text)
239 239
240 self.mox.ReplayAll() 240 self.mox.ReplayAll()
241 info = scm.SVN.CaptureStatus('.') 241 info = scm.SVN.CaptureStatus(None, '.')
242 expected = [ 242 expected = [
243 ('? ', 'unversionned_file.txt'), 243 ('? ', 'unversionned_file.txt'),
244 ('M ', 'build\\internal\\essential.vsprops'), 244 ('M ', 'build\\internal\\essential.vsprops'),
245 ('A + ', 'chrome\\app\\d'), 245 ('A + ', 'chrome\\app\\d'),
246 ('MM ', 'chrome\\app\\DEPS'), 246 ('MM ', 'chrome\\app\\DEPS'),
247 ('C ', 'scripts\\master\\factory\\gclient_factory.py'), 247 ('C ', 'scripts\\master\\factory\\gclient_factory.py'),
248 ] 248 ]
249 self.assertEquals(sorted(info), sorted(expected)) 249 self.assertEquals(sorted(info), sorted(expected))
250 250
251 def testCaptureStatusEmpty(self): 251 def testCaptureStatusEmpty(self):
252 text = r"""<?xml version="1.0"?> 252 text = r"""<?xml version="1.0"?>
253 <status> 253 <status>
254 <target 254 <target
255 path="perf"> 255 path="perf">
256 </target> 256 </target>
257 </status>""" 257 </status>"""
258 scm.SVN.Capture(['status', '--xml']).AndReturn(text) 258 scm.SVN.Capture(['status', '--xml'], None).AndReturn(text)
259 self.mox.ReplayAll() 259 self.mox.ReplayAll()
260 info = scm.SVN.CaptureStatus(None) 260 info = scm.SVN.CaptureStatus(None, None)
261 self.assertEquals(info, []) 261 self.assertEquals(info, [])
262 262
263 263
264 class RealSvnTest(fake_repos.FakeReposTestBase): 264 class RealSvnTest(fake_repos.FakeReposTestBase):
265 # Tests that work with a checkout. 265 # Tests that work with a checkout.
266 def setUp(self): 266 def setUp(self):
267 super(RealSvnTest, self).setUp() 267 super(RealSvnTest, self).setUp()
268 self.enabled = self.FAKE_REPOS.set_up_svn() 268 self.enabled = self.FAKE_REPOS.set_up_svn()
269 if self.enabled: 269 if self.enabled:
270 self.svn_root = scm.os.path.join(self.root_dir, 'base') 270 self.svn_root = scm.os.path.join(self.root_dir, 'base')
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 # Asserting the tree is not sufficient, svn status must come out clear too. 337 # Asserting the tree is not sufficient, svn status must come out clear too.
338 self.assertEquals('', self._capture(['status'])) 338 self.assertEquals('', self._capture(['status']))
339 339
340 340
341 if __name__ == '__main__': 341 if __name__ == '__main__':
342 if '-v' in sys.argv: 342 if '-v' in sys.argv:
343 logging.basicConfig(level=logging.DEBUG) 343 logging.basicConfig(level=logging.DEBUG)
344 unittest.main() 344 unittest.main()
345 345
346 # vim: ts=2:sw=2:tw=80:et: 346 # vim: ts=2:sw=2:tw=80:et:
OLDNEW
« gclient_scm.py ('K') | « tests/presubmit_unittest.py ('k') | trychange.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698