only_if: $CIRRUS_TAG == '' && ($CIRRUS_PR != '' || $CIRRUS_BRANCH == 'master' || $CIRRUS_BRANCH =~ 'tokio-.*')
auto_cancellation: $CIRRUS_BRANCH != 'master' && $CIRRUS_BRANCH !=~ 'tokio-.*'
freebsd_instance:
  image_family: freebsd-14-1
env:
  RUST_STABLE: stable
  RUST_NIGHTLY: nightly-2024-05-05
  RUSTFLAGS: -D warnings

# Test FreeBSD in a full VM on cirrus-ci.com.  Test the i686 target too, in the
# same VM.  The binary will be built in 32-bit mode, but will execute on a
# 64-bit kernel and in a 64-bit environment.  Our tests don't execute any of
# the system's binaries, so the environment shouldn't matter.
task:
  name: FreeBSD 64-bit
  setup_script:
    - pkg install -y bash
    - curl https://sh.rustup.rs -sSf --output rustup.sh
    - sh rustup.sh -y --profile minimal --default-toolchain $RUST_STABLE
    - . $HOME/.cargo/env
    - |
      echo "~~~~ rustc --version ~~~~"
      rustc --version
  test_script:
    - . $HOME/.cargo/env
    - cargo test --all --all-features

task:
  name: FreeBSD docs
  env:
    RUSTFLAGS: --cfg docsrs --cfg tokio_unstable
    RUSTDOCFLAGS: --cfg docsrs --cfg tokio_unstable -Dwarnings
  setup_script:
    - pkg install -y bash
    - curl https://sh.rustup.rs -sSf --output rustup.sh
    - sh rustup.sh -y --profile minimal --default-toolchain $RUST_NIGHTLY
    - . $HOME/.cargo/env
    - |
      echo "~~~~ rustc --version ~~~~"
      rustc --version
  test_script:
    - . $HOME/.cargo/env
    - cargo doc --lib --no-deps --all-features --document-private-items

task:
  name: FreeBSD 32-bit
  setup_script:
    - pkg install -y bash
    - curl https://sh.rustup.rs -sSf --output rustup.sh
    - sh rustup.sh -y --profile minimal --default-toolchain $RUST_STABLE
    - . $HOME/.cargo/env
    - rustup target add i686-unknown-freebsd
    - |
      echo "~~~~ rustc --version ~~~~"
      rustc --version
  test_script:
    - . $HOME/.cargo/env
    - cargo test --all --all-features --target i686-unknown-freebsd
