Skip to content

Commit

Permalink
misc/cgo/testshared: run tests only in GOPATH mode
Browse files Browse the repository at this point in the history
-buildmode=shared installs shared libraries into GOROOT
and expects to reuse them across builds.
Builds in module mode, however, each have their own set of
dependencies (determined by the module's requirements), so in general
cannot share dependencies with a single GOROOT.

Ideally in the long term we would like to eliminate -buildmode=shared
entirely (see #47788), but first we need a replacement for the subset
of use-cases where it still works today.

In the meantime, we should run these tests only in GOPATH mode.
Non-main packages in module mode should not be installed to
GOPATH/pkg, but due to #37015 they were installed there anyway,
and this test heavily relies on installing non-main packages.

For #37015.

Change-Id: I7c5d90b4075d6f33e3505d6a8f12752309ae5c03
Reviewed-on: https://go-review.googlesource.com/c/go/+/417194
Run-TryBot: Bryan Mills <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Auto-Submit: Bryan Mills <[email protected]>
  • Loading branch information
Bryan C. Mills authored and gopherbot committed Jul 13, 2022
1 parent feada53 commit f71f3d1
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions misc/cgo/testshared/shared_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,15 @@ func testMain(m *testing.M) (int, error) {
defer os.RemoveAll(workDir)
}

// -buildmode=shared fundamentally does not work in module mode.
// (It tries to share package dependencies across builds, but in module mode
// each module has its own distinct set of dependency versions.)
// We would like to eliminate it (see https://go.dev/issue/47788),
// but first need to figure out a replacement that covers the small subset
// of use-cases where -buildmode=shared still works today.
// For now, run the tests in GOPATH mode only.
os.Setenv("GO111MODULE", "off")

// Some tests need to edit the source in GOPATH, so copy this directory to a
// temporary directory and chdir to that.
gopath := filepath.Join(workDir, "gopath")
Expand Down

0 comments on commit f71f3d1

Please sign in to comment.