@@ -51,14 +51,14 @@ func TestSocketPath_ExtractsUnixPath(t *testing.T) {
5151 cli , err := client .NewClientWithOpts (client .WithHost ("unix:///home/user/.colima/default/docker.sock" ))
5252 require .NoError (t , err )
5353 rt := & DockerRuntime {client : cli }
54- assert .Equal (t , "/var/run /docker.sock" , rt .SocketPath ())
54+ assert .Equal (t , "/home/user/.colima/default /docker.sock" , rt .SocketPath ())
5555 })
5656
5757 t .Run ("orbstack socket returns daemon path" , func (t * testing.T ) {
5858 cli , err := client .NewClientWithOpts (client .WithHost ("unix:///Users/user/.orbstack/run/docker.sock" ))
5959 require .NoError (t , err )
6060 rt := & DockerRuntime {client : cli }
61- assert .Equal (t , "/var /run/docker.sock" , rt .SocketPath ())
61+ assert .Equal (t , "/Users/user/.orbstack /run/docker.sock" , rt .SocketPath ())
6262 })
6363}
6464
@@ -69,3 +69,48 @@ func TestSocketPath_ReturnsEmptyForTCPHost(t *testing.T) {
6969
7070 assert .Equal (t , "" , rt .SocketPath ())
7171}
72+
73+ func TestSocketPath_VMDetection (t * testing.T ) {
74+ home , err := os .UserHomeDir ()
75+ require .NoError (t , err )
76+
77+ t .Run ("colima socket exists returns remapped path" , func (t * testing.T ) {
78+ colimaSock := filepath .Join (home , ".colima" , "default" , "docker.sock" )
79+ require .NoError (t , os .MkdirAll (filepath .Dir (colimaSock ), 0o755 ))
80+ f , err := os .Create (colimaSock )
81+ require .NoError (t , err )
82+ f .Close ()
83+ defer os .Remove (colimaSock )
84+
85+ cli , err := client .NewClientWithOpts (client .WithHost ("unix://" + colimaSock ))
86+ require .NoError (t , err )
87+ rt := & DockerRuntime {client : cli }
88+ assert .Equal (t , "/var/run/docker.sock" , rt .SocketPath ())
89+ })
90+
91+ t .Run ("orbstack socket exists returns remapped path" , func (t * testing.T ) {
92+ orbstackSock := filepath .Join (home , ".orbstack" , "run" , "docker.sock" )
93+ require .NoError (t , os .MkdirAll (filepath .Dir (orbstackSock ), 0o755 ))
94+ f , err := os .Create (orbstackSock )
95+ require .NoError (t , err )
96+ f .Close ()
97+ defer os .Remove (orbstackSock )
98+
99+ cli , err := client .NewClientWithOpts (client .WithHost ("unix://" + orbstackSock ))
100+ require .NoError (t , err )
101+ rt := & DockerRuntime {client : cli }
102+ assert .Equal (t , "/var/run/docker.sock" , rt .SocketPath ())
103+ })
104+
105+ t .Run ("rootless socket exists returns actual path" , func (t * testing.T ) {
106+ // Use a non-VM socket path (short path to avoid Docker client limit)
107+ rootlessSock := "/tmp/lstk-docker.sock"
108+ require .NoError (t , os .WriteFile (rootlessSock , nil , 0o600 ))
109+ defer os .Remove (rootlessSock )
110+
111+ cli , err := client .NewClientWithOpts (client .WithHost ("unix://" + rootlessSock ))
112+ require .NoError (t , err )
113+ rt := & DockerRuntime {client : cli }
114+ assert .Equal (t , rootlessSock , rt .SocketPath ())
115+ })
116+ }
0 commit comments