summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/apk.c9
-rwxr-xr-xtest/command-parsing.sh26
2 files changed, 29 insertions, 6 deletions
diff --git a/src/apk.c b/src/apk.c
index 069f4c0..626da6d 100644
--- a/src/apk.c
+++ b/src/apk.c
@@ -588,11 +588,11 @@ int main(int argc, char **argv)
help_requested = 1;
break;
}
- if (r != -ENOTSUP) goto err_and_usage;
+ if (r != -ENOTSUP) goto err;
}
}
- if (help_requested) {
+ if (help_requested || r == -ENOTSUP) {
r = usage(applet);
goto err;
}
@@ -686,12 +686,9 @@ int main(int argc, char **argv)
r = 0;
#endif
-err_and_usage:
- if (r == -EINVAL)
- r = usage(applet);
+err:
if (r == -ESHUTDOWN)
r = 0;
-err:
if (ctx)
free(ctx);
diff --git a/test/command-parsing.sh b/test/command-parsing.sh
new file mode 100755
index 0000000..008cb77
--- /dev/null
+++ b/test/command-parsing.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+fail=0
+
+help_output=$(../src/apk version --help 2>/dev/null)
+invalid_option_output="$(../src/apk --invalid-option version 2>/dev/null)"
+if [ "$help_output" != "$invalid_option_output" ]; then
+ echo "FAIL: invalid option does not trigger help"
+ fail=$((fail+1))
+fi
+
+if ! ../src/apk --help 2>/dev/null | grep -q "^Use apk --help --verbose for a full command listing."; then
+ echo "FAIL: brief help gives long help"
+ fail=$((fail+1))
+fi
+
+if ../src/apk --help --verbose 2>/dev/null | grep -q "^Use apk --help --verbose for a full command listing."; then
+ echo "FAIL: long help does not work"
+ fail=$((fail+1))
+fi
+
+if [ $fail -eq 0 ]; then
+ echo "OK: command parsing works"
+fi
+
+exit $fail