summaryrefslogtreecommitdiff
path: root/internal/executable/executable_test.go
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2019-10-17 12:04:52 +0100
committerNick Thomas <nick@gitlab.com>2019-10-18 11:47:25 +0100
commit83d11f4deeb20b852a0af3433190a0f7250a0027 (patch)
tree1a9df18d6f9f59712c6f5c98e995a4918eb94a11 /internal/executable/executable_test.go
parent7d5229db263a62661653431881bef8b46984d0de (diff)
downloadgitlab-shell-83d11f4deeb20b852a0af3433190a0f7250a0027.tar.gz
Move go code up one level
Diffstat (limited to 'internal/executable/executable_test.go')
-rw-r--r--internal/executable/executable_test.go104
1 files changed, 104 insertions, 0 deletions
diff --git a/internal/executable/executable_test.go b/internal/executable/executable_test.go
new file mode 100644
index 0000000..581821d
--- /dev/null
+++ b/internal/executable/executable_test.go
@@ -0,0 +1,104 @@
+package executable
+
+import (
+ "errors"
+ "testing"
+
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/testhelper"
+
+ "github.com/stretchr/testify/require"
+)
+
+type fakeOs struct {
+ OldExecutable func() (string, error)
+ Path string
+ Error error
+}
+
+func (f *fakeOs) Executable() (string, error) {
+ return f.Path, f.Error
+}
+
+func (f *fakeOs) Setup() {
+ f.OldExecutable = osExecutable
+ osExecutable = f.Executable
+}
+
+func (f *fakeOs) Cleanup() {
+ osExecutable = f.OldExecutable
+}
+
+func TestNewSuccess(t *testing.T) {
+ testCases := []struct {
+ desc string
+ fakeOs *fakeOs
+ environment map[string]string
+ expectedRootDir string
+ }{
+ {
+ desc: "GITLAB_SHELL_DIR env var is not defined",
+ fakeOs: &fakeOs{Path: "/tmp/bin/gitlab-shell"},
+ expectedRootDir: "/tmp",
+ },
+ {
+ desc: "GITLAB_SHELL_DIR env var is defined",
+ fakeOs: &fakeOs{Path: "/opt/bin/gitlab-shell"},
+ environment: map[string]string{
+ "GITLAB_SHELL_DIR": "/tmp",
+ },
+ expectedRootDir: "/tmp",
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ restoreEnv := testhelper.TempEnv(tc.environment)
+ defer restoreEnv()
+
+ fake := tc.fakeOs
+ fake.Setup()
+ defer fake.Cleanup()
+
+ result, err := New("gitlab-shell")
+
+ require.NoError(t, err)
+ require.Equal(t, result.Name, "gitlab-shell")
+ require.Equal(t, result.RootDir, tc.expectedRootDir)
+ })
+ }
+}
+
+func TestNewFailure(t *testing.T) {
+ testCases := []struct {
+ desc string
+ fakeOs *fakeOs
+ environment map[string]string
+ }{
+ {
+ desc: "failed to determine executable",
+ fakeOs: &fakeOs{Path: "", Error: errors.New("error")},
+ },
+ {
+ desc: "GITLAB_SHELL_DIR doesn't exist",
+ fakeOs: &fakeOs{Path: "/tmp/bin/gitlab-shell"},
+ environment: map[string]string{
+ "GITLAB_SHELL_DIR": "/tmp/non/existing/directory",
+ },
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.desc, func(t *testing.T) {
+ restoreEnv := testhelper.TempEnv(tc.environment)
+ defer restoreEnv()
+
+ fake := tc.fakeOs
+ fake.Setup()
+ defer fake.Cleanup()
+
+ _, err := New("gitlab-shell")
+
+ require.Error(t, err)
+ })
+ }
+}