mirror of
https://github.com/spf13/cobra
synced 2024-11-24 14:47:12 +00:00
Add '--version' flag to Help output (#1707)
This commit is contained in:
parent
fce8d8aeb0
commit
7039e1fa21
2 changed files with 89 additions and 1 deletions
|
@ -1123,7 +1123,8 @@ Simply type ` + c.Name() + ` help [path to command] for full details.`,
|
||||||
c.Printf("Unknown help topic %#q\n", args)
|
c.Printf("Unknown help topic %#q\n", args)
|
||||||
CheckErr(c.Root().Usage())
|
CheckErr(c.Root().Usage())
|
||||||
} else {
|
} else {
|
||||||
cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown
|
cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown
|
||||||
|
cmd.InitDefaultVersionFlag() // make possible 'version' flag to be shown
|
||||||
CheckErr(cmd.Help())
|
CheckErr(cmd.Help())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -2343,3 +2343,90 @@ func TestSetContextPersistentPreRun(t *testing.T) {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const VersionFlag = "--version"
|
||||||
|
const HelpFlag = "--help"
|
||||||
|
|
||||||
|
func TestNoRootRunCommandExecutedWithVersionSet(t *testing.T) {
|
||||||
|
rootCmd := &Command{Use: "root", Version: "1.0.0", Long: "Long description"}
|
||||||
|
rootCmd.AddCommand(&Command{Use: "child", Run: emptyRun})
|
||||||
|
|
||||||
|
output, err := executeCommand(rootCmd)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStringContains(t, output, rootCmd.Long)
|
||||||
|
checkStringContains(t, output, HelpFlag)
|
||||||
|
checkStringContains(t, output, VersionFlag)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestNoRootRunCommandExecutedWithoutVersionSet(t *testing.T) {
|
||||||
|
rootCmd := &Command{Use: "root", Long: "Long description"}
|
||||||
|
rootCmd.AddCommand(&Command{Use: "child", Run: emptyRun})
|
||||||
|
|
||||||
|
output, err := executeCommand(rootCmd)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStringContains(t, output, rootCmd.Long)
|
||||||
|
checkStringContains(t, output, HelpFlag)
|
||||||
|
checkStringOmits(t, output, VersionFlag)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHelpCommandExecutedWithVersionSet(t *testing.T) {
|
||||||
|
rootCmd := &Command{Use: "root", Version: "1.0.0", Long: "Long description", Run: emptyRun}
|
||||||
|
rootCmd.AddCommand(&Command{Use: "child", Run: emptyRun})
|
||||||
|
|
||||||
|
output, err := executeCommand(rootCmd, "help")
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStringContains(t, output, rootCmd.Long)
|
||||||
|
checkStringContains(t, output, HelpFlag)
|
||||||
|
checkStringContains(t, output, VersionFlag)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHelpCommandExecutedWithoutVersionSet(t *testing.T) {
|
||||||
|
rootCmd := &Command{Use: "root", Long: "Long description", Run: emptyRun}
|
||||||
|
rootCmd.AddCommand(&Command{Use: "child", Run: emptyRun})
|
||||||
|
|
||||||
|
output, err := executeCommand(rootCmd, "help")
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStringContains(t, output, rootCmd.Long)
|
||||||
|
checkStringContains(t, output, HelpFlag)
|
||||||
|
checkStringOmits(t, output, VersionFlag)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHelpflagCommandExecutedWithVersionSet(t *testing.T) {
|
||||||
|
rootCmd := &Command{Use: "root", Version: "1.0.0", Long: "Long description", Run: emptyRun}
|
||||||
|
rootCmd.AddCommand(&Command{Use: "child", Run: emptyRun})
|
||||||
|
|
||||||
|
output, err := executeCommand(rootCmd, HelpFlag)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStringContains(t, output, rootCmd.Long)
|
||||||
|
checkStringContains(t, output, HelpFlag)
|
||||||
|
checkStringContains(t, output, VersionFlag)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHelpflagCommandExecutedWithoutVersionSet(t *testing.T) {
|
||||||
|
rootCmd := &Command{Use: "root", Long: "Long description", Run: emptyRun}
|
||||||
|
rootCmd.AddCommand(&Command{Use: "child", Run: emptyRun})
|
||||||
|
|
||||||
|
output, err := executeCommand(rootCmd, HelpFlag)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStringContains(t, output, rootCmd.Long)
|
||||||
|
checkStringContains(t, output, HelpFlag)
|
||||||
|
checkStringOmits(t, output, VersionFlag)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue