+ f, err := os.Open("./crunchstat_test.go")
+ if err != nil {
+ t.Fatalf("Opening ./crunchstat_test.go: %s", err)
+ }
+ data, err := ReadAllOrWarn(f)
+ if err != nil {
+ t.Fatalf("got error %s", err)
+ }
+ if matched, err := regexp.MatchString("^package main\n", string(data)); err != nil || !matched {
+ t.Fatalf("data failed regexp: %s", err)
+ }
+}
+
+// Test that CopyPipeToChildLog works even on lines longer than
+// bufio.MaxScanTokenSize.
+func TestCopyPipeToChildLogLongLines(t *testing.T) {
+ rcv := captureLogs()
+ defer uncaptureLogs()
+
+ control := make(chan bool)
+ pipeIn, pipeOut := io.Pipe()
+ go CopyPipeToChildLog(pipeIn, control)
+
+ sentBytes := make([]byte, bufio.MaxScanTokenSize+MaxLogLine+(1<<22))