From 5374c1aaf53a2212ca6a27eedc936fa917c5d077 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Thu, 24 Aug 2023 13:16:48 -0400 Subject: [PATCH] cmd/internal/testdir: parse past gofmt'd //go:build lines Also gofmt a test file to make sure the parser works. Fixes #62267. Change-Id: I9b9f12b06bae7df626231000879b5ed7df3cd9ba Reviewed-on: https://go-review.googlesource.com/c/go/+/522635 Reviewed-by: Ian Lance Taylor TryBot-Result: Gopher Robot Auto-Submit: Bryan Mills Run-TryBot: Bryan Mills --- src/cmd/internal/testdir/testdir_test.go | 20 ++++++++++++-------- test/fixedbugs/issue10607.go | 2 ++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/cmd/internal/testdir/testdir_test.go b/src/cmd/internal/testdir/testdir_test.go index bd7785900c..92c8f4c093 100644 --- a/src/cmd/internal/testdir/testdir_test.go +++ b/src/cmd/internal/testdir/testdir_test.go @@ -477,16 +477,20 @@ func (t test) run() error { } src := string(srcBytes) - // Execution recipe stops at first blank line. - action, _, ok := strings.Cut(src, "\n\n") - if !ok { - t.Fatalf("double newline ending execution recipe not found in GOROOT/test/%s", t.goFileName()) + // Execution recipe is contained in a comment in + // the first non-empty line that is not a build constraint. + var action string + for actionSrc := src; action == "" && actionSrc != ""; { + var line string + line, actionSrc, _ = strings.Cut(actionSrc, "\n") + if constraint.IsGoBuild(line) || constraint.IsPlusBuild(line) { + continue + } + action = strings.TrimSpace(strings.TrimPrefix(line, "//")) } - if firstLine, rest, ok := strings.Cut(action, "\n"); ok && strings.Contains(firstLine, "+build") { - // skip first line - action = rest + if action == "" { + t.Fatalf("execution recipe not found in GOROOT/test/%s", t.goFileName()) } - action = strings.TrimPrefix(action, "//") // Check for build constraints only up to the actual code. header, _, ok := strings.Cut(src, "\npackage") diff --git a/test/fixedbugs/issue10607.go b/test/fixedbugs/issue10607.go index 759be715b7..a2f9f3040b 100644 --- a/test/fixedbugs/issue10607.go +++ b/test/fixedbugs/issue10607.go @@ -1,4 +1,6 @@ +//go:build linux && !ppc64 && gc && cgo // +build linux,!ppc64,gc,cgo + // run // Copyright 2015 The Go Authors. All rights reserved.