13 func TestRegister(t *testing.T) {
14 current := len(handlers)
15 RegisterExitHandler(func() {})
16 if len(handlers) != current+1 {
17 t.Fatalf("expected %d handlers, got %d", current+1, len(handlers))
21 func TestHandler(t *testing.T) {
22 tempDir, err := ioutil.TempDir("", "test_handler")
24 log.Fatalf("can't create temp dir. %q", err)
26 defer os.RemoveAll(tempDir)
28 gofile := filepath.Join(tempDir, "gofile.go")
29 if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil {
30 t.Fatalf("can't create go file. %q", err)
33 outfile := filepath.Join(tempDir, "outfile.out")
34 arg := time.Now().UTC().String()
35 err = exec.Command("go", "run", gofile, outfile, arg).Run()
37 t.Fatalf("completed normally, should have failed")
40 data, err := ioutil.ReadFile(outfile)
42 t.Fatalf("can't read output file %s. %q", outfile, err)
45 if string(data) != arg {
46 t.Fatalf("bad data. Expected %q, got %q", data, arg)
50 var testprog = []byte(`
51 // Test program for atexit, gets output file and data as arguments and writes
52 // data to output file in atexit handler.
56 "github.com/sirupsen/logrus"
66 ioutil.WriteFile(outfile, []byte(data), 0666)
79 logrus.RegisterExitHandler(handler)
80 logrus.RegisterExitHandler(badHandler)
81 logrus.Fatal("Bye bye")