|
|
|
@ -70,12 +70,12 @@ class GClientBaseTestCase(BaseTestCase):
|
|
|
|
|
self.mox.StubOutWithMock(gclient_scm, 'RunSVNAndGetFileList')
|
|
|
|
|
self._gclient_gclient = gclient.GClient
|
|
|
|
|
gclient.GClient = self.mox.CreateMockAnything()
|
|
|
|
|
self._scm_wrapper = gclient_scm.create_scm
|
|
|
|
|
gclient_scm.create_scm = self.mox.CreateMockAnything()
|
|
|
|
|
self._scm_wrapper = gclient_scm.SCMWrapper
|
|
|
|
|
gclient_scm.SCMWrapper = self.mox.CreateMockAnything()
|
|
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
|
gclient.GClient = self._gclient_gclient
|
|
|
|
|
gclient_scm.create_scm = self._scm_wrapper
|
|
|
|
|
gclient_scm.SCMWrapper = self._scm_wrapper
|
|
|
|
|
BaseTestCase.tearDown(self)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -408,7 +408,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
|
|
|
|
|
# An scm will be requested for the solution.
|
|
|
|
|
scm_wrapper_sol = self.mox.CreateMockAnything()
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, solution_name
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, solution_name
|
|
|
|
|
).AndReturn(scm_wrapper_sol)
|
|
|
|
|
# Then an update will be performed.
|
|
|
|
|
scm_wrapper_sol.RunCommand('update', options, self.args, [])
|
|
|
|
@ -465,7 +465,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
|
|
|
|
|
# An scm will be requested for the solution.
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, solution_name
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, solution_name
|
|
|
|
|
).AndReturn(scm_wrapper_sol)
|
|
|
|
|
# Then an update will be performed.
|
|
|
|
|
scm_wrapper_sol.RunCommand('update', options, self.args, [])
|
|
|
|
@ -477,7 +477,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
# Next we expect an scm to be request for dep src/t but it should
|
|
|
|
|
# use the url specified in deps and the relative path should now
|
|
|
|
|
# be relative to the DEPS file.
|
|
|
|
|
gclient_scm.create_scm(
|
|
|
|
|
gclient_scm.SCMWrapper(
|
|
|
|
|
'svn://scm.t/trunk',
|
|
|
|
|
self.root_dir,
|
|
|
|
|
os.path.join(solution_name, "src", "t")).AndReturn(scm_wrapper_t)
|
|
|
|
@ -539,7 +539,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
|
|
|
|
|
# An scm will be requested for the solution.
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, solution_name
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, solution_name
|
|
|
|
|
).AndReturn(scm_wrapper_sol)
|
|
|
|
|
# Then an update will be performed.
|
|
|
|
|
scm_wrapper_sol.RunCommand('update', options, self.args, [])
|
|
|
|
@ -549,13 +549,13 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
|
|
|
|
|
# Next we expect an scm to be request for dep src/n even though it does not
|
|
|
|
|
# exist in the DEPS file.
|
|
|
|
|
gclient_scm.create_scm('svn://custom.n/trunk',
|
|
|
|
|
self.root_dir,
|
|
|
|
|
"src/n").AndReturn(scm_wrapper_n)
|
|
|
|
|
gclient_scm.SCMWrapper('svn://custom.n/trunk',
|
|
|
|
|
self.root_dir,
|
|
|
|
|
"src/n").AndReturn(scm_wrapper_n)
|
|
|
|
|
|
|
|
|
|
# Next we expect an scm to be request for dep src/t but it should
|
|
|
|
|
# use the url specified in custom_deps.
|
|
|
|
|
gclient_scm.create_scm('svn://custom.t/trunk',
|
|
|
|
|
gclient_scm.SCMWrapper('svn://custom.t/trunk',
|
|
|
|
|
self.root_dir,
|
|
|
|
|
"src/t").AndReturn(scm_wrapper_t)
|
|
|
|
|
|
|
|
|
@ -625,7 +625,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
|
|
|
|
|
# An scm will be requested for the first solution.
|
|
|
|
|
gclient_scm.create_scm(url_a, self.root_dir, name_a).AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper(url_a, self.root_dir, name_a).AndReturn(
|
|
|
|
|
scm_wrapper_a)
|
|
|
|
|
# Then an attempt will be made to read it's DEPS file.
|
|
|
|
|
gclient.FileRead(os.path.join(self.root_dir, name_a, options.deps_file)
|
|
|
|
@ -634,7 +634,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
scm_wrapper_a.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
# An scm will be requested for the second solution.
|
|
|
|
|
gclient_scm.create_scm(url_b, self.root_dir, name_b).AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper(url_b, self.root_dir, name_b).AndReturn(
|
|
|
|
|
scm_wrapper_b)
|
|
|
|
|
# Then an attempt will be made to read its DEPS file.
|
|
|
|
|
gclient.FileRead(os.path.join(self.root_dir, name_b, options.deps_file)
|
|
|
|
@ -643,7 +643,7 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
scm_wrapper_b.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
# Finally, an scm is requested for the shared dep.
|
|
|
|
|
gclient_scm.create_scm('http://svn.t/trunk', self.root_dir, 'src/t'
|
|
|
|
|
gclient_scm.SCMWrapper('http://svn.t/trunk', self.root_dir, 'src/t'
|
|
|
|
|
).AndReturn(scm_wrapper_dep)
|
|
|
|
|
# And an update is run on it.
|
|
|
|
|
scm_wrapper_dep.RunCommand('update', options, self.args, [])
|
|
|
|
@ -671,9 +671,9 @@ class GClientClassTestCase(GclientTestCase):
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
gclient.os.path.exists(os.path.join(self.root_dir, options.entries_filename)
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.create_scm)
|
|
|
|
|
gclient_scm.create_scm.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper)
|
|
|
|
|
gclient_scm.SCMWrapper.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient.FileRead(os.path.join(self.root_dir, name, options.deps_file)
|
|
|
|
|
).AndReturn("Boo = 'a'")
|
|
|
|
|
gclient.FileWrite(os.path.join(self.root_dir, options.entries_filename),
|
|
|
|
@ -765,36 +765,36 @@ deps_os = {
|
|
|
|
|
gclient.os.path.exists(os.path.join(self.root_dir, options.entries_filename)
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, 'src').AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, 'src').AndReturn(
|
|
|
|
|
scm_wrapper_src)
|
|
|
|
|
scm_wrapper_src.RunCommand('update', mox.Func(OptIsRev123), self.args, [])
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir,
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir,
|
|
|
|
|
None).AndReturn(scm_wrapper_src2)
|
|
|
|
|
scm_wrapper_src2.FullUrlForRelativeUrl('/trunk/deps/third_party/cygwin@3248'
|
|
|
|
|
).AndReturn(cygwin_path)
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir,
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir,
|
|
|
|
|
None).AndReturn(scm_wrapper_src2)
|
|
|
|
|
scm_wrapper_src2.FullUrlForRelativeUrl('/trunk/deps/third_party/WebKit'
|
|
|
|
|
).AndReturn(webkit_path)
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(webkit_path, self.root_dir,
|
|
|
|
|
gclient_scm.SCMWrapper(webkit_path, self.root_dir,
|
|
|
|
|
'foo/third_party/WebKit').AndReturn(scm_wrapper_webkit)
|
|
|
|
|
scm_wrapper_webkit.RunCommand('update', mox.Func(OptIsRev42), self.args, [])
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(
|
|
|
|
|
gclient_scm.SCMWrapper(
|
|
|
|
|
'http://google-breakpad.googlecode.com/svn/trunk/src@285',
|
|
|
|
|
self.root_dir, 'src/breakpad/bar').AndReturn(scm_wrapper_breakpad)
|
|
|
|
|
scm_wrapper_breakpad.RunCommand('update', mox.Func(OptIsRevNone),
|
|
|
|
|
self.args, [])
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(cygwin_path, self.root_dir,
|
|
|
|
|
gclient_scm.SCMWrapper(cygwin_path, self.root_dir,
|
|
|
|
|
'src/third_party/cygwin').AndReturn(scm_wrapper_cygwin)
|
|
|
|
|
scm_wrapper_cygwin.RunCommand('update', mox.Func(OptIsRev333), self.args,
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm('svn://random_server:123/trunk/python_24@5580',
|
|
|
|
|
gclient_scm.SCMWrapper('svn://random_server:123/trunk/python_24@5580',
|
|
|
|
|
self.root_dir,
|
|
|
|
|
'src/third_party/python_24').AndReturn(
|
|
|
|
|
scm_wrapper_python)
|
|
|
|
@ -870,18 +870,18 @@ deps = {
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
gclient.os.path.exists(os.path.join(self.root_dir, options.entries_filename)
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.create_scm)
|
|
|
|
|
gclient_scm.create_scm.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper)
|
|
|
|
|
gclient_scm.SCMWrapper.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir,
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir,
|
|
|
|
|
None).AndReturn(scm_wrapper_src)
|
|
|
|
|
scm_wrapper_src.FullUrlForRelativeUrl('/trunk/bar/WebKit'
|
|
|
|
|
).AndReturn(webkit_path)
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(webkit_path, self.root_dir,
|
|
|
|
|
'foo/third_party/WebKit').AndReturn(gclient_scm.create_scm)
|
|
|
|
|
gclient_scm.create_scm.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient_scm.SCMWrapper(webkit_path, self.root_dir,
|
|
|
|
|
'foo/third_party/WebKit').AndReturn(gclient_scm.SCMWrapper)
|
|
|
|
|
gclient_scm.SCMWrapper.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
client = self._gclient_gclient(self.root_dir, options)
|
|
|
|
@ -926,18 +926,18 @@ deps = {
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
gclient.os.path.exists(os.path.join(self.root_dir, options.entries_filename)
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.create_scm)
|
|
|
|
|
gclient_scm.create_scm.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper)
|
|
|
|
|
gclient_scm.SCMWrapper.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir,
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir,
|
|
|
|
|
None).AndReturn(scm_wrapper_src)
|
|
|
|
|
scm_wrapper_src.FullUrlForRelativeUrl('/trunk/bar_custom/WebKit'
|
|
|
|
|
).AndReturn(webkit_path)
|
|
|
|
|
|
|
|
|
|
gclient_scm.create_scm(webkit_path, self.root_dir,
|
|
|
|
|
'foo/third_party/WebKit').AndReturn(gclient_scm.create_scm)
|
|
|
|
|
gclient_scm.create_scm.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient_scm.SCMWrapper(webkit_path, self.root_dir,
|
|
|
|
|
'foo/third_party/WebKit').AndReturn(gclient_scm.SCMWrapper)
|
|
|
|
|
gclient_scm.SCMWrapper.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
client = self._gclient_gclient(self.root_dir, options)
|
|
|
|
@ -961,9 +961,9 @@ deps = {
|
|
|
|
|
options = self.Options()
|
|
|
|
|
gclient.FileRead(os.path.join(self.root_dir, name, options.deps_file)
|
|
|
|
|
).AndReturn(deps_content)
|
|
|
|
|
gclient_scm.create_scm(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.create_scm)
|
|
|
|
|
gclient_scm.create_scm.RunCommand('update', options, self.args, [])
|
|
|
|
|
gclient_scm.SCMWrapper(self.url, self.root_dir, name).AndReturn(
|
|
|
|
|
gclient_scm.SCMWrapper)
|
|
|
|
|
gclient_scm.SCMWrapper.RunCommand('update', options, self.args, [])
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
client = self._gclient_gclient(self.root_dir, options)
|
|
|
|
@ -1038,27 +1038,18 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
def testDir(self):
|
|
|
|
|
members = [
|
|
|
|
|
'FullUrlForRelativeUrl', 'RunCommand', 'cleanup', 'diff', 'export',
|
|
|
|
|
'pack', 'relpath', 'revert', 'runhooks', 'scm_name', 'status',
|
|
|
|
|
'update', 'url',
|
|
|
|
|
'pack', 'relpath', 'revert', 'scm_name', 'status', 'update', 'url',
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
# If you add a member, be sure to add the relevant test!
|
|
|
|
|
self.compareMembers(self._scm_wrapper(self.url,
|
|
|
|
|
self.root_dir,
|
|
|
|
|
self.relpath),
|
|
|
|
|
members)
|
|
|
|
|
|
|
|
|
|
def testUnsupportedSCM(self):
|
|
|
|
|
args = [self.url, self.root_dir, self.relpath]
|
|
|
|
|
kwargs = {'scm_name' : 'foo'}
|
|
|
|
|
exception_msg = 'Unsupported scm %(scm_name)s' % kwargs
|
|
|
|
|
self.assertRaisesError(exception_msg, self._scm_wrapper, *args, **kwargs)
|
|
|
|
|
self.compareMembers(self._scm_wrapper(), members)
|
|
|
|
|
|
|
|
|
|
def testFullUrlForRelativeUrl(self):
|
|
|
|
|
self.url = 'svn://a/b/c/d'
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
self.assertEqual(scm.FullUrlForRelativeUrl('/crap'), 'svn://a/b/crap')
|
|
|
|
|
|
|
|
|
|
def testRunCommandException(self):
|
|
|
|
@ -1067,10 +1058,11 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
).AndReturn(False)
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
exception = "Unsupported argument(s): %s" % ','.join(self.args)
|
|
|
|
|
self.assertRaisesError(exception, scm.RunCommand,
|
|
|
|
|
'update', options, self.args)
|
|
|
|
|
self.assertRaisesError(exception, self._scm_wrapper.RunCommand,
|
|
|
|
|
scm, 'update', options, self.args)
|
|
|
|
|
|
|
|
|
|
def testRunCommandUnknown(self):
|
|
|
|
|
# TODO(maruel): if ever used.
|
|
|
|
@ -1090,7 +1082,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
self.root_dir, files_list)
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
scm.revert(options, self.args, files_list)
|
|
|
|
|
|
|
|
|
|
def testRevertNone(self):
|
|
|
|
@ -1100,7 +1093,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
gclient_scm.CaptureSVNStatus(base_path).AndReturn([])
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
file_list = []
|
|
|
|
|
scm.revert(options, self.args, file_list)
|
|
|
|
|
|
|
|
|
@ -1119,7 +1113,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
gclient_scm.RunSVN(['revert', 'a', 'b'], base_path)
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
file_list = []
|
|
|
|
|
scm.revert(options, self.args, file_list)
|
|
|
|
|
self.assertEquals(sorted(file_list), sorted([os.path.join(base_path, 'a'),
|
|
|
|
@ -1155,7 +1150,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
[]).AndReturn(None)
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
file_list = []
|
|
|
|
|
self.assertEqual(scm.status(options, self.args, file_list), None)
|
|
|
|
|
|
|
|
|
@ -1177,7 +1173,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
gclient_scm.RunSVNAndGetFileList(['checkout', self.url, base_path],
|
|
|
|
|
self.root_dir, files_list)
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
scm.update(options, (), files_list)
|
|
|
|
|
|
|
|
|
|
def testUpdateUpdate(self):
|
|
|
|
@ -1206,7 +1203,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
self.root_dir, files_list)
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
scm.update(options, (), files_list)
|
|
|
|
|
|
|
|
|
|
def testUpdateGit(self):
|
|
|
|
@ -1216,7 +1214,8 @@ class SCMWrapperTestCase(GClientBaseTestCase):
|
|
|
|
|
print("________ found .git directory; skipping %s" % self.relpath)
|
|
|
|
|
|
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
|
scm = self._scm_wrapper(self.url, self.root_dir, self.relpath)
|
|
|
|
|
scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir,
|
|
|
|
|
relpath=self.relpath)
|
|
|
|
|
file_list = []
|
|
|
|
|
scm.update(options, self.args, file_list)
|
|
|
|
|
|
|
|
|
|