Closed dr-dime closed 2 years ago
Can you provide a small example. I don't think I quite understand the issue. Thanks
Closing due to lack of response.
@codyoss Sorry for the late response. I must have all the emails from github archived.
Here is a simplified example: https://github.com/dr-dime/gomock-without-package.
p1 and p2 are two packages with interfaces to mock, and we want to generate the mock file for each source file in them and use the generated mock types in package tests, ie. {p1/p1,p2/p2}_test.go.
It's impossible for me to write a script to automate this process given the way the package name is generated, say mock_p{1,2}, instead of p{1,2}. The obvious solution is to grep the source file and extract the package name, but grep is not a valid parser, so it can easily get confused by package docs and other package-like statements.
@codyoss would you please reopen?
Currently, mockgen allows specifying the generated mock package name with
-package
or a generated package name with mock_ prefix will be used. However, when generating mock files as package tests in scripts, this flag is very difficult to use.In which case, the generated file shares the same package name as the package being mocked. So we need to use tools (eg. grep) to extract the package name first, then pass it to mockgen.
This seems odd as mockgen already has the package name internally, and relies on external tools for this are just a recipe for trouble.
I propose to introduce another flag to customize the generated mock package name, by default it uses "mock_%s" which is the current behavior, and can be changed to other formats to allow scripting usages.