rlib/test/test_rposix_stat.py::TestPosixStatFunctions::()::test_stat3_ino_dev
self = <rpython.rlib.test.test_rposix_stat.TestPosixStatFunctions instance at 0x0000022e69295260>
@py.test.mark.skipif(sys.platform != 'win32', reason='win32 test')
def test_stat3_ino_dev(self):
# PyPy 2 uses python3 semantics
# st = rposix_stat.stat('C:\\')
# assert st.st_dev == st.st_ino == 0
> st = rposix_stat.stat3('C:\\')
rlib\test\test_rposix_stat.py:79:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
rlib\rposix_stat.py:657: in stat3
return win32_xstat3(traits, path, traverse=True)
rlib\rposix_stat.py:724: in win32_xstat3
return win32_xstat_impl(win32traits, path, traverse, fileInfo, tagInfo)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
traits = <class rpython.rlib.rwin32file.Win32Traits at 0x0000022e692d1f30>
path = 'C:\\', traverse = True
fileInfo = <* DEAD Struct BY_HANDLE_FILE_INFORMATION { c_dwFileAttributes, c_ftCreationTi...izeHigh, c_nFileSizeLow, c_nNumberOfLinks, c_nFileIndexHigh, c_nFileIndexLow }>
tagInfo = <* DEAD Struct FILE_ATTRIBUTE_TAG_INFO { c_FileAttributes, c_ReparseTag }>
@specialize.arg(0)
def win32_xstat_impl(traits, path, traverse, fileInfo, tagInfo):
access = traits.FILE_READ_ATTRIBUTES
flags = traits.FILE_FLAG_BACKUP_SEMANTICS
isUnhandledTag = False
if not traverse:
flags |= traits.FILE_FLAG_OPEN_REPARSE_POINT
with rffi.scoped_utf82wcharp(path, codepoints_in_utf8(path)) as buf:
hFile = traits.CreateFile(buf, access, 0,
lltype.nullptr(rwin32.LPSECURITY_ATTRIBUTES.TO),
traits.OPEN_EXISTING, flags, rwin32.NULL_HANDLE)
if hFile == rwin32.INVALID_HANDLE_VALUE:
# Either the path doesn't exist, or the caller lacks access
errcode = rwin32.GetLastError_saved()
if (errcode == traits.ERROR_ACCESS_DENIED or
errcode == traits.ERROR_SHARING_VIOLATION):
# Try reading the parent directory
if win32_attributes_from_dir(traits, path, fileInfo, tagInfo) == 0:
raise WindowsError(rwin32.GetLastError_saved(),
"win32_attributes_from_dir failed")
if widen(fileInfo.c_dwFileAttributes) & traits.FILE_ATTRIBUTE_REPARSE_POINT:
if traverse or not IsReparseTagNameSurrogate(tagInfo.c_ReparseTag):
raise WindowsError(rwin32.GetLastError_saved(),
"win32_xstat failed")
elif errcode == traits.ERROR_INVALID_PARAMETER:
# \\.\con requires read or write access.
with rffi.scoped_utf82wcharp(path, codepoints_in_utf8(path)) as buf:
hFile = traits.CreateFile(buf,
access | traits.GENERIC_READ,
traits.FILE_SHARE_READ | traits.FILE_SHARE_WRITE,
lltype.nullptr(rwin32.LPSECURITY_ATTRIBUTES.TO),
traits.OPEN_EXISTING, flags, rwin32.NULL_HANDLE)
if hFile == rwin32.INVALID_HANDLE_VALUE:
raise WindowsError(rwin32.GetLastError_saved(),
"win32_xstat failed")
elif errcode == traits.ERROR_CANT_ACCESS_FILE:
# bpo37834: opne unhandled reparse points if traverse fails
if traverse:
traverse = False
isUnhandledTag = True
with rffi.scoped_utf82wcharp(path, codepoints_in_utf8(path)) as buf:
hFile = traits.CreateFile(buf, access, 0,
lltype.nullptr(rwin32.LPSECURITY_ATTRIBUTES.TO),
traits.OPEN_EXISTING,
flags | traits.FILE_FLAG_OPEN_REPARSE_POINT,
rwin32.NULL_HANDLE)
if hFile == rwin32.INVALID_HANDLE_VALUE:
raise WindowsError(rwin32.GetLastError_saved(),
"win32_xstat failed")
else:
> raise WindowsError(errcode, "os_stat failed")
E WindowsError: [Error 2] os_stat failed
rlib\rposix_stat.py:777: WindowsError
builder: rpython-win-x86-64 build #399
test: rlib/test/test_rposix_stat/py/TestPosixStatFunctions/()/test_stat3_ino_dev