include ../Mk/dports.autoconf.mk

TESTS?=checksums-1 cvs-and-patchsites envvariables site-tags trace xcodeversion

.PHONY: test clean

all:

/tmp/darwinports-tests/opt/local/etc/ports/sources.conf: sources.conf
	@echo setting up test installation
	rm -rf /tmp/darwinports-tests/
	mkdir -p /tmp/darwinports-tests/opt/local/etc/ports/
	mkdir -p /tmp/darwinports-tests/opt/local/share/
	mkdir -p /tmp/darwinports-tests/opt/local/var/db/dports/receipts/
	ln -s $(datadir)/darwinports /tmp/darwinports-tests/opt/local/share/
	cp sources.conf /tmp/darwinports-tests/opt/local/etc/ports/

clean:
	rm -rf /tmp/darwinports-tests/

$(bindir)/port:
	@echo "Please install DarwinPorts before running these tests"
	@exit 1
	
test: clean /tmp/darwinports-tests/opt/local/etc/ports/sources.conf
	@for subdir in $(TESTS); do\
		echo ===\> test ${DIRPRFX}$$subdir; \
		if [ -e ${DIRPRFX}$$subdir/Makefile ]; then \
			( cd $$subdir && \
				$(MAKE) DIRPRFX=${DIRPRFX}$$subdir/ PORTSRC=$(PWD)/test-ports.conf test) || exit 1; \
		else \
			( cd $$subdir && \
				PORTSRC=$(PWD)/test-ports.conf $(bindir)/port clean > /dev/null && \
				PORTSRC=$(PWD)/test-ports.conf $(bindir)/port test > output 2>&1 \
					|| (cat output; exit 1) && \
			sed -e "s|${PWD}|PWD|g" < output > output.sed && \
			diff output.sed master 2>&1 | tee difference && \
			if [ -s difference ]; then \
				exit 1; \
			else \
				rm -f difference output.sed; \
			fi) \
		fi || exit 1; \
	done
	@rm -rf /tmp/darwinports-tests/

install:

distclean: clean
