blob: 5c37058d1c1b9508e8a77ce8fb3de85eabf34eaf [file] [log] [blame]
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"