From 9856afa77042d901288845f31c79885ba68da464 Mon Sep 17 00:00:00 2001 From: Ian Alexander Date: Tue, 13 May 2025 12:41:36 -0400 Subject: [PATCH] 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 --- src/cmd/internal/script/scripttest/setup.go | 10 ++++++++++ 1 file changed, 10 insertions(+) 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) -- 2.51.0