mirror of
https://github.com/spf13/cobra
synced 2024-07-01 08:09:07 +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.
54 lines
1.1 KiB
Go
54 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)
|
|
}
|
|
}
|
|
}
|