1package execenv
2
3import (
4 "os"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8)
9
10func TestGetIOMode(t *testing.T) {
11 r, w, err := os.Pipe()
12 require.NoError(t, err)
13
14 testcases := []struct {
15 name string
16 in *os.File
17 out *os.File
18 expInMode IOMode
19 expOutMode IOMode
20 }{
21 {
22 name: "neither redirected",
23 in: os.Stdin,
24 out: os.Stdout,
25 expInMode: TerminalIOMode,
26 expOutMode: TerminalIOMode,
27 },
28 {
29 name: "in redirected",
30 in: w,
31 out: os.Stdout,
32 expInMode: TerminalIOMode,
33 expOutMode: TerminalIOMode,
34 },
35 {
36 name: "out redirected",
37 in: os.Stdin,
38 out: r,
39 expInMode: TerminalIOMode,
40 expOutMode: TerminalIOMode,
41 },
42 {
43 name: "both redirected",
44 in: w,
45 out: r,
46 expInMode: PipedOrRedirectedIOMode,
47 expOutMode: PipedOrRedirectedIOMode,
48 },
49 }
50
51 for i := range testcases {
52 testcase := testcases[i]
53
54 t.Run(testcase.name, func(t *testing.T) {
55 t.Parallel()
56
57 env := NewEnv()
58 require.NotNil(t, env)
59 })
60 }
61}