test: Convert Window path to MSYS path
When MSYS shell executes program, if its arguments look like MSYS paths, MSYS automatically converts them into Windows paths. For example, `/c/path:/d/path` becomes `C:\path;D:\path`. However, if there is only one path e.g. `/c/path`, it becomes `C:/path`. maketest.py reverts the behavior to reduce confusion between MSYS and Windows, but it didn't handle the `/c/path` case. This patch fixes the issue. Fixes #15297 Fixes #15250
This commit is contained in:
parent
a3d77e616b
commit
7eb35bc2a9
1 changed files with 4 additions and 3 deletions
|
@ -15,13 +15,14 @@ import sys
|
|||
# msys1/msys2 automatically converts `/abs/path1:/abs/path2` into
|
||||
# `c:\real\abs\path1;c:\real\abs\path2` (semicolons) if shell thinks
|
||||
# the value is list of paths.
|
||||
# (if there is only one path, it becomes `c:/real/abs/path`.)
|
||||
# this causes great confusion and error: shell and Makefile doesn't like
|
||||
# windows paths so it is really error-prone. revert it for peace.
|
||||
def normalize_path(v):
|
||||
# c:\path -> /c/path
|
||||
if ':\\' in v:
|
||||
v = '/' + v.replace(':\\', '/')
|
||||
v = v.replace('\\', '/')
|
||||
# c:/path -> /c/path
|
||||
if ':/' in v:
|
||||
v = '/' + v.replace(':/', '/')
|
||||
return v
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue