Merge pull request #26 from fvosberg/fix-emptyinterfaces

[PATCH] Omit sync package while mocking empty interface
This commit is contained in:
Mat Ryer 2017-08-03 17:00:27 +01:00 committed by GitHub
commit 3dc8438cf7
4 changed files with 28 additions and 3 deletions

View File

@ -71,6 +71,7 @@ func (m *Mocker) Mock(w io.Writer, name ...string) error {
PackageName: m.pkgName,
Imports: moqImports,
}
mocksMethods := false
for _, pkg := range m.pkgs {
i := 0
files := make([]*ast.File, len(pkg.Files))
@ -96,6 +97,7 @@ func (m *Mocker) Mock(w io.Writer, name ...string) error {
InterfaceName: n,
}
for i := 0; i < iiface.NumMethods(); i++ {
mocksMethods = true
meth := iiface.Method(i)
sig := meth.Type().(*types.Signature)
method := &method{
@ -108,6 +110,9 @@ func (m *Mocker) Mock(w io.Writer, name ...string) error {
doc.Objects = append(doc.Objects, obj)
}
}
if mocksMethods {
doc.Imports = append(doc.Imports, "sync")
}
for pkgToImport := range m.imports {
doc.Imports = append(doc.Imports, pkgToImport)
}

View File

@ -224,3 +224,19 @@ func TestDotImports(t *testing.T) {
t.Error("contains invalid dot import")
}
}
func TestEmptyInterface(t *testing.T) {
m, err := New("testpackages/emptyinterface", "")
if err != nil {
t.Fatalf("moq.New: %s", err)
}
var buf bytes.Buffer
err = m.Mock(&buf, "Empty")
if err != nil {
t.Errorf("mock error: %s", err)
}
s := buf.String()
if strings.Contains(s, `"sync"`) {
t.Error("contains sync import, although this package isn't used")
}
}

View File

@ -1,7 +1,7 @@
package moq
// moqImports are the imports all moq files get.
var moqImports = []string{"sync"}
var moqImports = []string{}
// moqTemplate is the template for mocked code.
var moqTemplate = `// Code generated by moq; DO NOT EDIT

View File

@ -0,0 +1,4 @@
package emptyinterface
// Empty is an empty interface
type Empty interface{}