SHELL=/bin/bash

.PHONY: clean

LOGFILE=test_results.log

all:
	@which bbe &>/dev/null || (echo "You need bbe to run the tests!"; false)
	@which mkfs.vfat &>/dev/null || (echo "You need mkfs.vfat to run the tests!"; false)
	@which fsck.vfat &>/dev/null || (echo "You need fsck.vfat to run the tests!"; false)
	@if [ -f ${LOGFILE} ]; then rm -f ${LOGFILE}; fi
	@failed=0; \
	for i in `ls -d tc_*`; do \
		if [ ! -f $$i/passed ]; then \
			printf "%.70s" "Test case $$i...                                                                 "; \
			printf "[ \e[1;33mWAIT \e[0m]"; \
			echo "=============================================" >> ${LOGFILE}; \
			echo "Test case $$i" >> ${LOGFILE}; \
			echo "=============================================" >> ${LOGFILE}; \
			make -C $$i &>> ${LOGFILE}; \
			ret=$$?; \
			printf "\r%.70s" "Test case $$i...                                                                 "; \
			if [ $$ret -eq 0 ]; then \
				printf "[ \e[1;32mPASS \e[0m]\n"; \
			else \
				printf "[ \e[1;31mFAIL \e[0m]\n"; \
				(( failed+=1 )); \
			fi; \
		fi; \
	done; \
	if [ $$failed -eq 0 ]; then \
		echo "All tests passed."; \
	else \
		echo $$failed "test(s) failed!"; \
	fi

clean:
	rm -f ${LOGFILE}
	for i in `ls -d tc_*`; do $(MAKE) -C $$i clean || [ 1 ]; done
