1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package logrus
- import (
- "io/ioutil"
- "log"
- "os"
- "os/exec"
- "path/filepath"
- "testing"
- "time"
- )
- func TestRegister(t *testing.T) {
- current := len(handlers)
- RegisterExitHandler(func() {})
- if len(handlers) != current+1 {
- t.Fatalf("expected %d handlers, got %d", current+1, len(handlers))
- }
- }
- func TestHandler(t *testing.T) {
- tempDir, err := ioutil.TempDir("", "test_handler")
- if err != nil {
- log.Fatalf("can't create temp dir. %q", err)
- }
- defer os.RemoveAll(tempDir)
- gofile := filepath.Join(tempDir, "gofile.go")
- if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil {
- t.Fatalf("can't create go file. %q", err)
- }
- outfile := filepath.Join(tempDir, "outfile.out")
- arg := time.Now().UTC().String()
- err = exec.Command("go", "run", gofile, outfile, arg).Run()
- if err == nil {
- t.Fatalf("completed normally, should have failed")
- }
- data, err := ioutil.ReadFile(outfile)
- if err != nil {
- t.Fatalf("can't read output file %s. %q", outfile, err)
- }
- if string(data) != arg {
- t.Fatalf("bad data. Expected %q, got %q", data, arg)
- }
- }
- var testprog = []byte(`
- // Test program for atexit, gets output file and data as arguments and writes
- // data to output file in atexit handler.
- package main
- import (
- "github.com/sirupsen/logrus"
- "flag"
- "fmt"
- "io/ioutil"
- )
- var outfile = ""
- var data = ""
- func handler() {
- ioutil.WriteFile(outfile, []byte(data), 0666)
- }
- func badHandler() {
- n := 0
- fmt.Println(1/n)
- }
- func main() {
- flag.Parse()
- outfile = flag.Arg(0)
- data = flag.Arg(1)
- logrus.RegisterExitHandler(handler)
- logrus.RegisterExitHandler(badHandler)
- logrus.Fatal("Bye bye")
- }
- `)
|