Skip to content

Commit d97cf0d

Browse files
authored
Fix -imports handling aliased imports in source mode (#165)
In source mode, when generating a mock within the same package that uses names from a package that is imported with an alias, the generated mock should obey -imports properly and generate imports with the provided alias. If the generated code is not using the same aliases as the main filed in a package the go compiler will still happily run but if you want ot use this package as a source in another package where you want to generate a mock, mock will fail because it will not know what to do with a package that is imported with two different names in a source package. This patch fixes the generation by making `-imports` handling do a more correct thing. It can be argued that the correct behavior is, by default use the the same package aliases as the ones in the source file, however that change looked way more invasive and i didn't see a good coverage of tests that would help me make sure the changes worked well. This is what i found to be the least invasive fix for #166.
1 parent eb67641 commit d97cf0d

File tree

3 files changed

+66
-2
lines changed

3 files changed

+66
-2
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package import_aliased
2+
3+
import (
4+
definitionAlias "context"
5+
)
6+
7+
//go:generate mockgen -package import_aliased -destination source_mock.go -source=source.go -imports definitionAlias=context
8+
9+
type S interface {
10+
M(ctx definitionAlias.Context)
11+
}

mockgen/internal/tests/import_aliased/source_mock.go

Lines changed: 53 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mockgen/mockgen.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,8 @@ func (g *generator) Generate(pkg *model.Package, outputPkgName string, outputPac
393393
// try base0, base1, ...
394394
pkgName := base
395395

396-
if _, ok := definedImports[base]; ok {
397-
pkgName = definedImports[base]
396+
if _, ok := definedImports[pth]; ok {
397+
pkgName = definedImports[pth]
398398
}
399399

400400
i := 0

0 commit comments

Comments
 (0)