]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/internal/testdir: parse past gofmt'd //go:build lines
authorBryan C. Mills <bcmills@google.com>
Thu, 24 Aug 2023 17:16:48 +0000 (13:16 -0400)
committerGopher Robot <gobot@golang.org>
Thu, 24 Aug 2023 17:52:48 +0000 (17:52 +0000)
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 <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>

src/cmd/internal/testdir/testdir_test.go
test/fixedbugs/issue10607.go

index bd7785900c637a5a3926697b67c361fc6b14f035..92c8f4c093cf11fa69fc68ea6422b8349986a28e 100644 (file)
@@ -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")
index 759be715b7dada637df191f22c34a0259f9dda64..a2f9f3040bfd0132ba048f813ef6f63881780bcc 100644 (file)
@@ -1,4 +1,6 @@
+//go:build linux && !ppc64 && gc && cgo
 // +build linux,!ppc64,gc,cgo
+
 // run
 
 // Copyright 2015 The Go Authors. All rights reserved.