Commit Graph

472 Commits (c7668ea997d68b07ceaa34c46cef1419c39a2374)

Author SHA1 Message Date
Connor Peet 6756bdecf4 Adjust NotNil error message 2015-06-21 07:39:50 +10:00
Ernesto Jiménez ddcad49ec6 Fix typo in test function name 2015-06-15 21:31:24 +01:00
Ernesto Jiménez abc938a12b Add test to avoid regression of issue #180 2015-06-14 19:29:18 +01:00
Andrew Burns c769e40e8b Handle `<autogenerated>` files in `CallerInfo()`
Fixes #180
2015-06-11 14:33:49 -06:00
Ernesto Jiménez 7e4a149930 Merge pull request #177 from s-urbaniak/race
Fix data races
2015-06-05 22:45:35 +01:00
Ernesto Jiménez 6b7dca6fb8 Merge pull request #176 from paulbellamy/stacktraces
Add a basic stacktrace to the assertion output
2015-06-05 21:37:10 +01:00
Sergiusz Urbaniak b11fb16915 mock: fix races to m.Calls/m.ExpectedCalls
Fixes races inside the mock package caused by
unsychronized reads/writes of m.Calls/m.ExpectedCalls.
2015-06-05 16:24:27 +02:00
Paul Bellamy c0b6c3bbd7 Rename Location to Error Trace in failure output 2015-06-05 14:01:19 +01:00
Paul Bellamy 0fd7b57c23 rename assert.locationInfo -> assert.errorTrace 2015-06-05 10:14:07 +01:00
Paul Bellamy 925c3ad43b Reverse the stacktrace on assertion output (to match panic) 2015-06-05 10:13:41 +01:00
Paul Bellamy a7a0af787a Add a basic stacktrace to the assertion output 2015-06-04 14:00:35 +01:00
Ernesto Jiménez 3c81d9b268 Merge pull request #175 from stretchr/variadic
Mocking variadic functions
2015-06-02 23:16:36 +01:00
Ernesto Jiménez 4464dda05e Add extra tests mocking variadic functions 2015-06-02 20:23:13 +01:00
Ernesto Jiménez d6265bda1a Add test mocking variadic function 2015-06-02 19:59:43 +01:00
Ernesto Jiménez 93a84c883d Merge pull request #147 from multiplay/master
Fix race condition with ExpectedCalls
2015-06-02 14:37:00 +01:00
Lee Packham 9768526b70 Fix race condition with ExpectedCalls
There is race condition caused when a method being tested calls a mocked
method within a go routine. For example, caching might be done a go
routine and that caching might be mocked.

There is already a mutex protecting the lists on the Mock object -
however Return() appends to ExpectedCalls and findExpectedCall could
run at the same time.
2015-06-02 12:54:01 +01:00
Ernesto Jiménez 232e856367 Merge pull request #170 from TechnotronicOz/versioning-strategy
Updated README for versioning strategy
2015-05-27 15:45:55 +01:00
Matt Carter d4befe148c Updated README for versioning strategy 2015-05-21 20:36:59 -05:00
Antonio Nicolás Pina 4a6e51647d Added test to avoid regresions of #167. 2015-05-20 10:14:16 +03:00
Antonio Nicolás Pina 547cd8eed6 Release lock before .WaitUntil, as it may cause a deadlock when testing parallel objects.
Address #167: Unable to test concurrent objects
2015-05-20 00:23:55 +03:00
Daniel Perez 1e710e53ab Support map keys for Contains/NotContains assertion. 2015-05-13 16:07:31 +09:00
Ernesto Jiménez dab07ac62d Merge pull request #164 from HawaiianSpork/delta_nan
Address #162: InDelta should fail when actual value is not a number.
2015-05-12 13:42:33 +01:00
Michael R. Maletich 4e2053a4af Address #162: InDelta should fail when actual value is not a number.
Comparting a float with NaN is always false so the assertion would always pass.
Added a check that either the actual or expected values are NaN.

InDelta will now fail if either the actual or expected value are NaN.
2015-05-12 11:54:42 +00:00
Ernesto Jiménez 5ab65693f4 Merge pull request #160 from stretchr/issue-159
Address #159: Meaningful panic when expecting Func
2015-05-07 13:08:08 +01:00
Ernesto Jiménez 1faea58ff8 Address #159: Meaningful panic when expecting Func
We cannot compare two Func arguments to check if they are equal using
the reflect package. This leads to the following misleading panic:

```go
handler := func(http.ResponseWriter, *http.Request) {}
muxMock.On("HandleFunc", "/", handler)
muxMock.HandleFunc("/", handler)
// panics arguing handler != handler
```

Since we cannot fix this behaviour using reflection, this patch
provides a better panic with a meaningful workaround.

```go
handler := func(http.ResponseWriter, *http.Request) {}
muxMock.On("HandleFunc", "/", handler)
// panics recommending defining the expectatin with:
//   AnythingOfType("func(http.ResponseWriter, *http.Request)")
```

Solution following the panic's instructions:

```go
handler := func(http.ResponseWriter, *http.Request) {}
muxMock.On("HandleFunc", "/",
  mock.AnythingOfType("func(http.ResponseWriter, *http.Request)"))
muxMock.HandleFunc("/", handler)
```
2015-05-06 19:35:54 +01:00
Ernesto Jiménez 8bfd855592 Add test cases mocking methods with Func arguments 2015-05-06 19:24:54 +01:00
Ernesto Jiménez 73a8112e05 Merge pull request #158 from stretchr/mock-run-handler
Allow mocking methods updating referenced structs
2015-05-04 23:00:33 +01:00
Ernesto Jiménez a369d6f598 Allow mocking methods updating referenced structs
Some methods in Go take a pointer to a struct or a map and are supposed
to set some values in the referenced argument. Using Return is not
enough to mock such methods.

We are introducing a Run method that allows setting a Call handler to
make your mock update such referenced values.

Example usage mocking a service that finds a user in a data store and
fills the values in the provided struct:

```go
m.On("Find", 1, mock.AnythingOfType(*User))
  .Return(nil)
  .Run(func(args mock.Arguments) {
  u := args.Get(0).(*User)
  u.ID = 1
  u.Email = "mail@example.com"
})
```
2015-05-04 16:56:39 +01:00
Mat Ryer e22aedd376 Tweaks and improvements - Fixes #154 2015-04-20 11:19:11 +01:00
Davide D'Agostino 3b361f7ebb Merge pull request #134 from lazywei/master
Add InDeltaSlice.
2015-04-18 12:10:15 -07:00
Chih-Wei Chang 8b75665fbf Add InEpsilonSlice and corresponding testing. 2015-04-18 22:40:21 +08:00
Davide D'Agostino 08c64393a9 Merge pull request #139 from sul3n3t/equalvalues-doc
Doc entry for EqualValues assertion
2015-04-17 12:10:28 -07:00
Davide D'Agostino e9fe59ca38 Merge pull request #148 from ernesto-jimenez/master
Mock can block returns with .After and .WaitUntil
2015-04-17 12:07:20 -07:00
Davide D'Agostino 1d30fbccfe Merge pull request #153 from lummie/lummie-patch-1
Fix "go vet" errors for incorrect printf verb
2015-04-17 12:06:42 -07:00
lummie 3a9efeedd4 Fix "go vet" errors for incorrect printf verb
github.com/stretchr/testify/mock/mock.go:289: arg m.ExpectedCalls for printf verb %s of wrong type: []mock.Call                                                                                                                       
github.com/stretchr/testify/mock/mock.go:298: arg m.ExpectedCalls for printf verb %s of wrong type: []mock.Call
2015-04-17 16:21:01 +01:00
Davide D'Agostino 59fc8e570c Revert "Remove sprintf equality check"
This reverts commit 842aeb8181.
2015-04-16 16:28:52 -07:00
Tyler Bunnell 4f9c9aeeaa Don't handle func comparisons 2015-04-16 11:41:42 -06:00
Tyler Bunnell 842aeb8181 Remove sprintf equality check
Fix #143
2015-04-16 10:41:30 -06:00
Ernesto Jiménez 0792dedcd1 Mock can block returns with .After and .WaitUntil
You sometimes want to test concurrent behaviour like timeouts, but it
was not currently possible with our mocks.

This commits adds the following functions to Mock:

`After` will block m.Called for the given duration before returning.

```golang
func (m *Mock) After(d time.Duration) *Mock

Mock.On("MyMethod", arg1).After(1 * time.Millisecond)
```

`WaitUntil` is the primitive under `After`, and it's exposed in case you
want somebody wants more control over the returns. `Called` blocks until the w
channel is closed or receives a message.

```golang
func (m *Mock) WaitUntil(w <-chan time.Time) *Mock

Mock.On("MyMethod", arg1).WaitUntil(time.After(1 * time.Millisecond))
```
2015-04-07 23:42:31 +01:00
Justin Cummins 4a32eaca39 Doc entry for EqualValues assertion
Also fixes missing right-bracket on Equal assertions.
2015-02-19 13:25:01 -08:00
Mat Ryer e4ec8152c1 Merge pull request #137 from sul3n3t/forward-equalvalues
Forwards EqualValues assertion
2015-02-18 14:18:46 -08:00
Justin Cummins d5621338a3 Forwards EqualValues assertion 2015-02-18 14:08:46 -08:00
Chih-Wei Chang f0b02af48e Add InDeltaSlice. 2015-02-18 10:38:24 +08:00
Tyler efa3c4c364 Merge pull request #131 from parkr/patch-1
assert: fix syntax error in http assertion comments
2015-02-10 18:53:42 -07:00
Parker Moore 9cce94c41a assert: fix syntax error in http assertion comments 2015-02-10 17:17:43 -08:00
Tyler 6cfa05f71d Merge pull request #130 from pquerna/add_assert_equal_values
Add assert.EqualValues, which attempts to convert types to test equality
2015-02-10 18:00:25 -07:00
Paul Querna e73f5c7e39 Add assert.EqualValues, which attempts to convert types to test equality. Fixes #129 2015-02-10 16:56:43 -08:00
Tyler 43d0eed245 Merge pull request #128 from icecrime/equality_without_conversions
Exclude `ConvertibleTo` from equality test
2015-02-10 14:21:14 -07:00
Arnaud Porterie 9bab92ede2 Exclude conversions from equality tests
`ObjectsAreEqual` using `ConvertibleTo` causes the `ObjectsAreEqual`
function to be asymmetrical and producing incorrect assertions.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
2015-02-06 16:08:28 -08:00
nelsam 33a31e5dbe Merge pull request #121 from stretchr/suite_getters
Add getters for *assert.Assertions and *require.Assertions
2015-01-22 11:43:47 -07:00