test roundtrip using plain io.Writer interface.
(t *testing.T, file string, wantCRC []byte)
| 674 | |
| 675 | // test roundtrip using plain io.Writer interface. |
| 676 | func testEncoderRoundtripWriter(t *testing.T, file string, wantCRC []byte) { |
| 677 | f, err := os.Open(file) |
| 678 | if err != nil { |
| 679 | if os.IsNotExist(err) { |
| 680 | t.Skip("No input file:", file) |
| 681 | return |
| 682 | } |
| 683 | t.Fatal(err) |
| 684 | } |
| 685 | defer f.Close() |
| 686 | if stat, err := f.Stat(); testing.Short() && err == nil { |
| 687 | if stat.Size() > 10000 { |
| 688 | t.SkipNow() |
| 689 | } |
| 690 | } |
| 691 | input := io.Reader(f) |
| 692 | if strings.HasSuffix(file, ".zst") { |
| 693 | dec, err := NewReader(f) |
| 694 | if err != nil { |
| 695 | t.Fatal(err) |
| 696 | } |
| 697 | input = dec |
| 698 | defer dec.Close() |
| 699 | } |
| 700 | |
| 701 | pr, pw := io.Pipe() |
| 702 | dec2, err := NewReader(pr) |
| 703 | if err != nil { |
| 704 | t.Fatal(err) |
| 705 | } |
| 706 | defer dec2.Close() |
| 707 | |
| 708 | enc, err := NewWriter(pw, WithEncoderCRC(true)) |
| 709 | if err != nil { |
| 710 | t.Fatal(err) |
| 711 | } |
| 712 | defer enc.Close() |
| 713 | encW := writerWrapper{w: enc} |
| 714 | var wantSize int64 |
| 715 | start := time.Now() |
| 716 | go func() { |
| 717 | n, err := io.CopyBuffer(encW, input, make([]byte, 1337)) |
| 718 | if err != nil { |
| 719 | t.Error(err) |
| 720 | return |
| 721 | } |
| 722 | wantSize = n |
| 723 | err = enc.Close() |
| 724 | if err != nil { |
| 725 | t.Error(err) |
| 726 | return |
| 727 | } |
| 728 | pw.Close() |
| 729 | }() |
| 730 | var gotSize int64 |
| 731 | |
| 732 | // Check CRC |
| 733 | d := xxhash.New() |
no test coverage detected
searching dependent graphs…