Skip to content

Commit eaef14f

Browse files
committed
Add more unit tests
1 parent 6f35983 commit eaef14f

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

tools/flakeguard/go-test-transform/pkg/example/example_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,3 +347,23 @@ func TestWithSubtestReuse(t *testing.T) {
347347
testFunc(t, "Third", false)
348348
testFunc(t, "Fourth", true)
349349
}
350+
351+
// See what happens if you include slashes in the subtest name
352+
func TestSubTestNameWithSlashes(t *testing.T) {
353+
t.Parallel()
354+
355+
t.Run("sub/test/name/with/slashes", func(t *testing.T) {
356+
t.Log("This subtest always passes")
357+
})
358+
}
359+
360+
// Account for fuzz tests with a corpus, so they run as normal unit tests
361+
func FuzzTestWithCorpus(f *testing.F) {
362+
f.Add("some")
363+
f.Add("corpus")
364+
f.Add("values")
365+
366+
f.Fuzz(func(t *testing.T, input string) {
367+
t.Logf("Fuzzing with input: %s", input)
368+
})
369+
}

tools/flakeguard/go-test-transform/pkg/transformer/transformer_test.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,3 +718,79 @@ func TestSpecialCharactersInTestNames(t *testing.T) {
718718

719719
transformAndVerify(t, events, opts, 1, expectedActions)
720720
}
721+
722+
func TestSubTestNameWithSlashes(t *testing.T) {
723+
opts := &Options{
724+
IgnoreAllSubtestFailures: false,
725+
}
726+
727+
events := []testEvent{
728+
createEvent("start", "example", "", 0.0, ""),
729+
createEvent("run", "example", "TestSubTestNameWithSlashes", 0.0, "=== RUN TestSubTestNameWithSlashes\n"),
730+
createEvent("output", "example", "TestSubTestNameWithSlashes", 0.0, "=== PAUSE TestSubTestNameWithSlashes\n"),
731+
createEvent("pause", "example", "TestSubTestNameWithSlashes", 0.0, ""),
732+
createEvent("cont", "example", "TestSubTestNameWithSlashes", 0.0, "=== CONT TestSubTestNameWithSlashes\n"),
733+
createEvent("run", "example", "TestSubTestNameWithSlashes/sub/test/name/with/slashes", 0.0, "=== RUN TestSubTestNameWithSlashes/sub/test/name/with/slashes\n"),
734+
createEvent("output", "example", "TestSubTestNameWithSlashes/sub/test/name/with/slashes", 0.0, " example_test.go:356: This subtest always passes\n"),
735+
createEvent("output", "example", "TestSubTestNameWithSlashes/sub/test/name/with/slashes", 0.0, "--- PASS: TestSubTestNameWithSlashes/sub/test/name/with/slashes (0.00s)\n"),
736+
createEvent("pass", "example", "TestSubTestNameWithSlashes/sub/test/name/with/slashes", 0.0, ""),
737+
createEvent("output", "example", "TestSubTestNameWithSlashes", 0.0, "--- PASS: TestSubTestNameWithSlashes (0.00s)\n"),
738+
createEvent("pass", "example", "TestSubTestNameWithSlashes", 0.0, ""),
739+
createEvent("output", "example", "", 0.0, "PASS\n"),
740+
createEvent("output", "example", "", 0.0, "ok \texample\t0.188s\n"),
741+
createEvent("pass", "example", "", 0.188, ""),
742+
}
743+
744+
expectedActions := map[string]string{
745+
"example/TestSubTestNameWithSlashes/sub/test/name/with/slashes": "pass",
746+
"example/TestSubTestNameWithSlashes": "pass",
747+
"example/": "pass",
748+
}
749+
750+
transformAndVerify(t, events, opts, 0, expectedActions)
751+
}
752+
753+
func TestFuzzTestWithCorpus(t *testing.T) {
754+
opts := &Options{
755+
IgnoreAllSubtestFailures: false,
756+
}
757+
758+
events := []testEvent{
759+
createEvent("start", "example", "", 0.0, ""),
760+
createEvent("run", "example", "FuzzTestWithCorpus", 0.0, "=== RUN FuzzTestWithCorpus\n"),
761+
762+
createEvent("run", "example", "FuzzTestWithCorpus/seed#0", 0.0, "=== RUN FuzzTestWithCorpus/seed#0\n"),
763+
createEvent("output", "example", "FuzzTestWithCorpus/seed#0", 0.0, " example_test.go:367: Fuzzing with input: some\n"),
764+
createEvent("output", "example", "FuzzTestWithCorpus/seed#0", 0.0, "--- PASS: FuzzTestWithCorpus/seed#0 (0.00s)\n"),
765+
createEvent("pass", "example", "FuzzTestWithCorpus/seed#0", 0.0, ""),
766+
767+
createEvent("run", "example", "FuzzTestWithCorpus/seed#1", 0.0, "=== RUN FuzzTestWithCorpus/seed#1\n"),
768+
createEvent("output", "example", "FuzzTestWithCorpus/seed#1", 0.0, " example_test.go:367: Fuzzing with input: corpus\n"),
769+
createEvent("output", "example", "FuzzTestWithCorpus/seed#1", 0.0, "--- PASS: FuzzTestWithCorpus/seed#1 (0.00s)\n"),
770+
createEvent("pass", "example", "FuzzTestWithCorpus/seed#1", 0.0, ""),
771+
772+
createEvent("run", "example", "FuzzTestWithCorpus/seed#2", 0.0, "=== RUN FuzzTestWithCorpus/seed#2\n"),
773+
createEvent("output", "example", "FuzzTestWithCorpus/seed#2", 0.0, " example_test.go:367: Fuzzing with input: values\n"),
774+
createEvent("output", "example", "FuzzTestWithCorpus/seed#2", 0.0, "--- PASS: FuzzTestWithCorpus/seed#2 (0.00s)\n"),
775+
createEvent("pass", "example", "FuzzTestWithCorpus/seed#2", 0.0, ""),
776+
777+
createEvent("output", "example", "FuzzTestWithCorpus", 0.0, "--- PASS: FuzzTestWithCorpus (0.00s)\n"),
778+
createEvent("pass", "example", "FuzzTestWithCorpus", 0.0, ""),
779+
780+
createEvent("output", "example", "", 0.0, "PASS\n"),
781+
createEvent("output", "example", "", 0.0, "ok \texample\t0.231s\n"),
782+
createEvent("pass", "example", "", 0.231, ""),
783+
}
784+
785+
// All fuzz seeds pass, so the fuzz test and package pass as well
786+
expectedActions := map[string]string{
787+
"example/FuzzTestWithCorpus/seed#0": "pass",
788+
"example/FuzzTestWithCorpus/seed#1": "pass",
789+
"example/FuzzTestWithCorpus/seed#2": "pass",
790+
"example/FuzzTestWithCorpus": "pass",
791+
"example/": "pass",
792+
}
793+
794+
// transformAndVerify should yield exit code 0 since everything passes
795+
transformAndVerify(t, events, opts, 0, expectedActions)
796+
}

0 commit comments

Comments
 (0)