]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: process -debug-trace flag for cmd/test and cmd/vet
authorMichael Matloob <matloob@golang.org>
Mon, 22 Jun 2020 23:02:00 +0000 (19:02 -0400)
committerMichael Matloob <matloob@golang.org>
Mon, 17 Aug 2020 18:32:15 +0000 (18:32 +0000)
These commands are build-like commands that do their own flag
processing, so the value of debug-trace isn't available until
the command starts running. Start tracing in the cmd's run
function.

Updates #38714

Change-Id: I4d633e6ee907bf09feac52c2aff3daceb9b20e12
Reviewed-on: https://go-review.googlesource.com/c/go/+/248324
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/test/test.go
src/cmd/go/internal/vet/vet.go

index cda51053fb14cb520f9c01685e17887f4367c8c8..9c120e08dccced8b4084c7a2959222a47a7f42d7 100644 (file)
@@ -31,6 +31,7 @@ import (
        "cmd/go/internal/lockedfile"
        "cmd/go/internal/modload"
        "cmd/go/internal/str"
+       "cmd/go/internal/trace"
        "cmd/go/internal/work"
        "cmd/internal/test2json"
 )
@@ -571,6 +572,23 @@ func runTest(ctx context.Context, cmd *base.Command, args []string) {
 
        pkgArgs, testArgs = testFlags(args)
 
+       if cfg.DebugTrace != "" {
+               var close func() error
+               var err error
+               ctx, close, err = trace.Start(ctx, cfg.DebugTrace)
+               if err != nil {
+                       base.Fatalf("failed to start trace: %v", err)
+               }
+               defer func() {
+                       if err := close(); err != nil {
+                               base.Fatalf("failed to stop trace: %v", err)
+                       }
+               }()
+       }
+
+       ctx, span := trace.StartSpan(ctx, fmt.Sprint("Running ", cmd.Name(), " command"))
+       defer span.Done()
+
        work.FindExecCmd() // initialize cached result
 
        work.BuildInit()
index b3065722818bb5023928e5594e979e144886e4f5..cf2c8d59e805ac3ebc2c789aaf4336898df344db 100644 (file)
@@ -6,12 +6,16 @@
 package vet
 
 import (
+       "context"
+       "fmt"
+       "path/filepath"
+
        "cmd/go/internal/base"
+       "cmd/go/internal/cfg"
        "cmd/go/internal/load"
        "cmd/go/internal/modload"
+       "cmd/go/internal/trace"
        "cmd/go/internal/work"
-       "context"
-       "path/filepath"
 )
 
 // Break init loop.
@@ -54,6 +58,23 @@ func runVet(ctx context.Context, cmd *base.Command, args []string) {
 
        vetFlags, pkgArgs := vetFlags(args)
 
+       if cfg.DebugTrace != "" {
+               var close func() error
+               var err error
+               ctx, close, err = trace.Start(ctx, cfg.DebugTrace)
+               if err != nil {
+                       base.Fatalf("failed to start trace: %v", err)
+               }
+               defer func() {
+                       if err := close(); err != nil {
+                               base.Fatalf("failed to stop trace: %v", err)
+                       }
+               }()
+       }
+
+       ctx, span := trace.StartSpan(ctx, fmt.Sprint("Running ", cmd.Name(), " command"))
+       defer span.Done()
+
        work.BuildInit()
        work.VetFlags = vetFlags
        if len(vetFlags) > 0 {