func testFileHash(t *testing.T, path string, mode warc.Mode) { t.Logf("testFileHash %q, mode %v", path, mode) file, err := os.Open(path) if err != nil { t.Fatalf("failed to open %q: %v", path, err) } defer file.Close() reader, err := warc.NewReaderMode(file, mode) if err != nil { t.Fatalf("warc.NewReaderMode failed for %q: %v", path, err) } defer reader.Close() for { record, err := reader.ReadRecord() if err != nil { if err != io.EOF { t.Fatalf("failed to read all record content: %v", err) } break } content, err := ioutil.ReadAll(record.Content) if err != nil { t.Fatalf("failed to read all record content: %v", err) } hash := fmt.Sprintf("sha1:%x", sha1.Sum(content)) if hash != record.Header["warc-block-digest"] { t.Fatalf("expected %q, got %q", record.Header["warc-block-digest"], hash) } } }
func testFileScan(t *testing.T, path string, mode warc.Mode) { file, err := os.Open(path) if err != nil { t.Fatalf("failed to open %q: %v", path, err) } defer file.Close() reader, err := warc.NewReaderMode(file, mode) if err != nil { t.Fatalf("warc.NewReaderMode failed for %q: %v", path, err) } defer reader.Close() total := 0 for { if _, err := reader.ReadRecord(); err != nil { break } total++ } if total != 10 { t.Fatalf("expected 50 records, got %v", total) } }