File: tests.yml

package info (click to toggle)
ghc 9.10.3-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 169,076 kB
  • sloc: haskell: 713,554; ansic: 84,184; cpp: 30,255; javascript: 9,003; sh: 7,870; fortran: 3,527; python: 3,228; asm: 2,523; makefile: 2,324; yacc: 1,570; lisp: 532; xml: 196; perl: 111; csh: 2
file content (134 lines) | stat: -rw-r--r-- 4,100 bytes parent folder | download
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
name: Tests

on:
    pull_request:
    push:
      branches:
        - '**'

jobs:
  build:
    name: GHC ${{ matrix.ghc-version }} on ${{ matrix.platform.arch }} ${{ matrix.platform.os }}
    runs-on: ${{ matrix.platform.os }}
    strategy:
      fail-fast: false
      matrix:
        platform:
          - { os: ubuntu-latest, arch: x64 }
          - { os: macos-13, arch: x64 }
          - { os: macos-14, arch: arm }
          - { os: windows-latest, arch: x64 }
        ghc-version:
          - 'latest'
          - '9.10'
          - '9.8'
          - '9.6'
          - '9.4'
          - '9.2'
          - '9.0'
          - '8.10'
          - '8.8'
          - '8.6'

        exclude:
          # Only allow ARM jobs with GHC >= 9.2
          # (It's tedious to not be able to use matrix.ghc-version >= 9.2 as a conditional here.)
          - platform:
              arch: arm
            ghc-version: '9.0'
          - platform:
              arch: arm
            ghc-version: '8.10'
          - platform:
              arch: arm
            ghc-version: '8.8'
          - platform:
              arch: arm
            ghc-version: '8.6'

    steps:
      - uses: actions/checkout@v4

      - name: Set up GHC ${{ matrix.ghc-version }}
        uses: haskell-actions/setup@v2
        id: setup
        with:
          ghc-version: ${{ matrix.ghc-version }}
          # Defaults, added for clarity:
          cabal-version: 'latest'
          cabal-update: true

      - name: Set up autotools (Darwin)
        if: ${{ runner.os == 'macOS' }}
        run: brew install autoconf

      - name: Set up autotools (Windows)
        if: ${{ runner.os == 'Windows' }}
        uses: msys2/setup-msys2@v2
        with:
          update: true
          install: >-
            autotools

      - name: Run autoreconf (Windows)
        if: ${{ runner.os == 'Windows' }}
        run: autoreconf -i
        shell: "msys2 {0}"

      - name: Run autoreconf (Linux & Mac)
        if: ${{ runner.os != 'Windows' }}
        run: autoreconf -i

      - name: Configure the build
        run: |
          cabal configure --enable-tests --enable-benchmarks --disable-documentation
          cabal build all --dry-run
        # The last step generates dist-newstyle/cache/plan.json for the cache key.

      - name: Restore cached dependencies
        uses: actions/cache/restore@v3
        id: cache
        env:
          key: ${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-cabal-${{ steps.setup.outputs.cabal-version }}
        with:
          path: ${{ steps.setup.outputs.cabal-store }}
          key: ${{ env.key }}-plan-${{ hashFiles('**/plan.json') }}
          restore-keys: ${{ env.key }}-

      - name: Install dependencies
        # If we had an exact cache hit, the dependencies will be up to date.
        if: steps.cache.outputs.cache-hit != 'true'
        run: cabal build process --only-dependencies

      # Cache dependencies already here, so that we do not have to rebuild them should the subsequent steps fail.
      - name: Save cached dependencies
        uses: actions/cache/save@v3
        # If we had an exact cache hit, trying to save the cache would error because of key clash.
        if: steps.cache.outputs.cache-hit != 'true'
        with:
          path: ${{ steps.setup.outputs.cabal-store }}
          key: ${{ steps.cache.outputs.cache-primary-key }}

      - name: Build
        run: cabal build process

      - name: Run tests
        run: cabal run process-tests:test

        # On Windows and with GHC >= 9.0, re-run the test-suite using WinIO.
      - name: Re-run tests with WinIO (Windows && GHC >= 9.0)
        if: ${{ runner.os == 'Windows' && matrix.ghc-version >= '9.0' }}
        run: cabal run process-tests:test -- +RTS --io-manager=native -RTS

      - name: Source dist
        run: cabal sdist all --ignore-project

      - name: Build documentation
        run: cabal haddock process

      - name: Check process.cabal
        run: cabal check

      - name: Check process-tests.cabal
        working-directory: ./test
        run: cabal check