OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / sirupsen / logrus / alt_exit_test.go
diff --git a/vendor/github.com/sirupsen/logrus/alt_exit_test.go b/vendor/github.com/sirupsen/logrus/alt_exit_test.go
new file mode 100644 (file)
index 0000000..a08b1a8
--- /dev/null
@@ -0,0 +1,83 @@
+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")
+}
+`)