#!/bin/bash

# Script to run all U-Boot tests that use sandbox.
#  $1: tests to run (empty for all, 'quick' for quick ones only)

# Runs a test and checks the exit code to decide if it passed
#  $1:         Test name
#  $2 onwards: command line to run
run_test() {
	echo -n "$1: "
	shift
	"$@"
	[ $? -ne 0 ] && failures=$((failures+1))
}

# SKip slow tests if requested
[ "$1" == "quick" ] && mark_expr="not slow"
[ "$1" == "quick" ] && skip=--skip-net-tests
[ "$1" == "tools" ] && tools_only=y

failures=0

if [ -z "$tools_only" ]; then
	# Run all tests that the standard sandbox build can support
	run_test "sandbox" ./test/py/test.py --bd sandbox --build \
		-m "${mark_expr}"
fi

# Run tests which require sandbox_spl
run_test "sandbox_spl" ./test/py/test.py --bd sandbox_spl --build \
		-k 'test_ofplatdata or test_handoff'

if [ -z "$tools_only" ]; then
	# Run tests for the flat-device-tree version of sandbox. This is a special
	# build which does not enable CONFIG_OF_LIVE for the live device tree, so we can
	# check that functionality is the same. The standard sandbox build (above) uses
	# CONFIG_OF_LIVE.
	run_test "sandbox_flattree" ./test/py/test.py --bd sandbox_flattree \
		--build -k test_ut
fi

# Set up a path to dtc (device-tree compiler) and libfdt.py, a library it
# provides and which is built by the sandbox_spl config. Also set up the path
# to tools build by the build.
DTC_DIR=build-sandbox_spl/scripts/dtc
export PYTHONPATH=${DTC_DIR}/pylibfdt
export DTC=${DTC_DIR}/dtc
TOOLS_DIR=build-sandbox_spl/tools

run_test "binman" ./tools/binman/binman --toolpath ${TOOLS_DIR} test
run_test "patman" ./tools/patman/patman test

run_test "buildman" ./tools/buildman/buildman -t ${skip}
run_test "fdt" ./tools/dtoc/test_fdt -t
run_test "dtoc" ./tools/dtoc/dtoc -t

# This needs you to set up Python test coverage tools.
# To enable Python test coverage on Debian-type distributions (e.g. Ubuntu):
#   $ sudo apt-get install python-pytest python-coverage
export PATH=$PATH:${TOOLS_DIR}
run_test "binman code coverage" ./tools/binman/binman test -T
run_test "dtoc code coverage" ./tools/dtoc/dtoc -T
run_test "fdt code coverage" ./tools/dtoc/test_fdt -T

if [ $failures == 0 ]; then
	echo "Tests passed!"
else
	echo "Tests FAILED"
	exit 1
fi
