Merge branch 'ps/clar-build-improvement'
Fix for clar unit tests to support CMake build. * ps/clar-build-improvement: Makefile: let clar header targets depend on their scripts cmake: use verbatim arguments when invoking clar commands cmake: use SH_EXE to execute clar scripts t/unit-tests: convert "clar-generate.awk" into a shell script
This commit is contained in:
6
Makefile
6
Makefile
@ -3904,10 +3904,10 @@ GIT-TEST-SUITES: FORCE
|
|||||||
echo "$$FLAGS" >GIT-TEST-SUITES; \
|
echo "$$FLAGS" >GIT-TEST-SUITES; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$(UNIT_TEST_DIR)/clar-decls.h: $(patsubst %,$(UNIT_TEST_DIR)/%.c,$(CLAR_TEST_SUITES)) GIT-TEST-SUITES
|
$(UNIT_TEST_DIR)/clar-decls.h: $(patsubst %,$(UNIT_TEST_DIR)/%.c,$(CLAR_TEST_SUITES)) $(UNIT_TEST_DIR)/generate-clar-decls.sh GIT-TEST-SUITES
|
||||||
$(QUIET_GEN)$(SHELL_PATH) $(UNIT_TEST_DIR)/generate-clar-decls.sh "$@" $(filter %.c,$^)
|
$(QUIET_GEN)$(SHELL_PATH) $(UNIT_TEST_DIR)/generate-clar-decls.sh "$@" $(filter %.c,$^)
|
||||||
$(UNIT_TEST_DIR)/clar.suite: $(UNIT_TEST_DIR)/clar-decls.h
|
$(UNIT_TEST_DIR)/clar.suite: $(UNIT_TEST_DIR)/clar-decls.h $(UNIT_TEST_DIR)/generate-clar-suites.sh
|
||||||
$(QUIET_GEN)awk -f $(UNIT_TEST_DIR)/clar-generate.awk $< >$(UNIT_TEST_DIR)/clar.suite
|
$(QUIET_GEN)$(SHELL_PATH) $(UNIT_TEST_DIR)/generate-clar-suites.sh $< $(UNIT_TEST_DIR)/clar.suite
|
||||||
$(UNIT_TEST_DIR)/clar/clar.o: $(UNIT_TEST_DIR)/clar.suite
|
$(UNIT_TEST_DIR)/clar/clar.o: $(UNIT_TEST_DIR)/clar.suite
|
||||||
$(CLAR_TEST_OBJS): $(UNIT_TEST_DIR)/clar-decls.h
|
$(CLAR_TEST_OBJS): $(UNIT_TEST_DIR)/clar-decls.h
|
||||||
$(CLAR_TEST_OBJS): EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR)
|
$(CLAR_TEST_OBJS): EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR)
|
||||||
|
@ -1005,11 +1005,19 @@ parse_makefile_for_scripts(clar_test_SUITES "CLAR_TEST_SUITES" "")
|
|||||||
list(TRANSFORM clar_test_SUITES PREPEND "${CMAKE_SOURCE_DIR}/t/unit-tests/")
|
list(TRANSFORM clar_test_SUITES PREPEND "${CMAKE_SOURCE_DIR}/t/unit-tests/")
|
||||||
list(TRANSFORM clar_test_SUITES APPEND ".c")
|
list(TRANSFORM clar_test_SUITES APPEND ".c")
|
||||||
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h"
|
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h"
|
||||||
COMMAND ${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-decls.sh "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h" ${clar_test_SUITES}
|
COMMAND ${SH_EXE} ${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-decls.sh
|
||||||
DEPENDS ${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-decls.sh ${clar_test_SUITES})
|
"${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h"
|
||||||
|
${clar_test_SUITES}
|
||||||
|
DEPENDS ${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-decls.sh
|
||||||
|
${clar_test_SUITES}
|
||||||
|
VERBATIM)
|
||||||
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite"
|
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite"
|
||||||
COMMAND awk -f "${CMAKE_SOURCE_DIR}/t/unit-tests/clar-generate.awk" "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h" > "${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite"
|
COMMAND ${SH_EXE} "${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-suites.sh"
|
||||||
DEPENDS "${CMAKE_SOURCE_DIR}/t/unit-tests/clar-generate.awk" "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h")
|
"${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h"
|
||||||
|
"${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite"
|
||||||
|
DEPENDS "${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-suites.sh"
|
||||||
|
"${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
add_library(unit-tests-lib ${clar_test_SUITES}
|
add_library(unit-tests-lib ${clar_test_SUITES}
|
||||||
"${CMAKE_SOURCE_DIR}/t/unit-tests/clar/clar.c"
|
"${CMAKE_SOURCE_DIR}/t/unit-tests/clar/clar.c"
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
function add_suite(suite, initialize, cleanup, count) {
|
|
||||||
if (!suite) return
|
|
||||||
suite_count++
|
|
||||||
callback_count += count
|
|
||||||
suites = suites " {\n"
|
|
||||||
suites = suites " \"" suite "\",\n"
|
|
||||||
suites = suites " " initialize ",\n"
|
|
||||||
suites = suites " " cleanup ",\n"
|
|
||||||
suites = suites " _clar_cb_" suite ", " count ", 1\n"
|
|
||||||
suites = suites " },\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
BEGIN {
|
|
||||||
suites = "static struct clar_suite _clar_suites[] = {\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
print
|
|
||||||
name = $3; sub(/\(.*$/, "", name)
|
|
||||||
suite = name; sub(/^test_/, "", suite); sub(/__.*$/, "", suite)
|
|
||||||
short_name = name; sub(/^.*__/, "", short_name)
|
|
||||||
cb = "{ \"" short_name "\", &" name " }"
|
|
||||||
if (suite != prev_suite) {
|
|
||||||
add_suite(prev_suite, initialize, cleanup, count)
|
|
||||||
if (callbacks) callbacks = callbacks "};\n"
|
|
||||||
callbacks = callbacks "static const struct clar_func _clar_cb_" suite "[] = {\n"
|
|
||||||
initialize = "{ NULL, NULL }"
|
|
||||||
cleanup = "{ NULL, NULL }"
|
|
||||||
count = 0
|
|
||||||
prev_suite = suite
|
|
||||||
}
|
|
||||||
if (short_name == "initialize") {
|
|
||||||
initialize = cb
|
|
||||||
} else if (short_name == "cleanup") {
|
|
||||||
cleanup = cb
|
|
||||||
} else {
|
|
||||||
callbacks = callbacks " " cb ",\n"
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
END {
|
|
||||||
add_suite(suite, initialize, cleanup, count)
|
|
||||||
suites = suites "};"
|
|
||||||
if (callbacks) callbacks = callbacks "};"
|
|
||||||
print callbacks
|
|
||||||
print suites
|
|
||||||
print "static const size_t _clar_suite_count = " suite_count ";"
|
|
||||||
print "static const size_t _clar_callback_count = " callback_count ";"
|
|
||||||
}
|
|
63
t/unit-tests/generate-clar-suites.sh
Executable file
63
t/unit-tests/generate-clar-suites.sh
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if test $# -lt 2
|
||||||
|
then
|
||||||
|
echo "USAGE: $0 <CLAR_DECLS_H> <OUTPUT>" 2>&1
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLAR_DECLS_H="$1"
|
||||||
|
OUTPUT="$2"
|
||||||
|
|
||||||
|
awk '
|
||||||
|
function add_suite(suite, initialize, cleanup, count) {
|
||||||
|
if (!suite) return
|
||||||
|
suite_count++
|
||||||
|
callback_count += count
|
||||||
|
suites = suites " {\n"
|
||||||
|
suites = suites " \"" suite "\",\n"
|
||||||
|
suites = suites " " initialize ",\n"
|
||||||
|
suites = suites " " cleanup ",\n"
|
||||||
|
suites = suites " _clar_cb_" suite ", " count ", 1\n"
|
||||||
|
suites = suites " },\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
suites = "static struct clar_suite _clar_suites[] = {\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
print
|
||||||
|
name = $3; sub(/\(.*$/, "", name)
|
||||||
|
suite = name; sub(/^test_/, "", suite); sub(/__.*$/, "", suite)
|
||||||
|
short_name = name; sub(/^.*__/, "", short_name)
|
||||||
|
cb = "{ \"" short_name "\", &" name " }"
|
||||||
|
if (suite != prev_suite) {
|
||||||
|
add_suite(prev_suite, initialize, cleanup, count)
|
||||||
|
if (callbacks) callbacks = callbacks "};\n"
|
||||||
|
callbacks = callbacks "static const struct clar_func _clar_cb_" suite "[] = {\n"
|
||||||
|
initialize = "{ NULL, NULL }"
|
||||||
|
cleanup = "{ NULL, NULL }"
|
||||||
|
count = 0
|
||||||
|
prev_suite = suite
|
||||||
|
}
|
||||||
|
if (short_name == "initialize") {
|
||||||
|
initialize = cb
|
||||||
|
} else if (short_name == "cleanup") {
|
||||||
|
cleanup = cb
|
||||||
|
} else {
|
||||||
|
callbacks = callbacks " " cb ",\n"
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
add_suite(suite, initialize, cleanup, count)
|
||||||
|
suites = suites "};"
|
||||||
|
if (callbacks) callbacks = callbacks "};"
|
||||||
|
print callbacks
|
||||||
|
print suites
|
||||||
|
print "static const size_t _clar_suite_count = " suite_count ";"
|
||||||
|
print "static const size_t _clar_callback_count = " callback_count ";"
|
||||||
|
}
|
||||||
|
' "$CLAR_DECLS_H" >"$OUTPUT"
|
Reference in New Issue
Block a user