Index: tests/gclient_test.py |
=================================================================== |
--- tests/gclient_test.py (revision 44042) |
+++ tests/gclient_test.py (working copy) |
@@ -1017,10 +1017,199 @@ |
self.assertRaisesError(exception, self._gclient_gclient.RunOnDeps, client, |
'update', self.args) |
- def testFromImpl(self): |
- # TODO(maruel): Test me! |
- pass |
+ def testFromImplOne(self): |
+ base_url = 'svn://base@123' |
+ deps_content = ( |
+ "deps = {\n" |
+ " 'base': '%s',\n" |
+ " 'main': From('base'),\n" |
+ "}\n" % base_url |
+ ) |
+ main_url = 'svn://main@456' |
+ base_deps_content = ( |
+ "deps = {\n" |
+ " 'main': '%s',\n" |
+ "}\n" % main_url |
+ ) |
+ # Fake .gclient file. |
+ name = 'testFromImplOne_solution_name' |
+ gclient_config = ( |
+ "solutions = [ {\n" |
+ "'name': '%s',\n" |
+ "'url': '%s',\n" |
+ "'custom_deps': {},\n" |
+ "}, ]" % (name, self.url)) |
+ options = self.Options() |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, 'main', '.git') |
+ ).AndReturn(False) |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, 'base', '.git') |
+ ).AndReturn(False) |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, name, '.git') |
+ ).AndReturn(False) |
+ gclient.gclient_scm.CreateSCM(self.url, self.root_dir, name).AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ gclient.gclient_utils.FileRead( |
+ gclient.os.path.join(self.root_dir, name, options.deps_file) |
+ ).AndReturn(deps_content) |
+ |
+ # base gets updated. |
+ gclient.gclient_scm.CreateSCM(base_url, self.root_dir, 'base').AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ gclient.gclient_utils.FileRead( |
+ gclient.os.path.join(self.root_dir, 'base', options.deps_file) |
+ ).AndReturn(base_deps_content) |
+ |
+ # main gets updated. |
+ gclient.gclient_scm.CreateSCM(main_url, self.root_dir, 'main').AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ |
+ # Process is done and will write an .gclient_entries. |
+ gclient.os.path.exists( |
+ gclient.os.path.join(self.root_dir, options.entries_filename) |
+ ).AndReturn(False) |
+ gclient.gclient_utils.FileWrite( |
+ gclient.os.path.join(self.root_dir, options.entries_filename), |
+ mox.IgnoreArg()) |
+ |
+ self.mox.ReplayAll() |
+ client = self._gclient_gclient(self.root_dir, options) |
+ client.SetConfig(gclient_config) |
+ client.RunOnDeps('update', self.args) |
+ |
+ def testFromImplTwo(self): |
+ base_url = 'svn://base@123' |
+ deps_content = ( |
+ "deps = {\n" |
+ " 'base': '%s',\n" |
+ " 'main': From('base', 'src/main'),\n" |
+ "}\n" % base_url |
+ ) |
+ main_url = 'svn://main@456' |
+ base_deps_content = ( |
+ "deps = {\n" |
+ " 'src/main': '%s',\n" |
+ "}\n" % main_url |
+ ) |
+ # Fake .gclient file. |
+ name = 'testFromImplTwo_solution_name' |
+ gclient_config = ( |
+ "solutions = [ {\n" |
+ "'name': '%s',\n" |
+ "'url': '%s',\n" |
+ "'custom_deps': {},\n" |
+ "}, ]" % (name, self.url)) |
+ |
+ options = self.Options() |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, 'main', '.git') |
+ ).AndReturn(False) |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, 'base', '.git') |
+ ).AndReturn(False) |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, name, '.git') |
+ ).AndReturn(False) |
+ gclient.gclient_scm.CreateSCM(self.url, self.root_dir, name).AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ gclient.gclient_utils.FileRead( |
+ gclient.os.path.join(self.root_dir, name, options.deps_file) |
+ ).AndReturn(deps_content) |
+ |
+ # base gets updated. |
+ gclient.gclient_scm.CreateSCM(base_url, self.root_dir, 'base').AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ gclient.gclient_utils.FileRead( |
+ gclient.os.path.join(self.root_dir, 'base', options.deps_file) |
+ ).AndReturn(base_deps_content) |
+ |
+ # main gets updated. |
+ gclient.gclient_scm.CreateSCM(main_url, self.root_dir, 'main').AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ |
+ # Process is done and will write an .gclient_entries. |
+ gclient.os.path.exists( |
+ gclient.os.path.join(self.root_dir, options.entries_filename) |
+ ).AndReturn(False) |
+ gclient.gclient_utils.FileWrite( |
+ gclient.os.path.join(self.root_dir, options.entries_filename), |
+ mox.IgnoreArg()) |
+ |
+ self.mox.ReplayAll() |
+ client = self._gclient_gclient(self.root_dir, options) |
+ client.SetConfig(gclient_config) |
+ client.RunOnDeps('update', self.args) |
+ |
+ def testFromImplTwoRelatvie(self): |
+ base_url = 'svn://base@123' |
+ deps_content = ( |
+ "deps = {\n" |
+ " 'base': '%s',\n" |
+ " 'main': From('base', 'src/main'),\n" |
+ "}\n" % base_url |
+ ) |
+ main_url = '/relative@456' |
+ base_deps_content = ( |
+ "deps = {\n" |
+ " 'src/main': '%s',\n" |
+ "}\n" % main_url |
+ ) |
+ # Fake .gclient file. |
+ name = 'testFromImplTwo_solution_name' |
+ gclient_config = ( |
+ "solutions = [ {\n" |
+ "'name': '%s',\n" |
+ "'url': '%s',\n" |
+ "'custom_deps': {},\n" |
+ "}, ]" % (name, self.url)) |
+ |
+ options = self.Options() |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, 'main', '.git') |
+ ).AndReturn(False) |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, 'base', '.git') |
+ ).AndReturn(False) |
+ gclient.os.path.exists(gclient.os.path.join(self.root_dir, name, '.git') |
+ ).AndReturn(False) |
+ gclient.gclient_scm.CreateSCM(self.url, self.root_dir, name).AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ gclient.gclient_utils.FileRead( |
+ gclient.os.path.join(self.root_dir, name, options.deps_file) |
+ ).AndReturn(deps_content) |
+ |
+ # base gets updated. |
+ gclient.gclient_scm.CreateSCM(base_url, self.root_dir, 'base').AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ gclient.gclient_utils.FileRead( |
+ gclient.os.path.join(self.root_dir, 'base', options.deps_file) |
+ ).AndReturn(base_deps_content) |
+ |
+ # main gets updated after resolving the relative url. |
+ gclient.gclient_scm.CreateSCM(base_url, self.root_dir, None).AndReturn( |
+ gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.FullUrlForRelativeUrl(main_url |
+ ).AndReturn('svn://base' + main_url) |
+ gclient.gclient_scm.CreateSCM('svn://base' + main_url, self.root_dir, |
+ 'main').AndReturn(gclient.gclient_scm.CreateSCM) |
+ gclient.gclient_scm.CreateSCM.RunCommand('update', options, self.args, []) |
+ |
+ # Process is done and will write an .gclient_entries. |
+ gclient.os.path.exists( |
+ gclient.os.path.join(self.root_dir, options.entries_filename) |
+ ).AndReturn(False) |
+ gclient.gclient_utils.FileWrite( |
+ gclient.os.path.join(self.root_dir, options.entries_filename), |
+ mox.IgnoreArg()) |
+ |
+ self.mox.ReplayAll() |
+ client = self._gclient_gclient(self.root_dir, options) |
+ client.SetConfig(gclient_config) |
+ client.RunOnDeps('update', self.args) |
+ |
def testFileImpl(self): |
# Fake .gclient file. |
name = "testFileImpl" |