mirror of
https://github.com/wolfcw/libfaketime.git
synced 2026-05-17 08:36:28 +03:00
Earlier, this code was conceived of to test a "function" specifically, but some future snippet could test multiple function calls, or a subset of a function call (e.g. snippets/syscall_clock_gettime.c already only tests one particular syscall diversion number). Normalizing on the name "snippet" should make it easier to understand the code going forward.
63 lines
1.5 KiB
Makefile
63 lines
1.5 KiB
Makefile
CC = gcc
|
|
|
|
CFLAGS = -std=gnu99 -Wall -DFAKE_STAT -Werror -Wextra $(FAKETIME_COMPILE_CFLAGS)
|
|
LDFLAGS = -lrt -lpthread
|
|
|
|
SRC = timetest.c
|
|
OBJ = ${SRC:.c=.o}
|
|
|
|
TEST_SNIPPETS = $(notdir $(basename $(wildcard snippets/*.c)))
|
|
EXPECTATIONS= $(notdir $(basename $(wildcard snippets/*.variable)))
|
|
|
|
all: timetest test
|
|
|
|
.c.o:
|
|
${CC} -c ${CFLAGS} $<
|
|
|
|
timetest: ${OBJ}
|
|
${CC} -o $@ ${OBJ} ${LDFLAGS}
|
|
|
|
test: timetest functest
|
|
@echo
|
|
@./test.sh
|
|
|
|
# run functional tests
|
|
functest:
|
|
./testframe.sh functests
|
|
|
|
%_test: %_test.c
|
|
${CC} -o $@ ${CFLAGS} $<
|
|
|
|
randomtest: repeat_random
|
|
./randomtest.sh
|
|
|
|
## test variables
|
|
|
|
test_variable_data: test_variable_data.sh $(foreach f,${EXPECTATIONS},run_${f})
|
|
./test_variable_data.sh ${EXPECTATIONS}
|
|
|
|
run_%: _run_test.c snippets/%.c
|
|
sed s/SNIPPET_NAME/$*/g < _run_test.c | ${CC} -o $@ ${CFLAGS} -x c -
|
|
|
|
## testing when interception points get called in library constructors:
|
|
|
|
test_library_constructors: test_constructors.sh $(foreach f,${TEST_SNIPPETS},use_lib_${f} lib${f}.so)
|
|
true $(foreach f,${TEST_SNIPPETS},&& ./test_constructors.sh ${f})
|
|
|
|
lib%.so: _libtest.c snippets/%.c
|
|
sed s/SNIPPET_NAME/$*/g < _libtest.c | ${CC} -shared -o $@ -fpic ${CFLAGS} -x c -
|
|
|
|
use_lib_%: _use_lib_test.c snippets/%.c lib%.so
|
|
sed s/SNIPPET_NAME/$*/g < _use_lib_test.c | ${CC} -L. -o $@ ${CFLAGS} -x c - -l$*
|
|
|
|
|
|
## cleanup and metainformation
|
|
|
|
clean:
|
|
@rm -f ${OBJ} timetest getrandom_test syscall_test $(foreach f,${TEST_SNIPPETS},use_lib_${f} lib${f}.so run_${f})
|
|
|
|
distclean: clean
|
|
@echo
|
|
|
|
.PHONY: all test clean distclean randomtest
|