golang/mock

Support customizing generated mock package name

dr-dime opened this issue · 4 comments

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.

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?