From 4feb64e8d3525bb73079e456f57ffdc81ac2869a Mon Sep 17 00:00:00 2001 From: Yamashita Yuu Date: Thu, 23 Jan 2014 14:51:56 +0900 Subject: [PATCH] Display the version of `pyvenv` if `USE_PYVENV` is set --- README.md | 2 +- bin/pyenv-virtualenv | 38 +++++++++++++++++++++++++------------- test/version.bats | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 test/version.bats diff --git a/README.md b/README.md index 2212a5c..d48c474 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# pyenv-virtualenv (a.k.a. [python-virtualenv](https://github.com/yyuu/python-virtualenv)) +# pyenv-virtualenv [![Build Status](https://travis-ci.org/yyuu/pyenv-virtualenv.png)](https://travis-ci.org/yyuu/pyenv-virtualenv) diff --git a/bin/pyenv-virtualenv b/bin/pyenv-virtualenv index 407d682..5ad0439 100755 --- a/bin/pyenv-virtualenv +++ b/bin/pyenv-virtualenv @@ -103,8 +103,17 @@ http_get_wget() { } version() { - local version="$(venv --version 2>/dev/null || true)" - echo "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (virtualenv ${version:-unknown})" + detect_venv + local version + if [ -n "$USE_PYVENV" ]; then + version="$(pyenv-which pyvenv 2>/dev/null || true)" + version="${version#$(pyenv-root)/versions/}" + version="${version%/bin/pyvenv}" + echo "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (pyvenv ${version:-unknown})" + else + version="$(venv --version 2>/dev/null || true)" + echo "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (virtualenv ${version:-unknown})" + fi } usage() { @@ -114,6 +123,19 @@ usage() { [ -z "$1" ] || exit "$1" } +detect_venv() { + if pyenv-which "virtualenv" 1>/dev/null 2>&1; then + HAS_VIRTUALENV=1 + fi + if pyenv-which "pyvenv" 1>/dev/null 2>&1; then + HAS_PYVENV=1 + fi + # Use pyvenv only if virtualenv is not installed and there is pyvenv + if [ -n "${HAS_PYVENV}" ] && [ -z "${HAS_VIRTUALENV}" ]; then + USE_PYVENV=1 + fi +} + venv() { local args=("$@") if [ -n "${USE_PYVENV}" ]; then @@ -305,17 +327,7 @@ VIRTUALENV_PATH="${PYENV_ROOT}/versions/${VIRTUALENV_NAME}" unset HAS_VIRTUALENV unset HAS_PYVENV unset USE_PYVENV - -if pyenv-which "virtualenv" 1>/dev/null 2>&1; then - HAS_VIRTUALENV=1 -fi -if pyenv-which "pyvenv" 1>/dev/null 2>&1; then - HAS_PYVENV=1 -fi -# Use pyvenv only if virtualenv is not installed and there is pyvenv -if [ -n "${HAS_PYVENV}" ] && [ -z "${HAS_VIRTUALENV}" ]; then - USE_PYVENV=1 -fi +detect_venv if [ -n "${USE_PYVENV}" ]; then # Unset some arguments not supported by pyvenv diff --git a/test/version.bats b/test/version.bats new file mode 100644 index 0000000..b29ac19 --- /dev/null +++ b/test/version.bats @@ -0,0 +1,37 @@ +#!/usr/bin/env bats + +load test_helper + +setup() { + export PYENV_ROOT="${TMP}/pyenv" + export PYENV_VIRTUALENV_VERSION="20140110.1" +} + +@test "display virtualenv version" { + stub pyenv-which "virtualenv : true" + stub pyenv-which "pyvenv : true" + stub pyenv-exec "virtualenv --version : echo \"1.11\"" + + run pyenv-virtualenv --version + + unstub pyenv-which + unstub pyenv-exec + + assert_success + assert_output "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (virtualenv 1.11)" +} + +@test "display pyvenv version" { + stub pyenv-which "virtualenv : false" + stub pyenv-which "pyvenv : echo \"${PYENV_ROOT}/versions/3.3.3/bin/pyvenv\"" + stub pyenv-which "pyvenv : echo \"${PYENV_ROOT}/versions/3.3.3/bin/pyvenv\"" + stub pyenv-root "echo \"${PYENV_ROOT}\"" + + run pyenv-virtualenv --version + + unstub pyenv-which + unstub pyenv-root + + assert_success + assert_output "pyenv-virtualenv ${PYENV_VIRTUALENV_VERSION} (pyvenv 3.3.3)" +}