davidmarble / virtualenvwrapper-win

Port of Doug Hellmann's virtualenvwrapper to Windows batch scripts

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

add2virtualenv has problems with quoted paths, paths with spaces, and non-existing paths on other drives

thebjorn opened this issue · comments

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:\>