diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-05-09 16:49:59 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-05-16 11:53:34 +0800 |
commit | ca5ea96894c8b50e495d919db2737551e581120c (patch) | |
tree | 00cf7d2f69785abf8fe0e873bd7b66dccb630ef6 | |
parent | 973a34df046f61a6688c3f3498efa8cd30777441 (diff) | |
download | talos-petitboot-ca5ea96894c8b50e495d919db2737551e581120c.tar.gz talos-petitboot-ca5ea96894c8b50e495d919db2737551e581120c.zip |
test/parser: Add check_boot_option_count helper & get_boot_option
Add a helper function to check the expected boot option counts, and
print the boot option details if the check fails.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r-- | test/parser/parser-test.h | 19 | ||||
-rw-r--r-- | test/parser/utils.c | 39 |
2 files changed, 58 insertions, 0 deletions
diff --git a/test/parser/parser-test.h b/test/parser/parser-test.h index 76132d5..744c914 100644 --- a/test/parser/parser-test.h +++ b/test/parser/parser-test.h @@ -31,10 +31,29 @@ void test_read_conf_file(struct parser_test *test, const char *filename); int test_run_parser(struct parser_test *test, const char *parser_name); +struct discover_boot_option *get_boot_option(struct discover_context *ctx, + int idx); + /* 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) +/** + * Checks for parser results. + * + * These return void, but will respond to check failures by printing a reason + * for the failure, and exit the test with a non-zero exit status. + */ + +/** + * Check that we have an expected number of boot options parsed. If not, + * print out what we did find, then exit. + */ +#define check_boot_option_count(ctx, count) \ + __check_boot_option_count(ctx, count, __FILE__, __LINE__) +void __check_boot_option_count(struct discover_context *ctx, int count, + const char *file, int line); + #endif /* PARSER_TEST_H */ diff --git a/test/parser/utils.c b/test/parser/utils.c index 69b0006..019ba63 100644 --- a/test/parser/utils.c +++ b/test/parser/utils.c @@ -140,3 +140,42 @@ int test_run_parser(struct parser_test *test, const char *parser_name) return rc; } + +struct discover_boot_option *get_boot_option(struct discover_context *ctx, + int idx) +{ + struct discover_boot_option *opt; + int i = 0; + + list_for_each_entry(&ctx->boot_options, opt, list) { + if (i++ == idx) + return opt; + } + + assert(0); + + return NULL; +} + +void __check_boot_option_count(struct discover_context *ctx, int count, + const char *file, int line) +{ + struct discover_boot_option *opt; + int i = 0; + + list_for_each_entry(&ctx->boot_options, opt, list) + i++; + + if (i == count) + return; + + fprintf(stderr, "%s:%d: boot option count check failed\n", file, line); + fprintf(stderr, "expected %d options, got %d:\n", count, i); + + i = 1; + list_for_each_entry(&ctx->boot_options, opt, list) + fprintf(stderr, " %2d: %s [%s]\n", i++, opt->option->name, + opt->option->id); + + exit(EXIT_FAILURE); +} |