From 903bdf5fefb6b6d86fe3e40bc2301051e6c458a7 Mon Sep 17 00:00:00 2001 From: micbou Date: Mon, 9 Apr 2018 15:53:16 +0200 Subject: [PATCH] Fix virtual environment tests --- .travis.yml | 8 ++++++-- jedi/api/environment.py | 11 ++++------- travis_install.sh | 8 ++++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index a3f9de81..a6945a94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,12 @@ env: - JEDI_TEST_ENVIRONMENT=35 - JEDI_TEST_ENVIRONMENT=36 +addons: + apt: + packages: + # Required to properly create a virtual environment with system Python 3.4. + - python3.4-venv + matrix: allow_failures: - python: pypy @@ -39,8 +45,6 @@ before_install: # something twice, but it doesn't really matter, because they are appended. - export PATH=$PATH:/opt/python/3.3/bin - export PATH=$PATH:/opt/python/3.5/bin - # 3.6 was not installed manually, but already is on the system. However - # it's not on path (unless 3.6 is selected). - export PATH=$PATH:/opt/python/3.6/bin install: - pip install --quiet tox-travis diff --git a/jedi/api/environment.py b/jedi/api/environment.py index cd12702f..de6fb4c6 100644 --- a/jedi/api/environment.py +++ b/jedi/api/environment.py @@ -239,14 +239,11 @@ def _get_executable_path(path, safe=True): """ if os.name == 'nt': - bin_name = 'Scripts' - extension = '.exe' + activate = os.path.join(path, 'Scripts', 'activate.bat') + python = os.path.join(path, 'Scripts', 'python.exe') else: - bin_name = 'bin' - extension = '' - bin_folder = os.path.join(path, bin_name) - activate = os.path.join(bin_folder, 'activate') - python = os.path.join(bin_folder, 'python' + extension) + activate = os.path.join(path, 'bin', 'activate') + python = os.path.join(path, 'bin', 'python') if not all(os.path.exists(p) for p in (activate, python)): raise InvalidPythonEnvironment("One of bin/activate and bin/python is missing.") diff --git a/travis_install.sh b/travis_install.sh index 4dbdcdf5..8299fd2d 100755 --- a/travis_install.sh +++ b/travis_install.sh @@ -9,6 +9,14 @@ if [[ $JEDI_TEST_ENVIRONMENT == "35" ]]; then VERSION=3.5 DOWNLOAD=1 fi +# 3.6 is already installed on Travis but not as root. This is problematic for +# our virtualenv tests because we require the Python used to create a virtual +# environment to be owned by root (or to be in a safe location which is not the +# case here). +if [[ $JEDI_TEST_ENVIRONMENT == "36" ]]; then + VERSION=3.6 + DOWNLOAD=1 +fi if [[ -z $VERSION ]]; then echo "Environments should already be installed"