Refactor parser routine conf_get_param_pair()
[petitboot] / test / parser-test.c
index 8c94d3f899d4c2f43ea4945ae006ccd619a05065..90b3e3b8e8693a9960b3ef5ed6d13854a677f98f 100644 (file)
@@ -1,85 +1,74 @@
 #define _GNU_SOURCE
 
-#include <stdlib.h>
-#include <stdio.h>
 #include <stdarg.h>
-#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 
-#include "parser.h"
-#include "paths.h"
-
-void pb_log(const char *fmt, ...)
-{
-       va_list ap;
-
-       va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
-       va_end(ap);
-}
+#include <log/log.h>
+#include "pb-protocol/pb-protocol.h"
+#include <talloc/talloc.h>
 
-int mount_device(const char *dev_path)
-{
-       printf("[mount] %s\n", dev_path);
-       return 0;
-}
+#include "discover/device-handler.h"
+#include "discover/parser.h"
+#include "discover/parser-utils.h"
+#include "discover/paths.h"
 
-static int device_idx;
-static int option_idx;
+static FILE *testf;
 
-int add_device(const struct device *dev)
+void device_add_boot_option(struct device *device,
+               struct boot_option *boot_option)
 {
-       printf("[dev %2d] id: %s\n", device_idx, dev->id);
-       printf("[dev %2d] name: %s\n", device_idx, dev->name);
-       printf("[dev %2d] description: %s\n", device_idx, dev->description);
-       printf("[dev %2d] boot_image: %s\n", device_idx, dev->icon_file);
-
-       device_idx++;
-       option_idx = 0;
-       return 0;
+       fprintf(testf, "%s: %s\n", __func__, device->id);
+       fprintf(testf, " id     '%s'\n", boot_option->id);
+       fprintf(testf, " name   '%s'\n", boot_option->name);
+       fprintf(testf, " descr  '%s'\n", boot_option->description);
+       fprintf(testf, " icon   '%s'\n", boot_option->icon_file);
+       fprintf(testf, " image  '%s'\n", boot_option->boot_image_file);
+       fprintf(testf, " initrd '%s'\n", boot_option->initrd_file);
+       fprintf(testf, " args   '%s'\n", boot_option->boot_args);
+       fflush(testf);
 }
 
-
-int add_boot_option(const struct boot_option *opt)
+const char *generic_icon_file(
+       enum generic_icon_type __attribute__((unused)) type)
 {
-       if (!device_idx) {
-               fprintf(stderr, "Option (%s) added before device\n",
-                               opt->name);
-               exit(EXIT_FAILURE);
-       }
-
-       printf("[opt %2d] name: %s\n", option_idx, opt->name);
-       printf("[opt %2d] description: %s\n", option_idx, opt->description);
-       printf("[opt %2d] boot_image: %s\n", option_idx, opt->boot_image_file);
-       printf("[opt %2d] initrd: %s\n", option_idx, opt->initrd_file);
-       printf("[opt %2d] boot_args: %s\n", option_idx, opt->boot_args);
-
-       option_idx++;
-
-       return 0;
+       return "tester.png";
 }
 
-enum generic_icon_type guess_device_type(void)
+enum generic_icon_type guess_device_type(
+       struct discover_context __attribute__((unused)) *ctx)
 {
        return ICON_TYPE_UNKNOWN;
 }
 
 int main(int argc, char **argv)
 {
-       char *mountpoint, *dev;
+       struct discover_context *ctx;
 
        if (argc != 3) {
                fprintf(stderr, "usage: %s <basedir> <devname>\n", argv[0]);
                return EXIT_FAILURE;
        }
 
-       mountpoint = argv[1];
-       dev = argv[2];
+       /* Default to test on stdout, pb_log on stderr. */
+
+       testf = stdout;
+
+       pb_log_set_stream(stderr);
+       pb_log_always_flush(1);
+       pb_log("--- parser-test ---\n");
+
+       ctx = talloc_zero(NULL, struct discover_context);
 
-       set_mount_base(mountpoint);
+       ctx->device_path = talloc_asprintf(ctx, "%s/%s", argv[1], argv[2]);
+       ctx->device = talloc_zero(ctx, struct device);
+       ctx->device->id = talloc_strdup(ctx->device, argv[2]);
 
-       iterate_parsers(dev, mountpoint);
+       iterate_parsers(ctx);
 
+       pb_log("--- end ---\n");
 
        return EXIT_SUCCESS;
 }