1 .PATH
:${.CURDIR
}/..
/..
/lib
3 REGRESS_TARGETS
=test_gotwebd test_gotwebd_paginate
6 SRCS
= gotwebd_test.c error.c hash.c pollfd.c
8 CPPFLAGS
= -I
${.CURDIR
}/..
/..
/include -I
${.CURDIR
}/..
/..
/lib
12 .PHONY
: ensure_root prepare_test_env prepare_test_repo start_gotwebd \
13 gotwebd_test_conf gotwebd_test_conf_paginate
15 GOTWEBD_TEST_TMPDIR
=/tmp
16 GOTWEBD_TEST_ROOT?
!!=mktemp
-d
"${GOTWEBD_TEST_TMPDIR}/gotwebd-test-XXXXXXXXXX"
17 GOTWEBD_TEST_CHROOT
=${GOTWEBD_TEST_ROOT}/var
/www
18 GOTWEBD_TEST_CONF
=${GOTWEBD_TEST_ROOT}/gotwebd.conf
19 GOTWEBD_TEST_SOCK
=${GOTWEBD_TEST_CHROOT}/gotweb.sock
20 GOTWEBD_TEST_FCGI
=${.OBJDIR
}/${PROG}
21 GOTWEBD_TEST_PAGINATE_NITEMS?
=15 # must be a multiple of 3 (items per page)
22 GOTWEBD_CHECK_MEMLEAK
=export MALLOC_OPTIONS
=1; ktrace
-d
-tu
-i
-f
${GOTWEBD_TEST_ROOT}/ktrace.out
24 GOTWEBD_TEST_USER?
=${DOAS_USER}
25 .if empty
(GOTWEBD_TEST_USER
)
26 GOTWEBD_TEST_USER
=${SUDO_USER}
28 .if empty
(GOTWEBD_TEST_USER
)
29 GOTWEBD_TEST_USER
=${USER}
32 GOTWEBD_TEST_USER_HOME
!=getent passwd
${GOTWEBD_TEST_USER} | cut
-d
: -f6
35 BINDIR ?
= ${PREFIX}/sbin
37 GOTWEBD_START_CMD?
=${BINDIR}/gotwebd
-vvf
${GOTWEBD_TEST_CONF}
38 GOTWEBD_STOP_CMD?
=pkill
-TERM
-fx
'${GOTWEBD_START_CMD}'
39 GOTWEBD_TRAP
=trap
"${GOTWEBD_STOP_CMD}" HUP INT QUIT PIPE TERM
41 GOTWEBD_TEST_ENV
=GOTWEBD_TEST_SOCK
=${GOTWEBD_TEST_SOCK} \
42 GOTWEBD_TEST_CHROOT
=${GOTWEBD_TEST_CHROOT} \
43 GOTWEBD_TEST_ROOT
=${GOTWEBD_TEST_ROOT} \
44 GOTWEBD_TEST_CONF
=${GOTWEBD_TEST_CONF} \
45 GOTWEBD_TEST_USER
=${GOTWEBD_TEST_USER} \
46 GOTWEBD_TEST_FCGI
=${GOTWEBD_TEST_FCGI} \
47 GOTWEBD_TEST_PAGINATE_NITEMS
=${GOTWEBD_TEST_PAGINATE_NITEMS} \
48 PATH
=$(GOTWEBD_TEST_USER_HOME
)/bin
:${PATH} \
49 HOME
=$(GOTWEBD_TEST_USER_HOME
) \
50 GOTWEBD_TEST_DATA_DIR
=${.CURDIR
}
53 @if
[[ `id -u` -ne
0 ]]; then \
54 echo gotwebd
test suite must be started by root
>&2; \
57 if
[[ "${GOTWEBD_TEST_USER}" = "root" ]]; then \
58 echo GOTWEBD_TEST_USER must be a non-root user
>&2; \
63 @su
-m
${GOTWEBD_TEST_USER} -c \
64 '${MAKE} -C ${.CURDIR}/../../gotwebd/libexec' >/dev
/null
2>&1
66 prepare_test_env
: ensure_root gotwebd_libexec
67 @mkdir
-p
"${GOTWEBD_TEST_CHROOT}"
68 @DESTDIR
=${GOTWEBD_TEST_ROOT} \
69 ${MAKE} -C
${.CURDIR
}/..
/..
/gotwebd
/libexec
install >/dev
/null
2>&1
70 @chown
${GOTWEBD_TEST_USER} "${GOTWEBD_TEST_ROOT}" \
71 "${GOTWEBD_TEST_CHROOT}"
73 prepare_test_repo
: prepare_test_env
74 @su
-m
${GOTWEBD_TEST_USER} -c
'env ${GOTWEBD_TEST_ENV} \
75 sh ${.CURDIR}/prepare_test_repo.sh "${GOTWEBD_TEST_CHROOT}"'
78 @echo
'user "${GOTWEBD_TEST_USER}"' > ${GOTWEBD_TEST_CONF}
79 @echo
'chroot "${GOTWEBD_TEST_CHROOT}"' >> ${GOTWEBD_TEST_CONF}
80 @echo
'listen on socket "${GOTWEBD_TEST_SOCK}"' >> ${GOTWEBD_TEST_CONF}
81 @echo
'server "localhost" {' >> ${GOTWEBD_TEST_CONF}
82 @echo
' show_repo_owner off' >> ${GOTWEBD_TEST_CONF}
83 @echo
'}' >> ${GOTWEBD_TEST_CONF}
85 gotwebd_test_conf_paginate
: gotwebd_test_conf
86 @printf
'5i\n max_commits_display 3\n.\nwq\n' | \
87 ed
-s
${GOTWEBD_TEST_CONF}
89 start_gotwebd
: prepare_test_repo gotwebd_test
90 @
${GOTWEBD_TRAP}; ${GOTWEBD_CHECK_MEMLEAK} ${GOTWEBD_START_CMD}
91 @
${GOTWEBD_TRAP}; sleep
.5
93 test_gotwebd
: gotwebd_test_conf start_gotwebd
94 @
-$(GOTWEBD_TRAP
); su
-m
${GOTWEBD_TEST_USER} -c \
95 'env $(GOTWEBD_TEST_ENV) sh ${.CURDIR}/test_gotwebd.sh'
96 @
${GOTWEBD_STOP_CMD} 2>/dev
/null
97 @kdump
-u malloc
-f
${GOTWEBD_TEST_ROOT}/ktrace.out \
98 > ${GOTWEBD_TEST_ROOT}/leak-report
&& \
99 if grep
-q
"/gotwebd 0x" ${GOTWEBD_TEST_ROOT}/leak-report
; then \
100 cat
${GOTWEBD_TEST_ROOT}/leak-report
; \
104 test_gotwebd_paginate
: gotwebd_test_conf_paginate start_gotwebd
105 @
-${GOTWEBD_TRAP}; su
-m
${GOTWEBD_TEST_USER} -c \
106 'env ${GOTWEBD_TEST_ENV} sh ${.CURDIR}/test_gotwebd_paginate.sh'
107 @
${GOTWEBD_STOP_CMD} 2>/dev
/null
108 @kdump
-u malloc
-f
${GOTWEBD_TEST_ROOT}/ktrace.out \
109 > ${GOTWEBD_TEST_ROOT}/leak-report
&& \
110 if grep
-q
"/gotwebd 0x" ${GOTWEBD_TEST_ROOT}/leak-report
; then \
111 cat
${GOTWEBD_TEST_ROOT}/leak-report
; \
115 .
include <bsd.regress.mk
>