From 3f2589ffa18b5e61a7786ad5308c5ccc87688cef Mon Sep 17 00:00:00 2001
From: Anmol Sethi <hi@nhooyr.io>
Date: Sat, 8 Feb 2020 23:36:06 -0500
Subject: [PATCH] Remove quite a bit of slog

---
 ci/test.mk                   |  2 +-
 close_test.go                | 42 ++++++++++++++++++++++++++----------
 conn_test.go                 | 30 ++++++++++++++++++--------
 frame_test.go                | 30 ++++++++++++++++++++------
 internal/test/wstest/pipe.go |  2 +-
 internal/test/xrand/xrand.go |  4 ++--
 6 files changed, 79 insertions(+), 31 deletions(-)

diff --git a/ci/test.mk b/ci/test.mk
index 95e049b..786a8d7 100644
--- a/ci/test.mk
+++ b/ci/test.mk
@@ -14,4 +14,4 @@ coveralls: gotest
 gotest:
 	go test -covermode=count -coverprofile=ci/out/coverage.prof -coverpkg=./... $${GOTESTFLAGS-} ./...
 	sed -i '/stringer\.go/d' ci/out/coverage.prof
-	sed -i '/assert/d' ci/out/coverage.prof
+	sed -i '/nhooyr.io\/websocket\/internal\/test/d' ci/out/coverage.prof
diff --git a/close_test.go b/close_test.go
index 16b570d..10a35b1 100644
--- a/close_test.go
+++ b/close_test.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 	"testing"
 
-	"cdr.dev/slog/sloggers/slogtest/assert"
+	"nhooyr.io/websocket/internal/test/cmp"
 )
 
 func TestCloseError(t *testing.T) {
@@ -51,13 +51,23 @@ func TestCloseError(t *testing.T) {
 			t.Parallel()
 
 			_, err := tc.ce.bytesErr()
-			if tc.success {
-				assert.Success(t, "CloseError.bytesErr", err)
-			} else {
-				assert.Error(t, "CloseError.bytesErr", err)
+			if tc.success != (err == nil) {
+				t.Fatalf("unexpected error value (wanted err == nil == %v): %v", tc.success, err)
 			}
 		})
 	}
+
+	t.Run("Error", func(t *testing.T) {
+		exp := `status = StatusInternalError and reason = "meow"`
+		act := CloseError{
+			Code:   StatusInternalError,
+			Reason: "meow",
+		}.Error()
+
+		if (act) != exp {
+			t.Fatal(cmp.Diff(exp, act))
+		}
+	})
 }
 
 func Test_parseClosePayload(t *testing.T) {
@@ -104,10 +114,14 @@ func Test_parseClosePayload(t *testing.T) {
 
 			ce, err := parseClosePayload(tc.p)
 			if tc.success {
-				assert.Success(t, "parse err", err)
-				assert.Equal(t, "ce", tc.ce, ce)
-			} else {
-				assert.Error(t, "parse err", err)
+				if err != nil {
+					t.Fatal(err)
+				}
+				if !cmp.Equal(tc.ce, ce) {
+					t.Fatalf("expected %v but got %v", tc.ce, ce)
+				}
+			} else if err == nil {
+				t.Errorf("expected error: %v %v", ce, err)
 			}
 		})
 	}
@@ -153,7 +167,10 @@ func Test_validWireCloseCode(t *testing.T) {
 		t.Run(tc.name, func(t *testing.T) {
 			t.Parallel()
 
-			assert.Equal(t, "valid", tc.valid, validWireCloseCode(tc.code))
+			act := validWireCloseCode(tc.code)
+			if !cmp.Equal(tc.valid, act) {
+				t.Fatalf("unexpected valid: %v", cmp.Diff(tc.valid, act))
+			}
 		})
 	}
 }
@@ -190,7 +207,10 @@ func TestCloseStatus(t *testing.T) {
 		t.Run(tc.name, func(t *testing.T) {
 			t.Parallel()
 
-			assert.Equal(t, "closeStatus", tc.exp, CloseStatus(tc.in))
+			act := CloseStatus(tc.in)
+			if !cmp.Equal(tc.exp, act) {
+				t.Fatalf("unexpected closeStatus: %v", cmp.Diff(tc.exp, act))
+			}
 		})
 	}
 }
diff --git a/conn_test.go b/conn_test.go
index d246f71..02606ef 100644
--- a/conn_test.go
+++ b/conn_test.go
@@ -14,13 +14,17 @@ import (
 	"nhooyr.io/websocket/internal/test/cmp"
 	"nhooyr.io/websocket/internal/test/wstest"
 	"nhooyr.io/websocket/internal/test/xrand"
-	"nhooyr.io/websocket/wsjson"
 )
 
 func goFn(fn func() error) chan error {
 	errs := make(chan error)
 	go func() {
-		defer close(errs)
+		defer func() {
+			r := recover()
+			if r != nil {
+				errs <- xerrors.Errorf("panic in gofn: %v", r)
+			}
+		}()
 		errs <- fn()
 	}()
 
@@ -33,7 +37,7 @@ func TestConn(t *testing.T) {
 	t.Run("data", func(t *testing.T) {
 		t.Parallel()
 
-		for i := 0; i < 10; i++ {
+		for i := 0; i < 5; i++ {
 			t.Run("", func(t *testing.T) {
 				t.Parallel()
 
@@ -41,7 +45,7 @@ func TestConn(t *testing.T) {
 				defer cancel()
 
 				copts := websocket.CompressionOptions{
-					Mode:      websocket.CompressionMode(xrand.Int(int(websocket.CompressionDisabled))),
+					Mode:      websocket.CompressionMode(xrand.Int(int(websocket.CompressionDisabled) + 1)),
 					Threshold: xrand.Int(9999),
 				}
 
@@ -70,17 +74,21 @@ func TestConn(t *testing.T) {
 
 				c2.SetReadLimit(1 << 30)
 
-				for i := 0; i < 10; i++ {
+				for i := 0; i < 5; i++ {
 					n := xrand.Int(131_072)
 
-					msg := xrand.String(n)
+					msg := xrand.Bytes(n)
+
+					expType := websocket.MessageBinary
+					if xrand.Bool() {
+						expType = websocket.MessageText
+					}
 
 					writeErr := goFn(func() error {
-						return wsjson.Write(ctx, c2, msg)
+						return c2.Write(ctx, expType, msg)
 					})
 
-					var act interface{}
-					err := wsjson.Read(ctx, c2, &act)
+					actType, act, err := c2.Read(ctx)
 					if err != nil {
 						t.Fatal(err)
 					}
@@ -90,6 +98,10 @@ func TestConn(t *testing.T) {
 						t.Fatal(err)
 					}
 
+					if expType != actType {
+						t.Fatalf("unexpected message typ (%v): %v", expType, actType)
+					}
+
 					if !cmp.Equal(msg, act) {
 						t.Fatalf("unexpected msg read: %v", cmp.Diff(msg, act))
 					}
diff --git a/frame_test.go b/frame_test.go
index 323ea99..0b770a4 100644
--- a/frame_test.go
+++ b/frame_test.go
@@ -13,9 +13,10 @@ import (
 	"time"
 	_ "unsafe"
 
-	"cdr.dev/slog/sloggers/slogtest/assert"
 	"github.com/gobwas/ws"
 	_ "github.com/gorilla/websocket"
+
+	"nhooyr.io/websocket/internal/test/cmp"
 )
 
 func TestHeader(t *testing.T) {
@@ -80,14 +81,22 @@ func testHeader(t *testing.T, h header) {
 	r := bufio.NewReader(b)
 
 	err := writeFrameHeader(h, w)
-	assert.Success(t, "writeFrameHeader", err)
+	if err != nil {
+		t.Fatal(err)
+	}
 	err = w.Flush()
-	assert.Success(t, "flush", err)
+	if err != nil {
+		t.Fatal(err)
+	}
 
 	h2, err := readFrameHeader(r)
-	assert.Success(t, "readFrameHeader", err)
+	if err != nil {
+		t.Fatal(err)
+	}
 
-	assert.Equal(t, "header", h, h2)
+	if !cmp.Equal(h, h2) {
+		t.Fatal(cmp.Diff(h, h2))
+	}
 }
 
 func Test_mask(t *testing.T) {
@@ -98,8 +107,15 @@ func Test_mask(t *testing.T) {
 	p := []byte{0xa, 0xb, 0xc, 0xf2, 0xc}
 	gotKey32 := mask(key32, p)
 
-	assert.Equal(t, "mask", []byte{0, 0, 0, 0x0d, 0x6}, p)
-	assert.Equal(t, "maskKey", bits.RotateLeft32(key32, -8), gotKey32)
+	expP := []byte{0, 0, 0, 0x0d, 0x6}
+	if !cmp.Equal(expP, p) {
+		t.Fatal(cmp.Diff(expP, p))
+	}
+
+	expKey32 := bits.RotateLeft32(key32, -8)
+	if !cmp.Equal(expKey32, gotKey32) {
+		t.Fatal(cmp.Diff(expKey32, gotKey32))
+	}
 }
 
 func basicMask(maskKey [4]byte, pos int, b []byte) int {
diff --git a/internal/test/wstest/pipe.go b/internal/test/wstest/pipe.go
index f3d25f5..e958aea 100644
--- a/internal/test/wstest/pipe.go
+++ b/internal/test/wstest/pipe.go
@@ -43,7 +43,7 @@ func Pipe(dialOpts *websocket.DialOptions, acceptOpts *websocket.AcceptOptions)
 		return nil, nil, xerrors.Errorf("failed to get server conn from fake transport: %w", acceptErr)
 	}
 
-	if xrand.True() {
+	if xrand.Bool() {
 		return serverConn, clientConn, nil
 	}
 	return clientConn, serverConn, nil
diff --git a/internal/test/xrand/xrand.go b/internal/test/xrand/xrand.go
index 2f3ad30..8de1ede 100644
--- a/internal/test/xrand/xrand.go
+++ b/internal/test/xrand/xrand.go
@@ -32,8 +32,8 @@ func String(n int) string {
 	return s
 }
 
-// True returns a randomly generated boolean.
-func True() bool {
+// Bool returns a randomly generated boolean.
+func Bool() bool {
 	return Int(2) == 1
 }
 
-- 
GitLab