# OK with empty input
omit
----

# Does not like input without JSON but with plain text output (avoids misconfiguration)
omit
PASS
----
not a single test was parsed, but detected test output: PASS

# Skips non-test lines. The test line is required to avoid a sanity
# check in the tool.
omit
{"Time":"2019-11-29T14:20:13.25826+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
foobar
----

# Skips passing tests.
omit
{"Time":"2019-11-29T14:20:13.25826+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
{"Time":"2019-11-29T14:20:13.258474+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:20:13.258488+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:20:13.258495+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:20:13.258502+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"--- PASS: TestFaker (0.00s)\n"}
{"Time":"2019-11-29T14:20:13.258508+01:00","Action":"pass","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Elapsed":0}
{"Time":"2019-11-29T14:20:13.258518+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Output":"PASS\n"}
{"Time":"2019-11-29T14:20:13.258522+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Output":"ok  \tgithub.com/cockroachdb/cockroach/pkg/util/stop\t(cached)\n"}
{"Time":"2019-11-29T14:20:13.258539+01:00","Action":"pass","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Elapsed":0}
----

# Skips unterminated tests in single-package test binaries.
omit
{"Time":"2019-11-29T14:20:13.25826+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
{"Time":"2019-11-29T14:20:13.258474+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:20:13.258488+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:20:13.258495+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:20:13.258502+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"--- PASS: TestFaker (0.00s)\n"}
----

# Keeps failing test (strips some package-level chatter, though).
omit
{"Time":"2019-11-29T14:21:47.595635+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
{"Time":"2019-11-29T14:21:47.595941+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:21:47.595957+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:21:47.595964+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:21:47.595977+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"--- FAIL: TestFaker (0.00s)\n"}
{"Time":"2019-11-29T14:21:47.595982+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"    stopper_test.go:379: failed\n"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Elapsed":0}
{"Time":"2019-11-29T14:21:47.596002+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Output":"FAIL\n"}
{"Time":"2019-11-29T14:21:47.59685+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Output":"FAIL\tgithub.com/cockroachdb/cockroach/pkg/util/stop\t1.593s\n"}
{"Time":"2019-11-29T14:21:47.596863+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Elapsed":1.593}
----
{"Time":"2019-11-29T14:21:47.595635+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
{"Time":"2019-11-29T14:21:47.595941+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:21:47.595957+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:21:47.595964+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:21:47.595977+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"--- FAIL: TestFaker (0.00s)\n"}
{"Time":"2019-11-29T14:21:47.595982+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"    stopper_test.go:379: failed\n"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Elapsed":0}

# Keeps panicking test when the test is clearly marked as failed.
omit
{"Time":"2019-11-29T14:16:10.376429+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
{"Time":"2019-11-29T14:16:10.37671+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:16:10.376722+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:16:10.376729+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:16:10.376749+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"--- FAIL: TestFaker (0.00s)\n"}
{"Time":"2019-11-29T14:16:10.379069+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"panic: boom [recovered]\n"}
{"Time":"2019-11-29T14:16:10.379101+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\tpanic: boom\n"}
{"Time":"2019-11-29T14:16:10.379106+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\n"}
{"Time":"2019-11-29T14:16:10.37911+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"goroutine 70 [running]:\n"}
{"Time":"2019-11-29T14:16:10.379116+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"testing.tRunner.func1(0xc0001e6400)\n"}
{"Time":"2019-11-29T14:16:10.37912+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\t/usr/local/Cellar/go/1.13.4/libexec/src/testing/testing.go:874 +0x3a3\n"}
{"Time":"2019-11-29T14:16:10.379146+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"panic(0x4a7c3e0, 0x4daf450)\n"}
{"Time":"2019-11-29T14:16:10.379153+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\t/usr/local/Cellar/go/1.13.4/libexec/src/runtime/panic.go:679 +0x1b2\n"}
{"Time":"2019-11-29T14:16:10.38139+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"FAIL\tgithub.com/cockroachdb/cockroach/pkg/util/stop\t1.421s\n"}
{"Time":"2019-11-29T14:16:10.381438+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Elapsed":1.421}
----
{"Time":"2019-11-29T14:16:10.376429+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker"}
{"Time":"2019-11-29T14:16:10.37671+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:16:10.376722+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:16:10.376729+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:16:10.376749+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"--- FAIL: TestFaker (0.00s)\n"}
{"Time":"2019-11-29T14:16:10.379069+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"panic: boom [recovered]\n"}
{"Time":"2019-11-29T14:16:10.379101+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\tpanic: boom\n"}
{"Time":"2019-11-29T14:16:10.379106+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\n"}
{"Time":"2019-11-29T14:16:10.37911+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"goroutine 70 [running]:\n"}
{"Time":"2019-11-29T14:16:10.379116+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"testing.tRunner.func1(0xc0001e6400)\n"}
{"Time":"2019-11-29T14:16:10.37912+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\t/usr/local/Cellar/go/1.13.4/libexec/src/testing/testing.go:874 +0x3a3\n"}
{"Time":"2019-11-29T14:16:10.379146+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"panic(0x4a7c3e0, 0x4daf450)\n"}
{"Time":"2019-11-29T14:16:10.379153+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"\t/usr/local/Cellar/go/1.13.4/libexec/src/runtime/panic.go:679 +0x1b2\n"}
{"Time":"2019-11-29T14:16:10.38139+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"FAIL\tgithub.com/cockroachdb/cockroach/pkg/util/stop\t1.421s\n"}
{"Time":"2019-11-29T14:16:10.381438+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Elapsed":1.421}

# Keeps unterminated tests in multi-package runs when the package is marked as failed.
# Also ensure that the "run" event for the pseudo-test coincides with the first test event encountered for the package.
omit
{"Time":"2019-11-29T14:21:47.595941+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:21:47.595957+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:21:47.595964+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop"}
----
{"Time":"2019-11-29T14:21:47.595941+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":""}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":"\nCheck full_output.txt in artifacts for stray panics or other errors that broke\nthe test process. Note that you might be looking at this message from a parent\nCI job. To reliably get to the \"correct\" job, click the drop-down next to\n\"PackageLevel\" above, then \"Show in build log\", and then navigate to the\nartifacts tab. See:\n\nhttps://user-images.githubusercontent.com/5076964/110923167-e2ab4780-8320-11eb-8fba-99da632aa814.png\nhttps://user-images.githubusercontent.com/5076964/110923299-08d0e780-8321-11eb-91af-f4eedcf8bacb.png\n\nfor details.\n\nThe following tests have not completed and could be the cause of the failure:\nTestFaker"}

# Keep packages that are marked as failed but did not contain any tests.
omit
{"Time":"2019-11-29T14:21:43.595991+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Output":"foo"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop"}
----
{"Time":"2019-11-29T14:21:43.595991+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":""}
{"Time":"2019-11-29T14:21:43.595991+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":"foo"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":"\nCheck full_output.txt in artifacts for stray panics or other errors that broke\nthe test process. Note that you might be looking at this message from a parent\nCI job. To reliably get to the \"correct\" job, click the drop-down next to\n\"PackageLevel\" above, then \"Show in build log\", and then navigate to the\nartifacts tab. See:\n\nhttps://user-images.githubusercontent.com/5076964/110923167-e2ab4780-8320-11eb-8fba-99da632aa814.png\nhttps://user-images.githubusercontent.com/5076964/110923299-08d0e780-8321-11eb-91af-f4eedcf8bacb.png\n\nfor details.\n"}

# Ditto, when the package did not report any output.
omit
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop"}
----
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":""}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"fail","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"PackageLevel","Elapsed":0,"Output":"\nCheck full_output.txt in artifacts for stray panics or other errors that broke\nthe test process. Note that you might be looking at this message from a parent\nCI job. To reliably get to the \"correct\" job, click the drop-down next to\n\"PackageLevel\" above, then \"Show in build log\", and then navigate to the\nartifacts tab. See:\n\nhttps://user-images.githubusercontent.com/5076964/110923167-e2ab4780-8320-11eb-8fba-99da632aa814.png\nhttps://user-images.githubusercontent.com/5076964/110923299-08d0e780-8321-11eb-91af-f4eedcf8bacb.png\n\nfor details.\n"}

# Omit unterminated tests in multi-package runs when the package is marked as passed.
omit
{"Time":"2019-11-29T14:21:47.595941+01:00","Action":"run","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"=== RUN   TestFaker\n"}
{"Time":"2019-11-29T14:21:47.595957+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"foo\n"}
{"Time":"2019-11-29T14:21:47.595964+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Test":"TestFaker","Output":"bar\n"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"pass","Package":"github.com/cockroachdb/cockroach/pkg/util/stop"}
----

# Also omit the package if it passed and there were no tests at all.
omit
{"Time":"2019-11-29T14:21:43.595991+01:00","Action":"output","Package":"github.com/cockroachdb/cockroach/pkg/util/stop","Output":"foo"}
{"Time":"2019-11-29T14:21:47.595991+01:00","Action":"pass","Package":"github.com/cockroachdb/cockroach/pkg/util/stop"}
----
