-
Notifications
You must be signed in to change notification settings - Fork 131
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
module go.uber.org/mock | ||
|
||
go 1.23 | ||
go 1.22 | ||
|
||
require ( | ||
github.com/stretchr/testify v1.9.0 | ||
|
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,36 @@ | ||
package gomock | ||
|
||
import "fmt" | ||
|
||
type mockInstance interface { | ||
ISGOMOCK() struct{} | ||
} | ||
type mockedStringer interface { | ||
fmt.Stringer | ||
mockInstance | ||
} | ||
import ( | ||
"fmt" | ||
"reflect" | ||
) | ||
|
||
// getString is a safe way to convert a value to a string for printing results | ||
// If the value is a a mock, getString avoids calling the mocked String() method, | ||
// which avoids potential deadlocks | ||
func getString(x any) string { | ||
switch v := x.(type) { | ||
case mockedStringer: | ||
return fmt.Sprintf("%T", v) | ||
case fmt.Stringer: | ||
return v.String() | ||
default: | ||
return fmt.Sprintf("%v", v) | ||
if isGeneratedMock(x) { | ||
return fmt.Sprintf("%T", x) | ||
} | ||
if s, ok := x.(fmt.Stringer); ok { | ||
return s.String() | ||
} | ||
return fmt.Sprintf("%v", x) | ||
} | ||
|
||
// isGeneratedMock checks if the given type has a "isgomock" field, | ||
// indicating it is a generated mock. | ||
func isGeneratedMock(x any) bool { | ||
typ := reflect.TypeOf(x) | ||
if typ == nil { | ||
return false | ||
} | ||
if typ.Kind() == reflect.Ptr { | ||
typ = typ.Elem() | ||
} | ||
if typ.Kind() != reflect.Struct { | ||
return false | ||
} | ||
_, isgomock := typ.FieldByName("isgomock") | ||
return isgomock | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
module go.uber.org/mock/mockgen/internal/tests/generics | ||
|
||
go 1.23 | ||
go 1.22 | ||
|
||
replace go.uber.org/mock => ../../../.. | ||
|
||
|