env GO111MODULE=off [!exec:git] skip # Set up some empty repositories. cd $WORK/_origin/foo exec git init exec git config user.name 'Nameless Gopher' exec git config user.email 'nobody@golang.org' exec git commit --allow-empty -m 'create master branch' cd $WORK cd '_origin/{confusing}' exec git init exec git config user.name 'Nameless Gopher' exec git config user.email 'nobody@golang.org' exec git commit --allow-empty -m 'create master branch' # Clone the empty repositories into GOPATH. # This tells the Go command where to find them: it takes the place of a user's meta-tag redirector. mkdir $GOPATH/src/example.com cd $GOPATH/src/example.com exec git clone $WORK/_origin/foo exec git clone $WORK/_origin/{confusing} # Commit contents to the repositories. cd $WORK/_origin/foo exec git add main.go exec git commit -m 'add main' cd $WORK cd '_origin/{confusing}' exec git add confusing.go exec git commit -m 'just try to delete this!' # 'go get' should refuse to download or update the confusingly-named repo. cd $GOPATH/src/example.com/foo ! go get -u 'example.com/{confusing}' stderr 'invalid char' ! go get -u example.com/foo stderr 'invalid import path' ! exists example.com/{confusing} -- $WORK/_origin/foo/main.go -- package main import _ "example.com/{confusing}" func main() {} -- $WORK/_origin/{confusing}/confusing.go -- package confusing