|
|
- #!/usr/bin/env bats
-
- load test_helper
-
- create_executable() {
- local bin
- if [[ $1 == */* ]]; then bin="$1"
- else bin="${PYENV_ROOT}/versions/${1}/bin"
- fi
- mkdir -p "$bin"
- touch "${bin}/$2"
- chmod +x "${bin}/$2"
- }
-
- @test "outputs path to executable" {
- create_executable "2.7" "python"
- create_executable "3.4" "py.test"
-
- PYENV_VERSION=2.7 run pyenv-which python
- assert_success "${PYENV_ROOT}/versions/2.7/bin/python"
-
- PYENV_VERSION=3.4 run pyenv-which py.test
- assert_success "${PYENV_ROOT}/versions/3.4/bin/py.test"
-
- PYENV_VERSION=3.4:2.7 run pyenv-which py.test
- assert_success "${PYENV_ROOT}/versions/3.4/bin/py.test"
- }
-
- @test "searches PATH for system version" {
- create_executable "${PYENV_TEST_DIR}/bin" "kill-all-humans"
- create_executable "${PYENV_ROOT}/shims" "kill-all-humans"
-
- PYENV_VERSION=system run pyenv-which kill-all-humans
- assert_success "${PYENV_TEST_DIR}/bin/kill-all-humans"
- }
-
- @test "searches PATH for system version (shims prepended)" {
- create_executable "${PYENV_TEST_DIR}/bin" "kill-all-humans"
- create_executable "${PYENV_ROOT}/shims" "kill-all-humans"
-
- PATH="${PYENV_ROOT}/shims:$PATH" PYENV_VERSION=system run pyenv-which kill-all-humans
- assert_success "${PYENV_TEST_DIR}/bin/kill-all-humans"
- }
-
- @test "searches PATH for system version (shims appended)" {
- create_executable "${PYENV_TEST_DIR}/bin" "kill-all-humans"
- create_executable "${PYENV_ROOT}/shims" "kill-all-humans"
-
- PATH="$PATH:${PYENV_ROOT}/shims" PYENV_VERSION=system run pyenv-which kill-all-humans
- assert_success "${PYENV_TEST_DIR}/bin/kill-all-humans"
- }
-
- @test "searches PATH for system version (shims spread)" {
- create_executable "${PYENV_TEST_DIR}/bin" "kill-all-humans"
- create_executable "${PYENV_ROOT}/shims" "kill-all-humans"
-
- PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/shims:/tmp/non-existent:$PATH:${PYENV_ROOT}/shims" \
- PYENV_VERSION=system run pyenv-which kill-all-humans
- assert_success "${PYENV_TEST_DIR}/bin/kill-all-humans"
- }
-
- @test "doesn't include current directory in PATH search" {
- mkdir -p "$PYENV_TEST_DIR"
- cd "$PYENV_TEST_DIR"
- touch kill-all-humans
- chmod +x kill-all-humans
- PATH="$(path_without "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" {
- create_executable "3.4" "py.test"
- PYENV_VERSION=3.3 run pyenv-which py.test
- assert_failure "pyenv: version \`3.3' is not installed (set by PYENV_VERSION environment variable)"
- }
-
- @test "versions not installed" {
- create_executable "3.4" "py.test"
- PYENV_VERSION=2.7:3.3 run pyenv-which py.test
- assert_failure <<OUT
- pyenv: version \`2.7' is not installed (set by PYENV_VERSION environment variable)
- pyenv: version \`3.3' is not installed (set by PYENV_VERSION environment variable)
- OUT
- }
-
- @test "no executable found" {
- create_executable "2.7" "py.test"
- PYENV_VERSION=2.7 run pyenv-which fab
- assert_failure "pyenv: fab: command not found"
- }
-
- @test "no executable found for system version" {
- PATH="$(path_without "rake")" PYENV_VERSION=system run pyenv-which rake
- assert_failure "pyenv: rake: command not found"
- }
-
- @test "executable found in other versions" {
- create_executable "2.7" "python"
- create_executable "3.3" "py.test"
- create_executable "3.4" "py.test"
-
- PYENV_VERSION=2.7 run pyenv-which py.test
- assert_failure
- assert_output <<OUT
- pyenv: py.test: command not found
-
- The \`py.test' command exists in these Python versions:
- 3.3
- 3.4
-
- Note: See 'pyenv help global' for tips on allowing both
- python2 and python3 to be found.
- OUT
- }
-
- @test "carries original IFS within hooks" {
- create_hook which hello.bash <<SH
- hellos=(\$(printf "hello\\tugly world\\nagain"))
- echo HELLO="\$(printf ":%s" "\${hellos[@]}")"
- exit
- SH
-
- IFS=$' \t\n' PYENV_VERSION=system run pyenv-which anything
- assert_success
- assert_output "HELLO=:hello:ugly:world:again"
- }
-
- @test "discovers version from pyenv-version-name" {
- mkdir -p "$PYENV_ROOT"
- cat > "${PYENV_ROOT}/version" <<<"3.4"
- create_executable "3.4" "python"
-
- mkdir -p "$PYENV_TEST_DIR"
- cd "$PYENV_TEST_DIR"
-
- PYENV_VERSION= run pyenv-which python
- assert_success "${PYENV_ROOT}/versions/3.4/bin/python"
- }
|