-
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 testCDAndGOPATHAreDifferent to the script framework
This is a bit complex. There's a driver program to run go with modifications to the GOPATH used to test Windows. Also remove the cd method on testgoData, because this was the last function that used it. Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I3e8e27f37fd3701bd36b6365b128dd73b69181c0 Reviewed-on: https://go-review.googlesource.com/c/go/+/214578 Reviewed-by: Jay Conrod <[email protected]>
- Loading branch information
Showing
2 changed files
with
72 additions
and
52 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,72 @@ | ||
[gccgo] skip 'gccgo does not support -ldflags -X' | ||
go build run_go.go | ||
|
||
# Apply identity function to GOPATH | ||
exec ./run_go$GOEXE $GOPATH/src/my.pkg/main $GOPATH IDENTITY build -o $WORK/tmp/a.exe -ldflags -X=my.pkg.Text=linkXworked | ||
exec $WORK/tmp/a.exe | ||
stderr 'linkXworked' | ||
rm $WORK/tmp/a.exe | ||
|
||
[!windows] stop 'rest of the tests only apply to Windows' | ||
|
||
# Replace '\' with '/' in GOPATH | ||
exec ./run_go$GOEXE $GOPATH/src/my.pkg/main $GOPATH REPLACE_SLASH build -o $WORK/tmp/a.exe -ldflags -X=my.pkg.Text=linkXworked | ||
exec $WORK/tmp/a.exe | ||
stderr 'linkXworked' | ||
rm $WORK/tmp/a.exe | ||
|
||
# Apply identity function to GOPATH | ||
exec ./run_go$GOEXE $GOPATH/src/my.pkg/main $GOPATH UPPER build -o $WORK/tmp/a.exe -ldflags -X=my.pkg.Text=linkXworked | ||
exec $WORK/tmp/a.exe | ||
stderr 'linkXworked' | ||
rm $WORK/tmp/a.exe | ||
|
||
# Apply identity function to GOPATH | ||
exec ./run_go$GOEXE $GOPATH/src/my.pkg/main $GOPATH LOWER build -o $WORK/tmp/a.exe -ldflags -X=my.pkg.Text=linkXworked | ||
exec $WORK/tmp/a.exe | ||
stderr 'linkXworked' | ||
rm $WORK/tmp/a.exe | ||
|
||
-- run_go.go -- | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
"os" | ||
"os/exec" | ||
"strings" | ||
) | ||
|
||
func main() { | ||
dir := os.Args[1] | ||
gopath := os.Args[2] | ||
switch os.Args[3] { | ||
case "IDENTITY": | ||
case "REPLACE_SLASH": gopath = strings.ReplaceAll(gopath, `\`, `/`) | ||
case "UPPER": gopath = strings.ToUpper(gopath) | ||
case "LOWER": gopath = strings.ToLower(gopath) | ||
default: fmt.Fprintln(os.Stderr, "bad op"); os.Exit(1) | ||
} | ||
cmd := exec.Command("go", os.Args[4:]...) | ||
cmd.Dir = dir | ||
cmd.Env = append(os.Environ(), "GOPATH="+gopath) | ||
cmd.Stdout = os.Stdout | ||
cmd.Stderr = os.Stderr | ||
if err := cmd.Run(); err != nil { | ||
fmt.Fprintln(os.Stderr, err) | ||
os.Exit(1) | ||
} | ||
} | ||
|
||
-- my.pkg/main/main.go -- | ||
package main | ||
|
||
import "my.pkg" | ||
|
||
func main() { | ||
println(pkg.Text) | ||
} | ||
-- my.pkg/pkg.go -- | ||
package pkg | ||
|
||
var Text = "unset" |