summaryrefslogtreecommitdiff
path: root/gcc/testsuite/go.test
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2020-12-17 21:33:51 -0800
committerIan Lance Taylor <iant@golang.org>2020-12-17 21:35:25 -0800
commitdc00689332f023d959a8e9f01368f59b756a7017 (patch)
tree9ff4375c067bf5455161a072e34810b335b0c478 /gcc/testsuite/go.test
parentddb9c661c2f1040a2fe569098fce09f44ab05b52 (diff)
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.
Diffstat (limited to 'gcc/testsuite/go.test')
-rw-r--r--gcc/testsuite/go.test/go-test.exp147
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug302.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug369.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10607.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11771.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13268.go1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14636.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19658.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21317.go6
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21576.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22660.go6
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33555.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36437.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9355.go6
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go2
-rw-r--r--gcc/testsuite/go.test/test/run.go2
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
}