-
Notifications
You must be signed in to change notification settings - Fork 17.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmd/go: convert TestBadCgoDirectives to the script framework
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I1328a87e2481b4555b01df5c898f1a8015412adc Reviewed-on: https://go-review.googlesource.com/c/go/+/214296 Reviewed-by: Jay Conrod <[email protected]>
- Loading branch information
Showing
2 changed files
with
126 additions
and
112 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
[!cgo] skip | ||
[short] skip | ||
|
||
mkdir x | ||
cp x.go.txt x/x.go | ||
|
||
# Only allow //go:cgo_ldflag .* in cgo-generated code | ||
[gc] cp x_gc.go.txt x/x.go | ||
[gc] ! go build x | ||
[gc] stderr '//go:cgo_ldflag .* only allowed in cgo-generated code' | ||
|
||
# Ignore _* files | ||
rm x/x.go | ||
! go build x | ||
stderr 'no Go files' | ||
cp cgo_yy.go.txt x/_cgo_yy.go | ||
! go build x | ||
stderr 'no Go files' #_* files are ignored... | ||
|
||
[gc] ! go build x/_cgo_yy.go # ... but if forced, the comment is rejected | ||
# Actually, today there is a separate issue that _ files named | ||
# on the command line are ignored. Once that is fixed, | ||
# we want to see the cgo_ldflag error. | ||
[gc] stderr '//go:cgo_ldflag only allowed in cgo-generated code|no Go files' | ||
|
||
rm x/_cgo_yy.go | ||
|
||
# Reject #cgo CFLAGS: -fplugin=foo.so | ||
cp x.go.txt x/x.go | ||
cp y_fplugin.go.txt x/y.go | ||
! go build x | ||
stderr 'invalid flag in #cgo CFLAGS: -fplugin=foo.so' | ||
|
||
# Reject #cgo CFLAGS: -lbar -fplugin=foo.so | ||
cp y_lbar_fplugin.go.txt x/y.go | ||
! go build x | ||
stderr 'invalid flag in #cgo CFLAGS: -fplugin=foo.so' | ||
|
||
# Reject #cgo pkg-config: -foo | ||
cp y_pkgconfig_dash_foo.txt x/y.go | ||
! go build x | ||
stderr 'invalid pkg-config package name: -foo' | ||
|
||
# Reject #cgo pkg-config: @foo | ||
cp y_pkgconfig_at_foo.txt x/y.go | ||
! go build x | ||
stderr 'invalid pkg-config package name: @foo' | ||
|
||
# Reject #cgo CFLAGS: @foo | ||
cp y_cflags_at_foo.txt x/y.go | ||
! go build x | ||
stderr 'invalid flag in #cgo CFLAGS: @foo' | ||
|
||
# Reject #cgo CFLAGS: -D | ||
cp y_cflags_dash_d.txt x/y.go | ||
! go build x | ||
stderr 'invalid flag in #cgo CFLAGS: -D without argument' | ||
|
||
# Note that -I @foo is allowed because we rewrite it into -I /path/to/src/@foo | ||
# before the check is applied. There's no such rewrite for -D. | ||
|
||
# Reject #cgo CFLAGS: -D @foo | ||
cp y_cflags_dash_d_space_at_foo.txt x/y.go | ||
! go build x | ||
stderr 'invalid flag in #cgo CFLAGS: -D @foo' | ||
|
||
# Reject #cgo CFLAGS -D@foo | ||
cp y_cflags_dash_d_at_foo.txt x/y.go | ||
! go build x | ||
stderr 'invalid flag in #cgo CFLAGS: -D@foo' | ||
|
||
# Check for CFLAGS in commands | ||
env CGO_CFLAGS=-D@foo | ||
cp y_no_cflags.txt x/y.go | ||
go build -n x | ||
stderr '-D@foo' | ||
|
||
-- x_gc.go.txt -- | ||
package x | ||
|
||
//go:cgo_ldflag "-fplugin=foo.so" | ||
|
||
import "C" | ||
-- cgo_yy.go.txt -- | ||
package x | ||
|
||
//go:cgo_ldflag "-fplugin=foo.so" | ||
|
||
import "C" | ||
-- x.go.txt -- | ||
package x | ||
-- y_fplugin.go.txt -- | ||
package x | ||
// #cgo CFLAGS: -fplugin=foo.so | ||
import "C" | ||
-- y_lbar_fplugin.go.txt -- | ||
package x | ||
// #cgo CFLAGS: -Ibar -fplugin=foo.so | ||
import "C" | ||
-- y_pkgconfig_dash_foo.txt -- | ||
package x | ||
// #cgo pkg-config: -foo | ||
import "C" | ||
-- y_pkgconfig_at_foo.txt -- | ||
package x | ||
// #cgo pkg-config: @foo | ||
import "C" | ||
-- y_cflags_at_foo.txt -- | ||
package x | ||
// #cgo CFLAGS: @foo | ||
import "C" | ||
-- y_cflags_dash_d.txt -- | ||
package x | ||
// #cgo CFLAGS: -D | ||
import "C" | ||
-- y_cflags_dash_d_space_at_foo.txt -- | ||
package x | ||
// #cgo CFLAGS: -D @foo | ||
import "C" | ||
-- y_cflags_dash_d_at_foo.txt -- | ||
package x | ||
// #cgo CFLAGS: -D@foo | ||
import "C" | ||
-- y_no_cflags.txt -- | ||
package x | ||
import "C" |