name: CI

on: [push, pull_request]

jobs:
  test:
    name: Test ${{ matrix.compiler }} on ${{ matrix.os }}
    strategy:
      matrix:
        compiler: [gcc, clang]
        os: [ubuntu-latest, macOS-latest]
    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v4
    - name: Compile and run tests
      run: make && make test
      env:
        CC: ${{ matrix.compiler }}
  test_alpine:
    name: Test on Alpine Linux
    runs-on: ubuntu-latest
    container: docker://alpine
    steps:
    - uses: actions/checkout@v4
    - name: Install build dependencies
      run: apk add build-base
    - name: Compile and run tests
      run: make && make test
  multiarch_test:
    name: Test on ${{ matrix.arch }}
    strategy:
      matrix:
        arch: [armv7, aarch64, s390x, ppc64le]
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: uraimo/run-on-arch-action@v3.0.1
        name: Compile and run tests
        id: test
        with:
          arch: ${{ matrix.arch }}
          distro: ubuntu22.04
          githubToken: ${{ github.token }}
          install: |
            apt-get update -q -y
            apt-get install -y gcc make
            rm -rf /var/lib/apt/lists/*
          run: make && make test
  acceptance_test:
    name: Acceptance Tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: '3.4'
        bundler-cache: true
        working-directory: test/acceptance
    - name: Compile fzy
      run: |
        make
    - name: Run acceptance tests
      run: make acceptance