# Cirrus CI configuration
# https://cirrus-ci.com/github/curl/curl

task:
  name: FreeBSD
  freebsd_instance:
    matrix:
      # A stable 13.0 image likely won't be available before early 2021
      # image_family: freebsd-13-0-snap
      image_family: freebsd-12-1
      # The stable 11.3 image causes "Agent is not responding" so use a snapshot
      image_family: freebsd-11-3-snap

  env:
    CIRRUS_CLONE_DEPTH: 10
    MAKE_FLAGS: -j 2

  pkginstall_script:
    - pkg install -y autoconf automake libtool pkgconf brotli openldap-client heimdal libpsl libmetalink libssh2 openssh-portable libidn2 librtmp libnghttp2 nghttp2 stunnel
    - pkg delete -y curl
  configure_script:
    - ./buildconf
    - case `uname -r` in
        13.0*)
        export CC=clang;
        export CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
        export CXXFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g";
        export LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" ;;
      esac
    - ./configure --prefix="${HOME}"/install --enable-debug --with-libssh2 --with-brotli --with-gssapi --with-libidn2 --enable-manual --enable-ldap --enable-ldaps --with-librtmp --with-libmetalink --with-libpsl --with-nghttp2 || { tail -300 config.log; false; }
  compile_script:
    - make V=1
  test_script:
    # blackhole?
    - sysctl net.inet.tcp.blackhole
    # make sure we don't run blackhole != 0
    - sudo sysctl net.inet.tcp.blackhole=0
    # Some tests won't run if run as root so run them as another user.
    # Make directories world writable so the test step can write wherever it needs.
    - find . -type d -exec chmod 777 {} \;
    # TODO: A number of tests are failing on different FreeBSD versions and so
    # are disabled.  This should be investigated.
    - SKIP_TESTS=''
    - uname -r
    - case `uname -r` in
        13.0*) SKIP_TESTS='!323 !1242 !1243 !2002 !2003';;
        12.1*) SKIP_TESTS='!323 !1242 !1243 !2002 !2003';;
        11.3*) SKIP_TESTS='!504 !1242 !1243 !2002 !2003';;
        10.4*) SKIP_TESTS='!310 !311 !312 !313 !1082 !1242 !1243 !2002 !2003 !2034 !2035 !2037 !2038 !2041 !2042 !2048 !3000 !3001';;
      esac
    - sudo -u nobody make V=1 TFLAGS="-n -a -p !flaky ${SKIP_TESTS}" test-nonflaky
  install_script:
    - make V=1 install
