diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ebeda5b --- /dev/null +++ b/.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 diff --git a/ci/compat.sh b/ci/compat.sh new file mode 100755 index 0000000..f5895fd --- /dev/null +++ b/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