Merge remote-tracking branch 'rbenv/master'

Using `git merge rbenv/master -s recursive -X rename-threshold=5%`.

Conflicts:
	README.md
	bin/python-local-exec
	libexec/pyenv
	libexec/pyenv-help
	test/--version.bats
This commit is contained in:
Daniel Hahler 2015-12-14 13:37:52 +01:00
commit 03ece82197
4 changed files with 30 additions and 22 deletions

View file

@ -67,7 +67,6 @@ executables injected into your `PATH`, determines which Python version
has been specified by your application, and passes your commands along has been specified by your application, and passes your commands along
to the correct Python installation. to the correct Python installation.
### Understanding PATH ### Understanding PATH
When you run a command like `python` or `pip`, your operating system When you run a command like `python` or `pip`, your operating system
@ -83,7 +82,6 @@ precedence over another one at the end. In this example, the
`/usr/local/bin` directory will be searched first, then `/usr/bin`, `/usr/local/bin` directory will be searched first, then `/usr/bin`,
then `/bin`. then `/bin`.
### Understanding Shims ### Understanding Shims
pyenv works by inserting a directory of _shims_ at the front of your pyenv works by inserting a directory of _shims_ at the front of your
@ -104,7 +102,6 @@ operating system will do the following:
* Run the shim named `pip`, which in turn passes the command along to * Run the shim named `pip`, which in turn passes the command along to
pyenv pyenv
### Choosing the Python Version ### Choosing the Python Version
When you execute a shim, pyenv determines which Python version to use by When you execute a shim, pyenv determines which Python version to use by

View file

@ -28,26 +28,26 @@ if enable -f "${BASH_SOURCE%/*}"/../libexec/pyenv-realpath.dylib realpath 2>/dev
else else
[ -z "$PYENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin" [ -z "$PYENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin"
READLINK=$(type -p greadlink readlink | head -1) READLINK=$(type -p greadlink readlink | head -1)
[ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?" [ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?"
resolve_link() { resolve_link() {
$READLINK "$1" $READLINK "$1"
} }
abs_dirname() { abs_dirname() {
local cwd="$(pwd)" local cwd="$PWD"
local path="$1" local path="$1"
while [ -n "$path" ]; do while [ -n "$path" ]; do
cd "${path%/*}" cd "${path%/*}"
local name="${path##*/}" local name="${path##*/}"
path="$(resolve_link "$name" || true)" path="$(resolve_link "$name" || true)"
done done
pwd pwd
cd "$cwd" cd "$cwd"
} }
fi fi
if [ -z "${PYENV_ROOT}" ]; then if [ -z "${PYENV_ROOT}" ]; then
@ -71,10 +71,10 @@ if [ -z "${PYENV_DIR}" ]; then
fi fi
if [ -z "${PYENV_DIR}" ]; then if [ -z "${PYENV_DIR}" ]; then
PYENV_DIR="$(pwd)" PYENV_DIR="$PWD"
else else
cd "$PYENV_DIR" 2>/dev/null || abort "cannot change working directory to \`$PYENV_DIR'" cd "$PYENV_DIR" 2>/dev/null || abort "cannot change working directory to \`$PYENV_DIR'"
PYENV_DIR="$(pwd)" PYENV_DIR="$PWD"
cd "$OLDPWD" cd "$OLDPWD"
fi fi
export PYENV_DIR export PYENV_DIR

View file

@ -23,7 +23,8 @@ remove_from_path() {
path_before="$result" path_before="$result"
result="${result//:$path_to_remove:/:}" result="${result//:$path_to_remove:/:}"
done done
echo "${result%:}" result="${result%:}"
echo "${result#:}"
} }
PYENV_COMMAND="$1" PYENV_COMMAND="$1"

View file

@ -59,6 +59,16 @@ create_executable() {
assert_success "${PYENV_TEST_DIR}/bin/kill-all-humans" assert_success "${PYENV_TEST_DIR}/bin/kill-all-humans"
} }
@test "doesn't include current directory in PATH search" {
export PATH="$(path_without "kill-all-humans")"
mkdir -p "$PYENV_TEST_DIR"
cd "$PYENV_TEST_DIR"
touch kill-all-humans
chmod +x kill-all-humans
PYENV_VERSION=system run pyenv-which kill-all-humans
assert_failure "pyenv: kill-all-humans: command not found"
}
@test "version not installed" { @test "version not installed" {
create_executable "3.4" "py.test" create_executable "3.4" "py.test"
PYENV_VERSION=3.3 run pyenv-which py.test PYENV_VERSION=3.3 run pyenv-which py.test