Ver código fonte

Merge branch 'slashes'

pull/123/head
Yamashita, Yuu 8 anos atrás
pai
commit
5fd9cf826d
2 arquivos alterados com 49 adições e 9 exclusões
  1. +18
    -9
      bin/pyenv-virtualenv
  2. +31
    -0
      test/virtualenv.bats

+ 18
- 9
bin/pyenv-virtualenv Ver arquivo

@ -261,12 +261,16 @@ if [[ "${#ARGUMENTS[@]}" == 0 ]]; then
exit 1
elif [[ "${#ARGUMENTS[@]}" == 1 ]]; then
# If only one argument given, use current version as source version
VERSION_NAME="$(pyenv-version-name)"
OLDIFS="${IFS}"
IFS=:
VERSION_NAMES=($(pyenv-version-name))
IFS="${OLDIFS}"
VERSION_NAME="${VERSION_NAMES}"
VIRTUALENV_NAME="${ARGUMENTS[0]}"
else
# Otherwise, use former as source version, and latter as virtualenv version
VERSION_NAME="${ARGUMENTS[0]}"
VIRTUALENV_NAME="${ARGUMENTS[1]##*/}"
VIRTUALENV_NAME="${ARGUMENTS[1]}"
fi
if [ -z "${VERSION_NAME}" ] || [ -z "${VIRTUALENV_NAME}" ]; then
@ -283,6 +287,11 @@ if [ "$VIRTUALENV_NAME" != "${VIRTUALENV_NAME%[[:space:]]*}" ]; then
exit 1
fi
if [ "${VIRTUALENV_NAME}" != "${VIRTUALENV_NAME%/*}" ] && [[ "${VIRTUALENV_NAME}" != "${VERSION_NAME%%/*}/envs/${VIRTUALENV_NAME##*/}" ]] ; then
echo "pyenv-virtualenv: no slash allowed in virtualenv name." 1>&2
exit 1
fi
# Set VERSION_NAME as default version in this script
export PYENV_VERSION="${VERSION_NAME}"
@ -305,14 +314,14 @@ fi
# Not create `system/envs` directory even if source version is `system`
if [[ "${VERSION_NAME%/envs/*}" == "system" ]]; then
VERSION_NAME="${VIRTUALENV_NAME}"
VIRTUALENV_NAME="${VIRTUALENV_NAME##*/}"
else
VERSION_NAME="${VERSION_NAME}/envs/${VIRTUALENV_NAME}"
VIRTUALENV_NAME="${VERSION_NAME}/envs/${VIRTUALENV_NAME##*/}"
fi
VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VERSION_NAME}"
VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME}"
if [[ "${VIRTUALENV_PATH}" != "${VIRTUALENV_PATH%/envs/*}" ]]; then
COMPAT_VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME}"
COMPAT_VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME##*/}"
fi
if [ -n "${COMPAT_VIRTUALENV_PATH}" ]; then
@ -427,7 +436,7 @@ if [ -d "${VIRTUALENV_PATH}/bin" ]; then
fi
if [ -n "$UPGRADE" ]; then
PYENV_VERSION="${VERSION_NAME}" prepare_requirements
PYENV_VERSION="${VIRTUALENV_NAME}" prepare_requirements
fi
fi
@ -455,10 +464,10 @@ if [ -d "${VIRTUALENV_PATH}" ] && [ -n "${COMPAT_VIRTUALENV_PATH}" ]; then
fi
## Install setuptools and pip.
PYENV_VERSION="${VERSION_NAME}" build_package_ensurepip
PYENV_VERSION="${VIRTUALENV_NAME}" build_package_ensurepip
## Migrate previously installed packages from requirements.txt.
PYENV_VERSION="${VERSION_NAME}" install_requirements || true
PYENV_VERSION="${VIRTUALENV_NAME}" install_requirements || true
# Execute `after_virtualenv` hooks.
for hook in "${after_hooks[@]}"; do eval "$hook"; done

+ 31
- 0
test/virtualenv.bats Ver arquivo

@ -144,3 +144,34 @@ OUT
pyenv-virtualenv: \`system' is not allowed as virtualenv name.
OUT
}
@test "no slash allowed in virtualenv name" {
run pyenv-virtualenv "3.2.1" "foo/bar"
assert_failure
assert_output <<OUT
pyenv-virtualenv: no slash allowed in virtualenv name.
OUT
}
@test "slash allowed if it is the long name of the virtualenv" {
export PYENV_VERSION="3.2.1"
stub_pyenv "${PYENV_VERSION}"
stub pyenv-exec "virtualenv * : echo PYENV_VERSION=\${PYENV_VERSION} \"\$@\""
stub pyenv-exec "python -s -m ensurepip : false"
stub pyenv-exec "python -s */get-pip.py : true"
stub curl true
run pyenv-virtualenv "3.2.1" "3.2.1/envs/foo"
assert_success
assert_output <<OUT
PYENV_VERSION=3.2.1 virtualenv ${PYENV_ROOT}/versions/3.2.1/envs/foo
Installing pip from https://bootstrap.pypa.io/get-pip.py...
rehashed
OUT
unstub_pyenv
unstub pyenv-exec
unstub curl
}

Carregando…
Cancelar
Salvar