|
8 | 8 | "context"
|
9 | 9 | "fmt"
|
10 | 10 | "net"
|
| 11 | + "os/user" |
11 | 12 | "runtime"
|
12 | 13 | "strings"
|
13 | 14 | "sync"
|
@@ -102,6 +103,39 @@ func TestNewServer_ExecuteShebang(t *testing.T) {
|
102 | 103 | require.NoError(t, err)
|
103 | 104 | require.Equal(t, "test\n", string(output))
|
104 | 105 | })
|
| 106 | + t.Run("CustomEnvInfoer", func(t *testing.T) { |
| 107 | + t.Parallel() |
| 108 | + ei := &fakeEnvInfoer{ |
| 109 | + CurrentUserFn: func() (u *user.User, err error) { |
| 110 | + return nil, assert.AnError |
| 111 | + }, |
| 112 | + } |
| 113 | + _, err := s.CreateCommand(ctx, `whatever`, nil, ei) |
| 114 | + require.ErrorIs(t, err, assert.AnError) |
| 115 | + }) |
| 116 | +} |
| 117 | + |
| 118 | +type fakeEnvInfoer struct { |
| 119 | + CurrentUserFn func() (*user.User, error) |
| 120 | + EnvironFn func() []string |
| 121 | + UserHomeDirFn func() (string, error) |
| 122 | + UserShellFn func(string) (string, error) |
| 123 | +} |
| 124 | + |
| 125 | +func (f *fakeEnvInfoer) CurrentUser() (u *user.User, err error) { |
| 126 | + return f.CurrentUserFn() |
| 127 | +} |
| 128 | + |
| 129 | +func (f *fakeEnvInfoer) Environ() []string { |
| 130 | + return f.EnvironFn() |
| 131 | +} |
| 132 | + |
| 133 | +func (f *fakeEnvInfoer) UserHomeDir() (string, error) { |
| 134 | + return f.UserHomeDirFn() |
| 135 | +} |
| 136 | + |
| 137 | +func (f *fakeEnvInfoer) UserShell(u string) (string, error) { |
| 138 | + return f.UserShellFn(u) |
105 | 139 | }
|
106 | 140 |
|
107 | 141 | func TestNewServer_CloseActiveConnections(t *testing.T) {
|
|
0 commit comments