summaryrefslogtreecommitdiffstats
path: root/cmd/mattermost/commands/cmdtestlib.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mattermost/commands/cmdtestlib.go')
-rw-r--r--cmd/mattermost/commands/cmdtestlib.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/cmd/mattermost/commands/cmdtestlib.go b/cmd/mattermost/commands/cmdtestlib.go
new file mode 100644
index 000000000..93dcc9566
--- /dev/null
+++ b/cmd/mattermost/commands/cmdtestlib.go
@@ -0,0 +1,45 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package commands
+
+import (
+ "flag"
+ "fmt"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+var coverprofileCounters map[string]int = make(map[string]int)
+
+func execArgs(t *testing.T, args []string) []string {
+ ret := []string{"-test.run", "ExecCommand"}
+ if coverprofile := flag.Lookup("test.coverprofile").Value.String(); coverprofile != "" {
+ dir := filepath.Dir(coverprofile)
+ base := filepath.Base(coverprofile)
+ baseParts := strings.SplitN(base, ".", 2)
+ coverprofileCounters[t.Name()] = coverprofileCounters[t.Name()] + 1
+ baseParts[0] = fmt.Sprintf("%v-%v-%v", baseParts[0], t.Name(), coverprofileCounters[t.Name()])
+ ret = append(ret, "-test.coverprofile", filepath.Join(dir, strings.Join(baseParts, ".")))
+ }
+ return append(append(ret, "--", "--disableconfigwatch"), args...)
+}
+
+func CheckCommand(t *testing.T, args ...string) string {
+ path, err := os.Executable()
+ require.NoError(t, err)
+ output, err := exec.Command(path, execArgs(t, args)...).CombinedOutput()
+ require.NoError(t, err, string(output))
+ return strings.TrimSpace(strings.TrimSuffix(strings.TrimSpace(string(output)), "PASS"))
+}
+
+func RunCommand(t *testing.T, args ...string) error {
+ path, err := os.Executable()
+ require.NoError(t, err)
+ return exec.Command(path, execArgs(t, args)...).Run()
+}