diff options
Diffstat (limited to 'tests/test_output.c')
-rw-r--r-- | tests/test_output.c | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/tests/test_output.c b/tests/test_output.c index 025a3a3..8f8e0b7 100644 --- a/tests/test_output.c +++ b/tests/test_output.c @@ -37,6 +37,8 @@ * $ ./test_output something */ +static void print_help(); + #include <errno.h> #include <inttypes.h> #include <stdio.h> @@ -52,6 +54,11 @@ /* eloop object */ static struct ev_eloop *eloop; +struct { + bool fbdev; + bool test; +} output_conf; + static int blit_outputs(struct uterm_video *video) { struct uterm_display *iter; @@ -143,18 +150,64 @@ static int list_outputs(struct uterm_video *video) return 0; } +static void print_help() +{ + /* + * Usage/Help information + * This should be scaled to a maximum of 80 characters per line: + * + * 80 char line: + * | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | + * "12345678901234567890123456789012345678901234567890123456789012345678901234567890\n" + * 80 char line starting with tab: + * |10| 20 | 30 | 40 | 50 | 60 | 70 | 80 | + * "\t901234567890123456789012345678901234567890123456789012345678901234567890\n" + */ + fprintf(stderr, + "Usage:\n" + "\t%1$s [options]\n" + "\t%1$s -h [options]\n" + "\n" + "You can prefix boolean options with \"no-\" to negate it. If an argument is\n" + "given multiple times, only the last argument matters if not otherwise stated.\n" + "\n" + "General Options:\n" + TEST_HELP + "\n" + "Video Options:\n" + "\t --fbdev [off] Use fbdev instead of DRM\n" + "\t --test [off] Try displaying content instead of listing devices\n", + "test_input"); + /* + * 80 char line: + * | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | + * "12345678901234567890123456789012345678901234567890123456789012345678901234567890\n" + * 80 char line starting with tab: + * |10| 20 | 30 | 40 | 50 | 60 | 70 | 80 | + * "\t901234567890123456789012345678901234567890123456789012345678901234567890\n" + */ +} + +struct conf_option options[] = { + TEST_OPTIONS, + CONF_OPTION_BOOL(0, "fbdev", NULL, &output_conf.fbdev, false), + CONF_OPTION_BOOL(0, "test", NULL, &output_conf.test, false), +}; + int main(int argc, char **argv) { struct uterm_video *video; int ret; unsigned int mode; const char *node; + size_t onum; - ret = test_prepare(argc, argv, &eloop); + onum = sizeof(options) / sizeof(*options); + ret = test_prepare(options, onum, argc, argv, &eloop); if (ret) goto err_fail; - if (conf_global.use_fbdev) { + if (output_conf.fbdev) { mode = UTERM_VIDEO_FBDEV; node = "/dev/fb0"; } else { @@ -182,7 +235,7 @@ int main(int argc, char **argv) if (ret < 0) goto err_unref; - if (argc < 2) { + if (!output_conf.test) { ret = list_outputs(video); if (ret) { log_err("Cannot list outputs: %d", ret); @@ -199,8 +252,9 @@ int main(int argc, char **argv) err_unref: uterm_video_unref(video); err_exit: - test_exit(eloop); + test_exit(options, onum, eloop); err_fail: - test_fail(ret); + if (ret != -ECANCELED) + test_fail(ret); return abs(ret); } |