mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 09:48:05 +03:00
51be4ac4b9
Summary: Mangling `sys.path` in `.py` tests could break tests running with `buck` opt build. Because the bundled extensions won't be used, but files in the working copy will. It's okay-ish for pure Python extensions. But native extensions will have problems. Reviewed By: ryanmce Differential Revision: D6974954 fbshipit-source-id: 8a7f3d86e5c2fbf16cfcc971743d99585fe61b99
63 lines
1.3 KiB
Python
63 lines
1.3 KiB
Python
from __future__ import absolute_import, print_function
|
|
|
|
import os
|
|
import sys
|
|
|
|
if not sys.platform.startswith('linux'):
|
|
sys.stderr.write('skipped: linux required\n')
|
|
sys.exit(80)
|
|
|
|
from hgext import patchrmdir
|
|
from mercurial import util
|
|
|
|
patchrmdir.uisetup(None)
|
|
|
|
testtmp = os.environ['TESTTMP']
|
|
|
|
d1 = os.path.join(testtmp, 'd1')
|
|
d2 = os.path.join(testtmp, 'd1', 'd2')
|
|
|
|
os.mkdir(d1)
|
|
os.mkdir(d2)
|
|
|
|
def tryfunc(func):
|
|
try:
|
|
func()
|
|
except Exception as ex:
|
|
# normalize the error message across platforms
|
|
if 'Non-empty directory' not in str(ex):
|
|
ex = '*'
|
|
else:
|
|
ex = 'Non-empty directory'
|
|
print(' error: %s' % ex)
|
|
else:
|
|
print(' success')
|
|
|
|
print('rmdir d1 - should fail with ENOTEMPTY')
|
|
tryfunc(lambda: os.rmdir(d1))
|
|
|
|
print('rmdir d1/d2 - should succeed')
|
|
tryfunc(lambda: os.rmdir(d2))
|
|
|
|
open(d2, 'w').close()
|
|
|
|
print('rmdir d1 - should fail with ENOTEMPTY')
|
|
tryfunc(lambda: os.rmdir(d1))
|
|
|
|
os.unlink(d2)
|
|
|
|
print('rmdir d1 - should succeed')
|
|
tryfunc(lambda: os.rmdir(d1))
|
|
|
|
print('rmdir d1 - should fail with ENOENT')
|
|
tryfunc(lambda: os.rmdir(d1))
|
|
|
|
os.mkdir(d1)
|
|
os.mkdir(d2)
|
|
|
|
print('removedirs d2 (and d1) - should succeed')
|
|
tryfunc(lambda: util.removedirs(d2))
|
|
|
|
print('removedirs d1 - should fail with ENOENT')
|
|
tryfunc(lambda: util.removedirs(d1))
|