add2virtualenv has problems with quoted paths, paths with spaces, and non-existing paths on other drives
thebjorn opened this issue · comments
Bjorn commented
Setup and verify basic functionality works:
c:\work\github\virtualenvwrapper-win\tests> mkvirtualenv add2virtualenv_basic --no-download --no-wheel --no-setuptools --no-pip
New python executable in c:\srv\venv\add2virtualenv_basic\Scripts\python.exe
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests> w:
The system cannot find the drive specified.
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests> mkdir tmp
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests> cd tmp
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv .
"c:\work\github\virtualenvwrapper-win\tests\tmp" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv "."
"c:\work\github\virtualenvwrapper-win\tests\tmp" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv "%CD%"
"c:\work\github\virtualenvwrapper-win\tests\tmp" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
Below I'm creating a new drive letter using the subst
command to point w: to an empty directory
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> mkdir w
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> subst w: w
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv w:\hello
"c:\work\github\virtualenvwrapper-win\tests\tmp\w:\hello" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
This "c:\work\github\virtualenvwrapper-win\tests\tmp\w:\hello"
is not a valid path. Adding spaces to the path makes it worse:
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv "w:\hello world"
A subdirectory or file w:\hello already exists.
Error occurred while processing: w:\hello.
"c:\work\github\virtualenvwrapper-win\tests\tmp\"w:\hello world"" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
If the path exists, everything is ok:
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> mkdir w:\hello
A subdirectory or file w:\hello already exists.
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv w:\hello
"w:\hello" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> python -c "import sys;print sys.path" | tr , "\n"
[''
'c:\\work\\github\\virtualenvwrapper-win\\tests'
'C:\\WINDOWS\\SYSTEM32\\python27.zip'
'c:\\srv\\venv\\add2virtualenv_basic\\DLLs'
'c:\\srv\\venv\\add2virtualenv_basic\\lib'
'c:\\srv\\venv\\add2virtualenv_basic\\lib\\plat-win'
'c:\\srv\\venv\\add2virtualenv_basic\\lib\\lib-tk'
'c:\\srv\\venv\\add2virtualenv_basic\\Scripts'
'c:\\python27\\Lib'
'c:\\python27\\DLLs'
'c:\\python27\\Lib\\lib-tk'
'c:\\srv\\venv\\add2virtualenv_basic'
'c:\\srv\\venv\\add2virtualenv_basic\\lib\\site-packages'
'c:\\work\\github\\virtualenvwrapper-win\\tests\\tmp'
'w:\\hello']
Spaces in local paths cause double quoting:
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv "hello world"
A subdirectory or file world already exists.
Error occurred while processing: world.
"c:\work\github\virtualenvwrapper-win\tests\tmp\"hello world"" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp>
And spaces in remote (other drive) paths that exist does not work:
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp> add2virtualenv "w:\hello world"
A subdirectory or file w:\hello already exists.
Error occurred while processing: w:\hello.
A subdirectory or file world already exists.
Error occurred while processing: world.
"c:\work\github\virtualenvwrapper-win\tests\tmp\"w:\hello world"" added to
c:\srv\venv\add2virtualenv_basic\Lib\site-packages\virtualenv_path_extensions.pth
(add2virtualenv_basic) c:\work\github\virtualenvwrapper-win\tests\tmp>
After all that, w: contains:
(add2virtualenv_basic) w:\> tree
.
`-- hello
1 directory, 0 files
(add2virtualenv_basic) w:\>