Bump google.golang.org/api
This commit is contained in:
269
vendor/github.com/golang/mock/mockgen/mockgen_test.go
generated
vendored
Normal file
269
vendor/github.com/golang/mock/mockgen/mockgen_test.go
generated
vendored
Normal file
@@ -0,0 +1,269 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/golang/mock/mockgen/model"
|
||||
)
|
||||
|
||||
func TestMakeArgString(t *testing.T) {
|
||||
testCases := []struct {
|
||||
argNames []string
|
||||
argTypes []string
|
||||
argString string
|
||||
}{
|
||||
{
|
||||
argNames: nil,
|
||||
argTypes: nil,
|
||||
argString: "",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0"},
|
||||
argTypes: []string{"int"},
|
||||
argString: "arg0 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1"},
|
||||
argTypes: []string{"int", "bool"},
|
||||
argString: "arg0 int, arg1 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1"},
|
||||
argTypes: []string{"int", "int"},
|
||||
argString: "arg0, arg1 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2"},
|
||||
argTypes: []string{"bool", "int", "int"},
|
||||
argString: "arg0 bool, arg1, arg2 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2"},
|
||||
argTypes: []string{"int", "bool", "int"},
|
||||
argString: "arg0 int, arg1 bool, arg2 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2"},
|
||||
argTypes: []string{"int", "int", "bool"},
|
||||
argString: "arg0, arg1 int, arg2 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2"},
|
||||
argTypes: []string{"int", "int", "int"},
|
||||
argString: "arg0, arg1, arg2 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3"},
|
||||
argTypes: []string{"bool", "int", "int", "int"},
|
||||
argString: "arg0 bool, arg1, arg2, arg3 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3"},
|
||||
argTypes: []string{"int", "bool", "int", "int"},
|
||||
argString: "arg0 int, arg1 bool, arg2, arg3 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3"},
|
||||
argTypes: []string{"int", "int", "bool", "int"},
|
||||
argString: "arg0, arg1 int, arg2 bool, arg3 int",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3"},
|
||||
argTypes: []string{"int", "int", "int", "bool"},
|
||||
argString: "arg0, arg1, arg2 int, arg3 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3", "arg4"},
|
||||
argTypes: []string{"bool", "int", "int", "int", "bool"},
|
||||
argString: "arg0 bool, arg1, arg2, arg3 int, arg4 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3", "arg4"},
|
||||
argTypes: []string{"int", "bool", "int", "int", "bool"},
|
||||
argString: "arg0 int, arg1 bool, arg2, arg3 int, arg4 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3", "arg4"},
|
||||
argTypes: []string{"int", "int", "bool", "int", "bool"},
|
||||
argString: "arg0, arg1 int, arg2 bool, arg3 int, arg4 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3", "arg4"},
|
||||
argTypes: []string{"int", "int", "int", "bool", "bool"},
|
||||
argString: "arg0, arg1, arg2 int, arg3, arg4 bool",
|
||||
},
|
||||
{
|
||||
argNames: []string{"arg0", "arg1", "arg2", "arg3", "arg4"},
|
||||
argTypes: []string{"int", "int", "bool", "bool", "int"},
|
||||
argString: "arg0, arg1 int, arg2, arg3 bool, arg4 int",
|
||||
},
|
||||
}
|
||||
|
||||
for i, tc := range testCases {
|
||||
t.Run(fmt.Sprintf("#%d", i), func(t *testing.T) {
|
||||
s := makeArgString(tc.argNames, tc.argTypes)
|
||||
if s != tc.argString {
|
||||
t.Errorf("result == %q, want %q", s, tc.argString)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewIdentifierAllocator(t *testing.T) {
|
||||
a := newIdentifierAllocator([]string{"taken1", "taken2"})
|
||||
if len(a) != 2 {
|
||||
t.Fatalf("expected 2 items, got %v", len(a))
|
||||
}
|
||||
|
||||
_, ok := a["taken1"]
|
||||
if !ok {
|
||||
t.Errorf("allocator doesn't contain 'taken1': %#v", a)
|
||||
}
|
||||
|
||||
_, ok = a["taken2"]
|
||||
if !ok {
|
||||
t.Errorf("allocator doesn't contain 'taken2': %#v", a)
|
||||
}
|
||||
}
|
||||
|
||||
func allocatorContainsIdentifiers(a identifierAllocator, ids []string) bool {
|
||||
if len(a) != len(ids) {
|
||||
return false
|
||||
}
|
||||
|
||||
for _, id := range ids {
|
||||
_, ok := a[id]
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func TestIdentifierAllocator_allocateIdentifier(t *testing.T) {
|
||||
a := newIdentifierAllocator([]string{"taken"})
|
||||
|
||||
t2 := a.allocateIdentifier("taken_2")
|
||||
if t2 != "taken_2" {
|
||||
t.Fatalf("expected 'taken_2', got %q", t2)
|
||||
}
|
||||
expected := []string{"taken", "taken_2"}
|
||||
if !allocatorContainsIdentifiers(a, expected) {
|
||||
t.Fatalf("allocator doesn't contain the expected items - allocator: %#v, expected items: %#v", a, expected)
|
||||
}
|
||||
|
||||
t3 := a.allocateIdentifier("taken")
|
||||
if t3 != "taken_3" {
|
||||
t.Fatalf("expected 'taken_3', got %q", t3)
|
||||
}
|
||||
expected = []string{"taken", "taken_2", "taken_3"}
|
||||
if !allocatorContainsIdentifiers(a, expected) {
|
||||
t.Fatalf("allocator doesn't contain the expected items - allocator: %#v, expected items: %#v", a, expected)
|
||||
}
|
||||
|
||||
t4 := a.allocateIdentifier("taken")
|
||||
if t4 != "taken_4" {
|
||||
t.Fatalf("expected 'taken_4', got %q", t4)
|
||||
}
|
||||
expected = []string{"taken", "taken_2", "taken_3", "taken_4"}
|
||||
if !allocatorContainsIdentifiers(a, expected) {
|
||||
t.Fatalf("allocator doesn't contain the expected items - allocator: %#v, expected items: %#v", a, expected)
|
||||
}
|
||||
|
||||
id := a.allocateIdentifier("id")
|
||||
if id != "id" {
|
||||
t.Fatalf("expected 'id', got %q", id)
|
||||
}
|
||||
expected = []string{"taken", "taken_2", "taken_3", "taken_4", "id"}
|
||||
if !allocatorContainsIdentifiers(a, expected) {
|
||||
t.Fatalf("allocator doesn't contain the expected items - allocator: %#v, expected items: %#v", a, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGenerateMockInterface_Helper(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
Name string
|
||||
Identifier string
|
||||
HelperLine string
|
||||
Methods []*model.Method
|
||||
}{
|
||||
{Name: "mock", Identifier: "MockSomename", HelperLine: "m.ctrl.T.Helper()"},
|
||||
{Name: "recorder", Identifier: "MockSomenameMockRecorder", HelperLine: "mr.mock.ctrl.T.Helper()"},
|
||||
{
|
||||
Name: "mock identifier conflict",
|
||||
Identifier: "MockSomename",
|
||||
HelperLine: "m_2.ctrl.T.Helper()",
|
||||
Methods: []*model.Method{
|
||||
{
|
||||
Name: "MethodA",
|
||||
In: []*model.Parameter{
|
||||
{
|
||||
Name: "m",
|
||||
Type: &model.NamedType{Type: "int"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "recorder identifier conflict",
|
||||
Identifier: "MockSomenameMockRecorder",
|
||||
HelperLine: "mr_2.mock.ctrl.T.Helper()",
|
||||
Methods: []*model.Method{
|
||||
{
|
||||
Name: "MethodA",
|
||||
In: []*model.Parameter{
|
||||
{
|
||||
Name: "mr",
|
||||
Type: &model.NamedType{Type: "int"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
} {
|
||||
t.Run(test.Name, func(t *testing.T) {
|
||||
g := generator{}
|
||||
|
||||
if len(test.Methods) == 0 {
|
||||
test.Methods = []*model.Method{
|
||||
{Name: "MethodA"},
|
||||
{Name: "MethodB"},
|
||||
}
|
||||
}
|
||||
|
||||
if err := g.GenerateMockInterface(&model.Interface{
|
||||
Name: "Somename",
|
||||
Methods: test.Methods,
|
||||
}, "somepackage"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
lines := strings.Split(g.buf.String(), "\n")
|
||||
|
||||
// T.Helper() should be the first line
|
||||
for _, method := range test.Methods {
|
||||
if strings.TrimSpace(lines[findMethod(t, test.Identifier, method.Name, lines)+1]) != test.HelperLine {
|
||||
t.Fatalf("method %s.%s did not declare itself a Helper method", test.Identifier, method.Name)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func findMethod(t *testing.T, identifier, methodName string, lines []string) int {
|
||||
t.Helper()
|
||||
r := regexp.MustCompile(fmt.Sprintf(`func\s+\(.+%s\)\s*%s`, identifier, methodName))
|
||||
for i, line := range lines {
|
||||
if r.MatchString(line) {
|
||||
return i
|
||||
}
|
||||
}
|
||||
|
||||
t.Fatalf("unable to find 'func (m %s) %s'", identifier, methodName)
|
||||
panic("unreachable")
|
||||
}
|
Reference in New Issue
Block a user