Gomock "Loading input failed: loading package failed"
Пытаюсь использовать Gomock (ось ubuntu, gomock и mockgen установлены). Мой интерфейс :
package interfaces
import "github.com/google/uuid"
type Dao interface {
AddURI(str *string) uuid.UUID
GetURI(str *uuid.UUID) (response string, ok bool)
}
При вызове mockgen -source=dao.go -destination=dao_mock.go -package=interfaces Получаю огромный вывод ошибок в консоль (это конец вывода, весь вывод не помещается в терминал):
/usr/local/go/src/runtime/cgo/handle.go:121:25: undeclared name: any
/usr/local/go/src/net/lookup.go:270:37: undeclared name: any
/usr/local/go/src/net/lookup.go:270:42: undeclared name: any
/usr/local/go/src/net/lookup.go:382:28: undeclared name: any
/usr/local/go/src/net/lookup.go:396:37: undeclared name: any
/usr/local/go/src/net/sock_linux.go:59:20: invalid operation: shift count size (variable of type int) must be unsigned integer
/usr/local/go/src/net/lookup.go:397:14: undeclared name: any
/usr/local/go/src/net/lookup.go:319:61: undeclared name: any
/home/fedor/go/pkg/mod/github.com/google/[email protected]/sql.go:58:9: cannot use
uuid.String() (value of type string) as driver.Value value in return statement
/home/fedor/go/pkg/mod/github.com/google/[email protected]/null.go:54:10: cannot convert nil (untyped nil value) to driver.Value
2022/09/15 21:13:16 Loading input failed: loading package failed
Если убрать import и методы, использующие его, в исходном интерфейсе, то команда mockgen отрабатывает без проблем.
Из офф. документации упоминание импортов обнаружил лишь тут:
-imports: A list of explicit imports that should be used in the resulting source code, specified as a comma-separated list of elements of the form foo=bar/baz, where bar/baz is the package being imported and foo is the identifier to use for the package in the generated source code.
Это не привело меня к успеху.
Могли бы вы подсказать, что мне нужно сделать?
Ответы (1 шт):
Порывшись в документации к mockgen reflect vendoring error а также Unable to generate mocks in reflect mode, нашел решение:
cannot find package "."
... github.com/golang/mock/mockgen/model
If you come across this error while using reflect mode and vendoring dependencies there are three workarounds you can choose from:
- Use source mode.
- Include an empty import import _ "github.com/golang/mock/mockgen/model".
- Add --build_flags=--mod=mod to your mockgen command.
В моем случае после включения пустого импорта (способ 2) удалось создать mock.go