]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: ignore the workspace when running a package at a specified version
authorBryan C. Mills <bcmills@google.com>
Wed, 2 Mar 2022 22:14:55 +0000 (17:14 -0500)
committerBryan Mills <bcmills@google.com>
Thu, 3 Mar 2022 02:46:20 +0000 (02:46 +0000)
For #51390

Change-Id: I805e66809b2aafb48f7040dee72910dd7d6c1396
Reviewed-on: https://go-review.googlesource.com/c/go/+/388917
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
src/cmd/go/internal/modload/init.go
src/cmd/go/internal/run/run.go
src/cmd/go/testdata/script/run_work_versioned.txt [new file with mode: 0644]

index a07066696e8ab7bd4d971ae9950c0843dc3da8c4..f960edd251d90a11b925b5276a024fb179e9350e 100644 (file)
@@ -288,6 +288,11 @@ func BinDir() string {
 // operate in workspace mode. It should not be called by other commands,
 // for example 'go mod tidy', that don't operate in workspace mode.
 func InitWorkfile() {
+       if RootMode == NoRoot {
+               workFilePath = ""
+               return
+       }
+
        switch gowork := cfg.Getenv("GOWORK"); gowork {
        case "off":
                workFilePath = ""
index 00a3e4b332f781c2d1f1171da7e93bdfb71fef7a..312b49ef5dfa33828cf65c9ac373dfad88d86e8f 100644 (file)
@@ -73,8 +73,6 @@ func printStderr(args ...any) (int, error) {
 }
 
 func runRun(ctx context.Context, cmd *base.Command, args []string) {
-       modload.InitWorkfile()
-
        if shouldUseOutsideModuleMode(args) {
                // Set global module flags for 'go run cmd@version'.
                // This must be done before modload.Init, but we need to call work.BuildInit
@@ -84,7 +82,10 @@ func runRun(ctx context.Context, cmd *base.Command, args []string) {
                modload.RootMode = modload.NoRoot
                modload.AllowMissingModuleImports()
                modload.Init()
+       } else {
+               modload.InitWorkfile()
        }
+
        work.BuildInit()
        var b work.Builder
        b.Init()
diff --git a/src/cmd/go/testdata/script/run_work_versioned.txt b/src/cmd/go/testdata/script/run_work_versioned.txt
new file mode 100644 (file)
index 0000000..eb0f22d
--- /dev/null
@@ -0,0 +1,16 @@
+[short] skip
+go run example.com/printversion@v0.1.0
+stdout '^main is example.com/printversion v0.1.0$'
+
+-- go.work --
+go 1.18
+
+use (
+       .
+)
+-- go.mod --
+module example
+
+go 1.18
+
+require example.com/printversion v1.0.0