]> git.ozlabs.org Git - petitboot/blobdiff - test/parser/utils.c
discover: Allow for already-mounted devices
[petitboot] / test / parser / utils.c
index de1dc13e8da60cfd789fb1b28ab62dd4d977e49d..7af4df7397970e6b97c0794b64cb6f647434cab6 100644 (file)
@@ -61,6 +61,7 @@ struct discover_device *test_create_device(struct parser_test *test,
        dev->device->id = talloc_strdup(dev, name);
        dev->device_path = talloc_asprintf(dev, "/dev/%s", name);
        dev->mount_path = talloc_asprintf(dev, "/test/mount/%s", name);
+       dev->mounted = true;
 
        return dev;
 }
@@ -206,10 +207,19 @@ void __check_boot_option_count(struct discover_context *ctx, int count,
                const char *file, int line)
 {
        struct discover_boot_option *opt;
-       int i = 0;
+       int defaults = 0, i = 0;
 
-       list_for_each_entry(&ctx->boot_options, opt, list)
+       list_for_each_entry(&ctx->boot_options, opt, list) {
                i++;
+               if (opt->option->is_default)
+                       defaults++;
+       }
+
+       if (defaults > 1) {
+               fprintf(stderr, "%s:%d: parser returned multiple default "
+                               "options\n", file, line);
+               exit(EXIT_FAILURE);
+       }
 
        if (i == count)
                return;
@@ -230,6 +240,9 @@ void __check_args(struct discover_boot_option *opt, const char *args,
 {
        int rc;
 
+       if (!opt->option->boot_args && !args)
+               return;
+
        if (!opt->option->boot_args) {
                fprintf(stderr, "%s:%d: arg check failed\n", file, line);
                fprintf(stderr, "  no arguments parsed\n");