mirror of
https://github.com/Mercantec-GHC/h5-projekt-mst.git
synced 2026-08-27 05:37:39 +02:00
add test infrastructure
This commit is contained in:
parent
8e61bedf63
commit
45bb17b3e8
@ -28,41 +28,33 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
NO_MAIN = 0
|
|
||||||
ifeq ($(NO_MAIN),1)
|
|
||||||
CXXFLAGS += -Dmain="not_main"
|
|
||||||
endif
|
|
||||||
|
|
||||||
build_dir = build
|
build_dir = build
|
||||||
obj_dir = $(build_dir)/obj
|
obj_dir = $(build_dir)/obj
|
||||||
|
src_dir = src
|
||||||
|
test_dir = tests
|
||||||
|
|
||||||
sources = \
|
sources = $(shell find $(src_dir) -name '*.cpp' -and -not -name 'main.cpp')
|
||||||
src/main.cpp \
|
sources_with_main=$(sources) src/main.cpp
|
||||||
src/tcp.cpp \
|
|
||||||
src/http.cpp
|
|
||||||
|
|
||||||
tests = \
|
tests = $(shell find $(test_dir) -name '*.cpp')
|
||||||
tests/true.cpp
|
|
||||||
|
|
||||||
target=$(build_dir)/backend
|
target=$(build_dir)/backend
|
||||||
|
|
||||||
all: $(target)
|
all: $(target)
|
||||||
|
|
||||||
$(target): $(sources:%.cpp=$(obj_dir)/%.o)
|
$(target): $(sources_with_main:%.cpp=$(obj_dir)/%.o)
|
||||||
$(LD) -o $@ $(CXXFLAGS) $(LDFLAGS) $^
|
$(LD) -o $@ $(CXXFLAGS) $(LDFLAGS) $^
|
||||||
|
|
||||||
$(obj_dir)/%.o:%.cpp
|
$(obj_dir)/%.o:%.cpp
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CXX) $< -c -o $@ -MMD -MP $(CXXFLAGS)
|
$(CXX) $< -c -o $@ -MMD -MP $(CXXFLAGS)
|
||||||
|
|
||||||
test: $(sources:%.cpp=$(obj_dir)/%.o) run_tests
|
test: $(tests:tests/%.cpp=$(build_dir)/tests/test_%)
|
||||||
|
printf "%s\n" $^ | xargs -I % sh -c 'echo "- %..." && ./% && echo "- %: OK" || (echo "- %: FAILED" && exit 1)'
|
||||||
|
|
||||||
run_tests: $(tests:tests/%.cpp=$(build_dir)/tests/test_%)
|
$(build_dir)/tests/test_%: $(obj_dir)/tests/%.o $(sources:%.cpp=$(obj_dir)/%.o)
|
||||||
printf "%s\n" $2 | xargs -I % sh -c 'echo "- %..." && ./% && echo "- %: OK" || echo "- %: FAILED" && exit 1'
|
|
||||||
|
|
||||||
$(build_dir)/tests/test_%: tests/%.cpp
|
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(CXX) $< -o $@ -MMD -MP $(CXXFLAGS)
|
$(LD) -o $@ $(CXXFLAGS) $(LDFLAGS) $^
|
||||||
|
|
||||||
format:
|
format:
|
||||||
$(CLANG_FORMAT) -style=file -i src/*
|
$(CLANG_FORMAT) -style=file -i src/*
|
||||||
@ -73,5 +65,5 @@ check:
|
|||||||
clean:
|
clean:
|
||||||
rm -rf $(build_dir)
|
rm -rf $(build_dir)
|
||||||
|
|
||||||
-include $(sources:%.cpp=$(obj_dir)/%.d)
|
-include $(sources_with_main:%.cpp=$(obj_dir)/%.d) $(tests:%.cpp=$(obj_dir)/%.d)
|
||||||
|
|
||||||
|
|||||||
18
backend/tests/assertions.h
Normal file
18
backend/tests/assertions.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <format>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#define ASSERT_EQ(EXPR, VALUE) \
|
||||||
|
do { \
|
||||||
|
if ((EXPR) != (VALUE)) { \
|
||||||
|
std::cerr << std::format( \
|
||||||
|
"ASSERTION FAILED: Expected '{}' ({}) to be '{}' ({})\n", \
|
||||||
|
#EXPR, \
|
||||||
|
(EXPR), \
|
||||||
|
#VALUE, \
|
||||||
|
(VALUE)); \
|
||||||
|
std::exit(1); \
|
||||||
|
} \
|
||||||
|
} while (false);
|
||||||
@ -1,6 +1,7 @@
|
|||||||
|
#include "assertions.h"
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
assert(true);
|
ASSERT_EQ(1 + 2, 3);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user