summaryrefslogtreecommitdiff
path: root/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface')
-rw-r--r--vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/README.md36
-rw-r--r--vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport.go18
-rw-r--r--vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_mock.go46
-rw-r--r--vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_test.go18
-rw-r--r--vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux/faux.go10
5 files changed, 128 insertions, 0 deletions
diff --git a/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/README.md b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/README.md
new file mode 100644
index 0000000..63955f6
--- /dev/null
+++ b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/README.md
@@ -0,0 +1,36 @@
+Embedded interfaces in `aux_files` generate `unknown embedded interface XXX` errors.
+See below for example of the problem:
+```
+// source
+import (
+ alias "some.org/package/imported"
+)
+
+type Source interface {
+ alias.Foreign
+}
+```
+
+```
+// some.org/package/imported
+type Foreign interface {
+ Embedded
+}
+
+type Embedded interface {}
+```
+
+Attempting to generate a mock will result in an `unknown embedded interface Embedded`.
+The issue is that the `fileParser` stores `auxInterfaces` underneath the package name
+explicitly specified in the `aux_files` flag.
+
+In the `parseInterface` method, there is an incorrect assumption about an embedded interface
+always being in the source file.
+```
+case *ast.Ident:
+ // Embedded interface in this package.
+ ei := p.auxInterfaces[""][v.String()]
+ if ei == nil {
+ return nil, p.errorf(v.Pos(), "unknown embedded interface %s", v.String())
+ }
+```
diff --git a/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport.go b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport.go
new file mode 100644
index 0000000..618a7fd
--- /dev/null
+++ b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport.go
@@ -0,0 +1,18 @@
+//go:generate mockgen -aux_files faux=faux/faux.go -destination bugreport_mock.go -package bugreport -source=bugreport.go Example
+
+package bugreport
+
+import (
+ "log"
+
+ "github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux"
+)
+
+// Source is an interface w/ an embedded foreign interface
+type Source interface {
+ faux.Foreign
+}
+
+func CallForeignMethod(s Source) {
+ log.Println(s.Method())
+}
diff --git a/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_mock.go b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_mock.go
new file mode 100644
index 0000000..0feb02a
--- /dev/null
+++ b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_mock.go
@@ -0,0 +1,46 @@
+// Code generated by MockGen. DO NOT EDIT.
+// Source: bugreport.go
+
+// Package bugreport is a generated GoMock package.
+package bugreport
+
+import (
+ gomock "github.com/golang/mock/gomock"
+ faux "github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux"
+ reflect "reflect"
+)
+
+// MockSource is a mock of Source interface
+type MockSource struct {
+ ctrl *gomock.Controller
+ recorder *MockSourceMockRecorder
+}
+
+// MockSourceMockRecorder is the mock recorder for MockSource
+type MockSourceMockRecorder struct {
+ mock *MockSource
+}
+
+// NewMockSource creates a new mock instance
+func NewMockSource(ctrl *gomock.Controller) *MockSource {
+ mock := &MockSource{ctrl: ctrl}
+ mock.recorder = &MockSourceMockRecorder{mock}
+ return mock
+}
+
+// EXPECT returns an object that allows the caller to indicate expected use
+func (m *MockSource) EXPECT() *MockSourceMockRecorder {
+ return m.recorder
+}
+
+// Method mocks base method
+func (m *MockSource) Method() faux.Return {
+ ret := m.ctrl.Call(m, "Method")
+ ret0, _ := ret[0].(faux.Return)
+ return ret0
+}
+
+// Method indicates an expected call of Method
+func (mr *MockSourceMockRecorder) Method() *gomock.Call {
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Method", reflect.TypeOf((*MockSource)(nil).Method))
+}
diff --git a/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_test.go b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_test.go
new file mode 100644
index 0000000..acfca32
--- /dev/null
+++ b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_test.go
@@ -0,0 +1,18 @@
+package bugreport
+
+import (
+ "testing"
+
+ "github.com/golang/mock/gomock"
+)
+
+// TestValidInterface assesses whether or not the generated mock is valid
+func TestValidInterface(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+
+ s := NewMockSource(ctrl)
+ s.EXPECT().Method().Return("")
+
+ CallForeignMethod(s)
+}
diff --git a/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux/faux.go b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux/faux.go
new file mode 100644
index 0000000..bafd034
--- /dev/null
+++ b/vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux/faux.go
@@ -0,0 +1,10 @@
+package faux
+
+type Foreign interface {
+ Method() Return
+ Embedded
+}
+
+type Embedded interface{}
+
+type Return interface{}