diff --git a/cli/command/telemetry_docker.go b/cli/command/telemetry_docker.go index 8c50dc3ef68e..c3612a7e0c7e 100644 --- a/cli/command/telemetry_docker.go +++ b/cli/command/telemetry_docker.go @@ -180,7 +180,7 @@ func toWslPath(s string) string { if !ok { return "" } - return fmt.Sprintf("mnt/%s%s", drive, p) + return fmt.Sprintf("mnt/%s%s", strings.ToLower(drive), p) } func parseUNCPath(s string) (drive, p string, ok bool) { diff --git a/cli/command/telemetry_docker_test.go b/cli/command/telemetry_docker_test.go index c6501e4ed9c5..bb0ba7c22329 100644 --- a/cli/command/telemetry_docker_test.go +++ b/cli/command/telemetry_docker_test.go @@ -1,6 +1,7 @@ package command import ( + "io/fs" "net/url" "testing" "testing/fstest" @@ -9,21 +10,48 @@ import ( ) func TestWslSocketPath(t *testing.T) { - u, err := url.Parse("unix:////./c:/my/file/path") - assert.NilError(t, err) + testCases := []struct { + doc string + fs fs.FS + url string + expected string + }{ + { + doc: "filesystem where WSL path does not exist", + fs: fstest.MapFS{ + "my/file/path": {}, + }, + url: "unix:////./c:/my/file/path", + expected: "", + }, + { + doc: "filesystem where WSL path exists", + fs: fstest.MapFS{ + "mnt/c/my/file/path": {}, + }, + url: "unix:////./c:/my/file/path", + expected: "/mnt/c/my/file/path", + }, + { + doc: "filesystem where WSL path exists uppercase URL", + fs: fstest.MapFS{ + "mnt/c/my/file/path": {}, + }, + url: "unix:////./C:/my/file/path", + expected: "/mnt/c/my/file/path", + }, + } - // Ensure host is empty. - assert.Equal(t, u.Host, "") + for _, tc := range testCases { + t.Run(tc.doc, func(t *testing.T) { + u, err := url.Parse(tc.url) + assert.NilError(t, err) + // Ensure host is empty. + assert.Equal(t, u.Host, "") - // Use a filesystem where the WSL path exists. - fs := fstest.MapFS{ - "mnt/c/my/file/path": {}, - } - assert.Equal(t, wslSocketPath(u.Path, fs), "/mnt/c/my/file/path") + result := wslSocketPath(u.Path, tc.fs) - // Use a filesystem where the WSL path doesn't exist. - fs = fstest.MapFS{ - "my/file/path": {}, + assert.Equal(t, result, tc.expected) + }) } - assert.Equal(t, wslSocketPath(u.Path, fs), "") }