mock
mock copied to clipboard
aux_files shouldn't be necessary in mockgen
mockgen should try to load all the files in the package in source mode so the user shouldn't need to specify aux_file.
I think this is close being done. The test in the package no longer needs aux_files
at least. I need to do a little more research to know if we can deprecate this for sure.
I would love to hear from users here. The tests we currently have in the library that involve aux_imports
no longer need the flag. If you are currently using this flag and you still need it with the current release, v1.4.1
, please either comment here or open an issue. I would like to deprecate this flag in a future release and make it a no-op.
@codyoss I am currently having trouble making mocks of the Prometheus client package. I am trying to make a mock of the gauge.go
file. All the files are in vendor/github.com/prometheus/client_golang/prometheus/
.
I am using Mockgen v1.4.4.
gauge.go
:
package prometheus
type Gauge interface {
Metric
Collector
}
metric.go
:
package prometheus
type Metric interface {
Desc() *Desc
}
collector.go
:
package prometheus
type Collector interface {
Desc() *Desc
}
Failed commands:
mockgen --source=vendor/github.com/prometheus/client_golang/prometheus/gauge.go --destination=mypackage/cmd/mocks/gauge.go --package=mocks
2021/02/09 07:54:13 Loading input failed: vendor/github.com/prometheus/client_golang/prometheus/gauge.go:33:2: unknown embedded interface Metric
mockgen --source=vendor/github.com/prometheus/client_golang/prometheus/gauge.go --aux_files github.com/prometheus/client_golang/prometheus=vendor/github.com/prometheus/client_golang/prometheus/metric.go --destination=mypackage/cmd/mocks/gauge.go --package=mocks
2021/02/09 07:54:28 Loading input failed: vendor/github.com/prometheus/client_golang/prometheus/gauge.go:33:2: unknown embedded interface Metric
Frustratingly, the second command previously gave a different failure message:
mockgen --source=vendor/github.com/prometheus/client_golang/prometheus/gauge.go --aux_files github.com/prometheus/client_golang/prometheus=vendor/github.com/prometheus/client_golang/prometheus/metric.go --destination=mypackage/cmd/mocks/gauge.go --package=mocks
2021/02/09 07:27:39 Loading input failed: vendor/github.com/prometheus/client_golang/prometheus/gauge.go:34:2: unknown embedded interface Collector
And adding the collector.go
file to the --aux_files
option worked!
mockgen --source=vendor/github.com/prometheus/client_golang/prometheus/gauge.go --aux_files github.com/prometheus/client_golang/prometheus=vendor/github.com/prometheus/client_golang/prometheus/metric.go,github.com/prometheus/client_golang/prometheus=vendor/github.com/prometheus/client_golang/prometheus/collector.go --destination=mypackage/cmd/mocks/gauge.go --package=mocks
I cannot repeat this! After thinking I was successful, I was setting up Makefile targets to refresh these mocks. After deleting all the mocks and trying the commands again, I only ever get this message from the above command:
mockgen --source=vendor/github.com/prometheus/client_golang/prometheus/gauge.go --aux_files github.com/prometheus/client_golang/prometheus=vendor/github.com/prometheus/client_golang/prometheus/metric.go,github.com/prometheus/client_golang/prometheus=vendor/github.com/prometheus/client_golang/prometheus/collector.go --destination=mypackage/cmd/mocks/gauge.go --package=mocks
2021/02/09 08:00:24 Loading input failed: vendor/github.com/prometheus/client_golang/prometheus/gauge.go:33:2: unknown embedded interface Metric
@Botono I believe this case is now fixed, at least on HEAD. I believe all cases were aux_files was needed should now be gone. Unless I hear from users others I will deprecate this flag in the next release and make it a noop in the future.
I'm struggling to resolve this issue..
Two interface in two different file but in same package. If I attempt to generate mock file from one interface which composite of the other, I got unknown embedded interface
error. Tried to play with aux_files but no luck (not sure what would be input for this package=source.go ? but its in same package)
I'm using 1.6.0 btw
Exactly the same situation as @intoxicated ...
@intoxicated @mpyw This is fixed on HEAD. Please try with v1.7.0-rc.1 and let me know if you still have issues
@codyoss i am trying to mock uptrace bun IDB interface
but I am having error
//go:generate mockgen -source $GOBASE/vendor/github.com/uptrace/bun/query_base.go -aux_files github.com/uptrace/bun/schema=$GOBASE/vendor/github.com/uptrace/bun/schema/hook.go,github.com/uptrace/bun=$GOBASE/vendor/github.com/uptrace/bun/bun.go -destination=$GOBASE/gen/mock/uptracde/bun/query_base.go IDB
output:
----> Generating go stuff GOPATH=/Users/xxxx/go:/Users/xxxx/IdeaProjects/ms-auth-api/vendor:/Users/xxxx/IdeaProjects/ms-auth-api GOBIN=/Users/xxxx/IdeaProjects/ms-auth-api/bin go generate ./... 2023/02/10 08:13:11 Loading input failed: /Users/xxxx/IdeaProjects/ms-auth-api/vendor/github.com/uptrace/bun/query_base.go:75:2: unknown embedded interface ms-auth-api/vendor/github.com/uptrace/bun.Query src/test/pubsub_test/user_auth_upsert_handler_test.go:27: running "mockgen": exit status 1
I am thinking the issue is because of type alias on another interface : https://github.com/uptrace/bun/blob/33503abd50f1dc349179a4470617a962f90b6948/bun.go#L16
how to fix? I am already using 1.7.0-rc.1