1 Commits

Author SHA1 Message Date
Yamashita Yuu
7e8223eac1 Fix issues with manual activation of virtual environments (#34) 2014-07-04 15:44:55 +09:00
14 changed files with 155 additions and 525 deletions

111
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 virtualenvs for Python that provides a `pyenv virtualenv` command to create virtualenv 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
(additionally) to manage your virtualenvs.) to manage your virtualenvs.)
## Installation ## Installation
@@ -17,26 +17,24 @@ and you love it, [pyenv-virtualenvwrapper](https://github.com/yyuu/pyenv-virtual
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 **Important note:** If you installed pyenv into a non-standard directory, make sure that you clone this
sure that you clone this repo into the 'plugins' directory of wherever you repo into the 'plugins' directory of wherever you installed into.
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 - Get the latest development release by running `git pull` to download the latest changes.
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. This is entirely optional but pretty useful. 2. **Add `pyenv virtualenv-init` to your shell** to enable activation of virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.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 enable pyenv-virtualenv** **Zsh note**: Modify your `~/.zshenv` file instead of `~/.bash_profile`.
3. **Restart your shell to the enable pyenv-virtualenv**
$ exec "$SHELL" $ exec "$SHELL"
@@ -44,11 +42,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. [Homebrew](http://brew.sh) package manager. This
This will give you access to the `pyenv-virtualenv` command. If you have pyenv 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 the recommended method of installation if you installed pyenv *This is recommended method of installation if you installed pyenv
with Homebrew.* with Homebrew.*
``` ```
@@ -61,16 +59,15 @@ 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 After installation, you'll still need to add `eval "$(pyenv virtualenv-init -)"` to your
-)"` to your profile (as stated in the caveats). You'll only ever have to do profile (as stated in the caveats). You'll only ever have to do this once.
this once.
## Usage ## Usage
### Using `pyenv virtualenv` with pyenv ### Using `pyenv virtualenv` with pyenv
To create a virtualenv for the Python version used with pyenv, run To create a virtualenv for the Python version use 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,
@@ -78,25 +75,26 @@ 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 under `~/.pyenv/versions` in a will create a virtualenv based on Python 2.7.7
folder called `my-virtual-env-2.7.7`. under `~/.pyenv/versions` in a folder called `my-virtual-env-2.7.7`.
### Create virtualenv from current version ### Create virtualenv from current version
If there is only one argument given to `pyenv virtualenv`, the virtualenv will If there is only one argument is given to `pyenv virtualenv`,
be created with the given name based on the current pyenv Python version. virtualenv will be created with given name based on current
version.
``` ```
$ pyenv version $ pyenv version
3.4.2 (set by /home/yyuu/.pyenv/version) 3.4.1 (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
@@ -108,74 +106,33 @@ $ pyenv virtualenvs
### Activate virtualenv ### Activate virtualenv
Some external tools (e.g. [jedi](https://github.com/davidhalter/jedi)) might Some external tools (e.g. [jedi](https://github.com/davidhalter/jedi)) might require you to `activate` the virtualenv.
require you to `activate` the virtualenv. The `pyenv-virtualenv` will automatically activate/deactivate the virtualenv if the `eval "$(pyenv virtualenv-init -)"` is properly configured in your shell.
`pyenv-virtualenv` will automatically activate/deactivate the virtualenv if You can also activate and deactivate a pyenv virtualenv this way:
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 pyenv-virtualenv. You can set certain environment variables to control the 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 the desired * `VIRTUALENV_VERSION`, if set, forces pyenv-virtualenv to install desired
version of virtualenv. If `virtualenv` has not been installed, version of virtualenv. If the 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 over `virtualenv`, * `EZ_SETUP` and `GET_PIP`, if set and pyvenv is preferred than virtualenv,
use `ez_setup.py` and `get_pip.py` from the specified location. use `ez_setup.py` and `get_pip.py` at specified location.
* `EZ_SETUP_URL` and `GET_PIP_URL`, if set and `pyvenv` is preferred over * `EZ_SETUP_URL` and `GET_PIP_URL`, if set and pyvenv is preferred
`virtualenv`, download `ez_setup.py` and `get_pip.py` from the specified URL. than virtualenv, download `ez_setup.py` and `get_pip.py` from specified URL.
* `SETUPTOOLS_VERSION` and `PIP_VERSION`, if set and `pyvenv` is preferred * `SETUPTOOLS_VERSION` and `PIP_VERSION`, if set and pyvenv is preferred
over `virtualenv`, install the specified version of setuptools and pip. than virtualenv, install 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
* Display information on auto-(de)?activation
* Support manual (de)?activation with auto-activation enabled (#32, #34)
* Exit as error when (de)?activation failed
* Use https://bootstrap.pypa.io/ to install setuptools and pip
* Create backup of original virtualenv within `$(pyenv root)/versions` when `--upgrade`
#### 20140615 #### 20140615
* Fix incompatibility issue of `pyenv activate` and `pyenv deactivate` (#26) * Fix incompatibility issue of `pyenv activate` and `pyenv deactivate` (#26)

View File

@@ -14,36 +14,19 @@
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
unset NOERROR # Provide pyenv completions
unset VERBOSE if [ "$1" = "--complete" ]; then
while [ $# -gt 0 ]; do
case "$1" in
"--complete" )
# Provide pyenv completions
echo --unset echo --unset
exec pyenv-virtualenvs --bare exec pyenv-virtualenvs --bare
;; fi
"--no-error" )
NOERROR=1 if [ "$1" = "--unset" ]; then
;;
"--unset" )
echo "pyenv deactivate" echo "pyenv deactivate"
exit exit
;; fi
"--verbose" )
VERBOSE=1
;;
* )
break
;;
esac
shift 1
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))
@@ -57,16 +40,11 @@ if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then
fi fi
if [ "${#versions[@]}" -gt 1 ]; then if [ "${#versions[@]}" -gt 1 ]; then
[ -n "$NOERROR" ] || echo "pyenv-virtualenv: cannot activate multiple versions at once: ${versions[@]}" 1>&2 echo "pyenv-virtualenv: cannot activate multiple versions at once: ${versions[@]}" 1>&2
echo "false"
exit 1 exit 1
fi fi
if ! pyenv-virtualenv-prefix "${versions}" 1>/dev/null 2>&1; then pyenv-virtualenv-prefix "${versions}" 1>/dev/null
[ -n "$NOERROR" ] || echo "pyenv-virtualenv: version \`${versions}' is not a virtualenv" 1>&2
echo "false"
exit 1
fi
shell="$(basename "${PYENV_SHELL:-$SHELL}")" shell="$(basename "${PYENV_SHELL:-$SHELL}")"
case "$shell" in case "$shell" in
@@ -92,38 +70,23 @@ if [ -f "$profile" ] && grep -q 'pyenv init -' "$profile" && ! grep -q 'pyenv vi
pyenv-virtualenv-init >&2 || true pyenv-virtualenv-init >&2 || true
fi fi
if [ -n "$VERBOSE" ]; then
echo "pyenv-virtualenv: activate ${versions}" 1>&2
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}")"
case "$shell" in case "$shell" in
fish ) fish )
cat <<EOS cat <<EOS
set -e PYENV_DEACTIVATE; set -e PYENV_DEACTIVATE;
setenv PYENV_ACTIVATE "${prefix}"; setenv PYENV_ACTIVATE "$(pyenv-prefix "${versions}")";
. "${prefix}/bin/activate.fish"; . "\${PYENV_ACTIVATE}/bin/activate.fish";
EOS EOS
;; ;;
* ) * )
cat <<EOS cat <<EOS
unset PYENV_DEACTIVATE; unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${prefix}"; export PYENV_ACTIVATE="$(pyenv-prefix "${versions}")";
. "${prefix}/bin/activate"; source "\${PYENV_ACTIVATE}/bin/activate";
EOS EOS
;; ;;
esac esac

View File

@@ -9,84 +9,30 @@
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
unset NOERROR
unset VERBOSE
while [ $# -gt 0 ]; do
case "$1" in
"--no-error" )
NOERROR=1
;;
"--verbose" )
VERBOSE=1
;;
* )
break
;;
esac
shift 1
done
shell="$(basename "${PYENV_SHELL:-$SHELL}")" shell="$(basename "${PYENV_SHELL:-$SHELL}")"
case "$shell" in
fish )
echo "if functions -q deactivate;"
;;
* )
echo "if declare -f deactivate 1>/dev/null 2>&1; then"
;;
esac
prefix="${PYENV_ACTIVATE:-${VIRTUAL_ENV}}"
if [ -n "$VERBOSE" ]; then
echo " echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 1>&2;"
fi
if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
# shell version set in pyenv-sh-activate should be unset
# https://github.com/yyuu/pyenv-virtualenv/issues/61
echo " pyenv shell --unset;"
case "$shell" in
fish )
echo " set -e PYENV_ACTIVATE_SHELL;"
;;
* )
echo " unset PYENV_ACTIVATE_SHELL;"
;;
esac
fi
case "$shell" in case "$shell" in
fish ) fish )
cat <<EOS cat <<EOS
setenv PYENV_DEACTIVATE "$prefix"; if functions -q deactivate
setenv PYENV_DEACTIVATE "\$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE; set -e PYENV_ACTIVATE;
deactivate; deactivate;
else; end;
EOS EOS
;; ;;
* ) * )
cat <<EOS cat <<EOS
export PYENV_DEACTIVATE="$prefix"; if declare -f deactivate 1>/dev/null 2>&1; then
export PYENV_DEACTIVATE="\$PYENV_ACTIVATE";
unset PYENV_ACTIVATE; unset PYENV_ACTIVATE;
deactivate; deactivate;
else fi;
EOS EOS
;; ;;
esac esac
if [ -z "$NOERROR" ]; then if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then
echo " echo \"pyenv-virtualenv: no virtualenv has been activated.\" 1>&2;" # Backward compatibility issue
# https://github.com/yyuu/pyenv-virtualenv/issues/26
echo "pyenv shell --unset;"
fi fi
echo " false;"
case "$shell" in
fish )
echo "end;"
;;
* )
echo "fi;"
;;
esac

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="20141106" PYENV_VIRTUALENV_VERSION="20140615"
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
@@ -185,6 +185,28 @@ 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() {
@@ -275,11 +297,6 @@ 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,22 +76,17 @@ 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 2>/dev/null; or true) = "system" ] if [ (pyenv version-name) = "system" ]
pyenv deactivate --no-error --verbose eval (pyenv sh-deactivate); or true
set -e PYENV_DEACTIVATE
return 0 return 0
end end
if [ "\$PYENV_ACTIVATE" != (pyenv prefix 2>/dev/null; or true) ] if [ "\$PYENV_ACTIVATE" != (pyenv prefix) ]
if pyenv deactivate --no-error --verbose eval (pyenv sh-deactivate); or true
set -e PYENV_DEACTIVATE eval (pyenv sh-activate 2>/dev/null); or true
pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE
else
pyenv activate --no-error --verbose
end
end end
else else
if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != (pyenv prefix 2>/dev/null; or true) ] if [ "\$PYENV_DEACTIVATE" != (pyenv prefix) ]
pyenv activate --no-error --verbose eval (pyenv sh-activate 2>/dev/null); or true
end end
end end
end end
@@ -112,22 +107,17 @@ esac
if [[ "$shell" != "fish" ]]; then if [[ "$shell" != "fish" ]]; then
cat <<EOS cat <<EOS
if [ -n "\$PYENV_ACTIVATE" ]; then if [ -n "\$PYENV_ACTIVATE" ]; then
if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then if [ "x\`pyenv version-name\`" = "xsystem" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate || true
unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if [ "x\$PYENV_ACTIVATE" != "x\`pyenv prefix\`" ]; then
if pyenv deactivate --no-error --verbose; then pyenv deactivate || true
unset PYENV_DEACTIVATE pyenv activate 2>/dev/null || true
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
else
pyenv activate --no-error --verbose
fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if [ "x\$PYENV_DEACTIVATE" != "x\`pyenv prefix\`" ]; then
pyenv activate --no-error --verbose pyenv activate 2>/dev/null || true
fi fi
fi fi
}; };

View File

@@ -32,10 +32,6 @@ base_prefix() { # pyvenv
VIRTUALENV_PREFIX_PATHS=() VIRTUALENV_PREFIX_PATHS=()
for version in "${versions[@]}"; do for version in "${versions[@]}"; do
if [ "$version" = "system" ]; then
echo "pyenv-virtualenv: version \`${version}' is not a virtualenv" 1>&2
exit 1
fi
PREFIX="$(pyenv-prefix "${version}")" PREFIX="$(pyenv-prefix "${version}")"
if [ -f "${PREFIX}/bin/activate" ]; then if [ -f "${PREFIX}/bin/activate" ]; then
VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)" VIRTUALENV_PREFIX_PATH="$(real_prefix "${version}" || base_prefix "${version}" || true)"

View File

@@ -24,29 +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";
. "${PYENV_ROOT}/versions/venv/bin/activate"; source "\${PYENV_ACTIVATE}/bin/activate";
EOS
}
@test "activate virtualenv from current version (verbose)" {
export PYENV_VIRTUALENV_INIT=1
stub pyenv-version-name "echo venv"
stub pyenv-virtualenv-prefix "venv : echo \"${PYENV_ROOT}/versions/venv\""
stub pyenv-prefix "venv : echo \"${PYENV_ROOT}/versions/venv\""
PYENV_SHELL="bash" PYENV_VERSION="venv" run pyenv-sh-activate --verbose
unstub pyenv-version-name
unstub pyenv-virtualenv-prefix
unstub pyenv-prefix
assert_success
assert_output <<EOS
pyenv-virtualenv: activate venv
unset PYENV_DEACTIVATE;
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv";
. "${PYENV_ROOT}/versions/venv/bin/activate";
EOS EOS
} }
@@ -66,10 +44,9 @@ 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";
. "${PYENV_ROOT}/versions/venv/bin/activate"; source "\${PYENV_ACTIVATE}/bin/activate";
EOS EOS
} }
@@ -90,7 +67,7 @@ EOS
assert_output <<EOS assert_output <<EOS
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_ACTIVATE}/bin/activate.fish";
EOS EOS
} }
@@ -110,10 +87,9 @@ 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_ACTIVATE}/bin/activate.fish";
EOS EOS
} }
@@ -131,10 +107,9 @@ 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";
. "${PYENV_ROOT}/versions/venv27/bin/activate"; source "\${PYENV_ACTIVATE}/bin/activate";
EOS EOS
} }
@@ -152,10 +127,9 @@ 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";
. "${PYENV_ROOT}/versions/venv27/bin/activate"; source "\${PYENV_ACTIVATE}/bin/activate";
EOS EOS
} }
@@ -176,23 +150,6 @@ EOS
unstub pyenv-virtualenv-prefix unstub pyenv-virtualenv-prefix
assert_failure assert_failure
assert_output <<EOS
pyenv-virtualenv: version \`3.3.3' is not a virtualenv
false
EOS
}
@test "should fail if the version is not a virtualenv (no-error)" {
stub pyenv-virtualenv-prefix "3.3.3 : false"
run pyenv-sh-activate --no-error "3.3.3"
unstub pyenv-virtualenv-prefix
assert_failure
assert_output <<EOS
false
EOS
} }
@test "should fail if there are multiple versions" { @test "should fail if there are multiple versions" {
@@ -201,16 +158,6 @@ EOS
assert_failure assert_failure
assert_output <<EOS assert_output <<EOS
pyenv-virtualenv: cannot activate multiple versions at once: venv venv27 pyenv-virtualenv: cannot activate multiple versions at once: venv venv27
false
EOS
}
@test "should fail if there are multiple versions (no-error)" {
run pyenv-sh-activate --no-error "venv" "venv27"
assert_failure
assert_output <<EOS
false
EOS EOS
} }

View File

@@ -7,216 +7,64 @@ setup() {
} }
@test "deactivate virtualenv" { @test "deactivate virtualenv" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate PYENV_SHELL="bash" run pyenv-sh-deactivate
assert_success assert_success
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
export PYENV_DEACTIVATE="$PYENV_ACTIVATE"; export PYENV_DEACTIVATE="\$PYENV_ACTIVATE";
unset PYENV_ACTIVATE; unset PYENV_ACTIVATE;
deactivate; deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi; fi;
EOS EOS
} }
@test "deactivate virtualenv (verbose)" { @test "deactivate virtualenv (without pyenv-virtualenv-init)" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_VIRTUALENV_INIT=
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate --verbose
assert_success
assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then
echo "pyenv-virtualenv: deactivate venv" 1>&2;
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
unset PYENV_ACTIVATE;
deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS
}
@test "deactivate virtualenv (no-error)" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
assert_success
assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
unset PYENV_ACTIVATE;
deactivate;
else
false;
fi;
EOS
}
@test "deactivate virtualenv (with shell activation)" {
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
assert_success assert_success
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; export PYENV_DEACTIVATE="\$PYENV_ACTIVATE";
unset PYENV_ACTIVATE_SHELL;
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
unset PYENV_ACTIVATE; unset PYENV_ACTIVATE;
deactivate; deactivate;
else
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
fi;
EOS
}
@test "deactivate virtualenv (with shell activation) (no-error)" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1
PYENV_SHELL="bash" run pyenv-sh-deactivate --no-error
assert_success
assert_output <<EOS
if declare -f deactivate 1>/dev/null 2>&1; then
pyenv shell --unset;
unset PYENV_ACTIVATE_SHELL;
export PYENV_DEACTIVATE="$PYENV_ACTIVATE";
unset PYENV_ACTIVATE;
deactivate;
else
false;
fi;
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; fi;
pyenv shell --unset;
EOS EOS
} }
@test "deactivate virtualenv (fish)" { @test "deactivate virtualenv (fish)" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_VIRTUALENV_INIT=1
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="fish" run pyenv-sh-deactivate PYENV_SHELL="fish" run pyenv-sh-deactivate
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; if functions -q deactivate
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE"; setenv PYENV_DEACTIVATE "\$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE; set -e PYENV_ACTIVATE;
deactivate; deactivate;
else;
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end; end;
EOS EOS
} }
@test "deactivate virtualenv (fish) (no-error)" { @test "deactivate virtualenv (fish) (without pyenv-virtualenv-init)" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv" export PYENV_VIRTUALENV_INIT=
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
assert_success
assert_output <<EOS
if functions -q deactivate;
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE;
deactivate;
else;
false;
end;
EOS
}
@test "deactivate virtualenv (fish) (with shell activation)" {
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
assert_success assert_success
assert_output <<EOS assert_output <<EOS
if functions -q deactivate; if functions -q deactivate
pyenv shell --unset; setenv PYENV_DEACTIVATE "\$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE_SHELL;
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE; set -e PYENV_ACTIVATE;
deactivate; deactivate;
else;
echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2;
false;
end;
EOS
}
@test "deactivate virtualenv (fish) (with shell activation) (no-error)" {
export PYENV_ACTIVATE="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=1
PYENV_SHELL="fish" run pyenv-sh-deactivate --no-error
assert_success
assert_output <<EOS
if functions -q deactivate;
pyenv shell --unset;
set -e PYENV_ACTIVATE_SHELL;
setenv PYENV_DEACTIVATE "$PYENV_ACTIVATE";
set -e PYENV_ACTIVATE;
deactivate;
else;
false;
end;
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; end;
pyenv shell --unset;
EOS EOS
} }

View File

@@ -32,22 +32,17 @@ 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 [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then if [ "x\`pyenv version-name\`" = "xsystem" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate || true
unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if [ "x\$PYENV_ACTIVATE" != "x\`pyenv prefix\`" ]; then
if pyenv deactivate --no-error --verbose; then pyenv deactivate || true
unset PYENV_DEACTIVATE pyenv activate 2>/dev/null || true
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
else
pyenv activate --no-error --verbose
fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if [ "x\$PYENV_DEACTIVATE" != "x\`pyenv prefix\`" ]; then
pyenv activate --no-error --verbose pyenv activate 2>/dev/null || true
fi fi
fi fi
}; };
@@ -64,22 +59,17 @@ 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 2>/dev/null; or true) = "system" ] if [ (pyenv version-name) = "system" ]
pyenv deactivate --no-error --verbose eval (pyenv sh-deactivate); or true
set -e PYENV_DEACTIVATE
return 0 return 0
end end
if [ "\$PYENV_ACTIVATE" != (pyenv prefix 2>/dev/null; or true) ] if [ "\$PYENV_ACTIVATE" != (pyenv prefix) ]
if pyenv deactivate --no-error --verbose eval (pyenv sh-deactivate); or true
set -e PYENV_DEACTIVATE eval (pyenv sh-activate 2>/dev/null); or true
pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE
else
pyenv activate --no-error --verbose
end
end end
else else
if [ -z "\$VIRTUAL_ENV" ]; and [ "\$PYENV_DEACTIVATE" != (pyenv prefix 2>/dev/null; or true) ] if [ "\$PYENV_DEACTIVATE" != (pyenv prefix) ]
pyenv activate --no-error --verbose eval (pyenv sh-activate 2>/dev/null); or true
end end
end end
end end
@@ -93,22 +83,17 @@ 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 [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then if [ "x\`pyenv version-name\`" = "xsystem" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate || true
unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "\$PYENV_ACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if [ "x\$PYENV_ACTIVATE" != "x\`pyenv prefix\`" ]; then
if pyenv deactivate --no-error --verbose; then pyenv deactivate || true
unset PYENV_DEACTIVATE pyenv activate 2>/dev/null || true
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
else
pyenv activate --no-error --verbose
fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(pyenv prefix 2>/dev/null || true)" ]; then if [ "x\$PYENV_DEACTIVATE" != "x\`pyenv prefix\`" ]; then
pyenv activate --no-error --verbose pyenv activate 2>/dev/null || true
fi fi
fi fi
}; };

View File

@@ -26,7 +26,8 @@ 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/pip" stub pyenv-exec "python -m ensurepip : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/pip3.4"
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"
@@ -53,7 +54,8 @@ 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/pip" stub pyenv-exec "python */get-pip.py : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\";touch \${PYENV_ROOT}/versions/venv/bin/pip3.3"
stub pyenv-exec "python -c * : echo ${PYENV_VERSION%.*}"
stub curl true stub curl true
stub curl true stub curl true

View File

@@ -27,6 +27,7 @@ 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"
@@ -50,6 +51,7 @@ 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"
@@ -76,6 +78,7 @@ 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
@@ -106,6 +109,7 @@ 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"
@@ -131,6 +135,7 @@ 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"
@@ -158,6 +163,7 @@ 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="20141106" export PYENV_VIRTUALENV_VERSION="20140615"
} }
@test "display virtualenv version" { @test "display virtualenv version" {

View File

@@ -102,19 +102,6 @@ ${PYENV_ROOT}/versions/3.3.3:${PYENV_ROOT}/versions/3.4.0
OUT OUT
} }
@test "should fail if the version is the system" {
stub pyenv-version-name "echo system"
PYENV_VERSION="system" run pyenv-virtualenv-prefix
unstub pyenv-version-name
assert_failure
assert_output <<OUT
pyenv-virtualenv: version \`system' is not a virtualenv
OUT
}
@test "should fail if the version is not a virtualenv" { @test "should fail if the version is not a virtualenv" {
stub pyenv-version-name "echo 3.4.0" stub pyenv-version-name "echo 3.4.0"
stub pyenv-prefix "3.4.0 : echo \"${PYENV_ROOT}/versions/3.4.0\"" stub pyenv-prefix "3.4.0 : echo \"${PYENV_ROOT}/versions/3.4.0\""

View File

@@ -30,6 +30,7 @@ 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
@@ -56,6 +57,7 @@ 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
@@ -83,6 +85,7 @@ 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
@@ -110,6 +113,7 @@ 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
@@ -128,21 +132,3 @@ 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
}