summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/spf13/cobra/cobra/cmd/init_test.go')
-rw-r--r--vendor/github.com/spf13/cobra/cobra/cmd/init_test.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go b/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go
new file mode 100644
index 000000000..9a918b9b4
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/cobra/cmd/init_test.go
@@ -0,0 +1,74 @@
+package cmd
+
+import (
+ "errors"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+// TestGoldenInitCmd initializes the project "github.com/spf13/testproject"
+// in GOPATH and compares the content of files in initialized project with
+// appropriate golden files ("testdata/*.golden").
+// Use -update to update existing golden files.
+func TestGoldenInitCmd(t *testing.T) {
+ projectName := "github.com/spf13/testproject"
+ project := NewProject(projectName)
+ defer os.RemoveAll(project.AbsPath())
+
+ os.Args = []string{"cobra", "init", projectName}
+ if err := rootCmd.Execute(); err != nil {
+ t.Fatal("Error by execution:", err)
+ }
+
+ expectedFiles := []string{".", "cmd", "LICENSE", "main.go", "cmd/root.go"}
+ gotFiles := []string{}
+
+ // Check project file hierarchy and compare the content of every single file
+ // with appropriate golden file.
+ err := filepath.Walk(project.AbsPath(), func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+
+ // Make path relative to project.AbsPath().
+ // E.g. path = "/home/user/go/src/github.com/spf13/testproject/cmd/root.go"
+ // then it returns just "cmd/root.go".
+ relPath, err := filepath.Rel(project.AbsPath(), path)
+ if err != nil {
+ return err
+ }
+ relPath = filepath.ToSlash(relPath)
+ gotFiles = append(gotFiles, relPath)
+ goldenPath := filepath.Join("testdata", filepath.Base(path)+".golden")
+
+ switch relPath {
+ // Know directories.
+ case ".", "cmd":
+ return nil
+ // Known files.
+ case "LICENSE", "main.go", "cmd/root.go":
+ if *update {
+ got, err := ioutil.ReadFile(path)
+ if err != nil {
+ return err
+ }
+ if err := ioutil.WriteFile(goldenPath, got, 0644); err != nil {
+ t.Fatal("Error while updating file:", err)
+ }
+ }
+ return compareFiles(path, goldenPath)
+ }
+ // Unknown file.
+ return errors.New("unknown file: " + path)
+ })
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ // Check if some files lack.
+ if err := checkLackFiles(expectedFiles, gotFiles); err != nil {
+ t.Fatal(err)
+ }
+}