diff --git a/.travis.yml b/.travis.yml index a3f9de81..5239b059 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,11 +8,11 @@ python: - 3.6 env: - - JEDI_TEST_ENVIRONMENT=27 - - JEDI_TEST_ENVIRONMENT=33 - - JEDI_TEST_ENVIRONMENT=34 - - JEDI_TEST_ENVIRONMENT=35 - - JEDI_TEST_ENVIRONMENT=36 + - JEDI_TEST_ENVIRONMENT=/opt/python/2.7/bin/python + - JEDI_TEST_ENVIRONMENT=/opt/python/3.3/bin/python + - JEDI_TEST_ENVIRONMENT=/opt/python/3.4/bin/python + - JEDI_TEST_ENVIRONMENT=/opt/python/3.5/bin/python + - JEDI_TEST_ENVIRONMENT=/opt/python/3.6/bin/python matrix: allow_failures: @@ -20,13 +20,13 @@ matrix: - env: TOXENV=sith - env: - TOXENV=cov - - JEDI_TEST_ENVIRONMENT=36 + - JEDI_TEST_ENVIRONMENT=/opt/python/3.6/bin/python - python: 3.7-dev include: - python: 3.6 env: - TOXENV=cov - - JEDI_TEST_ENVIRONMENT=36 + - JEDI_TEST_ENVIRONMENT=/opt/python/3.6/bin/python - python: 3.6 env: TOXENV=sith # For now ignore pypy, there are so many issues that we don't really need @@ -35,13 +35,6 @@ matrix: - python: "3.7-dev" before_install: - ./travis_install.sh - # Need to add the path to the Python versions in the end. This might add - # 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 script: diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..4d0a026e --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,87 @@ +environment: + matrix: + - TOXENV: py27 + PYTHON_PATH: C:\Python27 + JEDI_TEST_ENVIRONMENT: C:\Python27\python.exe + - TOXENV: py27 + PYTHON_PATH: C:\Python27 + JEDI_TEST_ENVIRONMENT: C:\Python33\python.exe + - TOXENV: py27 + PYTHON_PATH: C:\Python27 + JEDI_TEST_ENVIRONMENT: C:\Python34\python.exe + - TOXENV: py27 + PYTHON_PATH: C:\Python27 + JEDI_TEST_ENVIRONMENT: C:\Python35\python.exe + - TOXENV: py27 + PYTHON_PATH: C:\Python27 + JEDI_TEST_ENVIRONMENT: C:\Python36\python.exe + + - TOXENV: py33 + PYTHON_PATH: C:\Python33 + JEDI_TEST_ENVIRONMENT: C:\Python27\python.exe + - TOXENV: py33 + PYTHON_PATH: C:\Python33 + JEDI_TEST_ENVIRONMENT: C:\Python33\python.exe + - TOXENV: py33 + PYTHON_PATH: C:\Python33 + JEDI_TEST_ENVIRONMENT: C:\Python34\python.exe + - TOXENV: py33 + PYTHON_PATH: C:\Python33 + JEDI_TEST_ENVIRONMENT: C:\Python35\python.exe + - TOXENV: py33 + PYTHON_PATH: C:\Python33 + JEDI_TEST_ENVIRONMENT: C:\Python36\python.exe + + - TOXENV: py34 + PYTHON_PATH: C:\Python34 + JEDI_TEST_ENVIRONMENT: C:\Python27\python.exe + - TOXENV: py34 + PYTHON_PATH: C:\Python34 + JEDI_TEST_ENVIRONMENT: C:\Python33\python.exe + - TOXENV: py34 + PYTHON_PATH: C:\Python34 + JEDI_TEST_ENVIRONMENT: C:\Python34\python.exe + - TOXENV: py34 + PYTHON_PATH: C:\Python34 + JEDI_TEST_ENVIRONMENT: C:\Python35\python.exe + - TOXENV: py34 + PYTHON_PATH: C:\Python34 + JEDI_TEST_ENVIRONMENT: C:\Python36\python.exe + + - TOXENV: py35 + PYTHON_PATH: C:\Python35 + JEDI_TEST_ENVIRONMENT: C:\Python27\python.exe + - TOXENV: py35 + PYTHON_PATH: C:\Python35 + JEDI_TEST_ENVIRONMENT: C:\Python33\python.exe + - TOXENV: py35 + PYTHON_PATH: C:\Python35 + JEDI_TEST_ENVIRONMENT: C:\Python34\python.exe + - TOXENV: py35 + PYTHON_PATH: C:\Python35 + JEDI_TEST_ENVIRONMENT: C:\Python35\python.exe + - TOXENV: py35 + PYTHON_PATH: C:\Python35 + JEDI_TEST_ENVIRONMENT: C:\Python36\python.exe + + - TOXENV: py36 + PYTHON_PATH: C:\Python36 + JEDI_TEST_ENVIRONMENT: C:\Python27\python.exe + - TOXENV: py36 + PYTHON_PATH: C:\Python36 + JEDI_TEST_ENVIRONMENT: C:\Python33\python.exe + - TOXENV: py36 + PYTHON_PATH: C:\Python36 + JEDI_TEST_ENVIRONMENT: C:\Python34\python.exe + - TOXENV: py36 + PYTHON_PATH: C:\Python36 + JEDI_TEST_ENVIRONMENT: C:\Python35\python.exe + - TOXENV: py36 + PYTHON_PATH: C:\Python36 + JEDI_TEST_ENVIRONMENT: C:\Python36\python.exe +install: + - set PATH=%PYTHON_PATH%;%PYTHON_PATH%\Scripts;%PATH% + - pip install --disable-pip-version-check --user --upgrade pip + - pip install tox +build_script: + - tox diff --git a/conftest.py b/conftest.py index ae888af1..8652b55d 100644 --- a/conftest.py +++ b/conftest.py @@ -87,14 +87,16 @@ def clean_jedi_cache(request): @pytest.fixture(scope='session') def environment(request): - version = request.config.option.env - if version is None: - version = os.environ.get('JEDI_TEST_ENVIRONMENT', str(py_version)) + python = request.config.option.env + if python is None: + python = os.environ.get('JEDI_TEST_ENVIRONMENT', 'python') - if int(version) == py_version: - return get_default_environment() + environment = get_python_environment(python) + version_info = environment.version_info + if int(str(version_info.major) + str(version_info.minor)) == py_version: + return get_default_environment() - return get_python_environment('python%s.%s' % tuple(version)) + return environment @pytest.fixture(scope='session') diff --git a/test/test_api/test_environment.py b/test/test_api/test_environment.py index 6bc59a4c..da9af13d 100644 --- a/test/test_api/test_environment.py +++ b/test/test_api/test_environment.py @@ -24,22 +24,10 @@ def test_find_python_environments(): assert parser_version[:2] == env.version_info[:2] -@pytest.mark.parametrize( - 'version', - ['2.7', '3.3', '3.4', '3.5', '3.6', '3.7'] -) -def test_versions(version): - executable = 'python' + version - try: - env = Environment('some path', executable) - except InvalidPythonEnvironment: - if int(version.replace('.', '')) == py_version: - # At least the current version has to work - raise - return - +def test_version(): + env = Environment('some path', sys.executable) sys_path = env.get_sys_path() - assert any(executable in p for p in sys_path) + assert any(sys.prefix in p for p in sys_path) def test_load_module(evaluator): diff --git a/tox.ini b/tox.ini index bda6963b..ae69e87b 100644 --- a/tox.ini +++ b/tox.ini @@ -14,14 +14,6 @@ setenv = # https://github.com/tomchristie/django-rest-framework/issues/1957 # tox corrupts __pycache__, solution from here: PYTHONDONTWRITEBYTECODE=1 -# To test Jedi in different versions than the same Python version, set a -# different test environment. - env27: JEDI_TEST_ENVIRONMENT=27 - env33: JEDI_TEST_ENVIRONMENT=33 - env34: JEDI_TEST_ENVIRONMENT=34 - env35: JEDI_TEST_ENVIRONMENT=35 - env36: JEDI_TEST_ENVIRONMENT=36 - env37: JEDI_TEST_ENVIRONMENT=37 commands = py.test {posargs:jedi test} [testenv:py27] diff --git a/travis_install.sh b/travis_install.sh index 4dbdcdf5..46812c0e 100755 --- a/travis_install.sh +++ b/travis_install.sh @@ -1,30 +1,13 @@ #! /usr/bin/env bash set -e -if [[ $JEDI_TEST_ENVIRONMENT == "33" ]]; then - VERSION=3.3 - DOWNLOAD=1 -fi -if [[ $JEDI_TEST_ENVIRONMENT == "35" ]]; then - VERSION=3.5 - DOWNLOAD=1 -fi - -if [[ -z $VERSION ]]; then - echo "Environments should already be installed" - exit 0 -fi - -PYTHON=python-$VERSION - # Check if the desired Python version already exists. -$PYTHON --version && exit 0 || true +$JEDI_TEST_ENVIRONMENT --version && exit 0 || true -if [[ $DOWNLOAD == 1 ]]; then - # Otherwise download and install. - DOWNLOAD_NAME=python-$VERSION - wget https://s3.amazonaws.com/travis-python-archives/binaries/ubuntu/14.04/x86_64/$DOWNLOAD_NAME.tar.bz2 - sudo tar xjf $DOWNLOAD_NAME.tar.bz2 --directory / -fi +# Otherwise download and install. +VERSION=`expr "$JEDI_TEST_ENVIRONMENT" : '.*\([0-9]\.[0-9]\)'` +DOWNLOAD_NAME=python-$VERSION +wget https://s3.amazonaws.com/travis-python-archives/binaries/ubuntu/14.04/x86_64/$DOWNLOAD_NAME.tar.bz2 +sudo tar xjf $DOWNLOAD_NAME.tar.bz2 --directory / echo "Successfully installed environment."