32 Commits

Author SHA1 Message Date
Yamashita Yuu
191e806ba9 shell version set in activate should be unset in deactivate (#61) 2014-12-23 11:21:52 +09:00
Yamashita Yuu
4b198663c7 Merge branch 'pr60' (#60) 2014-12-16 23:05:01 +09:00
Yamashita Yuu
ad0fa82329 Fix broken fish test (#60) 2014-12-16 23:04:35 +09:00
Tony Wang
f681df6f20 fix incorrect fish syntax in pyenv-virtualenv-init 2014-12-16 17:53:26 +08:00
Yamashita, Yuu
593268b988 Merge pull request #59 from blueyed/doc-fixes
Some doc fixes: typos, grammar, clarification and formatting
2014-12-14 20:51:29 +09:00
Yamashita Yuu
e774464ced ignore error from pyenv-version-name since it might fail if there is configuration error (yyuu/pyenv#291) 2014-12-14 14:15:18 +09:00
Yamashita, Yuu
6d46b6ab53 Merge pull request #58 from pygeek/patch-1
Update read to include pyenv-init - note.
2014-12-14 14:14:55 +09:00
Clinton Christian
11a86ad7d7 Remove white space. 2014-12-13 16:44:03 -05:00
Daniel Hahler
99145752f3 Some doc fixes: typos, grammar, clarification and formatting 2014-12-12 02:41:04 +01:00
Clinton Christian
1da2fe09c2 Update read to include pyenv-init - note. 2014-12-11 16:18:43 -05:00
Yamashita Yuu
ad644e83b5 v20141106 2014-11-06 09:47:54 -08:00
Yamashita Yuu
0786c7c5b6 The pyenv virtualenv-init is not always necessary (#42)
It is necessary only if user want automatic fashion of activation.
If the users of pyenv-virtualenv doesn't need the feature, they can
omit the configuration safely.
2014-11-03 08:48:42 -08:00
Yamashita Yuu
58e93f9e0d Fix test which has broken by 2060c43387 2014-10-27 11:04:42 +09:00
Yamashita Yuu
2060c43387 Stop buzzy errors from embeded shell functions 2014-10-27 10:36:10 +09:00
Yamashita Yuu
a02eb0a396 Calling create_symlinks after ensurepip is unnecessary
Install script of setuptools-6.1/pip-1.5.6 will create those links if needed
2014-10-19 10:59:52 +09:00
Yamashita Yuu
1d36ef2f68 v20141012 2014-10-12 21:55:47 +09:00
Yamashita Yuu
5795eabaac Merge branch 'bcb-master' (fixed #47) 2014-10-12 21:41:43 +09:00
Yamashita Yuu
e655abbd41 Fix broken tests (#47) 2014-10-12 21:37:10 +09:00
Yamashita Yuu
d6671249b7 Should not persist PYENV_DEACTIVATE after automatic deactivation (#47, #48) 2014-10-12 21:34:18 +09:00
Beau Barker
79bfc9d362 When changing from a virtualenv to "system", unset PYENV_DEACTIVATE. Previously the var remained set, which made it impossible to reactivate the previous virtualenv 2014-09-17 19:50:41 +10:00
Yamashita, Yuu
5252cd0777 Merge pull request #46 from NegaMorgan/add-virtualenv-delete-instructions
added instructions for deleting virtualenvs
2014-09-06 01:28:53 +09:00
Morgan Evans
909e4de414 added instructions for deleting virtualenvs 2014-09-05 12:09:33 -04:00
Yamashita, Yuu
215bda7032 Merge pull request #44 from blueyed/no-whitespace-in-name
Do not allow whitespace in VIRTUALENV_NAME
2014-09-04 08:56:44 +09:00
Daniel Hahler
86046fd4e8 Do not allow whitespace in VIRTUALENV_NAME
While this could work in general, it fails in the end, because
whitespace is not allowed/supported in the shebang line with the
scripts in the created virtualenv.
2014-09-03 23:28:46 +02:00
Yamashita, Yuu
2cc21f112c Merge pull request #40 from s0undt3ch/master
Fix weird bash code issue which made bash complain about "then"
2014-08-14 10:03:35 +09:00
Pedro Algarvio
81736da905 Indent to 2 spaces. 2014-08-13 19:51:22 +01:00
Pedro Algarvio
7304608e0f Adapt tests to new output 2014-08-13 03:58:32 +01:00
Pedro Algarvio
3ebb00414f if [ pyenv deactivate --no-error --verbose ] is not bourne shell compatible 2014-08-13 03:40:02 +01:00
Yamashita Yuu
c9bcef656c Use . instead of source to support POSIX sh 2014-08-13 10:54:18 +09:00
Pedro Algarvio
2662b5807c Fix weird bash code issue which made bash complain about "then" 2014-08-13 00:55:04 +01:00
Yamashita Yuu
fa04d6f9df Add notes on pyvenv in README 2014-07-11 20:30:43 +09:00
Yamashita Yuu
a3c86f013b Deactivate virtualenv even if it has been activated manually 2014-07-11 20:24:58 +09:00
12 changed files with 216 additions and 114 deletions

101
README.md
View File

@@ -3,12 +3,12 @@
[![Build Status](https://travis-ci.org/yyuu/pyenv-virtualenv.png)](https://travis-ci.org/yyuu/pyenv-virtualenv) [![Build Status](https://travis-ci.org/yyuu/pyenv-virtualenv.png)](https://travis-ci.org/yyuu/pyenv-virtualenv)
pyenv-virtualenv is a [pyenv](https://github.com/yyuu/pyenv) plugin pyenv-virtualenv is a [pyenv](https://github.com/yyuu/pyenv) plugin
that provides a `pyenv virtualenv` command to create virtualenv for Python that provides a `pyenv virtualenv` command to create virtualenvs for Python
on UNIX-like systems. on UNIX-like systems.
(NOTICE: If you are an existing user of [virtualenvwrapper](http://pypi.python.org/pypi/virtualenvwrapper) (NOTICE: If you are an existing user of [virtualenvwrapper](http://pypi.python.org/pypi/virtualenvwrapper)
and you love it, [pyenv-virtualenvwrapper](https://github.com/yyuu/pyenv-virtualenvwrapper) may help you and you love it, [pyenv-virtualenvwrapper](https://github.com/yyuu/pyenv-virtualenvwrapper) may help you
to manage your virtualenvs.) (additionally) to manage your virtualenvs.)
## Installation ## Installation
@@ -17,24 +17,26 @@ to manage your virtualenvs.)
This will install the latest development version of pyenv-virtualenv into This will install the latest development version of pyenv-virtualenv into
the `~/.pyenv/plugins/pyenv-virtualenv` directory. the `~/.pyenv/plugins/pyenv-virtualenv` directory.
**Important note:** If you installed pyenv into a non-standard directory, make sure that you clone this **Important note:** If you installed pyenv into a non-standard directory, make
repo into the 'plugins' directory of wherever you installed into. sure that you clone this repo into the 'plugins' directory of wherever you
installed into.
From inside that directory you can: From inside that directory you can:
- Check out a specific release tag. - Check out a specific release tag.
- Get the latest development release by running `git pull` to download the latest changes. - Get the latest development release by running `git pull` to download the
latest changes.
1. **Check out pyenv-virtualenv into plugin directory** 1. **Check out pyenv-virtualenv into plugin directory**
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
2. **Add `pyenv virtualenv-init` to your shell** to enable activation of virtualenv 2. **Add `pyenv virtualenv-init` to your shell** to enable activation of virtualenv. This is entirely optional but pretty useful.
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
**Zsh note**: Modify your `~/.zshenv` file instead of `~/.bash_profile`. **Zsh note**: Modify your `~/.zshenv` file instead of `~/.bash_profile`.
**Pyenv note**: You may also need to add 'eval "$(pyenv init -)"' to your profile if you haven't done so already.
3. **Restart your shell to the enable pyenv-virtualenv** 3. **Restart your shell to enable pyenv-virtualenv**
$ exec "$SHELL" $ exec "$SHELL"
@@ -42,11 +44,11 @@ From inside that directory you can:
### Installing with Homebrew (for OS X users) ### Installing with Homebrew (for OS X users)
Mac OS X users can install pyenv-virtualenv with the Mac OS X users can install pyenv-virtualenv with the
[Homebrew](http://brew.sh) package manager. This [Homebrew](http://brew.sh) package manager.
will give you access to the `pyenv-virtualenv` command. If you have pyenv This will give you access to the `pyenv-virtualenv` command. If you have pyenv
installed, you will also be able to use the `pyenv virtualenv` command. installed, you will also be able to use the `pyenv virtualenv` command.
*This is recommended method of installation if you installed pyenv *This is the recommended method of installation if you installed pyenv
with Homebrew.* with Homebrew.*
``` ```
@@ -59,15 +61,16 @@ Or, if you would like to install the latest development release:
$ brew install --HEAD pyenv-virtualenv $ brew install --HEAD pyenv-virtualenv
``` ```
After installation, you'll still need to add `eval "$(pyenv virtualenv-init -)"` to your After installation, you'll still need to add `eval "$(pyenv virtualenv-init
profile (as stated in the caveats). You'll only ever have to do this once. -)"` to your profile (as stated in the caveats). You'll only ever have to do
this once.
## Usage ## Usage
### Using `pyenv virtualenv` with pyenv ### Using `pyenv virtualenv` with pyenv
To create a virtualenv for the Python version use with pyenv, run To create a virtualenv for the Python version used with pyenv, run
`pyenv virtualenv`, specifying the Python version you want and the name `pyenv virtualenv`, specifying the Python version you want and the name
of the virtualenv directory. For example, of the virtualenv directory. For example,
@@ -75,26 +78,25 @@ of the virtualenv directory. For example,
$ pyenv virtualenv 2.7.7 my-virtual-env-2.7.7 $ pyenv virtualenv 2.7.7 my-virtual-env-2.7.7
``` ```
will create a virtualenv based on Python 2.7.7 will create a virtualenv based on Python 2.7.7 under `~/.pyenv/versions` in a
under `~/.pyenv/versions` in a folder called `my-virtual-env-2.7.7`. folder called `my-virtual-env-2.7.7`.
### Create virtualenv from current version ### Create virtualenv from current version
If there is only one argument is given to `pyenv virtualenv`, If there is only one argument given to `pyenv virtualenv`, the virtualenv will
virtualenv will be created with given name based on current be created with the given name based on the current pyenv Python version.
version.
``` ```
$ pyenv version $ pyenv version
3.4.1 (set by /home/yyuu/.pyenv/version) 3.4.2 (set by /home/yyuu/.pyenv/version)
$ pyenv virtualenv venv34 $ pyenv virtualenv venv34
``` ```
### List existing virtualenvs ### List existing virtualenvs
`pyenv virtualenvs` shows you the list of existing virtualenvs. `pyenv virtualenvs` shows you the list of existing virtualenvs:
``` ```
$ pyenv shell venv27 $ pyenv shell venv27
@@ -106,33 +108,66 @@ $ pyenv virtualenvs
### Activate virtualenv ### Activate virtualenv
Some external tools (e.g. [jedi](https://github.com/davidhalter/jedi)) might require you to `activate` the virtualenv. Some external tools (e.g. [jedi](https://github.com/davidhalter/jedi)) might
The `pyenv-virtualenv` will automatically activate/deactivate the virtualenv if the `eval "$(pyenv virtualenv-init -)"` is properly configured in your shell. require you to `activate` the virtualenv.
You can also activate and deactivate a pyenv virtualenv this way: `pyenv-virtualenv` will automatically activate/deactivate the virtualenv if
the `eval "$(pyenv virtualenv-init -)"` is properly configured in your shell.
You can also activate and deactivate a pyenv virtualenv manually:
pyenv activate <name> pyenv activate <name>
pyenv deactivate pyenv deactivate
### Delete existing virtualenv
Removing the directory in `~/.pyenv/versions` will delete the virtualenv, or you can run:
pyenv uninstall my-virtual-env
### virtualenv and pyvenv
There is a [venv](http://docs.python.jp/3/library/venv.html) module available
for CPython 3.3 and newer.
It provides a command-line tool `pyvenv` which is the successor of `virtualenv`
and distributed by default.
`pyenv-virtualenv` uses `pyvenv` if it is available and the `virtualenv`
command is not available.
### Special environment variables ### Special environment variables
You can set certain environment variables to control the pyenv-virtualenv. You can set certain environment variables to control pyenv-virtualenv.
* `PYENV_VIRTUALENV_CACHE_PATH`, if set, specifies a directory to use for * `PYENV_VIRTUALENV_CACHE_PATH`, if set, specifies a directory to use for
caching downloaded package files. caching downloaded package files.
* `VIRTUALENV_VERSION`, if set, forces pyenv-virtualenv to install desired * `VIRTUALENV_VERSION`, if set, forces pyenv-virtualenv to install the desired
version of virtualenv. If the virtualenv has not been installed, version of virtualenv. If `virtualenv` has not been installed,
pyenv-virtualenv will try to install the given version of virtualenv. pyenv-virtualenv will try to install the given version of virtualenv.
* `EZ_SETUP` and `GET_PIP`, if set and pyvenv is preferred than virtualenv, * `EZ_SETUP` and `GET_PIP`, if set and `pyvenv` is preferred over `virtualenv`,
use `ez_setup.py` and `get_pip.py` at specified location. use `ez_setup.py` and `get_pip.py` from the specified location.
* `EZ_SETUP_URL` and `GET_PIP_URL`, if set and pyvenv is preferred * `EZ_SETUP_URL` and `GET_PIP_URL`, if set and `pyvenv` is preferred over
than virtualenv, download `ez_setup.py` and `get_pip.py` from specified URL. `virtualenv`, download `ez_setup.py` and `get_pip.py` from the specified URL.
* `SETUPTOOLS_VERSION` and `PIP_VERSION`, if set and pyvenv is preferred * `SETUPTOOLS_VERSION` and `PIP_VERSION`, if set and `pyvenv` is preferred
than virtualenv, install specified version of setuptools and pip. over `virtualenv`, install the specified version of setuptools and pip.
## Version History ## Version History
#### 20141106
* Stop creating after `ensurepip` since it has done by `ensurepip` itself
* Suppress some useless warnings from `pyenv virtualenv-init`
#### 20141012
* Fix warnings from `shellcheck` to improve support for POSIX sh (#40)
* Do not allow whitespace in `VIRTUALENV_NAME` (#44)
* Should not persist `PYENV_DEACTIVATE` after automatic deactivation (#47, #48)
#### 20140705 #### 20140705
* Display information on auto-(de)?activation * Display information on auto-(de)?activation

View File

@@ -41,8 +41,9 @@ while [ $# -gt 0 ]; do
shift 1 shift 1
done done
no_shell=
versions=("$@") versions=("$@")
if [ -z "$versions" ]; then if [ -z "${versions}" ]; then
no_shell=1 no_shell=1
OLDIFS="$IFS" OLDIFS="$IFS"
IFS=: versions=($(pyenv-version-name)) IFS=: versions=($(pyenv-version-name))
@@ -97,6 +98,16 @@ fi
if [ -z "$no_shell" ]; then if [ -z "$no_shell" ]; then
echo "pyenv shell \"${versions}\";" echo "pyenv shell \"${versions}\";"
# shell version set in pyenv-sh-activate should be unset
# https://github.com/yyuu/pyenv-virtualenv/issues/61
case "$shell" in
fish )
echo "setenv PYENV_ACTIVATE_SHELL 1;"
;;
* )
echo "export PYENV_ACTIVATE_SHELL=1;"
;;
esac
fi fi
prefix="$(pyenv-prefix "${versions}")" prefix="$(pyenv-prefix "${versions}")"
@@ -112,7 +123,7 @@ EOS
cat <<EOS cat <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${prefix}"; export PYENV_ACTIVATE="${prefix}";
source "${prefix}/bin/activate"; . "${prefix}/bin/activate";
EOS EOS
;; ;;
esac esac

View File

@@ -37,20 +37,30 @@ fish )
;; ;;
esac esac
prefix="${PYENV_ACTIVATE:-${VIRTUAL_ENV}}"
if [ -n "$VERBOSE" ]; then if [ -n "$VERBOSE" ]; then
echo " echo \"pyenv-virtualenv: deactivate ${PYENV_ACTIVATE##*/}\" 1>&2;" echo " echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 1>&2;"
fi fi
if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
# Backward compatibility issue # shell version set in pyenv-sh-activate should be unset
# https://github.com/yyuu/pyenv-virtualenv/issues/26 # https://github.com/yyuu/pyenv-virtualenv/issues/61
echo " pyenv shell --unset;" echo " pyenv shell --unset;"
case "$shell" in
fish )
echo " set -e PYENV_ACTIVATE_SHELL;"
;;
* )
echo " unset PYENV_ACTIVATE_SHELL;"
;;
esac
fi fi
case "$shell" in case "$shell" in
fish ) fish )
cat <<EOS cat <<EOS
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; setenv PYENV_DEACTIVATE "$prefix";
set -e PYENV_ACTIVATE; set -e PYENV_ACTIVATE;
deactivate; deactivate;
else; else;
@@ -58,7 +68,7 @@ EOS
;; ;;
* ) * )
cat <<EOS cat <<EOS
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; export PYENV_DEACTIVATE="$prefix";
unset PYENV_ACTIVATE; unset PYENV_ACTIVATE;
deactivate; deactivate;
else else

View File

@@ -9,7 +9,7 @@
# -f/--force Install even if the version appears to be installed already # -f/--force Install even if the version appears to be installed already
# #
PYENV_VIRTUALENV_VERSION="20140705" PYENV_VIRTUALENV_VERSION="20141106"
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
@@ -185,28 +185,6 @@ build_package_ensurepip() {
pyenv-exec python -m ensurepip 2>/dev/null|| { pyenv-exec python -m ensurepip 2>/dev/null|| {
build_package_ez_setup "$@" && build_package_get_pip "$@" build_package_ez_setup "$@" && build_package_get_pip "$@"
} || return 1 } || return 1
create_symlinks "$(pyenv-exec python -c 'import sys;v=sys.version_info;sys.stdout.write("python%d.%d"%(v[0],v[1]))')"
}
create_symlinks() {
local suffix="$1"
local file link
shopt -s nullglob
for file in "${VIRTUALENV_PATH}/bin"/*; do
if [[ "${file##*/}" == *"${suffix}" ]]; then
if [[ "${file}" == *"-${suffix}" ]]; then
link="${file%%-${suffix}}"
else
link="${file%%${suffix}}"
fi
if [ ! -e "${link}" ]; then
( cd "${file%/*}" && ln -fs "${file##*/}" "${link##*/}" )
fi
fi
done
shopt -u nullglob
} }
prepare_requirements() { prepare_requirements() {
@@ -297,6 +275,11 @@ if [ -z "${VERSION_NAME}" ] || [ -z "${VIRTUALENV_NAME}" ]; then
usage 1 usage 1
fi fi
if [ "$VIRTUALENV_NAME" != "${VIRTUALENV_NAME%[[:space:]]*}" ]; then
echo "pyenv-virtualenv: no whitespace allowed in virtualenv name." 1>&2
exit 1
fi
# Set VERSION_NAME as default version in this script # Set VERSION_NAME as default version in this script
export PYENV_VERSION="${VERSION_NAME}" export PYENV_VERSION="${VERSION_NAME}"

View File

@@ -76,19 +76,21 @@ fish )
cat <<EOS cat <<EOS
function _pyenv_virtualenv_hook --on-event fish_prompt; function _pyenv_virtualenv_hook --on-event fish_prompt;
if [ -n "\$PYENV_ACTIVATE" ] if [ -n "\$PYENV_ACTIVATE" ]
if [ (pyenv version-name) = "system" ] if [ (pyenv version-name 2>/dev/null; or true) = "system" ]
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
set -e PYENV_DEACTIVATE
return 0 return 0
end end
if [ "\$PYENV_ACTIVATE" != (pyenv prefix) ] if [ "\$PYENV_ACTIVATE" != (pyenv prefix 2>/dev/null; or true) ]
if pyenv deactivate --no-error --verbose if pyenv deactivate --no-error --verbose
set -e PYENV_DEACTIVATE
pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE
else else
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
end end
end end
else else
if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != (pyenv prefix) ] if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != (pyenv prefix 2>/dev/null; or true) ]
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
end end
end end
@@ -110,19 +112,21 @@ esac
if [[ "$shell" != "fish" ]]; then if [[ "$shell" != "fish" ]]; then
cat <<EOS cat <<EOS
if [ -n "\$PYENV_ACTIVATE" ]; then if [ -n "\$PYENV_ACTIVATE" ]; then
if [ "x\`pyenv version-name\`" = "xsystem" ]; then if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "x\$PYENV_ACTIVATE" != "x\`pyenv prefix\`" ]; then if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then
if pyenv deactivate --no-error --verbose; then if pyenv deactivate --no-error --verbose; then
unset PYENV_DEACTIVATE
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
else else
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
fi fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "x\$PYENV_DEACTIVATE" != "x\`pyenv prefix\`" ]; then if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
fi fi
fi fi

View File

@@ -24,7 +24,7 @@ setup() {
assert_output <<EOS assert_output <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
source "${PYENV_ROOT}/versions/venv/bin/activate"; . "${PYENV_ROOT}/versions/venv/bin/activate";
EOS EOS
} }
@@ -46,7 +46,7 @@ EOS
pyenv-virtualenv: activate venv pyenv-virtualenv: activate venv
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
source "${PYENV_ROOT}/versions/venv/bin/activate"; . "${PYENV_ROOT}/versions/venv/bin/activate";
EOS EOS
} }
@@ -66,9 +66,10 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
pyenv shell "venv"; pyenv shell "venv";
export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
source "${PYENV_ROOT}/versions/venv/bin/activate"; . "${PYENV_ROOT}/versions/venv/bin/activate";
EOS EOS
} }
@@ -109,6 +110,7 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
pyenv shell "venv"; pyenv shell "venv";
setenv PYENV_ACTIVATE_SHELL 1;
set -e PYENV_DEACTIVATE; set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv"; setenv PYENV_ACTIVATE "${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate.fish"; . "${PYENV_ROOT}/versions/venv/bin/activate.fish";
@@ -129,9 +131,10 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
pyenv shell "venv27"; pyenv shell "venv27";
export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27";
source "${PYENV_ROOT}/versions/venv27/bin/activate"; . "${PYENV_ROOT}/versions/venv27/bin/activate";
EOS EOS
} }
@@ -149,9 +152,10 @@ EOS
assert_success assert_success
assert_output <<EOS assert_output <<EOS
pyenv shell "venv27"; pyenv shell "venv27";
export PYENV_ACTIVATE_SHELL=1;
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27"; export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv27";
source "${PYENV_ROOT}/versions/venv27/bin/activate"; . "${PYENV_ROOT}/versions/venv27/bin/activate";
EOS EOS
} }

View File

@@ -7,8 +7,8 @@ setup() {
} }
@test "deactivate virtualenv" { @test "deactivate virtualenv" {
export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate PYENV_SHELL="bash" run pyenv-sh-deactivate
@@ -26,8 +26,8 @@ EOS
} }
@test "deactivate virtualenv (verbose)" { @test "deactivate virtualenv (verbose)" {
export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate --verbose PYENV_SHELL="bash" run pyenv-sh-deactivate --verbose
@@ -46,8 +46,8 @@ EOS
} }
@test "deactivate virtualenv (no-error)" { @test "deactivate virtualenv (no-error)" {
export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
@@ -63,9 +63,9 @@ fi;
EOS EOS
} }
@test "deactivate virtualenv (without pyenv-virtualenv-init)" { @test "deactivate virtualenv (with shell activation)" {
export PYENV_VIRTUALENV_INIT=
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1
PYENV_SHELL="bash" run pyenv-sh-deactivate PYENV_SHELL="bash" run pyenv-sh-deactivate
@@ -73,6 +73,7 @@ EOS
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then if declare -f deactivate 1>/dev/null 2>&1; then
pyenv shell --unset; pyenv shell --unset;
unset PYENV_ACTIVATE_SHELL;
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
unset PYENV_ACTIVATE; unset PYENV_ACTIVATE;
deactivate; deactivate;
@@ -83,9 +84,9 @@ fi;
EOS EOS
} }
@test "deactivate virtualenv (without pyenv-virtualenv-init) (no-error)" { @test "deactivate virtualenv (with shell activation) (no-error)" {
export PYENV_VIRTUALENV_INIT=
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
@@ -93,6 +94,7 @@ EOS
assert_output <<EOS assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then if declare -f deactivate 1>/dev/null 2>&1; then
pyenv shell --unset; pyenv shell --unset;
unset PYENV_ACTIVATE_SHELL;
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
unset PYENV_ACTIVATE; unset PYENV_ACTIVATE;
deactivate; deactivate;
@@ -102,9 +104,28 @@ fi;
EOS EOS
} }
@test "deactivate virtualenv which has been activated manually" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate
assert_success
assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then
export PYENV_DEACTIVATE="$VIRTUAL_ENV";
unset PYENV_ACTIVATE;
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS
}
@test "deactivate virtualenv (fish)" { @test "deactivate virtualenv (fish)" {
export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="fish" run pyenv-sh-deactivate PYENV_SHELL="fish" run pyenv-sh-deactivate
@@ -122,8 +143,8 @@ EOS
} }
@test "deactivate virtualenv (fish) (no-error)" { @test "deactivate virtualenv (fish) (no-error)" {
export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
@@ -139,9 +160,9 @@ end;
EOS EOS
} }
@test "deactivate virtualenv (fish) (without pyenv-virtualenv-init)" { @test "deactivate virtualenv (fish) (with shell activation)" {
export PYENV_VIRTUALENV_INIT=
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1
PYENV_SHELL="fish" run pyenv-sh-deactivate PYENV_SHELL="fish" run pyenv-sh-deactivate
@@ -149,6 +170,7 @@ EOS
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; if functions -q deactivate;
pyenv shell --unset; pyenv shell --unset;
set -e PYENV_ACTIVATE_SHELL;
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE; set -e PYENV_ACTIVATE;
deactivate; deactivate;
@@ -159,9 +181,9 @@ end;
EOS EOS
} }
@test "deactivate virtualenv (fish) (without pyenv-virtualenv-init) (no-error)" { @test "deactivate virtualenv (fish) (with shell activation) (no-error)" {
export PYENV_VIRTUALENV_INIT=
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
@@ -169,6 +191,7 @@ EOS
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; if functions -q deactivate;
pyenv shell --unset; pyenv shell --unset;
set -e PYENV_ACTIVATE_SHELL;
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE; set -e PYENV_ACTIVATE;
deactivate; deactivate;
@@ -177,6 +200,26 @@ else;
end; end;
EOS EOS
} }
@test "deactivate virtualenv which has been activated manually (fish)" {
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="fish" run pyenv-sh-deactivate
assert_success
assert_output <<EOS
if functions -q deactivate;
setenv PYENV_DEACTIVATE "$VIRTUAL_ENV";
set -e PYENV_ACTIVATE;
deactivate;
else;
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end;
EOS
}
@test "should fail if deactivate is invoked as a command" { @test "should fail if deactivate is invoked as a command" {
run pyenv-deactivate run pyenv-deactivate

View File

@@ -32,19 +32,21 @@ load test_helper
export PYENV_VIRTUALENV_INIT=1; export PYENV_VIRTUALENV_INIT=1;
_pyenv_virtualenv_hook() { _pyenv_virtualenv_hook() {
if [ -n "\$PYENV_ACTIVATE" ]; then if [ -n "\$PYENV_ACTIVATE" ]; then
if [ "x\`pyenv version-name\`" = "xsystem" ]; then if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "x\$PYENV_ACTIVATE" != "x\`pyenv prefix\`" ]; then if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then
if pyenv deactivate --no-error --verbose; then if pyenv deactivate --no-error --verbose; then
unset PYENV_DEACTIVATE
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
else else
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
fi fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "x\$PYENV_DEACTIVATE" != "x\`pyenv prefix\`" ]; then if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
fi fi
fi fi
@@ -62,19 +64,21 @@ EOS
setenv PYENV_VIRTUALENV_INIT 1; setenv PYENV_VIRTUALENV_INIT 1;
function _pyenv_virtualenv_hook --on-event fish_prompt; function _pyenv_virtualenv_hook --on-event fish_prompt;
if [ -n "\$PYENV_ACTIVATE" ] if [ -n "\$PYENV_ACTIVATE" ]
if [ (pyenv version-name) = "system" ] if [ (pyenv version-name 2>/dev/null; or true) = "system" ]
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
set -e PYENV_DEACTIVATE
return 0 return 0
end end
if [ "\$PYENV_ACTIVATE" != (pyenv prefix) ] if [ "\$PYENV_ACTIVATE" != (pyenv prefix 2>/dev/null; or true) ]
if pyenv deactivate --no-error --verbose if pyenv deactivate --no-error --verbose
set -e PYENV_DEACTIVATE
pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE
else else
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
end end
end end
else else
if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != (pyenv prefix) ] if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != (pyenv prefix 2>/dev/null; or true) ]
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
end end
end end
@@ -89,19 +93,21 @@ EOS
export PYENV_VIRTUALENV_INIT=1; export PYENV_VIRTUALENV_INIT=1;
_pyenv_virtualenv_hook() { _pyenv_virtualenv_hook() {
if [ -n "\$PYENV_ACTIVATE" ]; then if [ -n "\$PYENV_ACTIVATE" ]; then
if [ "x\`pyenv version-name\`" = "xsystem" ]; then if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "x\$PYENV_ACTIVATE" != "x\`pyenv prefix\`" ]; then if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then
if pyenv deactivate --no-error --verbose; then if pyenv deactivate --no-error --verbose; then
unset PYENV_DEACTIVATE
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
else else
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
fi fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "x\$PYENV_DEACTIVATE" != "x\`pyenv prefix\`" ]; then if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then
pyenv activate --no-error --verbose pyenv activate --no-error --verbose
fi fi
fi fi

View File

@@ -26,8 +26,7 @@ unstub_pyenv() {
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'" stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'" stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
stub pyenv-exec "pyvenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/venv/bin" stub pyenv-exec "pyvenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/venv/bin"
stub pyenv-exec "python -m ensurepip : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/pip3.4" stub pyenv-exec "python -m ensurepip : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/pip"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
remove_executable "3.4.1" "virtualenv" remove_executable "3.4.1" "virtualenv"
create_executable "3.4.1" "pyvenv" create_executable "3.4.1" "pyvenv"
@@ -54,8 +53,7 @@ OUT
stub pyenv-exec "pyvenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/venv/bin" stub pyenv-exec "pyvenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";mkdir -p \${PYENV_ROOT}/versions/venv/bin"
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/easy_install" stub pyenv-exec "python */ez_setup.py : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/easy_install"
stub pyenv-exec "python */get-pip.py : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/pip3.3" stub pyenv-exec "python */get-pip.py : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/pip"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true

View File

@@ -27,7 +27,6 @@ unstub_pyenv() {
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'" stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
stub pyenv-exec "pyvenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\"" stub pyenv-exec "pyvenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "python -m ensurepip : true" stub pyenv-exec "python -m ensurepip : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
remove_executable "3.4.1" "virtualenv" remove_executable "3.4.1" "virtualenv"
create_executable "3.4.1" "pyvenv" create_executable "3.4.1" "pyvenv"
@@ -51,7 +50,6 @@ OUT
stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'" stub pyenv-prefix " : echo '${PYENV_ROOT}/versions/${PYENV_VERSION}'"
stub pyenv-exec "virtualenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\"" stub pyenv-exec "virtualenv ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "python -m ensurepip : true" stub pyenv-exec "python -m ensurepip : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
create_executable "3.4.1" "virtualenv" create_executable "3.4.1" "virtualenv"
create_executable "3.4.1" "pyvenv" create_executable "3.4.1" "pyvenv"
@@ -78,7 +76,6 @@ OUT
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : true" stub pyenv-exec "python */ez_setup.py : true"
stub pyenv-exec "python */get-pip.py : true" stub pyenv-exec "python */get-pip.py : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true
@@ -109,7 +106,6 @@ OUT
stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\"" stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "virtualenv --python=python3 ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\"" stub pyenv-exec "virtualenv --python=python3 ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "python -m ensurepip : true" stub pyenv-exec "python -m ensurepip : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
remove_executable "3.4.1" "virtualenv" remove_executable "3.4.1" "virtualenv"
create_executable "3.4.1" "pyvenv" create_executable "3.4.1" "pyvenv"
@@ -135,7 +131,6 @@ OUT
stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\"" stub pyenv-exec "pip install virtualenv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "virtualenv --python=python3 ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\"" stub pyenv-exec "virtualenv --python=python3 ${PYENV_ROOT}/versions/venv : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "python -m ensurepip : true" stub pyenv-exec "python -m ensurepip : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
remove_executable "3.4.1" "virtualenv" remove_executable "3.4.1" "virtualenv"
create_executable "3.4.1" "pyvenv" create_executable "3.4.1" "pyvenv"
@@ -163,7 +158,6 @@ OUT
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : true" stub pyenv-exec "python */ez_setup.py : true"
stub pyenv-exec "python */get-pip.py : true" stub pyenv-exec "python */get-pip.py : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true

View File

@@ -4,7 +4,7 @@ load test_helper
setup() { setup() {
export PYENV_ROOT="${TMP}/pyenv" export PYENV_ROOT="${TMP}/pyenv"
export PYENV_VIRTUALENV_VERSION="20140705" export PYENV_VIRTUALENV_VERSION="20141106"
} }
@test "display virtualenv version" { @test "display virtualenv version" {

View File

@@ -30,7 +30,6 @@ unstub_pyenv() {
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : true" stub pyenv-exec "python */ez_setup.py : true"
stub pyenv-exec "python */get-pip.py : true" stub pyenv-exec "python */get-pip.py : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true
@@ -57,7 +56,6 @@ OUT
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : true" stub pyenv-exec "python */ez_setup.py : true"
stub pyenv-exec "python */get-pip.py : true" stub pyenv-exec "python */get-pip.py : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true
@@ -85,7 +83,6 @@ OUT
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : true" stub pyenv-exec "python */ez_setup.py : true"
stub pyenv-exec "python */get-pip.py : true" stub pyenv-exec "python */get-pip.py : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true
@@ -113,7 +110,6 @@ OUT
stub pyenv-exec "python -m ensurepip : false" stub pyenv-exec "python -m ensurepip : false"
stub pyenv-exec "python */ez_setup.py : true" stub pyenv-exec "python */ez_setup.py : true"
stub pyenv-exec "python */get-pip.py : true" stub pyenv-exec "python */get-pip.py : true"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true
@@ -132,3 +128,21 @@ OUT
unstub pyenv-exec unstub pyenv-exec
unstub curl unstub curl
} }
@test "no whitespace allowed in virtualenv name" {
run pyenv-virtualenv "3.2.1" "foo bar"
assert_failure
assert_output <<OUT
pyenv-virtualenv: no whitespace allowed in virtualenv name.
OUT
}
@test "no tab allowed in virtualenv name" {
run pyenv-virtualenv "3.2.1" "foo bar baz"
assert_failure
assert_output <<OUT
pyenv-virtualenv: no whitespace allowed in virtualenv name.
OUT
}