diff --git a/0006-Use-httptest-to-serve-wasm-test-files.patch b/0006-Use-httptest-to-serve-wasm-test-files.patch index ddab238..d18097c 100644 --- a/0006-Use-httptest-to-serve-wasm-test-files.patch +++ b/0006-Use-httptest-to-serve-wasm-test-files.patch @@ -1,31 +1,31 @@ -From 6bedea1e36176028452010aeebf5bfcde0e73e6e Mon Sep 17 00:00:00 2001 +From 0c9b3f7c9c7041e39bd04e4a99d9ffbac6695d79 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 22 Dec 2020 17:56:53 -0500 -Subject: [PATCH 6/7] Use httptest to serve wasm test files. +Subject: [PATCH] Use httptest to serve wasm test files. This picks a port automatically, so avoids any conflicts that might arise from running the tests in parallel. Signed-off-by: Elliott Sales de Andrade --- - tests/wasm/chan_test.go | 5 ++++- - tests/wasm/event_test.go | 5 ++++- - tests/wasm/fmt_test.go | 5 ++++- - tests/wasm/fmtprint_test.go | 5 ++++- - tests/wasm/log_test.go | 5 ++++- - tests/wasm/setup_test.go | 37 ++++++------------------------------- - 6 files changed, 26 insertions(+), 36 deletions(-) + tests/wasm/chan_test.go | 5 +++- + tests/wasm/event_test.go | 5 +++- + tests/wasm/fmt_test.go | 5 +++- + tests/wasm/fmtprint_test.go | 5 +++- + tests/wasm/log_test.go | 5 +++- + tests/wasm/setup_test.go | 49 +++++++++++++++---------------------- + 6 files changed, 40 insertions(+), 34 deletions(-) diff --git a/tests/wasm/chan_test.go b/tests/wasm/chan_test.go -index 1cd08e6..c603832 100644 +index 1cd08e6..2faf95b 100644 --- a/tests/wasm/chan_test.go +++ b/tests/wasm/chan_test.go @@ -11,6 +11,9 @@ func TestChan(t *testing.T) { t.Parallel() -+ wasmTmpDir, server := startServer(t) -+ defer server.Close() ++ wasmTmpDir, server, cleanup := startServer(t) ++ defer cleanup() + err := run("tinygo build -o " + wasmTmpDir + "/chan.wasm -target wasm testdata/chan.go") if err != nil { @@ -40,15 +40,15 @@ index 1cd08e6..c603832 100644 2 4 diff --git a/tests/wasm/event_test.go b/tests/wasm/event_test.go -index d2b8340..6ecc535 100644 +index d2b8340..f4ede02 100644 --- a/tests/wasm/event_test.go +++ b/tests/wasm/event_test.go @@ -13,6 +13,9 @@ func TestEvent(t *testing.T) { t.Parallel() -+ wasmTmpDir, server := startServer(t) -+ defer server.Close() ++ wasmTmpDir, server, cleanup := startServer(t) ++ defer cleanup() + err := run("tinygo build -o " + wasmTmpDir + "/event.wasm -target wasm testdata/event.go") if err != nil { @@ -63,15 +63,15 @@ index d2b8340..6ecc535 100644 chromedp.Sleep(time.Second), chromedp.InnerHTML("#log", &log1), diff --git a/tests/wasm/fmt_test.go b/tests/wasm/fmt_test.go -index 8b4fe8c..0f2b928 100644 +index 8b4fe8c..cac38e7 100644 --- a/tests/wasm/fmt_test.go +++ b/tests/wasm/fmt_test.go @@ -20,6 +20,9 @@ func TestFmt(t *testing.T) { t.Parallel() -+ wasmTmpDir, server := startServer(t) -+ defer server.Close() ++ wasmTmpDir, server, cleanup := startServer(t) ++ defer cleanup() + err := run("tinygo build -o " + wasmTmpDir + "/fmt.wasm -target wasm testdata/fmt.go") if err != nil { @@ -86,15 +86,15 @@ index 8b4fe8c..0f2b928 100644 chromedp.InnerHTML("#log", &log1), waitLog(`did not panic`), diff --git a/tests/wasm/fmtprint_test.go b/tests/wasm/fmtprint_test.go -index ebd1ffa..02e9596 100644 +index ebd1ffa..7b4a470 100644 --- a/tests/wasm/fmtprint_test.go +++ b/tests/wasm/fmtprint_test.go @@ -13,6 +13,9 @@ func TestFmtprint(t *testing.T) { t.Parallel() -+ wasmTmpDir, server := startServer(t) -+ defer server.Close() ++ wasmTmpDir, server, cleanup := startServer(t) ++ defer cleanup() + err := run("tinygo build -o " + wasmTmpDir + "/fmtprint.wasm -target wasm testdata/fmtprint.go") if err != nil { @@ -109,15 +109,15 @@ index ebd1ffa..02e9596 100644 chromedp.InnerHTML("#log", &log1), waitLog(`test from fmtprint 1 diff --git a/tests/wasm/log_test.go b/tests/wasm/log_test.go -index a9cc1be..655beb0 100644 +index a9cc1be..ea314e4 100644 --- a/tests/wasm/log_test.go +++ b/tests/wasm/log_test.go @@ -13,6 +13,9 @@ func TestLog(t *testing.T) { t.Parallel() -+ wasmTmpDir, server := startServer(t) -+ defer server.Close() ++ wasmTmpDir, server, cleanup := startServer(t) ++ defer cleanup() + err := run("tinygo build -o " + wasmTmpDir + "/log.wasm -target wasm testdata/log.go") if err != nil { @@ -132,24 +132,23 @@ index a9cc1be..655beb0 100644 chromedp.InnerHTML("#log", &log1), waitLogRe(`^..../../.. ..:..:.. log 1 diff --git a/tests/wasm/setup_test.go b/tests/wasm/setup_test.go -index 6a84983..5120518 100644 +index a38b426..575829b 100644 --- a/tests/wasm/setup_test.go +++ b/tests/wasm/setup_test.go -@@ -3,12 +3,10 @@ package wasm +@@ -3,11 +3,11 @@ package wasm import ( "context" "errors" - "flag" "fmt" -- "io/ioutil" + "io/ioutil" "log" "net/http" -- "os" + "net/http/httptest" + "os" "os/exec" "regexp" - "strings" -@@ -20,29 +18,6 @@ import ( +@@ -19,29 +19,6 @@ import ( "github.com/chromedp/chromedp" ) @@ -179,18 +178,21 @@ index 6a84983..5120518 100644 func run(cmdline string) error { args := strings.Fields(cmdline) return runargs(args...) -@@ -70,8 +45,9 @@ func chromectx(timeout time.Duration) (context.Context, context.CancelFunc) { +@@ -69,7 +46,12 @@ func chromectx(timeout time.Duration) (context.Context, context.CancelFunc) { return ctx, cancel } -func startServer(tmpDir string) { -+func startServer(t *testing.T) (tmpDir string, server *httptest.Server) { ++func startServer(t *testing.T) (string, *httptest.Server, func()) { ++ // In Go 1.15, all this can be replaced by t.TempDir() ++ tmpDir, err := ioutil.TempDir("", "wasm_test") ++ if err != nil { ++ t.Fatalf("unable to create temp dir: %v", err) ++ } -+ tmpDir = t.TempDir() fsh := http.FileServer(http.Dir(tmpDir)) h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - -@@ -140,11 +116,10 @@ if (wasmSupported) { +@@ -139,11 +121,20 @@ if (wasmSupported) { fsh.ServeHTTP(w, r) }) @@ -198,10 +200,20 @@ index 6a84983..5120518 100644 - go func() { - log.Fatal(http.ListenAndServe(*addr, h)) - }() -+ server = httptest.NewServer(h) -+ log.Printf("Started server at %q for dir: %s", server.URL, tmpDir) ++ server := httptest.NewServer(h) ++ t.Logf("Started server at %q for dir: %s", server.URL, tmpDir) ++ ++ // In Go 1.14+, this can be replaced by t.Cleanup() ++ cleanup := func() { ++ err := os.RemoveAll(tmpDir) ++ if err != nil { ++ t.Error(err) ++ } ++ ++ server.Close() ++ } -+ return tmpDir, server ++ return tmpDir, server, cleanup } // waitLog blocks until the log output equals the text provided (ignoring whitespace before and after)