From 45a28ac09447566d4b1e15fe5cc0cabfa7b8a51f Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Wed, 3 Apr 2024 18:21:35 +0300 Subject: [PATCH 1/2] bump stub and stub fns to Pyenv version --- test/stubs/stub | 27 +++++++++++++++++++-------- test/test_helper.bash | 1 + 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/test/stubs/stub b/test/stubs/stub index bd5c5d68..a3b0f33e 100755 --- a/test/stubs/stub +++ b/test/stubs/stub @@ -11,11 +11,10 @@ _STUB_RUN="${PROGRAM}_STUB_RUN" _STUB_INDEX="${PROGRAM}_STUB_INDEX" _STUB_RESULT="${PROGRAM}_STUB_RESULT" _STUB_END="${PROGRAM}_STUB_END" -_STUB_DEBUG="${PROGRAM}_STUB_DEBUG" +_STUB_LOG="${PROGRAM}_STUB_LOG" -if [ -n "${!_STUB_DEBUG}" ]; then - echo "$program" "$@" >&${!_STUB_DEBUG} -fi +[ -n "${!_STUB_LOG}" ] || eval "${_STUB_LOG}"="${TMPDIR}/${program}-stub-log" +if test -z "${!_STUB_END}"; then echo "$program" "$@" >>"${!_STUB_LOG}"; fi [ -e "${!_STUB_PLAN}" ] || exit 1 [ -n "${!_STUB_RUN}" ] || eval "${_STUB_RUN}"="${TMPDIR}/${program}-stub-run" @@ -24,7 +23,7 @@ fi # Initialize or load the stub run information. eval "${_STUB_INDEX}"=1 eval "${_STUB_RESULT}"=0 -[ ! -e "${!_STUB_RUN}" ] || source "${!_STUB_RUN}" +if test -e "${!_STUB_RUN}"; then source "${!_STUB_RUN}"; fi # Loop over each line in the plan. @@ -80,14 +79,26 @@ done < "${!_STUB_PLAN}" if [ -n "${!_STUB_END}" ]; then - # Clean up the run file. - rm -f "${!_STUB_RUN}" - # If the number of lines in the plan is larger than # the requested index, we failed. if [ $index -ge "${!_STUB_INDEX}" ]; then eval "${_STUB_RESULT}"=1 fi + if [ "${!_STUB_RESULT}" -ne 0 ]; then + { + echo "index: $index; stub index: ${!_STUB_INDEX}" + echo "plan:" + cat "${!_STUB_PLAN}" || true + echo "run:" + cat "${!_STUB_RUN}" || true + echo "log:" + cat "${!_STUB_LOG}" || true + } >&2 + fi + + # Clean up the run file. + rm -f "${!_STUB_RUN}" + rm -f "${!_STUB_LOG}" # Return the result. exit "${!_STUB_RESULT}" diff --git a/test/test_helper.bash b/test/test_helper.bash index 08bcb795..d63b8746 100644 --- a/test/test_helper.bash +++ b/test/test_helper.bash @@ -16,6 +16,7 @@ stub() { export "${prefix}_STUB_PLAN"="${TMP}/${program}-stub-plan" export "${prefix}_STUB_RUN"="${TMP}/${program}-stub-run" + export "${prefix}_STUB_LOG"="${TMP}/${program}-stub-log" export "${prefix}_STUB_END"= mkdir -p "${TMP}/bin" From ac28398fc009d049c1f528cf75ca1fc28e150dfb Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Wed, 3 Apr 2024 18:28:41 +0300 Subject: [PATCH 2/2] Don't activate if a 3rd-party virtualenv is active over ours --- bin/pyenv-sh-activate | 4 ++-- test/activate.bats | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/bin/pyenv-sh-activate b/bin/pyenv-sh-activate index d6b0d35a..38091ee0 100755 --- a/bin/pyenv-sh-activate +++ b/bin/pyenv-sh-activate @@ -96,8 +96,8 @@ fi venv="${versions}" if [ -n "${VIRTUAL_ENV}" ]; then - # exit as success if some virtualenv is already activated outside from pyenv-virtualenv - if [ -z "${PYENV_VIRTUAL_ENV}" ]; then + # exit as success if a non-pyenv virtualenv is active + if [[ -z $PYENV_VIRTUAL_ENV || $PYENV_VIRTUAL_ENV != "$VIRTUAL_ENV" ]]; then if [ -z "${FORCE}" ]; then if [ -z "${QUIET}" ]; then echo "pyenv-virtualenv: virtualenv \`${VIRTUAL_ENV}' is already activated" 1>&2 diff --git a/test/activate.bats b/test/activate.bats index 9c1fc675..8c1760a8 100644 --- a/test/activate.bats +++ b/test/activate.bats @@ -439,6 +439,34 @@ EOS unstub pyenv-prefix } +@test "do nothing if a 3rd-party virtualenv is active" { + export PYENV_VIRTUALENV_INIT=1 + export VIRTUAL_ENV="${TMP}/venv-3rd-party" + unset PYENV_VIRTUAL_ENV + + PYENV_SHELL="bash" run pyenv-sh-activate "venv" + + assert_success + assert_output <