summaryrefslogtreecommitdiff
path: root/tests/test-cli-extensions.sh
diff options
context:
space:
mode:
authorLuca BRUNO <luca.bruno@coreos.com>2021-12-20 10:00:02 +0000
committerLuca BRUNO <luca.bruno@coreos.com>2021-12-20 10:00:02 +0000
commit513b3c09a54af31ffd1b0eb9b3c47849816483be (patch)
treed8fc230e2dd16fb0e88f0d4789f951a74a9cd234 /tests/test-cli-extensions.sh
parent365559eaa8126d60366b3f69585268dd89ce3a3a (diff)
downloadostree-513b3c09a54af31ffd1b0eb9b3c47849816483be.tar.gz
main: add support for CLI extensions via external binaries
This adds some logic to detect and dispatch unknown subcommands to extensions available in `$PATH`. Additional commands can be implemented by adding relevant `ostree-$verb` binaries to the system. As an example, if a `/usr/bin/ostree-extcommand` extension is provided, the execution of `ostree extcommand --help` will be dispatched to that as `ostree-extcommand extcommand --help`.
Diffstat (limited to 'tests/test-cli-extensions.sh')
-rwxr-xr-xtests/test-cli-extensions.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/test-cli-extensions.sh b/tests/test-cli-extensions.sh
new file mode 100755
index 00000000..6e483c5e
--- /dev/null
+++ b/tests/test-cli-extensions.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2021 Red Hat Inc.
+# SPDX-License-Identifier: LGPL-2.0+
+
+set -euo pipefail
+
+. $(dirname $0)/libtest.sh
+
+echo '1..2'
+
+mkdir -p ./localbin
+export PATH="./localbin/:${PATH}"
+ln -s /usr/bin/env ./localbin/ostree-env
+${CMD_PREFIX} ostree env --help >out.txt
+assert_file_has_content out.txt "with an empty environment"
+rm -rf -- localbin
+
+echo 'ok CLI extension localbin ostree-env'
+
+if ${CMD_PREFIX} ostree nosuchcommand 2>err.txt; then
+ assert_not_reached "missing CLI extension ostree-nosuchcommand succeeded"
+fi
+assert_file_has_content err.txt "Unknown command 'nosuchcommand'"
+rm -f -- err.txt
+
+echo 'ok CLI extension unknown ostree-nosuchcommand'