(r1, r2 io.Reader)
| 467 | } |
| 468 | |
| 469 | func deepCompareReaders(r1, r2 io.Reader) bool { |
| 470 | var chunkNumber int |
| 471 | for { |
| 472 | b1 := make([]byte, chunkSize) |
| 473 | _, err1 := r1.Read(b1) |
| 474 | |
| 475 | b2 := make([]byte, chunkSize) |
| 476 | _, err2 := r2.Read(b2) |
| 477 | |
| 478 | if err1 != nil || err2 != nil { |
| 479 | if err1 == io.EOF && err2 == io.EOF { |
| 480 | return true |
| 481 | } else if err1 == io.EOF || err2 == io.EOF { |
| 482 | return false |
| 483 | } else { |
| 484 | log.Fatal(err1, err2) |
| 485 | } |
| 486 | } |
| 487 | |
| 488 | if !bytes.Equal(b1, b2) { |
| 489 | log.Printf("Bytes at %v differ\n", chunkNumber*chunkSize) |
| 490 | log.Println(b1) |
| 491 | log.Println(b2) |
| 492 | return false |
| 493 | } |
| 494 | chunkNumber++ |
| 495 | } |
| 496 | } |
| 497 | |
| 498 | // MockReadWriterAt used for mocking file in tests |
| 499 | type MockReadWriterAt struct { |
no test coverage detected