forked from python/mypy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
119 lines (111 loc) · 3.82 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# in the python/mypy repo, we only CI the master, release branches, tags and PRs
if: tag IS present OR type = pull_request OR ((branch = master OR branch =~ release-*) AND type = push) OR repo != python/mypy
language: python
# cache package wheels (1 cache per python version)
cache: pip
# also cache the directories where we set up our custom pythons in some builds
cache:
directories:
- $HOME/python-debug
# I ran into some issues with this but will investigate again later.
# - $HOME/.pyenv/versions
- $HOME/Library/Caches/pip
# newer python versions are available only on xenial (while some older only on trusty) Ubuntu distribution
dist: xenial
env:
TOXENV=py
EXTRA_ARGS="-n 2"
TEST_MYPYC=0
PYTHON_DEBUG_BUILD=0
jobs:
include:
# Specifically request 3.5.1 because we need to be compatible with that.
- name: "run test suite with python 3.5.1 (compiled with mypyc)"
python: 3.5.1
dist: trusty
env:
- TOXENV=py
- EXTRA_ARGS="-n 2"
- TEST_MYPYC=1
- name: "run test suite with python 3.6"
python: 3.6 # 3.6.3 pip 9.0.1
- name: "run test suite with python 3.7 (compiled with mypyc)"
python: 3.7
env:
- TOXENV=py
- EXTRA_ARGS="-n 2"
- TEST_MYPYC=1
- name: "run test suite with python 3.8"
python: 3.8
- name: "run test suite with python 3.9"
python: 3.9
- name: "run mypyc runtime tests with python 3.6 debug build"
language: generic
env:
- TOXENV=py36
- PYTHONVERSION=3.6.8
- PYTHON_DEBUG_BUILD=1
- EXTRA_ARGS="-n 2 mypyc/test/test_run.py mypyc/test/test_external.py"
- name: "run mypyc runtime tests with python 3.6 on OS X"
os: osx
osx_image: xcode8.3
language: generic
env:
- PYTHONVERSION=3.6.3
- EXTRA_ARGS="-n 2 mypyc/test/test_run.py mypyc/test/test_external.py"
- name: "type check our own code"
python: 3.7
env:
- TOXENV=type
- EXTRA_ARGS=
- name: "check code style with flake8"
python: 3.7
env:
- TOXENV=lint
- EXTRA_ARGS=
- name: "trigger a build of wheels"
python: 3.7
script: if [[ ($TRAVIS_BRANCH = "master" || $TRAVIS_BRANCH =~ release-*) && $TRAVIS_PULL_REQUEST = "false" ]]; then ./misc/trigger_wheel_build.sh; fi
- name: "check documentation build"
python: 3.7
env:
- TOXENV=docs
# Disabled because of some pip bug? See #6716
# - name: "check dev environment builds"
# python: 3.7
# env:
# - TOXENV=dev
# - EXTRA_ARGS=
install:
- pip install -U pip setuptools
- pip install -U 'virtualenv<20'
- pip install -U tox==3.20.1
- python2 -m pip install --user -U typing
- tox --notest
# This is a big hack and only works because the layout of our directories
# means that tox picks up the mypy from the source directories instead of
# the version it installed into a venv. This is also *why* we need to do this,
# since if we arranged for tox to build with mypyc, pytest wouldn't use it.
- if [[ $TEST_MYPYC == 1 ]]; then pip install -r mypy-requirements.txt; CC=clang MYPYC_OPT_LEVEL=0 python3 setup.py --use-mypyc build_ext --inplace; fi
script:
- tox --skip-pkg-install -- $EXTRA_ARGS
# Getting our hands on a debug build or the right OS X build is
# annoying, unfortunately.
before_install: |
set -e
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
if [[ $PYTHON_DEBUG_BUILD == 1 ]]; then
PYTHONDIR=~/python-debug/python-$PYTHONVERSION
VENV=$PYTHONDIR/env
misc/build-debug-python.sh $PYTHONVERSION $PYTHONDIR $VENV
source $VENV/bin/activate
fi
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
# Attempt to install, skipping if version already exists.
pyenv install $PYTHONVERSION -s
# Regenerate shims
pyenv rehash
# Manually set pyenv variables per https://pythonhosted.org/CodeChat/.travis.yml.html
export PYENV_VERSION=$PYTHONVERSION
export PATH="/Users/travis/.pyenv/shims:${PATH}"
fi