name: Spec Compliance

on:
  schedule:
    - cron: "0 0 * * 3"

jobs:
  h2spec:
    name: h2spec
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
        - TARGET: linux-glibc
          CC: gcc
          os: ubuntu-latest
    env:
      H2SPEC_VERSION: '2.6.0'
    steps:
    - uses: actions/checkout@v1
    - name: Install h2spec
      run: |
        curl -fsSL https://github.com/summerwind/h2spec/releases/download/v${H2SPEC_VERSION}/h2spec_linux_amd64.tar.gz -o h2spec.tar.gz
        tar xvf h2spec.tar.gz
        sudo install -m755 h2spec /usr/local/bin/h2spec
    - name: Compile HAProxy with ${{ matrix.CC }}
      run: |
        make -j$(nproc) all \
          ERR=1 \
          TARGET=${{ matrix.TARGET }} \
          CC=${{ matrix.CC }} \
          DEBUG=-DDEBUG_STRICT=1 \
          USE_OPENSSL=1
        sudo make install
    - name: Show HAProxy version
      id: show-version
      run: |
        echo "::group::Show dynamic libraries."
        if command -v ldd > /dev/null; then
          # Linux
          ldd $(which haproxy)
        else
          # macOS
          otool -L $(which haproxy)
        fi
        echo "::endgroup::"
        haproxy -vv
        echo "::set-output name=version::$(haproxy -v |awk 'NR==1{print $3}')"
    - name: Launch HAProxy ${{ steps.show-version.outputs.version }}
      run: haproxy -f .github/h2spec.config -D
    - name: Run h2spec
      run: h2spec -Svtk -h 127.0.0.1 -p 8443