From adadd581d38ea1f0419b1061c6ea4fd6f881a5ec Mon Sep 17 00:00:00 2001 From: John Howard Date: Mon, 4 Mar 2024 15:46:39 -0800 Subject: [PATCH] dots-v2: fix jitteriness, again This had some previous fixes: * https://github.com/gotestyourself/gotestsum/pull/368 * https://github.com/gotestyourself/gotestsum/pull/354 These do not fully fix the problem, only mask the issues. The real issues arise when there are 100s of packages to display, but only so much screen space. As each one bounces around, the text is entirely unreadable. The previous approaches was to more effieciently update the lines to make it more incremental. The approach here is different - simple but extremely effective. Instead of trying to constantly write out the entire set of lines/packages under test, on each event, we keep track of a active and completed set of packages. Once a package is completed, we write it out one last time, and then never overwrite it. The active set is treated as we do today. This means if we have 8 core machine and 1000 packages, we are only updating 8 lines at a time, which removes all jitteriness. --- internal/dotwriter/writer.go | 25 +- internal/dotwriter/writer_posix.go | 35 +- internal/dotwriter/writer_windows.go | 4 +- testjson/dotformat.go | 45 +- testjson/execution.go | 3 + testjson/testdata/format/dots-v2.out | 915 +++++---------------------- 6 files changed, 210 insertions(+), 817 deletions(-) diff --git a/internal/dotwriter/writer.go b/internal/dotwriter/writer.go index a1749c80..17d0b23f 100644 --- a/internal/dotwriter/writer.go +++ b/internal/dotwriter/writer.go @@ -5,20 +5,15 @@ terminal. package dotwriter import ( - "bytes" "io" ) -// ESC is the ASCII code for escape character -const ESC = 27 - // Writer buffers writes until Flush is called. Flush clears previously written // lines before writing new lines from the buffer. // The main logic is platform specific, see the related files. type Writer struct { - out io.Writer - buf bytes.Buffer - lineCount int + out io.Writer + inProgressLines int } // New returns a new Writer @@ -26,7 +21,17 @@ func New(out io.Writer) *Writer { return &Writer{out: out} } -// Write saves buf to a buffer -func (w *Writer) Write(buf []byte) (int, error) { - return w.buf.Write(buf) +func (w *Writer) Write(persistent []string, progressing []string) { + defer w.hideCursor()() + // Move up to the top of our last output. + up := w.inProgressLines + w.up(up) + for _, lines := range [][]string{persistent, progressing} { + for _, l := range lines { + w.write([]byte(l)) + w.clearRest() + w.write([]byte{'\n'}) + } + } + w.inProgressLines = len(progressing) } diff --git a/internal/dotwriter/writer_posix.go b/internal/dotwriter/writer_posix.go index beccae9c..89f71a12 100644 --- a/internal/dotwriter/writer_posix.go +++ b/internal/dotwriter/writer_posix.go @@ -4,45 +4,20 @@ package dotwriter import ( - "bytes" "fmt" ) +// ESC is the ASCII code for escape character +const ESC = 27 + // hide cursor var hide = fmt.Sprintf("%c[?25l", ESC) // show cursor var show = fmt.Sprintf("%c[?25h", ESC) -// Flush the buffer, writing all buffered lines to out -func (w *Writer) Flush() error { - if w.buf.Len() == 0 { - return nil - } - // Hide cursor during write to avoid it moving around the screen - defer w.hideCursor()() - - // Move up to the top of our last output. - w.up(w.lineCount) - lines := bytes.Split(w.buf.Bytes(), []byte{'\n'}) - w.lineCount = len(lines) - 1 // Record how many lines we will write for the next Flush() - for i, line := range lines { - // For each line, write the contents and clear everything else on the line - _, err := w.out.Write(line) - if err != nil { - return err - } - w.clearRest() - // Add a newline if this isn't the last line - if i != len(lines)-1 { - _, err := w.out.Write([]byte{'\n'}) - if err != nil { - return err - } - } - } - w.buf.Reset() - return nil +func (w *Writer) write(b []byte) { + _, _ = w.out.Write(b) } func (w *Writer) up(count int) { diff --git a/internal/dotwriter/writer_windows.go b/internal/dotwriter/writer_windows.go index b73a9f8d..f16f1eee 100644 --- a/internal/dotwriter/writer_windows.go +++ b/internal/dotwriter/writer_windows.go @@ -42,8 +42,8 @@ func (w *Writer) Flush() error { if w.buf.Len() == 0 { return nil } - w.clearLines(w.lineCount) - w.lineCount = bytes.Count(w.buf.Bytes(), []byte{'\n'}) + w.clearLines(w.inProgressLines) + w.inProgressLines = bytes.Count(w.buf.Bytes(), []byte{'\n'}) _, err := w.out.Write(w.buf.Bytes()) w.buf.Reset() return err diff --git a/testjson/dotformat.go b/testjson/dotformat.go index 625cd87a..7e4cbea0 100644 --- a/testjson/dotformat.go +++ b/testjson/dotformat.go @@ -2,6 +2,7 @@ package testjson import ( "bufio" + "bytes" "fmt" "io" "os" @@ -56,6 +57,7 @@ type dotLine struct { runes int builder *strings.Builder lastUpdate time.Time + terminal bool } func (l *dotLine) update(dot string) { @@ -96,6 +98,8 @@ func (d *dotFormatter) Format(event TestEvent, exec *Execution) error { } line := d.pkgs[event.Package] line.lastUpdate = event.Time + epkg := exec.Package(event.Package) + line.terminal = epkg.action.IsTerminal() || epkg.skipped if !event.PackageEvent() { line.update(fmtDot(event)) @@ -105,29 +109,46 @@ func (d *dotFormatter) Format(event TestEvent, exec *Execution) error { return nil } - // Add an empty header to work around incorrect line counting - fmt.Fprint(d.writer, "\n\n") - - sort.Slice(d.order, d.orderByLastUpdated) + persistent, progressing := []string{}, []string{} + sort.SliceStable(d.order, d.orderByLastUpdated) for _, pkg := range d.order { - if d.opts.HideEmptyPackages && exec.Package(pkg).IsEmpty() { + p := exec.Package(pkg) + if d.opts.HideEmptyPackages && p.IsEmpty() { continue } - line := d.pkgs[pkg] + if line.terminal && pkg != event.Package { + // The package is done already, and the event is not for this package. + // This means we have already persistently emitted the package once; skip it + continue + } + pkgname := RelativePackagePath(pkg) + " " - prefix := fmtDotElapsed(exec.Package(pkg)) + prefix := fmtDotElapsed(p) line.checkWidth(len(prefix+pkgname), d.termWidth) - fmt.Fprintf(d.writer, prefix+pkgname+line.builder.String()+"\n") + lines := strings.Split(prefix+pkgname+line.builder.String(), "\n") + + if line.terminal { + // This should happen exactly once per package, and any future times we filter our the line above + // Persist it so we permanently write the final line output + persistent = append(persistent, lines...) + } else { + progressing = append(progressing, lines...) + } } - PrintSummary(d.writer, exec, SummarizeNone) - return d.writer.Flush() + buf := &bytes.Buffer{} + PrintSummary(buf, exec, SummarizeNone) + progressing = append(progressing, strings.Split(buf.String(), "\n")...) + d.writer.Write(persistent, progressing) + return nil } // orderByLastUpdated so that the most recently updated packages move to the // bottom of the list, leaving completed package in the same order at the top. func (d *dotFormatter) orderByLastUpdated(i, j int) bool { - return d.pkgs[d.order[i]].lastUpdate.Before(d.pkgs[d.order[j]].lastUpdate) + iterm := d.pkgs[d.order[i]].terminal + jterm := d.pkgs[d.order[j]].terminal + return iterm && !jterm } func fmtDotElapsed(p *Package) string { @@ -139,6 +160,8 @@ func fmtDotElapsed(p *Package) string { switch { case p.cached: return f("๐Ÿ–ด ") + case p.skipped: + return f("โ†ท") case elapsed <= 0: return f("") case elapsed >= time.Hour: diff --git a/testjson/execution.go b/testjson/execution.go index 25d4be08..666523e8 100644 --- a/testjson/execution.go +++ b/testjson/execution.go @@ -109,6 +109,7 @@ type Package struct { // output caused by a test timeout. This is necessary to work around a race // condition in test2json. See https://github.com/golang/go/issues/57305. testTimeoutPanicInTest string + skipped bool } // Result returns if the package passed, failed, or was skipped because there @@ -371,6 +372,8 @@ func (p *Package) addEvent(event TestEvent) { case ActionPass, ActionFail: p.action = event.Action p.elapsed = elapsedDuration(event.Elapsed) + case ActionSkip: + p.skipped = true case ActionOutput: if coverage, ok := isCoverageOutput(event.Output); ok { p.coverage = coverage diff --git a/testjson/testdata/format/dots-v2.out b/testjson/testdata/format/dots-v2.out index 21f2afa8..5a2b9189 100644 --- a/testjson/testdata/format/dots-v2.out +++ b/testjson/testdata/format/dots-v2.out @@ -1,1210 +1,597 @@ -[?25l - - 1ms testjson/internal/badmain  +[?25l 1ms testjson/internal/badmain   0 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  +[?25h[?25l ๐Ÿ–ด testjson/internal/empty   0 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good  +[?25h[?25l testjson/internal/good   1 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยท +[?25h[?25l testjson/internal/good ยท  1 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยท +[?25h[?25l testjson/internal/good ยท  2 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยท +[?25h[?25l testjson/internal/good ยทยท  2 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยท +[?25h[?25l testjson/internal/good ยทยท  3 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยท +[?25h[?25l testjson/internal/good ยทยทยท  3 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยท +[?25h[?25l testjson/internal/good ยทยทยท  4 tests, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ท +[?25h[?25l testjson/internal/good ยทยทยทโ†ท  4 tests, 1 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ท +[?25h[?25l testjson/internal/good ยทยทยทโ†ท  5 tests, 1 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ท  5 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ท  6 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  6 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  7 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  7 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  8 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  8 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  9 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  9 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  10 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  11 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  12 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  13 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  14 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  15 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  16 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  17 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท +[?25h[?25l ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท  18 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails  +[?25h[?25l testjson/internal/parallelfails   19 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยท +[?25h[?25l testjson/internal/parallelfails ยท  19 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยท +[?25h[?25l testjson/internal/parallelfails ยท  20 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยท +[?25h[?25l testjson/internal/parallelfails ยทยท  20 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยท +[?25h[?25l testjson/internal/parallelfails ยทยท  21 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยท  21 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยท  22 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  22 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  23 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  23 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  24 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  24 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  25 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  25 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  26 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  27 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  27 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  28 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  28 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  29 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  29 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  30 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  30 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  30 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  30 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  30 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยท +[?25h[?25l testjson/internal/parallelfails ยทยทยทยท  30 tests, 2 skipped, 1 failure, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–  30 tests, 2 skipped, 2 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–  30 tests, 2 skipped, 3 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–  30 tests, 2 skipped, 4 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–  30 tests, 2 skipped, 5 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 6 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 6 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 7 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 7 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 8 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 8 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– +[?25h[?25l testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– +[?25h[?25l 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ–  30 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails  +[?25h[?25l testjson/internal/withfails   31 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยท +[?25h[?25l testjson/internal/withfails ยท  31 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยท +[?25h[?25l testjson/internal/withfails ยท  32 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยท +[?25h[?25l testjson/internal/withfails ยทยท  32 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยท +[?25h[?25l testjson/internal/withfails ยทยท  33 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยท  33 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยท  34 tests, 2 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ท  34 tests, 3 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ท  35 tests, 3 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ท  35 tests, 4 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ท  36 tests, 4 skipped, 9 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–  36 tests, 4 skipped, 10 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–  37 tests, 4 skipped, 10 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยท  37 tests, 4 skipped, 10 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยท  38 tests, 4 skipped, 10 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  38 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  39 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  39 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  40 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  40 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  41 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  41 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  42 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  43 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  44 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  45 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  46 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  47 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  48 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–  49 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยท  49 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยท  49 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยท  49 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยท  49 tests, 4 skipped, 11 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–  49 tests, 4 skipped, 12 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยท  49 tests, 4 skipped, 12 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยท  49 tests, 4 skipped, 12 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  49 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  50 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  51 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  52 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  53 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  54 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  55 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  56 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  57 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ– +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยท  58 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยท  59 tests, 4 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยทยท +[?25h[?25l testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยทยท  59 tests, 5 skipped, 13 failures, 1 error -[?25h[?25l  - 1ms testjson/internal/badmain  - ๐Ÿ–ด testjson/internal/empty  - ๐Ÿ–ด testjson/internal/good ยทยทยทโ†ทโ†ทยทยทยทยทยทยทยทยทยทยทยทยทยท - 20ms testjson/internal/parallelfails ยทยทยทยทโœ–โœ–โœ–โœ–โœ–โœ–โœ–โœ– - 20ms testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยทยท +[?25h[?25l 20ms testjson/internal/withfails ยทยทยทโ†ทโ†ทโœ–ยทโœ–ยทยทยทยทโœ–ยทยทโœ–ยทยทยทยทยทยทยทยทยทโ†ทยทยทยท  59 tests, 5 skipped, 13 failures, 1 error -[?25h + +[?25h