CC ?= gcc
CFLAGS ?= -Wall -Wextra -pedantic -std=c11 -O2
CFLAGS += -I../src/libtikker/include -I../src/third_party -Iunit
LDFLAGS := -L../build/lib -ltikker -lsqlite3 -lm
UNIT_TESTS := $(wildcard unit/test_*.c)
UNIT_TARGETS := $(UNIT_TESTS:unit/test_%.c=unit/test_%)
INTEGRATION_TESTS := $(wildcard integration/test_*.c)
INTEGRATION_TARGETS := $(INTEGRATION_TESTS:integration/test_%.c=integration/test_%)
.PHONY: test unit integration clean help
test: unit integration
@echo "✓ All tests completed"
unit: $(UNIT_TARGETS)
@echo "Running unit tests..."
@for test in $(UNIT_TARGETS); do \
if [ -f $$test ]; then \
$$test || exit 1; \
fi; \
done
@echo "✓ Unit tests passed"
integration: $(INTEGRATION_TARGETS)
@echo "Running integration tests..."
@for test in $(INTEGRATION_TARGETS); do \
if [ -f $$test ]; then \
$$test || exit 1; \
fi; \
done
@echo "✓ Integration tests passed"
unit/test_%: unit/test_%.c
@echo "Building test: $@"
@$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
integration/test_%: integration/test_%.c
@echo "Building integration test: $@"
@$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
clean:
@rm -f unit/test_*
@rm -f integration/test_*
@find . -name "*.o" -delete
@echo "✓ Tests cleaned"
help:
@echo "Test suite targets:"
@echo " make test - Run all tests"
@echo " make unit - Run unit tests"
@echo " make integration - Run integration tests"
@echo " make clean - Remove test artifacts"