From 903bdf5fefb6b6d86fe3e40bc2301051e6c458a7 Mon Sep 17 00:00:00 2001 From: micbou Date: Mon, 9 Apr 2018 15:53:16 +0200 Subject: [PATCH 1/2] 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" From 286dd92e35ddc67fcd4a2744111ec037f046e9ba Mon Sep 17 00:00:00 2001 From: micbou Date: Mon, 9 Apr 2018 22:52:18 +0200 Subject: [PATCH 2/2] Fix permissions of Python 3.6 on Travis --- .travis.yml | 2 ++ travis_install.sh | 15 +++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index a6945a94..b6605385 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,6 +45,8 @@ 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/travis_install.sh b/travis_install.sh index 8299fd2d..1142ac3a 100755 --- a/travis_install.sh +++ b/travis_install.sh @@ -1,6 +1,13 @@ #! /usr/bin/env bash set -e +# 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). +sudo chown root: /opt/python/3.6/bin/python +sudo chown root: /opt/python/3.6.3/bin/python + if [[ $JEDI_TEST_ENVIRONMENT == "33" ]]; then VERSION=3.3 DOWNLOAD=1 @@ -9,14 +16,6 @@ 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"