[gccgo] skip 'gccgo does not support -ldflags -X'
env GO111MODULE=off
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"
