diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2022-02-21 15:11:37 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-21 15:11:37 -0500 |
commit | c9359e1494ef78ede53086cdf762da7f197bb421 (patch) | |
tree | a6e81c28b6fa9750a78dcef7e7de6a1c26f3127a | |
parent | 4ad98b9fd3519ef901430c35d74b1dc7e65f9d84 (diff) | |
parent | 44d037898ebc328432823d51ca2da298902a46e9 (diff) | |
download | podman-c9359e1494ef78ede53086cdf762da7f197bb421.tar.gz podman-c9359e1494ef78ede53086cdf762da7f197bb421.tar.bz2 podman-c9359e1494ef78ede53086cdf762da7f197bb421.zip |
Merge pull request #13306 from Luap99/flag-error
provide better error on invalid flag
-rw-r--r-- | cmd/podman/main.go | 8 | ||||
-rw-r--r-- | test/system/001-basic.bats | 3 | ||||
-rw-r--r-- | test/system/300-cli-parsing.bats | 14 |
3 files changed, 24 insertions, 1 deletions
diff --git a/cmd/podman/main.go b/cmd/podman/main.go index 9850f5d27..4f8131653 100644 --- a/cmd/podman/main.go +++ b/cmd/podman/main.go @@ -72,6 +72,8 @@ func parseCommands() *cobra.Command { } parent.AddCommand(c.Command) + c.Command.SetFlagErrorFunc(flagErrorFuncfunc) + // - templates need to be set here, as PersistentPreRunE() is // not called when --help is used. // - rootCmd uses cobra default template not ours @@ -84,5 +86,11 @@ func parseCommands() *cobra.Command { os.Exit(1) } + rootCmd.SetFlagErrorFunc(flagErrorFuncfunc) return rootCmd } + +func flagErrorFuncfunc(c *cobra.Command, e error) error { + e = fmt.Errorf("%w\nSee '%s --help'", e, c.CommandPath()) + return e +} diff --git a/test/system/001-basic.bats b/test/system/001-basic.bats index e36142188..748377e4b 100644 --- a/test/system/001-basic.bats +++ b/test/system/001-basic.bats @@ -105,7 +105,8 @@ function setup() { # ...but no matter what, --remote is never allowed after subcommand PODMAN="${podman_non_remote} ${podman_args[@]}" run_podman 125 version --remote - is "$output" "Error: unknown flag: --remote" "podman version --remote" + is "$output" "Error: unknown flag: --remote +See 'podman version --help'" "podman version --remote" } @test "podman-remote: defaults" { diff --git a/test/system/300-cli-parsing.bats b/test/system/300-cli-parsing.bats index 92c073102..ec493d3d8 100644 --- a/test/system/300-cli-parsing.bats +++ b/test/system/300-cli-parsing.bats @@ -12,4 +12,18 @@ load helpers run_podman run --rm --label 'true="false"' $IMAGE true } +@test "podman flag error" { + local name="podman" + if is_remote; then + name="podman-remote" + fi + run_podman 125 run -h + is "$output" "Error: flag needs an argument: 'h' in -h +See '$name run --help'" "expected error output" + + run_podman 125 bad --invalid + is "$output" "Error: unknown flag: --invalid +See '$name --help'" "expected error output" +} + # vim: filetype=sh |