File tree Expand file tree Collapse file tree 4 files changed +33
-2
lines changed Expand file tree Collapse file tree 4 files changed +33
-2
lines changed Original file line number Diff line number Diff line change 1+ 2011-04-13 Doug Hellmann <dhellmann@racemi.com>
2+
3+ * virtualenvwrapper.sh (rmvirtualenv): Move to a safe directory
4+ before removing the virtual environment, and only move back if the
5+ previously occupied directory still exists.
6+
172011-04-10 Doug Hellmann <dhellmann@racemi.com>
28
39 * virtualenvwrapper.sh: Initialize VIRTUALENVWRAPPER_LOG_DIR and
Original file line number Diff line number Diff line change 2929 locations of hooks and logs.
3030 - Enabled tab completion for :ref: `command-showvirtualenv `
3131 (:bbissue: `78 `).
32+ - Fixed a problem with running :ref: `command-rmvirtualenv ` from
33+ within the environment being removed (:bbissue: `83 `).
3234
33352.6.3
3436
Original file line number Diff line number Diff line change @@ -22,15 +22,26 @@ setUp () {
2222}
2323
2424test_remove () {
25- mkvirtualenv " deleteme"
25+ mkvirtualenv " deleteme" > /dev/null 2>&1
2626 assertTrue " [ -d $WORKON_HOME /deleteme ]"
2727 deactivate
2828 rmvirtualenv " deleteme"
2929 assertFalse " [ -d $WORKON_HOME /deleteme ]"
3030}
3131
32+ test_within_virtualenv () {
33+ mkvirtualenv " deleteme" > /dev/null 2>&1
34+ assertTrue " [ -d $WORKON_HOME /deleteme ]"
35+ cdvirtualenv
36+ assertSame " $VIRTUAL_ENV " " $( pwd) "
37+ deactivate
38+ rmvirtualenv " deleteme"
39+ assertSame " $WORKON_HOME " " $( pwd) "
40+ assertFalse " [ -d $WORKON_HOME /deleteme ]"
41+ }
42+
3243test_rm_aliased () {
33- mkvirtualenv " deleteme"
44+ mkvirtualenv " deleteme" > /dev/null 2>&1
3445 deactivate
3546 alias rm=' rm -i'
3647 rmvirtualenv " deleteme"
Original file line number Diff line number Diff line change @@ -252,9 +252,21 @@ rmvirtualenv () {
252252 echo " Either switch to another environment, or run 'deactivate'." >&2
253253 return 1
254254 fi
255+
256+ # Move out of the current directory to one known to be
257+ # safe, in case we are inside the environment somewhere.
258+ typeset prior_dir=" $( pwd) "
259+ cd " $WORKON_HOME "
260+
255261 virtualenvwrapper_run_hook " pre_rmvirtualenv" " $env_name "
256262 \r m -rf " $env_dir "
257263 virtualenvwrapper_run_hook " post_rmvirtualenv" " $env_name "
264+
265+ # If the directory we used to be in still exists, move back to it.
266+ if [ -d " $prior_dir " ]
267+ then
268+ cd " $prior_dir "
269+ fi
258270}
259271
260272# List the available environments.
You can’t perform that action at this time.
0 commit comments