summaryrefslogtreecommitdiff
path: root/.github/workflows/testsuite.yaml
blob: 440d79985f5442e345cb3954534764eb856e34aa (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
name: Test suite
on:
  pull_request:
  push:
  schedule:
    - cron: '0 16 * * 5'

jobs:
  gcc:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        version: [9, 10, 11, 12, 13, 14]
    steps:
      - name: Checking out the code
        uses: actions/checkout@v3
      - name: Cache musl toolchain
        uses: actions/cache@v3
        id: cache-musl
        with:
          path: x86_64-linux-musl-native
          key: musl
      - name: Downloading musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: wget --quiet https://dustri.org/x86_64-linux-musl-native.tgz
      - name: Extracting musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: tar xzf ./x86_64-linux-musl-native.tgz
      - name: Setting up gcc version
        run: |
          sudo add-apt-repository ppa:ubuntu-toolchain-r/test
          sudo apt update
          sudo apt install -y --no-install-recommends gcc-${{ matrix.version }} g++-${{ matrix.version }}
          sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${{ matrix.version }} 100
          sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.version }} 100
      - name: Build and run the testsuite
        shell: bash
        run : make --silent -C tests clean gcc run | tee ./results.txt
      - name: Check the testsuite's output
        shell: bash
        run: grep -zvq 'FAIL' ./results.txt
      - name: Show logs in case of failure
        if: ${{ failure() }}
        run: cat ./results.txt

  old_gcc:
    runs-on: ubuntu-latest
    container: gcc:${{ matrix.version }}
    strategy:
      matrix:
        version: [4, 5, 6, 7, 8]
    steps:
      - name: Checking out the code
        uses: actions/checkout@v1
      - name: Build and run the testsuite
        shell: bash
        run : make --silent -C tests clean gcc run | tee ./results.txt
      - name: Check the testsuite's output
        shell: bash
        run: grep -zvq 'FAIL' ./results.txt
      - name: Show logs in case of failure
        if: ${{ failure() }}
        run: cat ./results.txt

  clang:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        version: [16, 17, 18]
    steps:
      - name: Checking out the code
        uses: actions/checkout@v3
      - name: Cache musl toolchain
        uses: actions/cache@v3
        id: cache-musl
        with:
          path: x86_64-linux-musl-native
          key: musl
      - name: Downloading musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: wget --quiet https://dustri.org/x86_64-linux-musl-native.tgz
      - name: Extracting musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: tar xzf ./x86_64-linux-musl-native.tgz
      - name: Setting up clang version
        run: |
          sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{ matrix.version }} 100
          sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ matrix.version }} 100
      - name: Build and run the testsuite
        shell: bash
        run : make --silent -C tests clean clang run | tee ./results.txt
      - name: Check the testsuite's output
        shell: bash
        run: grep -zvq 'FAIL' ./results.txt
      - name: Show logs in case of failure
        if: ${{ failure() }}
        run: cat ./results.txt

  c_versions:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        version: ["c89", "c99", "c11", "c17"]
    steps:
      - name: Checking out the code
        uses: actions/checkout@v3
      - name: Cache musl toolchain
        uses: actions/cache@v3
        id: cache-musl
        with:
          path: x86_64-linux-musl-native
          key: musl
      - name: Downloading musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: wget --quiet https://dustri.org/x86_64-linux-musl-native.tgz
      - name: Extracting musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: tar xzf ./x86_64-linux-musl-native.tgz
      - name: Building with clang
        shell: bash
        run: CFLAGS=-std=${{ matrix.version }} make -C tests clean clang run
      - name: Building with gcc
        shell: bash
        run: CFLAGS=-std=${{ matrix.version }} make -C tests clean gcc run

  fortify_level:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        level: [2, 3]
    steps:
      - name: Checking out the code
        uses: actions/checkout@v3
      - name: Cache musl toolchain
        uses: actions/cache@v3
        id: cache-musl
        with:
          path: x86_64-linux-musl-native
          key: musl
      - name: Downloading musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: wget --quiet https://dustri.org/x86_64-linux-musl-native.tgz
      - name: Extracting musl-based toolchain
        if: steps.cache-musl.outputs.cache-hit != 'true'
        run: tar xzf ./x86_64-linux-musl-native.tgz
      - name: Building with clang
        shell: bash
        run: _FORTIFY_SOURCE=${{ matrix.level }} make -C tests clean clang
      - name: Building with gcc
        shell: bash
        run: _FORTIFY_SOURCE=${{ matrix.level }} make -C tests clean gcc