uber-go / mock

GoMock is a mocking framework for the Go programming language.
Apache License 2.0
1.81k stars 103 forks source link

ERROR: cannot find module providing package go.uber.org/mock/mockgen/model: import lookup disabled by -mod=vendor #83

Open nebiros opened 9 months ago

nebiros commented 9 months ago

Actual behavior Moving from golang/mock I got this error when running the mockgen command and using reflection:

mockgen -build_flags=-mod=vendor -destination=internal/testing/mock/mock_dynamodbiface.go -package=mock github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface DynamoDBAPI
prog.go:12:2: cannot find module providing package go.uber.org/mock/mockgen/model: import lookup disabled by -mod=vendor
prog.go:12:2: cannot find module providing package go.uber.org/mock/mockgen/model: import lookup disabled by -mod=vendor
build flag -mod=vendor only valid when using modules
2023/09/11 16:50:04 Loading input failed: exit status 1

Expected behavior This doesn't happen with golang/mock module

To Reproduce

  1. go install go.uber.org/mock/mockgen@latest
  2. mockgen -build_flags=-mod=vendor -destination=internal/testing/mock/mock_dynamodbiface.go -package=mock github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface DynamoDBAPI

Additional Information

Triage Notes for the Maintainers

jairogloz commented 9 months ago

I ran into this same issue today 🐞 👍

ash2k commented 9 months ago

I'm getting similar errors without -mod=vendor. This started with v0.3.0.

It cannot find one of the application packages:

prog.go:14:2: no required module provides package gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v16/cmd/agentk/agentkapp: go.mod file not found in current directory or any parent directory; see 'go help modules'
prog.go:12:2: no required module provides package go.uber.org/mock/mockgen/model: go.mod file not found in current directory or any parent directory; see 'go help modules'
2023/09/21 03:52:18 Loading input failed: exit status 1
exit status 1
ash2k commented 9 months ago

I think it was a somewhat unrelated issue. I tried upgrading 0.2.0 -> 0.3.0 and at the same time adding -typed. It doesn't work this way, at least didn't work for me. I upgraded to 0.3.0 first and then now added -typed. Haven't finished fixing the tests, but mock generation succeeded. Sorry for the noise.

k-ken-t4g commented 9 months ago

The same problem that ash2k encountered also happens to me. This occurs when both v0.2.0 and v0.3.0 are installed in the same environment. The problem can be solved by uninstalling either one of these versions.

bradleygore commented 9 months ago

Switching to source mode instead of reflect mode resolved this for me. I ultimately had to switch to source mode anyways as I'm using generics in my interfaces now that v0.3.0 has been released.

danielmbirochi commented 8 months ago

If you are using reflect mode, just make sure that you have installed the same version of this package as the one defined in your go.mod.

moeabdol commented 7 months ago

Make sure the mockgen version you installed is the same one in your go.mod

sodul commented 5 months ago

I'm having this issue and the mockgen version is the same between the binary and our go.mod yet it keeps on failing. It works fine under macOS but on our containers it fails consistently. We are on v0.2.0 and cannot upgrade until https://github.com/uber-go/mock/issues/104 is fixed as it would cause massive churn in source control since we use an absolute path when specifying the output option, and everyone has a different home directory.

sodul commented 4 months ago

It turns out that, one of the reasons, this fails is that on laptop we had copies of gomock_reflect_.... folders, and we had one accidentally added to source control a while back. Deleting the unwanted gomock_reflect_.... folder from source control removed the only go file that imported "go.uber.org/mock/mockgen/model" and then breaking our pipelines. Our fix was to add a test/mockgen_compat/main.go file that does nothing else but importing "go.uber.org/mock/mockgen/model" and the pipelines are happy again.

See https://github.com/golang/mock/issues/494#issuecomment-1365540087