summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-05-15 13:11:43 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-05-16 11:53:34 +0800
commite0a7cb18a4237aa826e5e121ff17373814a1872d (patch)
tree110f5785d90478752e7a194c4f4ae4c76692f3b1
parenta5a787c5d170708be5d15ee9418520917653a104 (diff)
downloadtalos-petitboot-e0a7cb18a4237aa826e5e121ff17373814a1872d.tar.gz
talos-petitboot-e0a7cb18a4237aa826e5e121ff17373814a1872d.zip
test/parser: Allow raw config data in test .c files
Add a little post-processing script (extract-config.awk) to allow us to put the config data directly into the test .c files, without having to quote the C string. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--test/parser/Makefile.am12
-rw-r--r--test/parser/extract-config.awk21
-rw-r--r--test/parser/parser-test.h6
3 files changed, 38 insertions, 1 deletions
diff --git a/test/parser/Makefile.am b/test/parser/Makefile.am
index aa4591f..2e97fbe 100644
--- a/test/parser/Makefile.am
+++ b/test/parser/Makefile.am
@@ -47,5 +47,15 @@ LDADD = $(common_libs) $(test_libs)
libtest_o_SOURCES = utils.c parser-test.h handler.c main.c $(parser_test_objs)
+$(check_PROGRAMS): %: %.embedded-config.o
+$(check_PROGRAMS): LDADD += $@.embedded-config.o
-EXTRA_DIST = $(check_DATA)
+extract_config = $(srcdir)/extract-config.awk
+
+%.embedded-config.c: %.c $(extract_config)
+ gawk --file=$(extract_config) $^ > $@
+
+EXTRA_DIST = $(check_DATA) $(extract_config)
+
+CLEANFILES = $(foreach f, $(check_PROGRAMS), \
+ $(f).embedded-config.c $(f).embedded-config.o)
diff --git a/test/parser/extract-config.awk b/test/parser/extract-config.awk
new file mode 100644
index 0000000..e7a5b33
--- /dev/null
+++ b/test/parser/extract-config.awk
@@ -0,0 +1,21 @@
+BEGIN {
+ config=0
+}
+
+/^#if\s*0\s*\/\*\s*PARSER_EMBEDDED_CONFIG/ {
+ config=1
+ print "#include <stdlib.h>"
+ print "const char __embedded_config[] = "
+ next
+}
+!config {
+ next
+}
+/^#endif/ {
+ print ";"
+ print "const size_t __embedded_config_size = sizeof(__embedded_config);"
+ exit
+}
+{
+ print "\t\"" $0 "\\n\""
+}
diff --git a/test/parser/parser-test.h b/test/parser/parser-test.h
index 5baa458..76132d5 100644
--- a/test/parser/parser-test.h
+++ b/test/parser/parser-test.h
@@ -31,4 +31,10 @@ void test_read_conf_file(struct parser_test *test, const char *filename);
int test_run_parser(struct parser_test *test, const char *parser_name);
+/* embedded config */
+extern const char __embedded_config[];
+extern const size_t __embedded_config_size;
+#define test_read_conf_embedded(t) \
+ __test_read_conf_data(t, __embedded_config, __embedded_config_size)
+
#endif /* PARSER_TEST_H */
OpenPOWER on IntegriCloud