106 lines
3.5 KiB
Go
106 lines
3.5 KiB
Go
// Copyright 2013-2023 The Cobra Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package doc
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func emptyRun(*cobra.Command, []string) {}
|
|
|
|
func init() {
|
|
rootCmd.PersistentFlags().StringP("rootflag", "r", "two", "")
|
|
rootCmd.PersistentFlags().StringP("strtwo", "t", "two", "help message for parent flag strtwo")
|
|
|
|
echoCmd.PersistentFlags().StringP("strone", "s", "one", "help message for flag strone")
|
|
echoCmd.PersistentFlags().BoolP("persistentbool", "p", false, "help message for flag persistentbool")
|
|
echoCmd.Flags().IntP("intone", "i", 123, "help message for flag intone")
|
|
echoCmd.Flags().BoolP("boolone", "b", true, "help message for flag boolone")
|
|
|
|
timesCmd.PersistentFlags().StringP("strtwo", "t", "2", "help message for child flag strtwo")
|
|
timesCmd.Flags().IntP("inttwo", "j", 234, "help message for flag inttwo")
|
|
timesCmd.Flags().BoolP("booltwo", "c", false, "help message for flag booltwo")
|
|
|
|
printCmd.PersistentFlags().StringP("strthree", "s", "three", "help message for flag strthree")
|
|
printCmd.Flags().IntP("intthree", "i", 345, "help message for flag intthree")
|
|
printCmd.Flags().BoolP("boolthree", "b", true, "help message for flag boolthree")
|
|
|
|
echoCmd.AddCommand(timesCmd, echoSubCmd, deprecatedCmd)
|
|
rootCmd.AddCommand(printCmd, echoCmd, dummyCmd)
|
|
}
|
|
|
|
var rootCmd = &cobra.Command{
|
|
Use: "root",
|
|
Short: "Root short description",
|
|
Long: "Root long description",
|
|
Run: emptyRun,
|
|
}
|
|
|
|
var echoCmd = &cobra.Command{
|
|
Use: "echo [string to echo]",
|
|
Aliases: []string{"say"},
|
|
Short: "Echo anything to the screen",
|
|
Long: "an utterly useless command for testing",
|
|
Example: "Just run cobra-test echo",
|
|
}
|
|
|
|
var echoSubCmd = &cobra.Command{
|
|
Use: "echosub [string to print]",
|
|
Short: "second sub command for echo",
|
|
Long: "an absolutely utterly useless command for testing gendocs!.",
|
|
Run: emptyRun,
|
|
}
|
|
|
|
var timesCmd = &cobra.Command{
|
|
Use: "times [# times] [string to echo]",
|
|
SuggestFor: []string{"counts"},
|
|
Short: "Echo anything to the screen more times",
|
|
Long: `a slightly useless command for testing.`,
|
|
Run: emptyRun,
|
|
}
|
|
|
|
var deprecatedCmd = &cobra.Command{
|
|
Use: "deprecated [can't do anything here]",
|
|
Short: "A command which is deprecated",
|
|
Long: `an absolutely utterly useless command for testing deprecation!.`,
|
|
Deprecated: "Please use echo instead",
|
|
}
|
|
|
|
var printCmd = &cobra.Command{
|
|
Use: "print [string to print]",
|
|
Short: "Print anything to the screen",
|
|
Long: `an absolutely utterly useless command for testing.`,
|
|
}
|
|
|
|
var dummyCmd = &cobra.Command{
|
|
Use: "dummy [action]",
|
|
Short: "Performs a dummy action",
|
|
}
|
|
|
|
func checkStringContains(t *testing.T, got, expected string) {
|
|
if !strings.Contains(got, expected) {
|
|
t.Errorf("Expected to contain: \n %v\nGot:\n %v\n", expected, got)
|
|
}
|
|
}
|
|
|
|
func checkStringOmits(t *testing.T, got, expected string) {
|
|
if strings.Contains(got, expected) {
|
|
t.Errorf("Expected to not contain: \n %v\nGot: %v", expected, got)
|
|
}
|
|
}
|