Index: depot_tools/tests/gclient_smoketest.py |
=================================================================== |
--- depot_tools/tests/gclient_smoketest.py (revision 58680) |
+++ depot_tools/tests/gclient_smoketest.py (working copy) |
@@ -214,7 +214,20 @@ |
self.assertTree({}) |
self.check(('', '', 0), self.gclient(['status'])) |
+ def testDifferentTopLevelDirectory(self): |
+ # Check that even if the .gclient file does not mention the directory src |
+ # itself, but it is included via dependencies, the .gclient file is used. |
+ self.gclient(['config', self.svn_base + 'trunk/src.DEPS']) |
+ deps = join(self.root_dir, 'src.DEPS') |
+ os.mkdir(deps) |
+ write(join(deps, 'DEPS'), |
+ 'deps = { "src": "%strunk/src" }' % (self.svn_base)) |
+ src = join(self.root_dir, 'src') |
+ os.mkdir(src) |
+ res = self.gclient(['status'], src) |
+ self.checkBlock(res[0], [('running', deps), ('running', src)]) |
+ |
class GClientSmokeSVN(GClientSmokeBase): |
def setUp(self): |
GClientSmokeBase.setUp(self) |
@@ -461,7 +474,49 @@ |
{ 'base': self.svn_base + 'trunk' }) |
self.check((out, '', 0), results) |
+ def testWrongDirectory(self): |
+ # Check that we're not using a .gclient configuration which only talks |
+ # about a subdirectory src when we're in a different subdirectory src-other. |
+ self.gclient(['config', self.svn_base + 'trunk/src/']) |
+ self.gclient(['sync']) |
+ other_src = join(self.root_dir, 'src-other') |
+ os.mkdir(other_src) |
+ res = ('', 'Error: client not configured; see \'gclient config\'\n', 1) |
+ self.check(res, self.gclient(['status'], other_src)) |
+ def testCorrectDirectory(self): |
+ # Check that when we're in the subdirectory src, the .gclient configuration |
+ # is used. |
+ self.gclient(['config', self.svn_base + 'trunk/src/']) |
+ self.gclient(['sync']) |
+ src = join(self.root_dir, 'src') |
+ res = self.gclient(['status'], src) |
+ self.checkBlock(res[0], [('running', src)]) |
+ |
+ def testInitialCheckoutNotYetDone(self): |
+ # Check that gclient can be executed when the initial checkout hasn't been |
+ # done yet. |
+ self.gclient(['config', self.svn_base + 'trunk/src/']) |
+ self.parseGclient(['sync'], |
+ ['running', 'running', |
+ # This is due to the way svn update is called for a |
+ # single file when File() is used in a DEPS file. |
+ ('running', self.root_dir + '/src/file/other'), |
+ 'running', 'running', 'running', 'running']) |
+ |
+ def testInitialCheckoutFailed(self): |
+ # Check that gclient can be executed from an arbitrary sub directory if the |
+ # initial checkout has failed. |
+ self.gclient(['config', self.svn_base + 'trunk/src/']) |
+ self.gclient(['sync']) |
+ # Cripple the checkout. |
+ os.remove(join(self.root_dir, '.gclient_entries')) |
+ src = join(self.root_dir, 'src') |
+ res = self.gclient(['sync'], src) |
+ self.checkBlock(res[0], |
+ ['running', 'running', 'running']) |
+ |
+ |
class GClientSmokeGIT(GClientSmokeBase): |
def setUp(self): |
GClientSmokeBase.setUp(self) |