#!/bin/sh
#
# Build and test Git
#

. ${0%/*}/lib.sh

export TEST_CONTRIB_TOO=yes

case "$jobname" in
linux-musl-meson)
	MESONFLAGS="$MESONFLAGS -Drust=disabled"
	export GIT_TEST_USE_SET_E=yes
	;;
almalinux-*|debian-*|fedora-*|linux-*)
	export GIT_TEST_USE_SET_E=yes
	;;
esac

case "$jobname" in
fedora-breaking-changes-musl|linux-breaking-changes)
	export WITH_BREAKING_CHANGES=YesPlease
	MESONFLAGS="$MESONFLAGS -Dbreaking_changes=true"
	;;
linux-TEST-vars)
	export OPENSSL_SHA1_UNSAFE=YesPlease
	export GIT_TEST_SPLIT_INDEX=yes
	export GIT_TEST_FULL_IN_PACK_ARRAY=true
	export GIT_TEST_OE_SIZE=10
	export GIT_TEST_OE_DELTA_SIZE=5
	export GIT_TEST_COMMIT_GRAPH=1
	export GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1
	export GIT_TEST_MULTI_PACK_INDEX=1
	export GIT_TEST_MULTI_PACK_INDEX_WRITE_INCREMENTAL=1
	export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
	export GIT_TEST_NO_WRITE_REV_INDEX=1
	export GIT_TEST_CHECKOUT_WORKERS=2
	export GIT_TEST_PACK_USE_BITMAP_BOUNDARY_TRAVERSAL=1
	;;
linux-clang)
	export NO_RUST=UnfortunatelyYes
	export GIT_TEST_DEFAULT_HASH=sha1
	;;
linux-sha256)
	export GIT_TEST_DEFAULT_HASH=sha256
	;;
linux-reftable|linux-reftable-leaks|osx-reftable)
	export GIT_TEST_DEFAULT_REF_FORMAT=reftable
	;;

esac

case "$jobname" in
*-meson)
	group "Configure" meson setup build . \
		--fatal-meson-warnings \
		--warnlevel 2 --werror \
		--wrap-mode nofallback \
		-Dfuzzers=true \
		-Dtest_output_directory="${TEST_OUTPUT_DIRECTORY:-$(pwd)/t}" \
		$MESONFLAGS
	group "Build" meson compile -C build --
	group "Run tests" meson test -C build --print-errorlogs --test-args="$GIT_TEST_OPTS" || (
		./t/aggregate-results.sh "${TEST_OUTPUT_DIRECTORY:-t}/test-results"
		handle_failed_tests
	)
	;;
*)
	group Build make
	group "Run tests" make test ||
	handle_failed_tests
	;;
esac

check_unignored_build_artifacts
save_good_tree
