Skip to content

Commit

Permalink
Fix -imports handling aliased imports in source mode (#165)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mtoader authored Nov 19, 2024
1 parent eb67641 commit d97cf0d
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 2 deletions.
11 changes: 11 additions & 0 deletions mockgen/internal/tests/import_aliased/source.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package import_aliased

import (
definitionAlias "context"
)

//go:generate mockgen -package import_aliased -destination source_mock.go -source=source.go -imports definitionAlias=context

type S interface {
M(ctx definitionAlias.Context)
}
53 changes: 53 additions & 0 deletions mockgen/internal/tests/import_aliased/source_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions mockgen/mockgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,8 @@ func (g *generator) Generate(pkg *model.Package, outputPkgName string, outputPac
// try base0, base1, ...
pkgName := base

if _, ok := definedImports[base]; ok {
pkgName = definedImports[base]
if _, ok := definedImports[pth]; ok {
pkgName = definedImports[pth]
}

i := 0
Expand Down

0 comments on commit d97cf0d

Please sign in to comment.