From 8a16229d3ef2aa76364f06ae37eed176c95616f4 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 30 Nov 2022 11:59:30 +0100 Subject: [PATCH] abuild-tar: fix --help and add test for usage --- abuild-tar.c | 16 ++++++++++------ tests/abuild_tar_test | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100755 tests/abuild_tar_test diff --git a/abuild-tar.c b/abuild-tar.c index 44ebf17..d404bbd 100644 --- a/abuild-tar.c +++ b/abuild-tar.c @@ -104,9 +104,9 @@ static void tarhdr_checksum(struct tar_header *hdr) put_octal(hdr->chksum, sizeof(hdr->chksum)-1, chksum); } -static int usage(void) +static int usage(FILE *out) { - fprintf(stderr, + fprintf(out, "abuild-tar " VERSION "\n" "\n" "usage: abuild-tar [--hash[=]] [--cut]\n" @@ -367,9 +367,10 @@ err: int main(int argc, char **argv) { - static int cut = 0; + static int cut = 0, help = 0; static const struct option options[] = { { "hash", optional_argument }, + { "help", no_argument, &help, 1 }, { "cut", no_argument, &cut, 1 }, { NULL } }; @@ -388,15 +389,18 @@ int main(int argc, char **argv) digest = optarg ? optarg : "sha1"; } + if (help) + return usage(stdout) && 0; + if (digest == NULL && cut == 0) - return usage(); + return usage(stderr); if (isatty(STDIN_FILENO)) - return usage(); + return usage(stderr); if (digest != NULL) { md = EVP_get_digestbyname(digest); if (md == NULL) - return usage(); + return usage(stderr); } return do_it(md, cut); diff --git a/tests/abuild_tar_test b/tests/abuild_tar_test new file mode 100755 index 0000000..5ca89e6 --- /dev/null +++ b/tests/abuild_tar_test @@ -0,0 +1,20 @@ +#!/usr/bin/env atf-sh + +. $(atf_get_srcdir)/test_env.sh +init_tests \ + abuild_tar_help \ + abuild_tar_invalid_opt + +DATADIR=$(atf_get_srcdir)/testdata + +abuild_tar_help_body() { + atf_check -s exit:0 \ + -o match:"usage:" \ + abuild-tar --help +} + +abuild_tar_invalid_opt_body() { + atf_check -s not-exit:0 \ + -e match:"usage:" \ + abuild-tar --invalid +}