cp go.mod go.mod.orig # 'go get' should fail, without updating go.mod, if the transitive dependencies # of the requested package (by default, the package in the current directory) # cannot be resolved. ! go get stderr '^example.com/m imports\n\texample.com/badimport imports\n\texample.net/oops: cannot find module providing package example.net/oops$' cmp go.mod.orig go.mod cd importsyntax # A syntax error in a dependency prevents the compiler from needing that # dependency's imports, so 'go get' should not report an error when those # imports cannot be resolved: it has all of the dependencies that the compiler # needs, and the user did not request to run the compiler. go get cmp ../go.mod.syntax-d ../go.mod -- go.mod -- module example.com/m go 1.16 replace example.com/badimport v0.1.0 => ./badimport -- go.mod.syntax-d -- module example.com/m go 1.16 replace example.com/badimport v0.1.0 => ./badimport require example.com/badimport v0.1.0 -- m.go -- package m import _ "example.com/badimport" -- importsyntax/importsyntax.go -- package importsyntax import _ "example.com/badimport/syntaxerror" -- badimport/go.mod -- module example.com/badimport go 1.16 -- badimport/badimport.go -- package badimport import "example.net/oops" -- badimport/syntaxerror/syntaxerror.go -- pack-age syntaxerror // sic import "example.net/oops"