X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=test%2Fparser%2Futils.c;h=d1ced73a6365fff837902fd027811a1d0db500e4;hp=40737c4f17c8ef6dd0ca00b8ace225f60c7caf3d;hb=b86a7a0533c4d723ea940ac2071f845f165f832c;hpb=e28232f4b8941ccd151abaaae3f18c32400436f3 diff --git a/test/parser/utils.c b/test/parser/utils.c index 40737c4..d1ced73 100644 --- a/test/parser/utils.c +++ b/test/parser/utils.c @@ -22,6 +22,14 @@ struct p_item { struct parser *parser; }; +struct test_file { + struct discover_device *dev; + const char *name; + void *data; + int size; + struct list_item list; +}; + STATIC_LIST(parsers); void __register_parser(struct parser *parser) @@ -91,6 +99,7 @@ struct parser_test *test_init(void) test->config = test_config_init(test); test->handler = device_handler_init(NULL, NULL, 0); test->ctx = test_create_context(test); + list_init(&test->files); return test; } @@ -142,6 +151,41 @@ void test_set_conf_source(struct parser_test *test, const char *url) assert(test->ctx->conf_url); } +void test_add_file_data(struct parser_test *test, struct discover_device *dev, + const char *filename, void *data, int size) +{ + struct test_file *file; + + file = talloc_zero(test, struct test_file); + file->dev = dev; + file->name = filename; + file->data = data; + file->size = size; + list_add(&test->files, &file->list); +} + + +int parser_request_file(struct discover_context *ctx, + struct discover_device *dev, const char *filename, + char **buf, int *len) +{ + struct parser_test *test = ctx->test_data; + struct test_file *file; + + list_for_each_entry(&test->files, file, list) { + if (file->dev != dev) + continue; + if (strcmp(file->name, filename)) + continue; + + *buf = talloc_memdup(test, file->data, file->size); + *len = file->size; + return 0; + } + + return -1; +} + int test_run_parser(struct parser_test *test, const char *parser_name) { struct p_item* i;