summaryrefslogtreecommitdiff
path: root/test/Makefile
blob: 9a61acb5b4198b7eba1a880244ea99deb14feef0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
-include conf.mk

repos	:= repo1 repo2

tmproot := /tmp/apk-test
testroot = $(tmproot)/$(basename $@)

SUDO	:= sudo
APK	:= ../src/apk --keys-dir /etc/apk/keys

SYSREPO ?= http://nl.alpinelinux.org/alpine/edge/main

LD_LIBRARY_PATH = ../src
export LD_LIBRARY_PATH SYSREPO

all: tests

$(repos):
	@echo "Building $@"
	@rm -f repos.out
	@cd $@ &&\
		for i in */APKBUILD; do \
			( cd $${i%/*} && REPODEST="$$PWD/../.." abuild -R ) \
				>> ../repos.out 2>&1 || { cat ../repos.out >&2; exit 1; } \
		done


clean:
	$(SUDO) rm -rf $(addsuffix /*.apk,$(repos)) $(tmproot) *.ok *.out *.stamp


repos: repos.stamp
	
repos.stamp: $(repos)
	@touch $@
	

%.ok: %.sh
	@echo -n "$<"; \
		rm -rf "$(testroot)" ;\
		mkdir -p "$(testroot)"; \
		if ! APK="$(APK)" ROOT="$(testroot)" SYSREPO="$(SYSREPO)" ./$< > $(basename $@).out 2>&1; then\
			echo " FAIL";\
			printf "------------- output -------------\n" >&2;\
			cat $(basename $@).out >&2;\
			printf "----------------------------------\n" >&2;\
			exit 1;\
		fi ;\
		echo " OK" ;\
		$(SUDO) rm -rf $(testroot); \
		touch $@

root-tests: repos.stamp
	@echo "== Testing `$(APK) --version` (tests that require root permission) =="
	@for i in test*.sh; do \
		rm -f $${i%.sh}.ok ;\
		$(SUDO) $(MAKE) --no-print-directory $${i%.sh}.ok SYSREPO=$(SYSREPO); \
	done

tests:
	@echo "== Testing `$(APK) --version` =="
	@for i in $(sort $(filter-out test%.sh,$(wildcard *.sh))); do \
		./$$i || exit 1 ; \
	done

.PHONY:	$(repos) tests