From d85d44f2ebe1adb292950e2f0220c6d82ccab8cc Mon Sep 17 00:00:00 2001 From: Anmol Sethi <hi@nhooyr.io> Date: Sun, 13 Oct 2019 18:56:09 -0400 Subject: [PATCH] Remove separate script for wasm tests --- ci/test.mk | 11 ++------ ci/wasmtest.sh | 18 ------------- conn_test.go | 35 ++++++++++++++++++++++++++ internal/wsjstest/main.go | 53 --------------------------------------- 4 files changed, 37 insertions(+), 80 deletions(-) delete mode 100755 ci/wasmtest.sh delete mode 100644 internal/wsjstest/main.go diff --git a/ci/test.mk b/ci/test.mk index b86abb7..8d46c94 100644 --- a/ci/test.mk +++ b/ci/test.mk @@ -1,4 +1,4 @@ -test: gotest gotest-wasm +test: gotest gotest: _gotest htmlcov ifdef CI @@ -12,15 +12,8 @@ codecov: _gotest curl -s https://codecov.io/bash | bash -s -- -Z -f ci/out/coverage.prof _gotest: - echo "--- gotest" && go test -parallel=32 -coverprofile=ci/out/coverage.prof -coverpkg=./... $$TESTFLAGS ./... + go test -parallel=32 -coverprofile=ci/out/coverage.prof -coverpkg=./... $$TESTFLAGS ./... sed -i '/_stringer\.go/d' ci/out/coverage.prof - sed -i '/wsjstest\/main\.go/d' ci/out/coverage.prof sed -i '/wsecho\.go/d' ci/out/coverage.prof sed -i '/assert\.go/d' ci/out/coverage.prof sed -i '/wsgrace\.go/d' ci/out/coverage.prof - -gotest-wasm: wsjstest - echo "--- wsjstest" && ./ci/wasmtest.sh - -wsjstest: - go install ./internal/wsjstest diff --git a/ci/wasmtest.sh b/ci/wasmtest.sh deleted file mode 100755 index f285fdf..0000000 --- a/ci/wasmtest.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -wsjstestOut="$(mktemp -d)/wsjstestOut" -mkfifo "$wsjstestOut" -timeout 45s wsjstest > "$wsjstestOut" & - -WS_ECHO_SERVER_URL="$(head -n 1 "$wsjstestOut")" -export WS_ECHO_SERVER_URL - -GOOS=js GOARCH=wasm go test -exec=wasmbrowsertest ./... - -kill %% -if ! wait %% ; then - echo "wsjstest exited unsuccessfully" - exit 1 -fi diff --git a/conn_test.go b/conn_test.go index 8413c4c..4c7d139 100644 --- a/conn_test.go +++ b/conn_test.go @@ -2337,3 +2337,38 @@ func checkWSTestIndex(t *testing.T, path string) { } } } + +func TestWASM(t *testing.T) { + t.Parallel() + + s, closeFn := testServer(t, func(w http.ResponseWriter, r *http.Request) error { + c, err := websocket.Accept(w, r, &websocket.AcceptOptions{ + Subprotocols: []string{"echo"}, + InsecureSkipVerify: true, + }) + if err != nil { + return err + } + defer c.Close(websocket.StatusInternalError, "") + + err = wsecho.Loop(r.Context(), c) + if websocket.CloseStatus(err) != websocket.StatusNormalClosure { + return err + } + return nil + }, false) + defer closeFn() + + wsURL := strings.Replace(s.URL, "http", "ws", 1) + + ctx, cancel := context.WithTimeout(context.Background(), time.Second*20) + defer cancel() + + cmd := exec.CommandContext(ctx, "go", "test", "-exec=wasmbrowsertest", "./...") + cmd.Env = append(os.Environ(), "GOOS=js", "GOARCH=wasm", fmt.Sprintf("WS_ECHO_SERVER_URL=%v", wsURL)) + + b, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("wasm test binary failed: %v:\n%s", err, b) + } +} diff --git a/internal/wsjstest/main.go b/internal/wsjstest/main.go deleted file mode 100644 index 96eee2c..0000000 --- a/internal/wsjstest/main.go +++ /dev/null @@ -1,53 +0,0 @@ -// +build !js - -package main - -import ( - "fmt" - "log" - "net/http" - "net/http/httptest" - "os" - "os/signal" - "strings" - "syscall" - - "nhooyr.io/websocket" - "nhooyr.io/websocket/internal/wsecho" - "nhooyr.io/websocket/internal/wsgrace" -) - -func main() { - log.SetPrefix("wsecho") - - s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - c, err := websocket.Accept(w, r, &websocket.AcceptOptions{ - Subprotocols: []string{"echo"}, - InsecureSkipVerify: true, - }) - if err != nil { - log.Fatalf("echo server: failed to accept: %+v", err) - } - defer c.Close(websocket.StatusInternalError, "") - - err = wsecho.Loop(r.Context(), c) - if websocket.CloseStatus(err) != websocket.StatusNormalClosure { - log.Fatalf("unexpected echo loop error: %+v", err) - } - })) - closeFn := wsgrace.Grace(s.Config) - defer func() { - err := closeFn() - if err != nil { - log.Fatal(err) - } - }() - - wsURL := strings.Replace(s.URL, "http", "ws", 1) - fmt.Printf("%v\n", wsURL) - - sigs := make(chan os.Signal, 1) - signal.Notify(sigs, syscall.SIGTERM) - - <-sigs -} -- GitLab