do not leak gotwebd sockets memory at shutdown time
[got-portable.git] / regress / gotwebd / Makefile
blob01c5dadbd5e811af6c1d72f3f022f951561bc669
1 .PATH:${.CURDIR}/../../lib
3 REGRESS_TARGETS=test_gotwebd
5 PROG = gotwebd_test
6 SRCS = gotwebd_test.c error.c hash.c pollfd.c
8 CPPFLAGS = -I${.CURDIR}/../../include -I${.CURDIR}/../../lib
10 NOMAN = yes
12 .PHONY: ensure_root prepare_test_env prepare_test_repo start_gotwebd
14 GOTWEBD_TEST_TMPDIR=/tmp
15 GOTWEBD_TEST_ROOT?!!=mktemp -d "${GOTWEBD_TEST_TMPDIR}/gotwebd-test-XXXXXXXXXX"
16 GOTWEBD_TEST_CHROOT=${GOTWEBD_TEST_ROOT}/var/www
17 GOTWEBD_TEST_CONF=${GOTWEBD_TEST_ROOT}/gotwebd.conf
18 GOTWEBD_TEST_SOCK=${GOTWEBD_TEST_CHROOT}/gotweb.sock
19 GOTWEBD_TEST_FCGI=${.OBJDIR}/${PROG}
21 GOTWEBD_TEST_USER?=${DOAS_USER}
22 .if empty(GOTWEBD_TEST_USER)
23 GOTWEBD_TEST_USER=${SUDO_USER}
24 .endif
25 .if empty(GOTWEBD_TEST_USER)
26 GOTWEBD_TEST_USER=${USER}
27 .endif
29 GOTWEBD_TEST_USER_HOME!=getent passwd ${GOTWEBD_TEST_USER} | cut -d: -f6
31 PREFIX ?= /usr/local
32 BINDIR ?= ${PREFIX}/sbin
34 GOTWEBD_START_CMD?=${BINDIR}/gotwebd -vvf ${GOTWEBD_TEST_CONF}
35 GOTWEBD_STOP_CMD?=pkill -TERM -fx '${GOTWEBD_START_CMD}'
36 GOTWEBD_TRAP=trap "${GOTWEBD_STOP_CMD}" HUP INT QUIT PIPE TERM
38 GOTWEBD_TEST_ENV=GOTWEBD_TEST_SOCK=${GOTWEBD_TEST_SOCK} \
39 GOTWEBD_TEST_CHROOT=${GOTWEBD_TEST_CHROOT} \
40 GOTWEBD_TEST_ROOT=${GOTWEBD_TEST_ROOT} \
41 GOTWEBD_TEST_CONF=${GOTWEBD_TEST_CONF} \
42 GOTWEBD_TEST_USER=${GOTWEBD_TEST_USER} \
43 GOTWEBD_TEST_FCGI=${GOTWEBD_TEST_FCGI} \
44 PATH=$(GOTWEBD_TEST_USER_HOME)/bin:${PATH} \
45 HOME=$(GOTWEBD_TEST_USER_HOME) \
46 GOTWEBD_TEST_DATA_DIR=${.CURDIR}
48 ensure_root:
49 @if [[ `id -u` -ne 0 ]]; then \
50 echo gotwebd test suite must be started by root >&2; \
51 false; \
52 fi ; \
53 if [[ "${GOTWEBD_TEST_USER}" = "root" ]]; then \
54 echo GOTWEBD_TEST_USER must be a non-root user >&2; \
55 false; \
58 gotwebd_libexec:
59 @su -m ${GOTWEBD_TEST_USER} -c \
60 '${MAKE} -C ${.CURDIR}/../../gotwebd/libexec' >/dev/null 2>&1
62 prepare_test_env: ensure_root gotwebd_libexec
63 @mkdir -p "${GOTWEBD_TEST_CHROOT}"
64 @DESTDIR=${GOTWEBD_TEST_ROOT} \
65 ${MAKE} -C ${.CURDIR}/../../gotwebd/libexec install >/dev/null 2>&1
66 @chown ${GOTWEBD_TEST_USER} "${GOTWEBD_TEST_ROOT}" \
67 "${GOTWEBD_TEST_CHROOT}"
69 prepare_test_repo: prepare_test_env
70 @su -m ${GOTWEBD_TEST_USER} -c 'env ${GOTWEBD_TEST_ENV} \
71 sh ${.CURDIR}/prepare_test_repo.sh "${GOTWEBD_TEST_CHROOT}"'
73 start_gotwebd: prepare_test_repo gotwebd_test
74 @echo 'user "${GOTWEBD_TEST_USER}"' > ${GOTWEBD_TEST_CONF}
75 @echo 'chroot "${GOTWEBD_TEST_CHROOT}"' >> ${GOTWEBD_TEST_CONF}
76 @echo 'listen on socket "${GOTWEBD_TEST_SOCK}"' >> ${GOTWEBD_TEST_CONF}
77 @echo 'server "localhost" {' >> ${GOTWEBD_TEST_CONF}
78 @echo ' show_repo_owner off' >> ${GOTWEBD_TEST_CONF}
79 @echo '}' >> ${GOTWEBD_TEST_CONF}
80 @${GOTWEBD_TRAP}; ${GOTWEBD_START_CMD}
81 @${GOTWEBD_TRAP}; sleep .5
83 test_gotwebd: start_gotwebd
84 @-$(GOTWEBD_TRAP); su -m ${GOTWEBD_TEST_USER} -c \
85 'env $(GOTWEBD_TEST_ENV) sh ${.CURDIR}/test_gotwebd.sh'
86 @${GOTWEBD_STOP_CMD} 2>/dev/null
88 .include <bsd.regress.mk>