env GO111MODULE=off # Test that 'go get -u' reports packages whose VCS configurations do not # match their import paths. [!net] skip [short] skip # We need to execute a custom Go program to break the config files. # # git will ask for a username and password when we run 'go get -d -f -u', # so we also need to set GIT_ASKPASS. Conveniently, a single binary can # perform both tasks! go build -o replace.exe replace env GIT_ASKPASS=$PWD/replace.exe # Test that 'go get -u' reports moved git packages. [exec:git] go get -d rsc.io/pdf [exec:git] go get -d -u rsc.io/pdf [exec:git] exec ./replace.exe pdf rsc.io/pdf/.git/config [exec:git] ! go get -d -u rsc.io/pdf [exec:git] stderr 'is a custom import path for' [exec:git] ! go get -d -f -u rsc.io/pdf [exec:git] stderr 'validating server certificate|[nN]ot [fF]ound' # Test that 'go get -u' reports moved Mercurial packages. [exec:hg] go get -d vcs-test.golang.org/go/custom-hg-hello [exec:hg] go get -d -u vcs-test.golang.org/go/custom-hg-hello [exec:hg] exec ./replace.exe custom-hg-hello vcs-test.golang.org/go/custom-hg-hello/.hg/hgrc [exec:hg] ! go get -d -u vcs-test.golang.org/go/custom-hg-hello [exec:hg] stderr 'is a custom import path for' [exec:hg] ! go get -d -f -u vcs-test.golang.org/go/custom-hg-hello [exec:hg] stderr 'validating server certificate|[nN]ot [fF]ound' -- replace/replace.go -- package main import ( "bytes" "log" "os" ) func main() { if len(os.Args) < 3 { return } base := []byte(os.Args[1]) path := os.Args[2] data, err := os.ReadFile(path) if err != nil { log.Fatal(err) } err = os.WriteFile(path, bytes.ReplaceAll(data, base, append(base, "XXX"...)), 0644) if err != nil { log.Fatal(err) } }