#!/bin/bash

set -eu

NPROC=$(nproc)

sudo apt-get install -y --no-install-recommends \
  libgtest-dev \
  libopus-dev \
  libsodium-dev \
  libvpx-dev \
  llvm-11 \
  ninja-build
git clone --depth=1 https://github.com/ralight/mallocfail /tmp/mallocfail
cd /tmp/mallocfail # pushd
make
sudo make install
cd - # popd

export CC=clang
export CXX=clang++

sudo install other/docker/coverage/run_mallocfail /usr/local/bin/run_mallocfail
(cd other/proxy && go build)
other/proxy/proxy &

. ".github/scripts/flags-coverage.sh"

cmake -B_build -H. -GNinja \
  -DCMAKE_C_FLAGS="$C_FLAGS" \
  -DCMAKE_CXX_FLAGS="$CXX_FLAGS" \
  -DCMAKE_EXE_LINKER_FLAGS="$LD_FLAGS" \
  -DCMAKE_SHARED_LINKER_FLAGS="$LD_FLAGS" \
  -DCMAKE_INSTALL_PREFIX:PATH="$PWD/_install" \
  -DENABLE_SHARED=OFF \
  -DMIN_LOGGER_LEVEL=TRACE \
  -DMUST_BUILD_TOXAV=ON \
  -DNON_HERMETIC_TESTS=OFF \
  -DSTRICT_ABI=ON \
  -DTEST_TIMEOUT_SECONDS=120 \
  -DUSE_IPV6=OFF \
  -DAUTOTEST=ON \
  -DPROXY_TEST=ON

cmake --build _build --parallel "$NPROC" --target install -- -k 0

cd _build # pushd
ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:6 ||
  ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:6

export PYTHONUNBUFFERED=1
run_mallocfail --ctest=2 --jobs=8
cd - # popd

#coveralls \
#  --exclude auto_tests \
#  --exclude other \
#  --exclude testing \
#  --gcov-options '\-lp'

bash <(curl -s https://codecov.io/bash) -x "llvm-cov-11 gcov"
