8
8
9
9
jobs :
10
10
tests :
11
- name : Python ${{ matrix.python-version }}
11
+ name : Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }}, TOXENV ${{ matrix.tox-env }}
12
12
runs-on : ubuntu-20.04
13
13
14
14
strategy :
15
+ fail-fast : false
15
16
matrix :
17
+ django-version :
18
+ - ' 3.1'
19
+ - ' 3.2'
16
20
python-version :
17
21
- ' 3.6'
18
22
- ' 3.7'
19
23
- ' 3.8'
20
24
- ' 3.9'
25
+ # GitHub Actions do not seem to play well with "default" matrix values
26
+ # so use N/A instead.
27
+ tox-env :
28
+ - ' N/A'
29
+
30
+ include :
31
+ # Old Django LTS only on older Pythons
32
+ - django-version : ' 2.2'
33
+ python-version : ' 3.6'
34
+ tox-env : ' N/A'
35
+
36
+ - django-version : ' 2.2'
37
+ python-version : ' 3.7'
38
+ tox-env : ' N/A'
39
+
40
+ # Pre-release Django only on new Pythons
41
+ - django-version : ' main'
42
+ python-version : ' 3.8'
43
+ tox-env : ' N/A'
44
+
45
+ - django-version : ' main'
46
+ python-version : ' 3.9'
47
+ tox-env : ' N/A'
48
+
49
+ # Explicit tox envs
50
+ - django-version : ' N/A'
51
+ python-version : ' 3.9'
52
+ tox-env : ' base'
53
+
54
+ - django-version : ' N/A'
55
+ python-version : ' 3.9'
56
+ tox-env : ' docs'
57
+
58
+ - django-version : ' N/A'
59
+ python-version : ' 3.9'
60
+ tox-env : ' dist'
21
61
22
62
steps :
23
63
- uses : actions/checkout@v2
@@ -33,25 +73,41 @@ jobs:
33
73
restore-keys : |
34
74
${{ runner.os }}-pip-
35
75
36
- - name : Upgrade packaging tools
37
- run : python -m pip install --upgrade pip setuptools virtualenv wheel
38
-
39
76
- name : Install dependencies
40
- run : python -m pip install --upgrade codecov tox
77
+ run : |
78
+ python -m pip install --upgrade pip setuptools virtualenv wheel
79
+ python -m pip install --upgrade codecov tox tox-gh-actions
41
80
42
- - name : Run tox targets for ${{ matrix.python-version }}
81
+ - name : Run tox
82
+ if : ${{ matrix.tox-env == 'N/A' }}
43
83
run : |
44
- ENV_PREFIX=$(tr -C -d "0-9" <<< "${{ matrix.python-version }}")
45
- TOXENV=$(tox --listenvs | grep "^py$ENV_PREFIX" | tr '\n' ',') tox
84
+ tox
85
+ env :
86
+ DJANGO : ${{ matrix.django-version }}
46
87
88
+ # This would not be needed after https://github.com/ymyzk/tox-gh-actions/pull/60
89
+ # but it may need adjustment for --installpkg
47
90
- name : Run extra tox targets
48
- if : ${{ matrix.python-version == '3.9 ' }}
91
+ if : ${{ matrix.tox-env != 'N/A ' }}
49
92
run : |
50
- python setup.py bdist_wheel
51
- rm -r djangorestframework.egg-info # see #6139
52
- tox -e base,dist,docs
53
- tox -e dist --installpkg ./dist/djangorestframework-*.whl
93
+ ARGS=()
94
+ if [[ $TOXENV == 'dist' ]]; then
95
+ # see https://github.com/encode/django-rest-framework/pull/6139
96
+ python setup.py bdist_wheel
97
+ rm -r djangorestframework.egg-info
98
+ ARGS=(--installpkg ./dist/djangorestframework-*.whl)
99
+ fi
100
+
101
+ tox "${ARGS[@]}"
102
+ env :
103
+ TOXENV : ${{ matrix.tox-env }}
54
104
55
105
- name : Upload coverage
56
106
run : |
107
+ # Remove sentinel values
108
+ [[ $TOXENV == 'N/A' ]] && unset TOXENV
109
+ [[ $DJANGO == 'N/A' ]] && unset DJANGO
57
110
codecov -e TOXENV,DJANGO
111
+ env :
112
+ DJANGO : ${{ matrix.django-version }}
113
+ TOXENV : ${{ matrix.tox-env }}
0 commit comments