name: CI

on: [push, pull_request]

jobs:
  ubuntu-latest-html-tests:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: sudo apt install -y libfltk1.3-dev libssl-dev xvfb x11-apps x11-utils imagemagick

    - name: autogen
      run: ./autogen.sh
    - name: Make install dir
      run: mkdir install build
    - name: configure
      run: cd build && ../configure --prefix=$(readlink -f ../install) --enable-html-tests
    - name: make
      run: cd build && make
    - name: make install
      run: cd build && make install
    - name: Copy config to .dillo
      run: |
        mkdir -p ~/.dillo/
        cp install/etc/dillo/* ~/.dillo/
    - name: make check
      run: |
        export DILLOBIN=$(readlink -f install/bin/dillo)
        cd build && make check || (cat test/html/test-suite.log; false)
        export DILLOBIN=
    - name: Check release fits in a floppy disk of 1.44 MB
      run: |
        cd build
        make dist-gzip
        size=$(stat -c %s dillo-*.tar.gz)
        floppy=$((1474560 - 32*1024)) # Leave room for FAT table
        echo "Floppy occupation: $(($size * 100 / $floppy)) %"
        if [ $size -lt $floppy ]; then
          echo 'OK: Fits in floopy disk'
        else
          echo "FAIL: Release size too big: $size / $floppy"
          exit 1
        fi
    - name: make distcheck (with HTML tests)
      run: |
        export DILLOBIN=
        mkdir build-distcheck install-distcheck
        cd build-distcheck && ../configure --prefix=$(readlink -f ../install-distcheck) --enable-html-tests
        make distcheck DISTCHECK_CONFIGURE_FLAGS=--enable-html-tests
#   - name: Remove pipes
#     run: find test/html -type p -delete || true
#   - name: Archive production artifacts
#     uses: actions/upload-artifact@v3
#     with:
#       name: upload-html-test-results
#       path: |
#         build/test/html
  ubuntu-latest-no-tls:
    needs: ubuntu-latest-html-tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: sudo apt install -y libfltk1.3-dev
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-tls
    - name: make
      run: make
    - name: make check
      run: make check
    - name: make distcheck
      run: make distcheck
  ubuntu-latest-mbedtls2:
    needs: ubuntu-latest-html-tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: sudo apt install -y libfltk1.3-dev libmbedtls-dev
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-openssl
    - name: make
      run: make
    - name: make check
      run: make check
    - name: make distcheck
      run: make distcheck
  ubuntu-latest-openssl-3:
    needs: ubuntu-latest-html-tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: sudo apt install -y libfltk1.3-dev libssl-dev
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-mbedtls
    - name: make
      run: make
    - name: make check
      run: make check
    - name: make distcheck
      run: make distcheck
  ubuntu-latest-with-old-std:
    needs: ubuntu-latest-html-tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: sudo apt install -y libfltk1.3-dev libssl-dev
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-mbedtls CFLAGS="-Werror" CXXFLAGS="-Werror"
    - name: make
      run: make
    - name: make check
      run: make check
  ubuntu-20-04-openssl-1-1:
    needs: ubuntu-latest-html-tests
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: sudo apt install -y libfltk1.3-dev libssl-dev
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-mbedtls
    - name: make
      run: make
    - name: make check
      run: make check
    - name: make distcheck
      run: make distcheck
  alpine-mbedtls-3_6_0:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: jirutka/setup-alpine@v1
      with:
        packages: >
          build-base
          autoconf
          automake
          fltk-dev
          libpng-dev
          libjpeg-turbo-dev
          mbedtls-dev
    - run: |
        ./autogen.sh
        ./configure
        make
        make check
      shell: alpine.sh {0}
  macOS-13-openssl-1-1:
    needs: ubuntu-latest-html-tests
    runs-on: macos-13
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install dependencies
      run: brew install autoconf automake fltk
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-mbedtls
    - name: make
      run: make
    - name: make check
      run: make check
    - name: make distcheck
      run: make distcheck
  macOS-13-openssl-3:
    needs: ubuntu-latest-html-tests
    runs-on: macos-13
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Remove old OpenSSL 1.1
      run: brew uninstall openssl@1.1
    - name: Install dependencies
      run: brew install autoconf automake fltk openssl@3
    - name: autogen
      run: ./autogen.sh
    - name: configure
      run: ./configure --disable-mbedtls
    - name: make
      run: make
    - name: make check
      run: make check
    - name: make distcheck
      run: make distcheck
  freebsd-14-openssl-3:
    needs: ubuntu-latest-html-tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: FreeBSD VM build
      id: test
      uses: vmactions/freebsd-vm@v1
      with:
        release: "14.0"
        usesh: true
        prepare: |
          set -x
          pkg install -y automake fltk
        run: |
          set -x
          pwd
          freebsd-version
          ./autogen.sh
          ./configure CPPFLAGS='-I/usr/local/include' LDFLAGS='-L/usr/local/lib'
          cat config.log
          make
          make check
          ldd src/dillo
  windows-mbedtls:
    needs: ubuntu-latest-html-tests
    runs-on: windows-latest
    steps:
    - run: git config --global core.autocrlf input
    - uses: actions/checkout@v4
      with:
        fetch-depth: 1
    - uses: cygwin/cygwin-install-action@master
      with:
        packages: gcc-core gcc-g++ autoconf automake make zlib-devel mbedtls-devel libfltk-devel libiconv-devel libpng-devel libjpeg-devel libgif-devel
    - shell: C:\cygwin\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'
      run: |
        set -x
        cd ${GITHUB_WORKSPACE}
        pwd
        ls -l
        ./autogen.sh
        ./configure
        make
        make check
        ls -l src/dillo
