name: macOS

on: push

jobs:
  build-test:
    name: Build & unit tests & sanity check
    runs-on: macOS-latest
    strategy:
      matrix:
        knot-version: ['3.3']

    steps:
      - name: Checkout resolver code
        uses: actions/checkout@v2
        with:
          submodules: true

      - name: Install dependecies from brew
        run:
          brew install cmocka luajit libuv lmdb meson nghttp2 autoconf automake m4 libtool pkg-config

      - name: Install libknot from sources
        env:
          KNOT_DNS_VERSION: ${{ matrix.knot-version }}
        run: |
          git clone -b ${KNOT_DNS_VERSION} https://gitlab.nic.cz/knot/knot-dns.git
          cd knot-dns
          autoreconf -fi
          ./configure --prefix=${HOME}/.local/usr --disable-static --disable-fastparser --disable-documentation --disable-daemon --disable-utilities --with-lmdb=no
          make -j2 install
          cd ..

      - name: Build resolver
        run: |
          export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${HOME}/.local/usr/lib/pkgconfig"
          meson build_darwin --default-library=static --buildtype=debugoptimized --prefix=${HOME}/.local/usr -Dc_args='-fno-omit-frame-pointer'
          ninja -C build_darwin -v install

      - name: Run unit tests
        env:
          MALLOC_CHECK_: 3
          MALLOC_PERTURB_: 223
        run: meson test -C build_darwin --suite unit

      - name: Run kresd
        env:
          MALLOC_CHECK_: 3
          MALLOC_PERTURB_: 223
        run: |
          export DYLD_FALLBACK_LIBRARY_PATH="${DYLD_FALLBACK_LIBRARY_PATH}:${HOME}/.local/usr/lib/"
          echo "quit()" | ${HOME}/.local/usr/sbin/kresd -a 127.0.0.1@53535 .
