include ../Mk/macports.autoconf.mk TESTS?=checksums-1 svn-and-patchsites envvariables site-tags trace universal universal-2 xcodeversion dependencies-c dependencies-d dependencies-e case-insensitive-deactivate variants PWD=$(shell pwd) .PHONY: all clean install test PortIndex all:: /tmp/macports-tests/opt/local/etc/macports/sources.conf: sources.conf @echo setting up test installation rm -rf /tmp/macports-tests/ mkdir -p /tmp/macports-tests/ports mkdir -p /tmp/macports-tests/opt/local/etc/macports/ mkdir -p /tmp/macports-tests/opt/local/share/ mkdir -p /tmp/macports-tests/opt/local/var/macports/receipts/ mkdir -p /tmp/macports-tests/opt/local/var/macports/registry/ mkdir -p /tmp/macports-tests/opt/local/var/macports/build/ ln -s $(datadir)/macports /tmp/macports-tests/opt/local/share/ ln -s $(PWD)/test /tmp/macports-tests/ports/ cp sources.conf /tmp/macports-tests/opt/local/etc/macports/ /tmp/macports-tests/ports/PortIndex: /tmp/macports-tests/opt/local/etc/macports/sources.conf PortIndex cp PortIndex PortIndex.quick /tmp/macports-tests/ports/ PortIndex: $(bindir)/portindex clean:: rm -rf /tmp/macports-tests/ rm -f PortIndex PortIndex.quick for testname in $(TESTS); do \ rm -f test/$$testname/{output,output.sed,difference,work}; \ done $(bindir)/port: @echo "Please install MacPorts before running these tests" @exit 1 # Run all tests # Use TESTS to choose which tests to run # For example: make test TESTS="checkums-1 universal" test:: clean /tmp/macports-tests/ports/PortIndex /tmp/macports-tests/opt/local/etc/macports/sources.conf @num=0; \ success=0; \ for testname in $(TESTS); do\ subdir=test/$$testname; \ echo ===\> test ${DIRPRFX}$$subdir; \ if [ -e $$subdir/Makefile ]; then \ ( cd $$subdir && \ $(MAKE) DIRPRFX=${DIRPRFX}$$subdir/ PORTSRC=$(PWD)/test-macports.conf test) && \ success=$$(( success + 1 )); \ else \ ( cd $$subdir && \ PORTSRC=$(PWD)/test-macports.conf $(bindir)/port clean > /dev/null && \ PORTSRC=$(PWD)/test-macports.conf $(bindir)/port test > output 2>&1 \ || ([ -e error_expected ] || (cat output; exit 1)) && \ sed -e "s|${PWD}|PWD|g" < output > output.sed && \ diff -u master output.sed 2>&1 | tee difference && \ if [ -s difference ]; then \ exit 1; \ else \ rm -f difference output.sed; \ fi) && \ success=$$(( success + 1 )); \ if [ -n "`PORTSRC=$(PWD)/test-macports.conf $(bindir)/port -q echo installed`" ]; then \ PORTSRC=$(PWD)/test-macports.conf $(bindir)/port -f clean --all installed > /dev/null && \ PORTSRC=$(PWD)/test-macports.conf $(bindir)/port -f uninstall installed > /dev/null; \ fi; \ fi; \ num=$$(( num + 1 )); \ done; \ echo ===\> $$success of $$num tests passed. @rm -rf /tmp/macports-tests/ @rm -f PortIndex PortIndex.quick # Run specific test # Prepend the directory name with "test-" and use it as target # For example: make test-checksums-1 test-%: $(MAKE) TESTS="$(@:test-%=%)" test install:: distclean:: clean