Skip to content

Commit d4139aa

Browse files
committed
Made workon fully support virtualenvs with spaces in names
1 parent 5a440b0 commit d4139aa

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

tests/test_mkvirtualenv.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ test_create_space_in_name() {
3636
assertTrue "$hook was not created" "[ -f \"$WORKON_HOME/env with space/bin/$hook\" ]"
3737
assertFalse "$hook is executable" "[ -x \"$WORKON_HOME/env with space/bin/$hook\" ]"
3838
done
39+
assertTrue virtualenvwrapper_verify_active_environment
40+
env_name=$(basename "$VIRTUAL_ENV")
41+
assertSame "env with space" "$env_name"
3942
}
4043

4144
test_activates () {

tests/test_workon.sh

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ oneTimeSetUp() {
99
source "$test_dir/../virtualenvwrapper.sh"
1010
mkvirtualenv "env1" >/dev/null 2>&1
1111
mkvirtualenv "env2" >/dev/null 2>&1
12+
mkvirtualenv "env with space" >/dev/null 2>&1
1213
deactivate >/dev/null 2>&1
1314
}
1415

@@ -67,7 +68,7 @@ test_virtualenvwrapper_show_workon_options () {
6768
mkdir "$WORKON_HOME/not_env"
6869
(cd "$WORKON_HOME"; ln -s env1 link_env)
6970
envs=$(virtualenvwrapper_show_workon_options | tr '\n' ' ')
70-
assertSame "env1 env2 link_env " "$envs"
71+
assertSame "env1 env2 link_env env with space " "$envs"
7172
rmdir "$WORKON_HOME/not_env"
7273
rm -f "$WORKON_HOME/link_env"
7374
}
@@ -78,7 +79,7 @@ test_virtualenvwrapper_show_workon_options_grep_options () {
7879
export GREP_OPTIONS="--count"
7980
envs=$(virtualenvwrapper_show_workon_options | tr '\n' ' ')
8081
unset GREP_OPTIONS
81-
assertSame "env1 env2 link_env " "$envs"
82+
assertSame "env1 env2 link_env env with space " "$envs"
8283
rmdir "$WORKON_HOME/not_env"
8384
rm -f "$WORKON_HOME/link_env"
8485
}
@@ -94,7 +95,7 @@ test_virtualenvwrapper_show_workon_options_chpwd () {
9495
}
9596
mkdir "$WORKON_HOME/not_env"
9697
envs=$(virtualenvwrapper_show_workon_options | tr '\n' ' ')
97-
assertSame "env1 env2 " "$envs"
98+
assertSame "env1 env2 env with space " "$envs"
9899
rmdir "$WORKON_HOME/not_env"
99100
rm -f "$WORKON_HOME/link_env"
100101
}
@@ -123,4 +124,19 @@ test_workon_dot () {
123124
assertSame "env1" $(basename "$VIRTUAL_ENV")
124125
}
125126

127+
test_workon_dot_with_space () {
128+
cd $WORKON_HOME/"env with space"
129+
workon .
130+
assertTrue virtualenvwrapper_verify_active_environment
131+
env_name=$(basename "$VIRTUAL_ENV")
132+
assertSame "env with space" "$env_name"
133+
}
134+
135+
test_workon_with_space () {
136+
workon "env with space"
137+
assertTrue virtualenvwrapper_verify_active_environment
138+
env_name=$(basename "$VIRTUAL_ENV")
139+
assertSame "env with space" "$env_name"
140+
}
141+
126142
. "$test_dir/shunit2"

virtualenvwrapper.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -722,11 +722,13 @@ function workon {
722722
return 1
723723
elif [ "$env_name" = "." ]
724724
then
725-
env_name=$(basename $(pwd))
725+
IFS='%'
726+
env_name="$(basename $(pwd))"
727+
unset IFS
726728
fi
727729

728730
virtualenvwrapper_verify_workon_home || return 1
729-
virtualenvwrapper_verify_workon_environment $env_name || return 1
731+
virtualenvwrapper_verify_workon_environment "$env_name" || return 1
730732

731733
activate="$WORKON_HOME/$env_name/$VIRTUALENVWRAPPER_ENV_BIN_DIR/activate"
732734
if [ ! -f "$activate" ]

0 commit comments

Comments
 (0)