Dive deeper into the opener to try and find the base.

Summary: Sometimes opener.vfs is an _fncachevfs, which has a .vfs member, not a .base member. When you get one of these, go deeper.

Test Plan:
Run testrunner.py flib/intern/sandcastle/vcs/ without this change, see it traceback.

Rerun testrunner.py flib/intern/sandcastle/vcs/ with this change, see it fail in the same way as the current released version.

Reviewers: durham, lcharignon, ttung, rmcelroy

Reviewed By: rmcelroy

Subscribers: rmcelroy, mjpieters, #sourcecontrol

Differential Revision: https://phabricator.intern.facebook.com/D3593097

Tasks: 12305684

Signature: t1:3593097:1469033487:aec4c4a5de6f92a64f4730f03e9780e02f086819
This commit is contained in:
Simon Farnsworth 2016-07-20 10:13:23 -07:00
parent 3b12277d4a
commit eafe319549

View File

@ -121,7 +121,11 @@ class _systemawarecachelimit(object):
st = os.statvfs(repo.root)
else:
if util.safehasattr(opener, "vfs"):
st = os.statvfs(opener.vfs.base)
if (not util.safehasattr(opener.vfs, "base") and
util.safehasattr(opener.vfs, "vfs")):
st = os.statvfs(opener.vfs.vfs.base)
else:
st = os.statvfs(opener.vfs.base)
else:
st = os.statvfs(opener.base)
except (OSError, IOError) as ex: