Skip to content

Commit d7c8657

Browse files
committed
dup symlink if needed
1 parent bb86099 commit d7c8657

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

src/cmd/internal/moddeps/moddeps_test.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"io/fs"
1414
"os"
1515
"path/filepath"
16+
"runtime"
1617
"slices"
1718
"sort"
1819
"strings"
@@ -217,7 +218,7 @@ func TestAllDependencies(t *testing.T) {
217218
}
218219
// TODO(golang.org/issue/43440): Check anything else influenced by dependency versions.
219220

220-
diff, err := testenv.Command(t, "diff", "--recursive", "--no-dereference", "--unified", r.Dir, m.Dir).CombinedOutput()
221+
diff, err := testenv.Command(t, "diff", "--recursive", "--unified", r.Dir, m.Dir).CombinedOutput()
221222
if err != nil || len(diff) != 0 {
222223
t.Errorf(`Module %s in %s is not tidy (-want +got):
223224
@@ -284,6 +285,18 @@ func makeGOROOTCopy(t *testing.T) string {
284285
return err
285286
}
286287
perm = info.Mode() & os.ModePerm
288+
289+
// dup symlink
290+
target, err := os.Readlink(src)
291+
if err != nil {
292+
return err
293+
}
294+
// create a symlink to the target directory
295+
err = os.Symlink(target, dst)
296+
if err != nil {
297+
return err
298+
}
299+
return filepath.SkipDir
287300
}
288301

289302
// If it's a directory, make a corresponding directory.
@@ -311,6 +324,9 @@ func makeGOROOTCopy(t *testing.T) string {
311324
return d.Close()
312325
})
313326
if err != nil {
327+
if _, ok := err.(*os.LinkError); ok && runtime.GOOS == "windows" {
328+
t.Skipf("skipping because of symlink error on Windows: %v", err)
329+
}
314330
t.Fatal(err)
315331
}
316332
t.Logf("copied GOROOT from %s to %s", testenv.GOROOT(t), gorootCopyDir)

0 commit comments

Comments
 (0)