From aae1a28a2b2f6171ed936847186500ca4d121db6 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Fri, 29 Sep 2023 12:19:37 -0700 Subject: [PATCH] go.mod: add test that replace directives aren't added in oss Prevent future problems like we earlier with go.mod replace directives (e.g. removing our certstore replace in 6d6cf88d826c or wireguard-go in ea5ee6f87c15fa, both of which were reactions to problems caused by go.mod replace in non-root modules, often because people are using tsnet as a library from another module) Updates #cleanup Change-Id: I766715cfa7ce7021460ba4933bd2fa977c3081d2 Signed-off-by: Brad Fitzpatrick --- gomod_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 gomod_test.go diff --git a/gomod_test.go b/gomod_test.go new file mode 100644 index 000000000..f984b5d6f --- /dev/null +++ b/gomod_test.go @@ -0,0 +1,25 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package tailscaleroot + +import ( + "os" + "testing" + + "golang.org/x/mod/modfile" +) + +func TestGoMod(t *testing.T) { + goMod, err := os.ReadFile("go.mod") + if err != nil { + t.Fatal(err) + } + f, err := modfile.Parse("go.mod", goMod, nil) + if err != nil { + t.Fatal(err) + } + if len(f.Replace) > 0 { + t.Errorf("go.mod has %d replace directives; expect zero in this repo", len(f.Replace)) + } +}