summaryrefslogtreecommitdiff
path: root/.github/workflows/python-tests.yml
blob: 6c3d172ede8c6ce49204ff94740a75b1f1832889 (plain)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: python tests+artifacts+release

on:
  pull_request:
  push:
    branches:
    - master
    tags:
    - "v*"
  release:

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python_version: [ '2.7', '3.5', '3.6', '3.7', '3.8', 'pypy2', 'pypy3' ]
        os: [windows-latest, ubuntu-latest] #, macos-latest]
        exclude:
        - os: windows-latest
          python_version: "pypy2"
        include:
        - os: ubuntu-latest
          python_version: '3.9-dev'
        - os: windows-latest
          python_version: 'msys2'

    name: ${{ matrix.os }} - Python ${{ matrix.python_version }}
    steps:
      - uses: actions/checkout@v1
      - name: Setup python
        uses: actions/setup-python@v2
        if: matrix.python_version != '3.9-dev' && matrix.python_version != 'msys2'
        with:
          python-version: ${{ matrix.python_version }}
          architecture: x64
      - name: Set up Python ${{ matrix.python_version }} (deadsnakes)
        uses: deadsnakes/action@v2.0.1
        if: matrix.python_version == '3.9-dev'
        with:
          python-version: ${{ matrix.python_version }}
          architecture: x64
      - name: Setup MSYS2
        uses: msys2/setup-msys2@v2
        if: matrix.python_version == 'msys2'
        with:
          msystem: MINGW64
          install: git mingw-w64-x86_64-python mingw-w64-x86_64-python-setuptools
          update: true
      - run: pip install -U setuptools
        if: matrix.python_version != 'msys2'
      - run: pip install -e .[toml] pytest
      - run: pytest

  check_selfinstall:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python_version: [ '2.7', '3.5', '3.6', '3.7', '3.8', 'pypy2', 'pypy3' ]
        installer: ["pip install", easy_install]
    name: check self install - Python ${{ matrix.python_version }} via ${{ matrix.installer }}
    steps:
      - uses: actions/checkout@v1
      - name: Setup python
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python_version }}
          architecture: x64
      # self install testing needs some clarity
      # so its being executed without any other tools running
      # setuptools smaller 52 is needed too di easy_install
      - run: pip install -U "setuptools<52"
      - run: python setup.py egg_info
      - run: python setup.py sdist
      - run: ${{ matrix.installer }} dist/*
      - run: python testing/check_self_install.py


  eggs:
    runs-on: ubuntu-latest

    needs: [test]
    name: Python ${{ matrix.python_version }} eggs
    strategy:
      matrix:
        python_version: ['2.7', '3.5', '3.6', '3.7', '3.8', '3.9-dev']
    steps:
    - uses: actions/checkout@v1
    - name: Setup python
      uses: actions/setup-python@v2
      if: matrix.python_version != '3.9-dev'
      with:
        python-version: ${{ matrix.python_version }}
        architecture: x64
    - name: Set up Python ${{ matrix.python_version }} (deadsnakes)
      uses: deadsnakes/action@v2.0.1
      if: matrix.python_version == '3.9-dev'
      with:
        python-version: ${{ matrix.python_version }}
        architecture: x64
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install --upgrade wheel setuptools
    - run: python setup.py egg_info
    - name: Build package
      run: python setup.py bdist_egg
    - uses: actions/upload-artifact@v2
      with:
        name: dist
        path: dist

  dist:
    runs-on: ubuntu-latest

    needs: [test]
    name: Python bdist/wheel
    steps:
    - uses: actions/checkout@v1
    - uses: actions/setup-python@v2
      with:
        python-version: "3.8"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install --upgrade wheel setuptools
    - run: python setup.py egg_info
    - name: Build package
      run: python setup.py bdist_wheel sdist
    - uses: actions/upload-artifact@v2
      with:
        name: dist
        path: dist


  dist_check:
    runs-on: ubuntu-latest
    needs: [eggs, dist]
    steps:
    - uses: actions/setup-python@v2
      with:
        python-version: "3.8"
    - name: Install dependencies
      run: pip install twine
    - uses: actions/download-artifact@v2
      with:
        name: dist
        path: dist
    - run: twine check dist/*

  dist_upload:

    runs-on: ubuntu-latest
    if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
    needs: [dist_check]
    steps:
    - uses: actions/download-artifact@v2
      with:
        name: dist
        path: dist
    - name: Publish package to PyPI
      uses: pypa/gh-action-pypi-publish@master
      with:
        user: __token__
        password: ${{ secrets.pypi_token }}