#!/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 or test_spl'

# Run the sane tests with sandbox_noinst (i.e. without OF_PLATDATA_INST)
run_test "sandbox_spl" ./test/py/test.py --bd sandbox_noinst --build \
		-k 'test_ofplatdata or test_handoff or test_spl'

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
