mirror of
https://github.com/spf13/cobra
synced 2025-04-27 00:57:23 +00:00
Cobra and Viper are great together, but it's not uncommon to use them apart. New Cobra users don't know better and including Viper by default adds complexity to the skeleton.
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func TestGoldenAddCmd(t *testing.T) {
|
|
viper.Set("useViper", true)
|
|
command := &Command{
|
|
CmdName: "test",
|
|
CmdParent: parentName,
|
|
Project: getProject(),
|
|
}
|
|
defer os.RemoveAll(command.AbsolutePath)
|
|
|
|
assertNoErr(t, command.Project.Create())
|
|
assertNoErr(t, command.Create())
|
|
|
|
generatedFile := fmt.Sprintf("%s/cmd/%s.go", command.AbsolutePath, command.CmdName)
|
|
goldenFile := fmt.Sprintf("testdata/%s.go.golden", command.CmdName)
|
|
err := compareFiles(generatedFile, goldenFile)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestValidateCmdName(t *testing.T) {
|
|
testCases := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{"cmdName", "cmdName"},
|
|
{"cmd_name", "cmdName"},
|
|
{"cmd-name", "cmdName"},
|
|
{"cmd______Name", "cmdName"},
|
|
{"cmd------Name", "cmdName"},
|
|
{"cmd______name", "cmdName"},
|
|
{"cmd------name", "cmdName"},
|
|
{"cmdName-----", "cmdName"},
|
|
{"cmdname-", "cmdname"},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
got := validateCmdName(testCase.input)
|
|
if testCase.expected != got {
|
|
t.Errorf("Expected %q, got %q", testCase.expected, got)
|
|
}
|
|
}
|
|
}
|