summaryrefslogtreecommitdiffstats
path: root/test/parser/test-native-short.c
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>2018-10-30 15:26:04 +1100
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>2018-11-16 13:55:13 +1100
commit646d77d8156ad72da1c24f734a029a525ba4bed9 (patch)
tree8eaa5db080f5c2b733b506fd82eec773ac2afdb3 /test/parser/test-native-short.c
parent638f16c7683db165154bbe53772c4b864f9dc90d (diff)
downloadtalos-petitboot-646d77d8156ad72da1c24f734a029a525ba4bed9.tar.gz
talos-petitboot-646d77d8156ad72da1c24f734a029a525ba4bed9.zip
discover: Reimplement native-parser as a Bison parser
Occasionally you look at some code and realise that a) this never gets built, and b) even if it did it would never compile. Today's example is native-parser.c which we must have just assumed worked for quite a while. The native parser has bitrotted entirely and needs to be brought up to date. While we're here, lets take the chance to implement a proper grammar for it. This helps us reason more effectively about the parser, lets us extend it easily in the future, and.. I wanted to write a Bison parser too. This implements most of the old functionality, but drops off some smaller details like settings icons which needs some separate attention to bring up to date. Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Diffstat (limited to 'test/parser/test-native-short.c')
-rw-r--r--test/parser/test-native-short.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/parser/test-native-short.c b/test/parser/test-native-short.c
new file mode 100644
index 0000000..178d080
--- /dev/null
+++ b/test/parser/test-native-short.c
@@ -0,0 +1,24 @@
+#include "parser-test.h"
+
+void run_test(struct parser_test *test)
+{
+ struct discover_boot_option *opt;
+ struct discover_context *ctx;
+
+ test_read_conf_file(test, "native-short.conf", "/boot/petitboot.conf");
+
+ test_run_parser(test, "native");
+
+ ctx = test->ctx;
+
+ check_boot_option_count(ctx, 1);
+
+ opt = get_boot_option(ctx, 0);
+
+ check_name(opt, "Ubuntu");
+ check_resolved_local_resource(opt->boot_image, ctx->device,
+ "/boot/vmlinux-4.15.0-22-generic");
+ check_args(opt, "root=UUID=09d1034f-3cff-413a-af22-68be1fa5e3d8 ro");
+ check_resolved_local_resource(opt->initrd, ctx->device,
+ "/boot/initrd.img-4.15.0-22-generic");
+}
OpenPOWER on IntegriCloud