From: Ian Alexander Date: Tue, 13 May 2025 16:41:36 +0000 (-0400) Subject: cmd/internal/script: fix copying directory when symlink fails X-Git-Tag: go1.25rc1~277 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9856afa77042d901288845f31c79885ba68da464;p=gostls13.git cmd/internal/script: fix copying directory when symlink fails The change fixes `linkOrCopy` to work on systems wihtout symlinks, when copying directories. This was originally noticed on Windows systems when the user did not have admin privs. Fixes #73692 Change-Id: I8ca66d65e99433ad38e70314abfabafd43794b79 Reviewed-on: https://go-review.googlesource.com/c/go/+/672275 Reviewed-by: Michael Matloob Reviewed-by: Michael Matloob LUCI-TryBot-Result: Go LUCI --- diff --git a/src/cmd/internal/script/scripttest/setup.go b/src/cmd/internal/script/scripttest/setup.go index 2826b56e87..f9d650af1c 100644 --- a/src/cmd/internal/script/scripttest/setup.go +++ b/src/cmd/internal/script/scripttest/setup.go @@ -114,6 +114,16 @@ func linkOrCopy(t *testing.T, src, dst string) { if err == nil { return } + fi, err := os.Stat(src) + if err != nil { + t.Fatalf("copying %s to %s: %v", src, dst, err) + } + if fi.IsDir() { + if err := os.CopyFS(dst, os.DirFS(src)); err != nil { + t.Fatalf("copying %s to %s: %v", src, dst, err) + } + return + } srcf, err := os.Open(src) if err != nil { t.Fatalf("copying %s to %s: %v", src, dst, err)