...
1
2
3
4
19
20 package filesystem
21
22 import (
23 "math/rand"
24 "net"
25 "os"
26 "sync"
27 "testing"
28 "time"
29
30 winio "github.com/Microsoft/go-winio"
31 "github.com/stretchr/testify/assert"
32 "github.com/stretchr/testify/require"
33 )
34
35 func TestIsUnixDomainSocketPipe(t *testing.T) {
36 generatePipeName := func(suffixLen int) string {
37 rand.Seed(time.Now().UnixNano())
38 letter := []rune("abcdef0123456789")
39 b := make([]rune, suffixLen)
40 for i := range b {
41 b[i] = letter[rand.Intn(len(letter))]
42 }
43 return "\\\\.\\pipe\\test-pipe" + string(b)
44 }
45 testFile := generatePipeName(4)
46 pipeln, err := winio.ListenPipe(testFile, &winio.PipeConfig{SecurityDescriptor: "D:P(A;;GA;;;BA)(A;;GA;;;SY)"})
47 defer pipeln.Close()
48
49 require.NoErrorf(t, err, "Failed to listen on named pipe for test purposes: %v", err)
50 result, err := IsUnixDomainSocket(testFile)
51 assert.NoError(t, err, "Unexpected error from IsUnixDomainSocket.")
52 assert.False(t, result, "Unexpected result: true from IsUnixDomainSocket.")
53 }
54
55
56
57
58 func TestPendingUnixDomainSocket(t *testing.T) {
59
60
61
62
63 f, err := os.CreateTemp("", "test-domain-socket")
64 require.NoErrorf(t, err, "Failed to create file for test purposes: %v", err)
65 testFile := f.Name()
66 f.Close()
67
68
69 wg := sync.WaitGroup{}
70 wg.Add(1)
71 go func() {
72 result, err := IsUnixDomainSocket(testFile)
73 assert.Nil(t, err, "Unexpected error from IsUnixDomainSocket: %v", err)
74 assert.True(t, result, "Unexpected result: false from IsUnixDomainSocket.")
75 wg.Done()
76 }()
77
78
79 time.Sleep(socketDialRetryPeriod)
80
81
82 os.Remove(testFile)
83 ta, err := net.ResolveUnixAddr("unix", testFile)
84 require.NoError(t, err, "Failed to ResolveUnixAddr.")
85 unixln, err := net.ListenUnix("unix", ta)
86 require.NoError(t, err, "Failed to ListenUnix.")
87
88
89 wg.Wait()
90 unixln.Close()
91 }
92
93 func TestAbsWithSlash(t *testing.T) {
94
95 assert.True(t, IsAbs("/test"))
96 assert.True(t, IsAbs("\\test"))
97
98 assert.False(t, IsAbs("./local"))
99 assert.False(t, IsAbs("local"))
100 }
101
View as plain text