aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/main.yml
blob: 2c14c201c799b8bdede5fc1c6873b9f5b6d19e6f (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
on:
  push:
  pull_request:
  schedule:
  - cron: '0 0 * * *' # test daily against git HEAD of dependencies

name: CI
jobs:

  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version:
        - '3.8'
        - '3.9'
        - '3.10'
        - '3.11'
        - 'pypy-3.8'
        - 'pypy-3.9'
        # this version range needs to be synchronized with the one in pyproject.toml
        amaranth-version:
        - '0.3'
        - 'git'
        allow-failure:
        - true
        - false
        exclude: # all of these are inverted (this is unfortunately the best way to do this)
        - amaranth-version: '0.3'
          allow-failure: false
        - amaranth-version: 'git'
          allow-failure: true
    continue-on-error: '${{ matrix.allow-failure }}'
    name: "test (${{ matrix.python-version }}, ${{ matrix.amaranth-version }}${{ matrix.allow-failure == 'false' && ', required' }})"
    steps:
      - name: Check out source code
        uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install Amaranth release
        if: ${{ matrix.amaranth-version != 'git' }}
        run: |
          pip install 'amaranth==${{ matrix.amaranth-version }}'
      - name: Downgrade MarkupSafe
        if: ${{ matrix.amaranth-version == '0.3' }}
        run: |
          pip install 'MarkupSafe==2.0.1'
      - name: Install Amaranth from git
        if: ${{ matrix.amaranth-version == 'git' }}
        run: |
          pip install git+https://github.com/amaranth-lang/amaranth.git
      - name: Test
        run: |
          python -m unittest discover -t . -s amaranth_boards -p '*.py'

  required: # group all required workflows into one for the required status check
    needs:
      - test
    runs-on: ubuntu-latest
    steps:
      - run: |
          true