64 lines
1.6 KiB
Bash
Executable File
64 lines
1.6 KiB
Bash
Executable File
#!/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"
|