X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=test%2Fparser%2Futils.c;h=2891969791c882da1df1fe6742eb5f1bf0cfcece;hp=838250b50dc1708fdd81578e5ac99b50fc1ad89a;hb=939660528bf1568c55b6dcf982cc9020c1dbcdd2;hpb=4896183708855fbfd0aa892537fbcc17ed7eb971 diff --git a/test/parser/utils.c b/test/parser/utils.c index 838250b..2891969 100644 --- a/test/parser/utils.c +++ b/test/parser/utils.c @@ -16,6 +16,7 @@ #include "parser.h" #include "resource.h" #include "event.h" +#include "platform.h" #include "parser-test.h" @@ -95,14 +96,26 @@ static struct discover_context *test_create_context(struct parser_test *test) return ctx; } -extern struct config *test_config_init(struct parser_test *test); +/* define our own test platform */ +static bool test_platform_probe(struct platform *p __attribute__((unused)), + void *ctx __attribute__((unused))) +{ + return true; +} + +struct platform test_platform = { + .name = "test", + .probe = test_platform_probe, +}; + +register_platform(test_platform); struct parser_test *test_init(void) { struct parser_test *test; test = talloc_zero(NULL, struct parser_test); - test->config = test_config_init(test); + platform_init(NULL); test->handler = device_handler_init(NULL, NULL, 0); test->ctx = test_create_context(test); list_init(&test->files); @@ -114,6 +127,7 @@ void test_fini(struct parser_test *test) { device_handler_destroy(test->handler); talloc_free(test); + platform_fini(); } void __test_read_conf_data(struct parser_test *test, @@ -179,6 +193,9 @@ void test_add_dir(struct parser_test *test, struct discover_device *dev, file->type = TEST_DIR; file->dev = dev; file->name = dirname; + /* Pick a non-zero size for directories so that "[ -s ]" sees that the file has non-zero size. */ + file->size = 1; list_add(&test->files, &file->list); } @@ -193,6 +210,11 @@ void test_set_event_param(struct event *event, const char *name, event_set_param(event, name, value); } +void test_set_event_device(struct event *event, const char *dev) +{ + event->device = talloc_strdup(event, dev); +} + int parser_request_file(struct discover_context *ctx, struct discover_device *dev, const char *filename, char **buf, int *len) @@ -222,20 +244,34 @@ int parser_request_file(struct discover_context *ctx, return -1; } -int parser_check_dir(struct discover_context *ctx, - struct discover_device *dev, const char *dirname) +int parser_stat_path(struct discover_context *ctx, + struct discover_device *dev, const char *path, + struct stat *statbuf) { struct parser_test *test = ctx->test_data; struct test_file *file; - printf("%s: %s\n", __func__, dirname); - list_for_each_entry(&test->files, file, list) { if (file->dev != dev) continue; - if (strcmp(file->name, dirname)) + if (strcmp(file->name, path)) continue; - return file->type == TEST_DIR ? 0 : -1; + + statbuf->st_size = (off_t)file->size; + switch (file->type) { + case TEST_FILE: + statbuf->st_mode = S_IFREG; + break; + case TEST_DIR: + statbuf->st_mode = S_IFDIR; + break; + default: + fprintf(stderr, "%s: bad test file mode %d!", __func__, + file->type); + exit(EXIT_FAILURE); + } + + return 0; } return -1;