Skip to content

Commit

Permalink
assert: fix flaky TestNeverTrue
Browse files Browse the repository at this point in the history
Fix flaky TestNeverTrue: use a channel to make a synchronized list of
return values to avoid a race condition.
  • Loading branch information
dolmen committed Jul 22, 2023
1 parent 486eb6f commit cd26798
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions assert/assertions_test.go
Expand Up @@ -2794,14 +2794,20 @@ func TestNeverFalse(t *testing.T) {
True(t, Never(t, condition, 100*time.Millisecond, 20*time.Millisecond))
}

// TestNeverTrue checks Never with a condition that returns true on second call.
func TestNeverTrue(t *testing.T) {
mockT := new(testing.T)
state := 0

// A list of values returned by condition.
// Channel protects against concurrent access.
returns := make(chan bool, 2)
returns <- false
returns <- true
defer close(returns)

// Will return true on second call.
condition := func() bool {
defer func() {
state = state + 1
}()
return state == 2
return <-returns
}

False(t, Never(mockT, condition, 100*time.Millisecond, 20*time.Millisecond))
Expand Down

0 comments on commit cd26798

Please sign in to comment.