Skip to content

Commit

Permalink
mock: move regexp compilation outside of Called (#631)
Browse files Browse the repository at this point in the history
Co-authored-by: Olivier Mengué <dolmen@cpan.org>
  • Loading branch information
aud10slave and dolmen authored Aug 1, 2023
1 parent a392378 commit a23f5db
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions mock/mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ import (
"github.com/stretchr/testify/assert"
)

// regex for GCCGO functions
var gccgoRE = regexp.MustCompile(`\.pN\d+_`)

// TestingT is an interface wrapper around *testing.T
type TestingT interface {
Logf(format string, args ...interface{})
Expand Down Expand Up @@ -455,9 +458,8 @@ func (m *Mock) Called(arguments ...interface{}) Arguments {
// For Ex: github_com_docker_libkv_store_mock.WatchTree.pN39_github_com_docker_libkv_store_mock.Mock
// uses interface information unlike golang github.com/docker/libkv/store/mock.(*Mock).WatchTree
// With GCCGO we need to remove interface information starting from pN<dd>.
re := regexp.MustCompile("\\.pN\\d+_")
if re.MatchString(functionPath) {
functionPath = re.Split(functionPath, -1)[0]
if gccgoRE.MatchString(functionPath) {
functionPath = gccgoRE.Split(functionPath, -1)[0]
}
parts := strings.Split(functionPath, ".")
functionName := parts[len(parts)-1]
Expand Down

0 comments on commit a23f5db

Please sign in to comment.