summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rules.mk9
-rw-r--r--test/parser-test.c96
-rwxr-xr-xtest/parser-test.sh29
3 files changed, 61 insertions, 73 deletions
diff --git a/rules.mk b/rules.mk
index 040f269..23b23d7 100644
--- a/rules.mk
+++ b/rules.mk
@@ -37,11 +37,10 @@ talloc_objs = lib/talloc/talloc.o
waiter_objs = lib/waiter/waiter.o
# daemon objs
-parser_objs = discover/parser.o discover/parser-utils.o \
- discover/parser-conf.o\
+parser_objs = discover/parser.o discover/parser-conf.o discover/paths.o \
$(foreach p, $(parsers), discover/$(p)-parser.o)
-discover_objs = discover/udev.o discover/discover-server.o \
- discover/device-handler.o discover/paths.o
+discover_objs = discover/udev.o discover/discover-server.o \
+ discover/device-handler.o discover/paths.o discover/parser-utils.o
# client objs
ui_common_objs = ui/common/discover-client.o
@@ -95,7 +94,7 @@ $(pb_discover): $(pb_discover_objs)
$(LINK.o) -o $@ $^
# parser-test
-parser_test_objs = $(parser_objs) test/parser-test.o
+parser_test_objs = $(lib_objs) $(parser_objs) test/parser-test.o
$(parser_test_objs): $(makefiles)
$(parser_test): $(parser_test_objs)
diff --git a/test/parser-test.c b/test/parser-test.c
index 8c94d3f..c88fc6c 100644
--- a/test/parser-test.c
+++ b/test/parser-test.c
@@ -1,85 +1,75 @@
#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;
+ int rc;
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);
+ rc = iterate_parsers(ctx);
+ pb_log("--- end ---\n");
return EXIT_SUCCESS;
}
diff --git a/test/parser-test.sh b/test/parser-test.sh
index 140601e..af54395 100755
--- a/test/parser-test.sh
+++ b/test/parser-test.sh
@@ -1,26 +1,25 @@
#!/bin/bash
-testdir=devices/parser-tests
+testdir=parser
default_rootdev=ps3da1
+mnt=${PREFIX}/var/petitboot/mnt
-function test_dir()
-{
- dir="$1"
+#set -ex
+
+tests=$(ls ${mnt}/${testdir}/)
+
+for test in $tests
+do
rootdev=$default_rootdev
- if [ -e "$dir/rootdev" ]
- then
- rootdev=$(cat "$dir/rootdev")
+
+ if [ -e "${mnt}/${testdir}/$test/rootdev" ]; then
+ rootdev=$(cat "${mnt}/${testdir}/$test/rootdev")
fi
- ./parser-test "$dir" /dev/$rootdev 2>/dev/null |
- diff -u "$dir/expected-output" -
-}
-set -ex
+ ./test/parser-test "${testdir}/$test" $rootdev
-for test in $testdir/*
-do
- echo $test
- test_dir "$test"
+# ./test/parser-test "${testdir}/$test" $rootdev 2>/dev/null |
+# diff -u "${mnt}/${testdir}/$test/expected-output" -
done
echo "All tests passed"
OpenPOWER on IntegriCloud