15 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
12 changed files with 116 additions and 110 deletions

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,10 +108,13 @@ $ 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
@@ -124,31 +129,39 @@ Removing the directory in `~/.pyenv/versions` will delete the virtualenv, or you
### virtualenv and pyvenv ### virtualenv and pyvenv
There is [venv](http://docs.python.jp/3/library/venv.html) module available for CPython 3.3 and newer. There is a [venv](http://docs.python.jp/3/library/venv.html) module available
It provides a command-line tool `pyvenv` which is the successor of `virtualenv` and distributed by default. for CPython 3.3 and newer.
It provides a command-line tool `pyvenv` which is the successor of `virtualenv`
and distributed by default.
The `pyenv-virtualenv` uses `pyvenv` if it is available and the `virtualenv` is not available. `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 #### 20141012
* Fix warnings from `shellcheck` to improve support for POSIX sh (#40) * Fix warnings from `shellcheck` to improve support for POSIX sh (#40)

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}")"

View File

@@ -43,10 +43,18 @@ if [ -n "$VERBOSE" ]; then
echo " echo \"pyenv-virtualenv: deactivate ${prefix##*/}\" 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

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="20141012" 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() {

View File

@@ -76,12 +76,12 @@ 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 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 set -e PYENV_DEACTIVATE
pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE
@@ -90,7 +90,7 @@ function _pyenv_virtualenv_hook --on-event fish_prompt;
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
@@ -112,12 +112,12 @@ 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)" = "system" ]; then if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
unset PYENV_DEACTIVATE unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "\$PYENV_ACTIVATE" != "\$(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 unset PYENV_DEACTIVATE
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
@@ -126,7 +126,7 @@ if [[ "$shell" != "fish" ]]; then
fi fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(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

@@ -66,6 +66,7 @@ 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"; . "${PYENV_ROOT}/versions/venv/bin/activate";
@@ -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,6 +131,7 @@ 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"; . "${PYENV_ROOT}/versions/venv27/bin/activate";
@@ -149,6 +152,7 @@ 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"; . "${PYENV_ROOT}/versions/venv27/bin/activate";

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;
@@ -103,8 +105,8 @@ EOS
} }
@test "deactivate virtualenv which has been activated manually" { @test "deactivate virtualenv which has been activated manually" {
export PYENV_VIRTUALENV_INIT=1
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv" export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="bash" run pyenv-sh-deactivate PYENV_SHELL="bash" run pyenv-sh-deactivate
@@ -122,8 +124,8 @@ 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
@@ -141,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
@@ -158,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
@@ -168,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;
@@ -178,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
@@ -188,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;
@@ -198,8 +202,8 @@ EOS
} }
@test "deactivate virtualenv which has been activated manually (fish)" { @test "deactivate virtualenv which has been activated manually (fish)" {
export PYENV_VIRTUALENV_INIT=1
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv" export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
export PYENV_ACTIVATE_SHELL=
PYENV_SHELL="fish" run pyenv-sh-deactivate PYENV_SHELL="fish" run pyenv-sh-deactivate

View File

@@ -32,12 +32,12 @@ 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)" = "system" ]; then if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
unset PYENV_DEACTIVATE unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "\$PYENV_ACTIVATE" != "\$(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 unset PYENV_DEACTIVATE
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
@@ -46,7 +46,7 @@ _pyenv_virtualenv_hook() {
fi fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(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
@@ -64,12 +64,12 @@ 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 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 set -e PYENV_DEACTIVATE
pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE pyenv activate --no-error --verbose; or set -e PYENV_DEACTIVATE
@@ -78,7 +78,7 @@ function _pyenv_virtualenv_hook --on-event fish_prompt;
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
@@ -93,12 +93,12 @@ 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)" = "system" ]; then if [ "\$(pyenv version-name 2>/dev/null || true)" = "system" ]; then
pyenv deactivate --no-error --verbose pyenv deactivate --no-error --verbose
unset PYENV_DEACTIVATE unset PYENV_DEACTIVATE
return 0 return 0
fi fi
if [ "\$PYENV_ACTIVATE" != "\$(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 unset PYENV_DEACTIVATE
pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE pyenv activate --no-error --verbose || unset PYENV_DEACTIVATE
@@ -107,7 +107,7 @@ _pyenv_virtualenv_hook() {
fi fi
fi fi
else else
if [ -z "\$VIRTUAL_ENV" ] && [ "\$PYENV_DEACTIVATE" != "\$(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="20141012" 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