RPM ?= rpm
MY ?= $(PWD)

all_tests::

.ONESHELL:
ifdef DEBUG
.SILENT:
.SHELLFLAGS := -xec
else
.SHELLFLAGS := -ec
endif

include $(MY)/HELPER

all_tests :=

#include $(MY)/*.mk
# Order matters (because some test targets are not defined if the
# prerequisite package variables are not defined).
include $(MY)/dummy.mk
include $(MY)/virtDummy.mk
include $(MY)/upgradable.mk
include $(MY)/constraints.mk
include $(MY)/prov*.mk

.PHONY: all_tests $(all_tests)

all_tests::
	passed=()
	xfailed=()
	failed=()
	for t in $(or $(TESTS),$(all_tests)); do
	echo "TESTING $$t"
	(
		. /usr/lib/rpm/tmpdir.sh
		rpmdb --dbpath "$$tmpdir" --initdb
		$(MAKE) -f $(MY)/Makefile "$$t" RPM="$(or $(RPM),rpm) --dbpath '$$tmpdir' --justdb"
	) && passed=("$${passed[@]}" "$$t") ||
		{ xfail_reason_t="XFAIL_REASON_$$t"
		  if [ -n "$${!xfail_reason_t}" ]; then
			xfailed=("$${xfailed[@]}" "$$t ($${!xfail_reason_t})")
		  else
			failed=("$${failed[@]}" "$$t")
		  fi
		}
	done
	echo 'Passed tests:'
	(IFS=$$'\n'; echo "$${passed[*]}" )
	echo 'XFailed tests:'
	(IFS=$$'\n'; echo "$${xfailed[*]}" )
	echo 'Failed tests:'
	(IFS=$$'\n'; echo "$${failed[*]}" )
	echo -n 'Passed tests: '
	echo "$${#passed[@]}"
	echo -n 'XFailed tests: '
	echo "$${#xfailed[@]}"
	echo -n 'Failed tests: '
	echo "$${#failed[@]}"
	[ -z "$${failed[*]}" ] # make sure that zero tests failed
