Skip to content

Commit

Permalink
fixing panic in calls to assertion with nil m.mutex (#1212)
Browse files Browse the repository at this point in the history
* fixing panic in calls to assertion with nil m.mutex

This reverts a change that was made in #1182
The PR makes m.mutex a pointer which now needs to be checked but it's not checked for nil everywhere.

This should also help with these issues:
- #1208
- #1210

* Revert throwing out the lock because other concurrent calls can already have it locked

* fix go vet copy lock by using pointer

* fix obj assignment for passing test
  • Loading branch information
Edward Raigosa committed Jun 24, 2022
1 parent c206b2e commit b5ce165
Showing 1 changed file with 3 additions and 13 deletions.
16 changes: 3 additions & 13 deletions mock/mock.go
Expand Up @@ -255,7 +255,7 @@ type Mock struct {
// this data completely allowing you to do whatever you like with it.
testData objx.Map

mutex *sync.Mutex
mutex sync.Mutex
}

// String provides a %v format string for Mock.
Expand All @@ -282,10 +282,6 @@ func (m *Mock) TestData() objx.Map {

// Test sets the test struct variable of the mock object
func (m *Mock) Test(t TestingT) {
if m.mutex == nil {
m.mutex = &sync.Mutex{}
}

m.mutex.Lock()
defer m.mutex.Unlock()
m.test = t
Expand Down Expand Up @@ -316,9 +312,6 @@ func (m *Mock) On(methodName string, arguments ...interface{}) *Call {
}
}

// Since we start mocks with the .On() function, m.mutex should be reset
m.mutex = &sync.Mutex{}

m.mutex.Lock()
defer m.mutex.Unlock()
c := newCall(m, methodName, assert.CallerInfo(), arguments...)
Expand Down Expand Up @@ -526,9 +519,9 @@ func AssertExpectationsForObjects(t TestingT, testObjects ...interface{}) bool {
h.Helper()
}
for _, obj := range testObjects {
if m, ok := obj.(Mock); ok {
if m, ok := obj.(*Mock); ok {
t.Logf("Deprecated mock.AssertExpectationsForObjects(myMock.Mock) use mock.AssertExpectationsForObjects(myMock)")
obj = &m
obj = m
}
m := obj.(assertExpectationser)
if !m.AssertExpectations(t) {
Expand All @@ -545,9 +538,6 @@ func (m *Mock) AssertExpectations(t TestingT) bool {
if h, ok := t.(tHelper); ok {
h.Helper()
}
if m.mutex == nil {
m.mutex = &sync.Mutex{}
}

m.mutex.Lock()
defer m.mutex.Unlock()
Expand Down

0 comments on commit b5ce165

Please sign in to comment.