[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"
