#!/bin/bash

# In case of MPI tests running on a shared file system, we run into race conditions writing files
# so here we generate some unique names for the codecov files.

LOCAL_REPORTS="/codecov-reports"
SHARED_REPORTS="$CI_PROJECT_DIR/codecov-reports"
REPORT_NAME=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`
mkdir -p "$SHARED_REPORTS"

# Create coverage reports for code run
echo "Combining reports"
lcov --exclude "*/ext/*" --exclude "*/test/*" --exclude "*/mechanisms/*" --no-external --capture --base-directory $SOURCE_DIR --directory $BUILD_DIR --output-file "$LOCAL_REPORTS/run.info"
lcov --add-tracefile "$LOCAL_REPORTS/baseline-codecov.info" --add-tracefile "$LOCAL_REPORTS/run.info" --output-file "$LOCAL_REPORTS/combined.info"

# Only keep our own source
lcov --extract "$LOCAL_REPORTS/combined.info" "$SOURCE_DIR/*" --output-file "$LOCAL_REPORTS/combined.info"

cp "$LOCAL_REPORTS/combined.info" "$SHARED_REPORTS/codecov-$REPORT_NAME.info"