micropy-cli
micropy-cli copied to clipboard
Detection of Windows NTFS junction fails if path is a WindowsPath with a lower case drive letter
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).