# Check that when -trimpath and -mod=vendor are used together, # paths in vendored packages are properly trimmed. # Verifies golang.org/issue/36566. [short] skip # Only the main module has a root directory in vendor mode. go mod vendor go list -f {{.Module.Dir}} example.com/main stdout $PWD go list -f {{.Module.Dir}} example.com/stack ! stdout . # The program prints a file name from a vendored package. # Without -trimpath, the name should include the vendor directory. go run main.go stdout vendor # With -trimpath, everything before the package path should be trimmed. # As with -mod=mod, the version should appear as part of the module path. go run -mod=vendor -trimpath main.go stdout '^example.com/stack@v1.0.0/stack.go$' # With pristinely vendored source code, a trimmed binary built from vendored # code should have the same behavior as one build from the module cache. go run -mod=mod -trimpath main.go stdout '^example.com/stack@v1.0.0/stack.go$' -- go.mod -- module example.com/main go 1.17 require example.com/stack v1.0.0 -- go.sum -- example.com/stack v1.0.0 h1:IEDLeew5NytZ8vrgCF/QVem3H3SR3QMttdu9HfJvk9I= example.com/stack v1.0.0/go.mod h1:7wFEbaV5e5O7wJ8aBdqQOR//UXppm/pwnwziMKViuI4= -- main.go -- package main import ( "fmt" "example.com/stack" ) func main() { fmt.Println(stack.TopFile()) }