public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r11-6251] Go testsuite: handle +build lines correctly
@ 2020-12-18  5:35 Ian Lance Taylor
  0 siblings, 0 replies; only message in thread
From: Ian Lance Taylor @ 2020-12-18  5:35 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:dc00689332f023d959a8e9f01368f59b756a7017

commit r11-6251-gdc00689332f023d959a8e9f01368f59b756a7017
Author: Ian Lance Taylor <iant@golang.org>
Date:   Thu Dec 17 21:33:51 2020 -0800

    Go testsuite: handle +build lines correctly
    
    Update the Go testsuite driver to handle +build lines as is done in
    the upstream repo, and update some tests to the upstream repo copy
    using +build lines with "gc" and "!gccgo" as appropriate.
    
            * go.test/go-test.exp (go-set-goos): New procedure.
            (go-gc-match): New procedure.
            (go-gc-tests): Call go-set-goos.  Use go-gc-match to handle +build
            lines.  Look for +build lines beyond first line of file.

Diff:
---
 gcc/testsuite/go.test/go-test.exp                  | 147 ++++++++++++++-------
 gcc/testsuite/go.test/test/fixedbugs/bug302.go     |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/bug369.go     |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue10607.go |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue11771.go |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue13268.go |   1 +
 gcc/testsuite/go.test/test/fixedbugs/issue14636.go |   2 +-
 .../go.test/test/fixedbugs/issue16037_run.go       |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue19658.go |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue21317.go |   6 +-
 gcc/testsuite/go.test/test/fixedbugs/issue21576.go |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue22660.go |   6 +-
 .../go.test/test/fixedbugs/issue33275_run.go       |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue33555.go |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue36437.go |   2 +-
 gcc/testsuite/go.test/test/fixedbugs/issue9355.go  |   6 +-
 .../go.test/test/fixedbugs/issue9862_run.go        |   2 +-
 gcc/testsuite/go.test/test/run.go                  |   2 +-
 18 files changed, 119 insertions(+), 73 deletions(-)

diff --git a/gcc/testsuite/go.test/go-test.exp b/gcc/testsuite/go.test/go-test.exp
index c1b27c09236..c7d5c724f9b 100644
--- a/gcc/testsuite/go.test/go-test.exp
+++ b/gcc/testsuite/go.test/go-test.exp
@@ -255,6 +255,53 @@ proc go-set-goarch { } {
     setenv GOARCH $goarch
 }
 
+# This be kept in sync with libgo/configure.ac.
+proc go-set-goos { } {
+    global target_triplet
+
+    switch -glob $target_triplet {
+	"*-*-darwin*" {
+	    set goos "darwin"
+	}
+	"*-*-freebsd*" {
+	    set goos "freebsd"
+	}
+	"*-*-irix6*" {
+	    set goos "irix"
+	}
+	"*-*-linux*" {
+	    set goos "linux"
+	}
+	"*-*-netbsd*" {
+	    set goos "netbsd"
+	}
+	"*-*-openbsd*" {
+	    set goos "openbsd"
+	}
+	"*-*-dragonfly*" {
+	    set goos "dragonfly"
+	}
+	"*-*-rtems*" {
+	    set goos "rtems"
+	}
+	"*-*-solaris2*" {
+	    set goos "solaris"
+	}
+	"*-*-aix*" {
+	    set goos "aix"
+	}
+	"*-*-gnu*" {
+	    set goos "hurd"
+	}
+	default {
+	    perror "$target_triplet: unhandled GOOS"
+	    return
+	}
+    }
+    verbose -log "Setting GOOS=$goos" 1
+    setenv GOOS $goos
+}
+
 # Take a list of files and return a lists of lists, where each list is
 # the set of files in the same package.
 proc go-find-packages { test name files } {
@@ -291,6 +338,27 @@ proc go-find-packages { test name files } {
     return $packages
 }
 
+proc go-gc-match { name } {
+    verbose -log "go-gc-match $name"
+    set idx [string first "," $name]
+    if { $idx >= 0 } {
+	set left [string range $name 0 [expr $idx - 1]]
+	set right [string range $name [expr $idx + 1] end]
+	return [expr [go-gc-match $left] && [go-gc-match $right]]
+    }
+    if { [string index $name 0] == "!" && [string index $name 1] == "!" } {
+	return 0
+    }
+    if { [string index $name 0] == "!" } {
+	return [expr ! [go-gc-match [string range $name 1 end]]]
+    }
+    if { $name == [getenv GOARCH] || $name == [getenv GOOS] || $name == "gccgo" } {
+	return 1
+    }
+
+    return 0
+}
+
 proc go-gc-tests { } {
     global srcdir subdir
     global runtests
@@ -311,8 +379,9 @@ proc go-gc-tests { } {
     set options ""
     lappend options "additional_flags=$DEFAULT_GOCFLAGS"
 
-    # Set GOARCH for tests that need it.
+    # Set GOARCH and GOOS for tests that need it.
     go-set-goarch
+    go-set-goos
 
     # Running all the torture options takes too long and, since the
     # frontend ignores the standard options, it doesn't significantly
@@ -432,73 +501,61 @@ proc go-gc-tests { } {
 
 	set lines_ok 1
 
+	set test_line ""
 	while 1 {
-	    if { [gets $fd test_line] < 0 } {
-		close $fd
-		clone_output "$test: could not read first line"
+	    if { [gets $fd file_line] < 0 } {
+		if [eof $fd] {
+		    break
+		}
+		clone_output "$test: read failed"
 		unresolved $name
 		set lines_ok 0
 		break
 	    }
 
-	    if { [ string match "*nacl*exit 0*" $test_line ] \
-		     || [ string match "*exit 0*nacl*" $test_line ] \
-		     || [ string match "*Android*exit 0*" $test_line ] \
-		     || [ string match "*exit 0*Android*" $test_line ] \
-		     || [ string match "*\"\$GOOS\" == windows*" $test_line ] } {
+	    if { [ string match "*nacl*exit 0*" $file_line ] \
+		     || [ string match "*exit 0*nacl*" $file_line ] \
+		     || [ string match "*Android*exit 0*" $file_line ] \
+		     || [ string match "*exit 0*Android*" $file_line ] \
+		     || [ string match "*\"\$GOOS\" == windows*" $file_line ] } {
 		continue
 	    }
 
-	    if { [ string match "// +build *" $test_line ] } {
-		set matches_pos 0
-		set matches_neg 0
-		if { [ regexp -line "\[ 	\][getenv GOARCH]\(\[ 	\]\|\$\)" $test_line ] } {
-		    set matches_pos 1
-		} elseif { [ regexp -line "\[ 	\]\![getenv GOARCH]\(\[ 	\]\|\$\)" $test_line ] } {
-		    set matches_neg 1
-		} elseif { [ regexp -line "\[ 	\]linux\(\[ 	\]\|\$\)" $test_line ] } {
-		    set matches_pos 1
-		} elseif { [ regexp -line "\[ 	\]\!linux\(\[ 	\]\|\$\)" $test_line ] } {
-		    set matches_neg 1
-		} elseif { [ regexp -line "\[ 	\]\!windows\(\[ 	\]\|\$\)" $test_line ] } {
-		    set matches_pos 1
-		} elseif { [ regexp -line "\[ 	\]windows\(\[ 	\]\|\$\)" $test_line ] } {
-		    set matches_neg 1
+	    if ![string match "// *" $file_line] {
+		if { $file_line != "" } {
+		    break
 		}
-		if { $matches_pos == 1 && $matches_neg == 0 } {
+		continue
+	    }
+
+	    if { [ string match "// +build *" $file_line ] } {
+		set words [split $file_line]
+		set matches 0
+		for { set idx 2 } { $idx < [llength $words] } { incr idx } {
+		    if { [go-gc-match [lindex $words $idx]] } {
+			set matches 1
+			break
+		    }
+		}
+		if { $matches == 1 } {
 		    continue
 		}
-		close $fd
 		unsupported $name
 		set lines_ok 0
+		break
 	    }
 
-	    break
-	}
-
-	if { $lines_ok == 0 } {
-	    continue
+	    if { $test_line == "" } {
+		set test_line $file_line
+	    }
 	}
 
-	set lineno 1
-	set test_line1 $test_line
+	close $fd
 
-	while { [eval "string match \"//*&&\" \${test_line$lineno}"] } {
-	    set lineno [expr $lineno + 1]
-	    if { [eval "gets \$fd test_line$lineno"] < 0 } {
-		close $fd
-		clone_output "$test: could not read line $lineno"
-		unresolved $name
-		set lines_ok 0
-		break
-	    }
-	}
 	if { $lines_ok == 0 } {
 	    continue
 	}
 
-	close $fd
-
 	# runtest_file_p is already run above, and the code below can run
 	# runtest_file_p again, make sure everything for this test is
 	# performed if the above runtest_file_p decided this runtest
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug302.go b/gcc/testsuite/go.test/test/fixedbugs/bug302.go
index 87f9d4ef70c..a2ab661277a 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug302.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug302.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,gc
 // run
 
 // Copyright 2010 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug369.go b/gcc/testsuite/go.test/test/fixedbugs/bug369.go
index 9316f7aad0b..83f638d0463 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug369.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug369.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js,!windows
+// +build !nacl,!js,!windows,gc
 // run
 
 // Copyright 2011 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10607.go b/gcc/testsuite/go.test/test/fixedbugs/issue10607.go
index 6f4717d8202..448a37dcac2 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue10607.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10607.go
@@ -1,4 +1,4 @@
-// +build linux,!ppc64,!riscv64
+// +build linux,!ppc64,!riscv64,gc
 // run
 
 // Copyright 2015 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11771.go b/gcc/testsuite/go.test/test/fixedbugs/issue11771.go
index 99d7060d44e..c95dd6ba396 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue11771.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11771.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,gc
 // run
 
 // Copyright 2015 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13268.go b/gcc/testsuite/go.test/test/fixedbugs/issue13268.go
index fcb69c90682..53a82d5074a 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue13268.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13268.go
@@ -1,3 +1,4 @@
+// +build gc
 // run
 
 // Copyright 2015 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14636.go b/gcc/testsuite/go.test/test/fixedbugs/issue14636.go
index 6797046e02b..06fd193dae0 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue14636.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14636.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js,!android
+// +build !nacl,!js,!android,gc
 // run
 
 // Copyright 2016 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go b/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go
index d05e3f7f314..68104a90007 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js,!android
+// +build !nacl,!js,!android,!gccgo
 // run
 
 // Copyright 2016 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19658.go b/gcc/testsuite/go.test/test/fixedbugs/issue19658.go
index b2539629df0..bab409c6c03 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue19658.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19658.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,!gccgo
 // run
 
 // Copyright 2017 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21317.go b/gcc/testsuite/go.test/test/fixedbugs/issue21317.go
index f4ec4223713..32b660c1639 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue21317.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21317.go
@@ -1,3 +1,4 @@
+// +build !js,gc
 // run
 
 // Copyright 2017 The Go Authors. All rights reserved.
@@ -16,15 +17,10 @@ import (
 	"log"
 	"os"
 	"os/exec"
-	"runtime"
 	"strings"
 )
 
 func main() {
-	if runtime.Compiler != "gc" || runtime.GOOS == "js" {
-		return
-	}
-
 	f, err := ioutil.TempFile("", "issue21317.go")
 	if err != nil {
 		log.Fatal(err)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21576.go b/gcc/testsuite/go.test/test/fixedbugs/issue21576.go
index ae6161ccf52..3f9b1ba008a 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue21576.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21576.go
@@ -1,6 +1,6 @@
 // run
 
-// +build !nacl,!js
+// +build !nacl,!js,!gccgo
 
 // Copyright 2019 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22660.go b/gcc/testsuite/go.test/test/fixedbugs/issue22660.go
index 44ba42ac968..9ce9c4d732e 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue22660.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22660.go
@@ -1,3 +1,4 @@
+// +build !js,gc
 // run
 
 // Copyright 2017 The Go Authors. All rights reserved.
@@ -14,15 +15,10 @@ import (
 	"os"
 	"os/exec"
 	"path/filepath"
-	"runtime"
 	"strings"
 )
 
 func main() {
-	if runtime.GOOS == "js" {
-		return // no file system available on builders
-	}
-
 	f, err := ioutil.TempFile("", "issue22660.go")
 	if err != nil {
 		log.Fatal(err)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go b/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go
index f3e2e14f392..ed03dccf4c8 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,!gccgo
 // run
 
 // Copyright 2019 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33555.go b/gcc/testsuite/go.test/test/fixedbugs/issue33555.go
index 7debd2049cd..c1fcd2a79b3 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue33555.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33555.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,!gccgo
 // run
 
 // Copyright 2019 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36437.go b/gcc/testsuite/go.test/test/fixedbugs/issue36437.go
index f96544beff8..c7a11d27a89 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue36437.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36437.go
@@ -1,6 +1,6 @@
 // run
 
-// +build !nacl,!js
+// +build !nacl,!js,gc
 
 // Copyright 2020 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9355.go b/gcc/testsuite/go.test/test/fixedbugs/issue9355.go
index ab3369d415d..319a2a90df9 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue9355.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9355.go
@@ -1,3 +1,4 @@
+// +build !js,gc
 // run
 
 // Copyright 2014 The Go Authors. All rights reserved.
@@ -13,14 +14,9 @@ import (
 	"os/exec"
 	"path/filepath"
 	"regexp"
-	"runtime"
 )
 
 func main() {
-	if runtime.Compiler != "gc" || runtime.GOOS == "js" {
-		return
-	}
-
 	err := os.Chdir(filepath.Join("fixedbugs", "issue9355.dir"))
 	check(err)
 
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go b/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go
index 299e8095450..c956c7f7bd5 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,gc
 // run
 
 // Copyright 2015 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/run.go b/gcc/testsuite/go.test/test/run.go
index 4abf32d25c8..db3e9f6c2fc 100644
--- a/gcc/testsuite/go.test/test/run.go
+++ b/gcc/testsuite/go.test/test/run.go
@@ -438,7 +438,7 @@ func (ctxt *context) match(name string) bool {
 		}
 	}
 
-	if name == ctxt.GOOS || name == ctxt.GOARCH {
+	if name == ctxt.GOOS || name == ctxt.GOARCH || name == "gc" {
 		return true
 	}


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-12-18  5:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-18  5:35 [gcc r11-6251] Go testsuite: handle +build lines correctly Ian Lance Taylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).