sapling/tests/test-fb-hgext-patchrmdir.py
Jun Wu 51be4ac4b9 tests: do not mangle sys.path
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
2018-04-13 21:51:11 -07:00

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))