Skip to content

Commit

Permalink
assert: more unsafe.Pointer tests
Browse files Browse the repository at this point in the history
1. Isolate tests that use the "unsafe" package in a separate package
   assert/internal/unsafetests. That way the assert package is not
   tainted with unsafe.
2. Remove one reference to the private assert.isNil() in assert tests.
3. Add more tests of assert.Nil and assert.NotNil with unsafe.Pointer.
  • Loading branch information
dolmen committed Nov 9, 2023
1 parent db8608e commit 858080f
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
8 changes: 0 additions & 8 deletions assert/assertions_test.go
Expand Up @@ -16,7 +16,6 @@ import (
"strings"
"testing"
"time"
"unsafe"
)

var (
Expand Down Expand Up @@ -3138,10 +3137,3 @@ func TestErrorAs(t *testing.T) {
})
}
}

func TestIsNil(t *testing.T) {
var n unsafe.Pointer = nil
if !isNil(n) {
t.Fatal("fail")
}
}
4 changes: 4 additions & 0 deletions assert/internal/unsafetests/doc.go
@@ -0,0 +1,4 @@
// This package exists just to isolate tests that reference the [unsafe] package.
//
// The tests in this package are totally safe.
package unsafetests
34 changes: 34 additions & 0 deletions assert/internal/unsafetests/unsafetests_test.go
@@ -0,0 +1,34 @@
package unsafetests_test

import (
"fmt"
"testing"
"unsafe"

"github.com/stretchr/testify/assert"
)

type ignoreTestingT struct{}

var _ assert.TestingT = ignoreTestingT{}

func (ignoreTestingT) Helper() {}

func (ignoreTestingT) Errorf(format string, args ...interface{}) {
// Run the formatting, but ignore the result
msg := fmt.Sprintf(format, args...)
_ = msg
}

func TestUnsafePointers(t *testing.T) {
var ignore ignoreTestingT

assert.True(t, assert.Nil(t, unsafe.Pointer(nil), "unsafe.Pointer(nil) is nil"))
assert.False(t, assert.NotNil(ignore, unsafe.Pointer(nil), "unsafe.Pointer(nil) is nil"))

assert.True(t, assert.Nil(t, unsafe.Pointer((*int)(nil)), "unsafe.Pointer((*int)(nil)) is nil"))
assert.False(t, assert.NotNil(ignore, unsafe.Pointer((*int)(nil)), "unsafe.Pointer((*int)(nil)) is nil"))

assert.False(t, assert.Nil(ignore, unsafe.Pointer(new(int)), "unsafe.Pointer(new(int)) is NOT nil"))
assert.True(t, assert.NotNil(t, unsafe.Pointer(new(int)), "unsafe.Pointer(new(int)) is NOT nil"))
}

0 comments on commit 858080f

Please sign in to comment.