BradenM/micropy-cli
Detection of Windows NTFS junction fails if path is a WindowsPath with a lower case drive letter
开放
#208 创建于 2021年1月6日
bughelp wanted
仓库指标
- 星标
- (335 个星标)
- PR 合并指标
- (PR 指标待抓取)
描述
In the file helpers.py, function is_dir_link:
When running on Windows, if the path passed in is a WindowsPath with a lower case drive letter then the function will always return True regardless of the existence of the directory or its status as a regular directory or a junction.
This is because:
- WindowsPath.resolve() changes the drive letter to upper case while WindowsPath.absolute() doesn't.
- The results of path.resolve() and path.absolute() are converted to strings and then compared which fails due to drive letter case being different.
There are two solutions I can think of off the top of my head:
- Don't convert the path into two strings, just compare directly as in: if not (path.absolute() == path.resolve())
- The strings resulting from path.resolve() and path.absolute() could both be converted to all upper case or all lower case before the comparison is made (NTFS isn't a case sensitive file system so it doesn't matter).