diff options
Diffstat (limited to 'src/runtime/ehooks_test.go')
| -rw-r--r-- | src/runtime/ehooks_test.go | 121 |
1 files changed, 53 insertions, 68 deletions
diff --git a/src/runtime/ehooks_test.go b/src/runtime/ehooks_test.go index 4beb20b0be..c7f51740fb 100644 --- a/src/runtime/ehooks_test.go +++ b/src/runtime/ehooks_test.go @@ -5,89 +5,74 @@ package runtime_test import ( - "internal/platform" - "internal/testenv" "os/exec" - "runtime" "strings" "testing" ) func TestExitHooks(t *testing.T) { - bmodes := []string{""} if testing.Short() { t.Skip("skipping due to -short") } - // Note the HasCGO() test below; this is to prevent the test - // running if CGO_ENABLED=0 is in effect. - haverace := platform.RaceDetectorSupported(runtime.GOOS, runtime.GOARCH) - if haverace && testenv.HasCGO() { - bmodes = append(bmodes, "-race") - } - for _, bmode := range bmodes { - scenarios := []struct { - mode string - expected string - musthave []string - }{ - { - mode: "simple", - expected: "bar foo", - }, - { - mode: "goodexit", - expected: "orange apple", - }, - { - mode: "badexit", - expected: "blub blix", - }, - { - mode: "panics", - musthave: []string{ - "fatal error: exit hook invoked panic", - "main.testPanics", - }, - }, - { - mode: "callsexit", - musthave: []string{ - "fatal error: exit hook invoked exit", - }, + + scenarios := []struct { + mode string + expected string + musthave []string + }{ + { + mode: "simple", + expected: "bar foo", + }, + { + mode: "goodexit", + expected: "orange apple", + }, + { + mode: "badexit", + expected: "blub blix", + }, + { + mode: "panics", + musthave: []string{ + "fatal error: exit hook invoked panic", + "main.testPanics", }, - { - mode: "exit2", - expected: "", + }, + { + mode: "callsexit", + musthave: []string{ + "fatal error: exit hook invoked exit", }, - } + }, + { + mode: "exit2", + expected: "", + }, + } - exe, err := buildTestProg(t, "testexithooks", bmode) - if err != nil { - t.Fatal(err) - } + exe, err := buildTestProg(t, "testexithooks") + if err != nil { + t.Fatal(err) + } - bt := "" - if bmode != "" { - bt = " bmode: " + bmode + for _, s := range scenarios { + cmd := exec.Command(exe, []string{"-mode", s.mode}...) + out, _ := cmd.CombinedOutput() + outs := strings.ReplaceAll(string(out), "\n", " ") + outs = strings.TrimSpace(outs) + if s.expected != "" && s.expected != outs { + t.Fatalf("failed %s: wanted %q\noutput:\n%s", + s.mode, s.expected, outs) } - for _, s := range scenarios { - cmd := exec.Command(exe, []string{"-mode", s.mode}...) - out, _ := cmd.CombinedOutput() - outs := strings.ReplaceAll(string(out), "\n", " ") - outs = strings.TrimSpace(outs) - if s.expected != "" && s.expected != outs { - t.Fatalf("failed%s mode %s: wanted %q\noutput:\n%s", bt, - s.mode, s.expected, outs) - } - for _, need := range s.musthave { - if !strings.Contains(outs, need) { - t.Fatalf("failed mode %s: output does not contain %q\noutput:\n%s", - s.mode, need, outs) - } - } - if s.expected == "" && s.musthave == nil && outs != "" { - t.Errorf("failed mode %s: wanted no output\noutput:\n%s", s.mode, outs) + for _, need := range s.musthave { + if !strings.Contains(outs, need) { + t.Fatalf("failed mode %s: output does not contain %q\noutput:\n%s", + s.mode, need, outs) } } + if s.expected == "" && s.musthave == nil && outs != "" { + t.Errorf("failed mode %s: wanted no output\noutput:\n%s", s.mode, outs) + } } } |
