diff --git a/e2etests-cli/concurrent_buf.go b/e2etests-cli/concurrent_buf.go new file mode 100644 index 000000000..7474e9d5e --- /dev/null +++ b/e2etests-cli/concurrent_buf.go @@ -0,0 +1,26 @@ +package e2etests_cli + +import "sync" + +// stderrWrapper lets stderr be read/write concurrently +type stderrWrapper struct { + msg string + m sync.Mutex +} + +func (e *stderrWrapper) Write(p []byte) (n int, err error) { + e.m.Lock() + defer e.m.Unlock() + e.msg += string(p) + return len(p), nil +} + +func (e *stderrWrapper) Reset() { + e.msg = "" +} + +func (e *stderrWrapper) Read() string { + e.m.Lock() + defer e.m.Unlock() + return e.msg +} diff --git a/e2etests-cli/main_test.go b/e2etests-cli/main_test.go index 8da9444b2..a47f2f819 100644 --- a/e2etests-cli/main_test.go +++ b/e2etests-cli/main_test.go @@ -881,7 +881,7 @@ layers: { c -> b } }`) - stderr := &bytes.Buffer{} + stderr := &stderrWrapper{} tms := testMain(dir, env, "--watch", "--browser=0", "index.d2") tms.Stderr = stderr @@ -935,7 +935,7 @@ layers: { c -> b } }`) - stderr := &bytes.Buffer{} + stderr := &stderrWrapper{} tms := testMain(dir, env, "--watch", "--browser=0", "index.d2") tms.Stderr = stderr @@ -988,7 +988,7 @@ layers: { c -> b } }`) - stderr := &bytes.Buffer{} + stderr := &stderrWrapper{} tms := testMain(dir, env, "--watch", "--browser=0", "index.d2") tms.Stderr = stderr @@ -1036,7 +1036,7 @@ layers: { writeFile(t, dir, "b.d2", ` x `) - stderr := &bytes.Buffer{} + stderr := &stderrWrapper{} tms := testMain(dir, env, "--watch", "--browser=0", "a.d2") tms.Stderr = stderr @@ -1202,26 +1202,26 @@ func getNumBoards(svg string) int { var errRE = regexp.MustCompile(`err:`) -func waitLogs(ctx context.Context, buf *bytes.Buffer, pattern *regexp.Regexp) (string, error) { +func waitLogs(ctx context.Context, stream *stderrWrapper, pattern *regexp.Regexp) (string, error) { ticker := time.NewTicker(10 * time.Millisecond) defer ticker.Stop() var match string for i := 0; i < 1000 && match == ""; i++ { select { case <-ticker.C: - out := buf.String() + out := stream.Read() match = pattern.FindString(out) errMatch := errRE.FindString(out) if errMatch != "" { - return "", errors.New(buf.String()) + return "", errors.New(out) } case <-ctx.Done(): ticker.Stop() - return "", fmt.Errorf("could not match pattern in log. logs: %s", buf.String()) + return "", fmt.Errorf("could not match pattern in log. logs: %s", stream.Read()) } } if match == "" { - return "", errors.New(buf.String()) + return "", errors.New(stream.Read()) } return match, nil diff --git a/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf b/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf index a0e3775ea..4cf0f8d37 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf and b/e2etests-cli/testdata/TestCLI_E2E/internal_linked_pdf.exp.pdf differ diff --git a/e2etests-cli/testdata/TestCLI_E2E/no-nav-pdf.exp.pdf b/e2etests-cli/testdata/TestCLI_E2E/no-nav-pdf.exp.pdf index dca9087ff..0c8250ecc 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/no-nav-pdf.exp.pdf and b/e2etests-cli/testdata/TestCLI_E2E/no-nav-pdf.exp.pdf differ diff --git a/e2etests-cli/testdata/TestCLI_E2E/no-nav-pptx.exp.pptx b/e2etests-cli/testdata/TestCLI_E2E/no-nav-pptx.exp.pptx index b84b1fd43..0d0f5f7cc 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/no-nav-pptx.exp.pptx and b/e2etests-cli/testdata/TestCLI_E2E/no-nav-pptx.exp.pptx differ diff --git a/e2etests-cli/testdata/TestCLI_E2E/renamed-board.exp.pdf b/e2etests-cli/testdata/TestCLI_E2E/renamed-board.exp.pdf index bc31d49cd..fc1d6dc01 100644 Binary files a/e2etests-cli/testdata/TestCLI_E2E/renamed-board.exp.pdf and b/e2etests-cli/testdata/TestCLI_E2E/renamed-board.exp.pdf differ