Skip to content

Commit ebccba7

Browse files
committed
cmd/go: process -debug-trace flag for cmd/test and cmd/vet
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 <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]>
1 parent 38fea3a commit ebccba7

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

src/cmd/go/internal/test/test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"cmd/go/internal/lockedfile"
3232
"cmd/go/internal/modload"
3333
"cmd/go/internal/str"
34+
"cmd/go/internal/trace"
3435
"cmd/go/internal/work"
3536
"cmd/internal/test2json"
3637
)
@@ -571,6 +572,23 @@ func runTest(ctx context.Context, cmd *base.Command, args []string) {
571572

572573
pkgArgs, testArgs = testFlags(args)
573574

575+
if cfg.DebugTrace != "" {
576+
var close func() error
577+
var err error
578+
ctx, close, err = trace.Start(ctx, cfg.DebugTrace)
579+
if err != nil {
580+
base.Fatalf("failed to start trace: %v", err)
581+
}
582+
defer func() {
583+
if err := close(); err != nil {
584+
base.Fatalf("failed to stop trace: %v", err)
585+
}
586+
}()
587+
}
588+
589+
ctx, span := trace.StartSpan(ctx, fmt.Sprint("Running ", cmd.Name(), " command"))
590+
defer span.Done()
591+
574592
work.FindExecCmd() // initialize cached result
575593

576594
work.BuildInit()

src/cmd/go/internal/vet/vet.go

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
package vet
77

88
import (
9+
"context"
10+
"fmt"
11+
"path/filepath"
12+
913
"cmd/go/internal/base"
14+
"cmd/go/internal/cfg"
1015
"cmd/go/internal/load"
1116
"cmd/go/internal/modload"
17+
"cmd/go/internal/trace"
1218
"cmd/go/internal/work"
13-
"context"
14-
"path/filepath"
1519
)
1620

1721
// Break init loop.
@@ -54,6 +58,23 @@ func runVet(ctx context.Context, cmd *base.Command, args []string) {
5458

5559
vetFlags, pkgArgs := vetFlags(args)
5660

61+
if cfg.DebugTrace != "" {
62+
var close func() error
63+
var err error
64+
ctx, close, err = trace.Start(ctx, cfg.DebugTrace)
65+
if err != nil {
66+
base.Fatalf("failed to start trace: %v", err)
67+
}
68+
defer func() {
69+
if err := close(); err != nil {
70+
base.Fatalf("failed to stop trace: %v", err)
71+
}
72+
}()
73+
}
74+
75+
ctx, span := trace.StartSpan(ctx, fmt.Sprint("Running ", cmd.Name(), " command"))
76+
defer span.Done()
77+
5778
work.BuildInit()
5879
work.VetFlags = vetFlags
5980
if len(vetFlags) > 0 {

0 commit comments

Comments
 (0)