Browse Source

ci: add a CI workflow

Add a new github workflow named CI.

Add a job named compat, checking that and old Zig compiler will not fail
with a compiler error, but instead will print an useful error message.
Manlio Perillo 2 years ago
parent
commit
b59bef29b9
2 changed files with 50 additions and 0 deletions
  1. 25 0
      .github/workflows/ci.yml
  2. 25 0
      ci/compat.sh

+ 25 - 0
.github/workflows/ci.yml

@@ -0,0 +1,25 @@
+name: CI
+on:
+  pull_request:
+    branches: [ main ]
+
+defaults:
+  run:
+    shell: bash
+
+jobs:
+  compat:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        zig: [ 0.6.0, 0.7.0, 0.8.0, 0.9.0, 0.10.0 ]
+    steps:
+    - uses: actions/checkout@v2
+
+    - name: Setup Zig
+      uses: goto-bus-stop/setup-zig@v2
+      with:
+        version: ${{ matrix.zig }}
+
+    - name: Check compatibility with old Zig compilers
+      run: ci/compat.sh

+ 25 - 0
ci/compat.sh

@@ -0,0 +1,25 @@
+#!/bin/bash
+# This script checks that `zig build` will return an useful error message when
+# the Zig compiler is not compatible, instead of failing due to a syntax error.
+#
+# This script should be run on an UNIX system.
+
+zig_version=$(zig version)
+
+zig build -Dn=1 -Dhealed &> /dev/null 2>&1
+zig_ret=$?
+
+if [ "$zig_ret" -eq 0 ]; then
+    printf "zig %s unexpectedly succeeded\n" "$zig_version"
+    exit 1
+fi
+
+zig_error=$(zig build -Dn=1 -Dhealed 2>&1)
+
+echo "$zig_error" | grep -q "it looks like your version of zig is too old"
+zig_ret=$?
+
+if [ "$zig_ret" -ne 0 ]; then
+    printf "zig %s is not compatible\n" "$zig_version"
+    exit 1
+fi