Git fork

t/unit-tests: convert "clar-generate.awk" into a shell script

Convert "clar-generate.awk" into a shell script that invokes awk(1).
This allows us to avoid the shell redirect in the build system, which
may otherwise be a problem with build systems on platforms that use a
different shell.

While at it, wrap the overly long lines in the CMake build instructions.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Patrick Steinhardt and committed by
Junio C Hamano
9a91ab94 b31fb630

+69 -53
+1 -1
Makefile
··· 3907 3907 $(UNIT_TEST_DIR)/clar-decls.h: $(patsubst %,$(UNIT_TEST_DIR)/%.c,$(CLAR_TEST_SUITES)) GIT-TEST-SUITES 3908 3908 $(QUIET_GEN)$(SHELL_PATH) $(UNIT_TEST_DIR)/generate-clar-decls.sh "$@" $(filter %.c,$^) 3909 3909 $(UNIT_TEST_DIR)/clar.suite: $(UNIT_TEST_DIR)/clar-decls.h 3910 - $(QUIET_GEN)awk -f $(UNIT_TEST_DIR)/clar-generate.awk $< >$(UNIT_TEST_DIR)/clar.suite 3910 + $(QUIET_GEN)$(SHELL_PATH) $(UNIT_TEST_DIR)/generate-clar-suites.sh $< $(UNIT_TEST_DIR)/clar.suite 3911 3911 $(UNIT_TEST_DIR)/clar/clar.o: $(UNIT_TEST_DIR)/clar.suite 3912 3912 $(CLAR_TEST_OBJS): $(UNIT_TEST_DIR)/clar-decls.h 3913 3913 $(CLAR_TEST_OBJS): EXTRA_CPPFLAGS = -I$(UNIT_TEST_DIR)
+5 -2
contrib/buildsystems/CMakeLists.txt
··· 1008 1008 COMMAND ${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-decls.sh "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h" ${clar_test_SUITES} 1009 1009 DEPENDS ${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-decls.sh ${clar_test_SUITES}) 1010 1010 add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite" 1011 - 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" 1012 - DEPENDS "${CMAKE_SOURCE_DIR}/t/unit-tests/clar-generate.awk" "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h") 1011 + COMMAND "${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-suites.sh" 1012 + "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h" 1013 + "${CMAKE_BINARY_DIR}/t/unit-tests/clar.suite" 1014 + DEPENDS "${CMAKE_SOURCE_DIR}/t/unit-tests/generate-clar-suites.sh" 1015 + "${CMAKE_BINARY_DIR}/t/unit-tests/clar-decls.h") 1013 1016 1014 1017 add_library(unit-tests-lib ${clar_test_SUITES} 1015 1018 "${CMAKE_SOURCE_DIR}/t/unit-tests/clar/clar.c"
-50
t/unit-tests/clar-generate.awk
··· 1 - function add_suite(suite, initialize, cleanup, count) { 2 - if (!suite) return 3 - suite_count++ 4 - callback_count += count 5 - suites = suites " {\n" 6 - suites = suites " \"" suite "\",\n" 7 - suites = suites " " initialize ",\n" 8 - suites = suites " " cleanup ",\n" 9 - suites = suites " _clar_cb_" suite ", " count ", 1\n" 10 - suites = suites " },\n" 11 - } 12 - 13 - BEGIN { 14 - suites = "static struct clar_suite _clar_suites[] = {\n" 15 - } 16 - 17 - { 18 - print 19 - name = $3; sub(/\(.*$/, "", name) 20 - suite = name; sub(/^test_/, "", suite); sub(/__.*$/, "", suite) 21 - short_name = name; sub(/^.*__/, "", short_name) 22 - cb = "{ \"" short_name "\", &" name " }" 23 - if (suite != prev_suite) { 24 - add_suite(prev_suite, initialize, cleanup, count) 25 - if (callbacks) callbacks = callbacks "};\n" 26 - callbacks = callbacks "static const struct clar_func _clar_cb_" suite "[] = {\n" 27 - initialize = "{ NULL, NULL }" 28 - cleanup = "{ NULL, NULL }" 29 - count = 0 30 - prev_suite = suite 31 - } 32 - if (short_name == "initialize") { 33 - initialize = cb 34 - } else if (short_name == "cleanup") { 35 - cleanup = cb 36 - } else { 37 - callbacks = callbacks " " cb ",\n" 38 - count++ 39 - } 40 - } 41 - 42 - END { 43 - add_suite(suite, initialize, cleanup, count) 44 - suites = suites "};" 45 - if (callbacks) callbacks = callbacks "};" 46 - print callbacks 47 - print suites 48 - print "static const size_t _clar_suite_count = " suite_count ";" 49 - print "static const size_t _clar_callback_count = " callback_count ";" 50 - }
+63
t/unit-tests/generate-clar-suites.sh
··· 1 + #!/bin/sh 2 + 3 + if test $# -lt 2 4 + then 5 + echo "USAGE: $0 <CLAR_DECLS_H> <OUTPUT>" 2>&1 6 + exit 1 7 + fi 8 + 9 + CLAR_DECLS_H="$1" 10 + OUTPUT="$2" 11 + 12 + awk ' 13 + function add_suite(suite, initialize, cleanup, count) { 14 + if (!suite) return 15 + suite_count++ 16 + callback_count += count 17 + suites = suites " {\n" 18 + suites = suites " \"" suite "\",\n" 19 + suites = suites " " initialize ",\n" 20 + suites = suites " " cleanup ",\n" 21 + suites = suites " _clar_cb_" suite ", " count ", 1\n" 22 + suites = suites " },\n" 23 + } 24 + 25 + BEGIN { 26 + suites = "static struct clar_suite _clar_suites[] = {\n" 27 + } 28 + 29 + { 30 + print 31 + name = $3; sub(/\(.*$/, "", name) 32 + suite = name; sub(/^test_/, "", suite); sub(/__.*$/, "", suite) 33 + short_name = name; sub(/^.*__/, "", short_name) 34 + cb = "{ \"" short_name "\", &" name " }" 35 + if (suite != prev_suite) { 36 + add_suite(prev_suite, initialize, cleanup, count) 37 + if (callbacks) callbacks = callbacks "};\n" 38 + callbacks = callbacks "static const struct clar_func _clar_cb_" suite "[] = {\n" 39 + initialize = "{ NULL, NULL }" 40 + cleanup = "{ NULL, NULL }" 41 + count = 0 42 + prev_suite = suite 43 + } 44 + if (short_name == "initialize") { 45 + initialize = cb 46 + } else if (short_name == "cleanup") { 47 + cleanup = cb 48 + } else { 49 + callbacks = callbacks " " cb ",\n" 50 + count++ 51 + } 52 + } 53 + 54 + END { 55 + add_suite(suite, initialize, cleanup, count) 56 + suites = suites "};" 57 + if (callbacks) callbacks = callbacks "};" 58 + print callbacks 59 + print suites 60 + print "static const size_t _clar_suite_count = " suite_count ";" 61 + print "static const size_t _clar_callback_count = " callback_count ";" 62 + } 63 + ' "$CLAR_DECLS_H" >"$OUTPUT"