From: Jeremy Kerr Date: Wed, 15 May 2013 05:11:43 +0000 (+0800) Subject: test/parser: Allow raw config data in test .c files X-Git-Tag: v1.0.0~629 X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=e0a7cb18a4237aa826e5e121ff17373814a1872d 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 --- 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 " + 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 */