| cp go.mod go.mod.orig |
| |
| |
| # Both 'go get' and 'go get -d' 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 |
| |
| ! go get -d |
| 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 |
| |
| |
| # If 'go get' fails due to a compile error (such as a syntax error), |
| # it should not update the go.mod file. |
| |
| ! go get |
| stderr '^..[/\\]badimport[/\\]syntaxerror[/\\]syntaxerror.go:1:1: expected ''package'', found pack$' # TODO: An import stack would be nice. |
| cmp ../go.mod.orig ../go.mod |
| |
| |
| # A syntax error in a dependency prevents the compiler from needing that |
| # dependency's imports, so 'go get -d' 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 -d |
| 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" |