From: Kir Kolyshkin Date: Fri, 30 Aug 2024 00:35:13 +0000 (-0700) Subject: internal/testenv: simplify hasSymlink for windows X-Git-Tag: go1.24rc1~1083 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7300b9e633f8b8cb49e2e95f4c4693657ded3451;p=gostls13.git internal/testenv: simplify hasSymlink for windows 1. Combine two functions into one. 2. Use errors.Is to check for wrapped errors. 3. Use sync.OnceValues. Change-Id: I25f55d31bb658ff08da209b1740e9dff579cca69 Reviewed-on: https://go-review.googlesource.com/c/go/+/609797 Reviewed-by: Ian Lance Taylor Auto-Submit: Ian Lance Taylor Reviewed-by: Alan Donovan LUCI-TryBot-Result: Go LUCI Commit-Queue: Ian Lance Taylor --- diff --git a/src/internal/testenv/testenv_windows.go b/src/internal/testenv/testenv_windows.go index 4802b13951..eed53cdfb2 100644 --- a/src/internal/testenv/testenv_windows.go +++ b/src/internal/testenv/testenv_windows.go @@ -5,16 +5,14 @@ package testenv import ( + "errors" "os" "path/filepath" "sync" "syscall" ) -var symlinkOnce sync.Once -var winSymlinkErr error - -func initWinHasSymlink() { +var hasSymlink = sync.OnceValues(func() (bool, string) { tmpdir, err := os.MkdirTemp("", "symtest") if err != nil { panic("failed to create temp directory: " + err.Error()) @@ -22,26 +20,13 @@ func initWinHasSymlink() { defer os.RemoveAll(tmpdir) err = os.Symlink("target", filepath.Join(tmpdir, "symlink")) - if err != nil { - err = err.(*os.LinkError).Err - switch err { - case syscall.EWINDOWS, syscall.ERROR_PRIVILEGE_NOT_HELD: - winSymlinkErr = err - } - } -} - -func hasSymlink() (ok bool, reason string) { - symlinkOnce.Do(initWinHasSymlink) - - switch winSymlinkErr { - case nil: + switch { + case err == nil: return true, "" - case syscall.EWINDOWS: + case errors.Is(err, syscall.EWINDOWS): return false, ": symlinks are not supported on your version of Windows" - case syscall.ERROR_PRIVILEGE_NOT_HELD: + case errors.Is(err, syscall.ERROR_PRIVILEGE_NOT_HELD): return false, ": you don't have enough privileges to create symlinks" } - return false, "" -} +})