blob: 698b3d70f4b332ed41e9ece7485181043dfd1da9 [file] [log] [blame]
[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"