|
1 | 1 | use crate::packet_line::reader::fixture_bytes;
|
2 | 2 | use bstr::{BString, ByteSlice};
|
3 | 3 | use git_odb::pack;
|
4 |
| -use std::io::Read; |
| 4 | +use std::io::{BufRead, Read}; |
| 5 | + |
| 6 | +#[test] |
| 7 | +#[ignore] |
| 8 | +fn read_line_trait_method_reads_one_packet_line_at_a_time() -> crate::Result { |
| 9 | + let buf = fixture_bytes("v1/01-clone.combined-output"); |
| 10 | + let mut rd = git_packetline::Reader::new(&buf[..], None); |
| 11 | + |
| 12 | + let mut out = String::new(); |
| 13 | + let mut r = rd.as_read(); |
| 14 | + r.read_line(&mut out)?; |
| 15 | + assert_eq!(out, "808e50d724f604f69ab93c6da2919c014667bedb HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow deepen-since deepen-not deepen-relative no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master object-format=sha1 agent=git/2.28.0\n"); |
| 16 | + out.clear(); |
| 17 | + r.read_line(&mut out)?; |
| 18 | + assert_eq!(out, "808e50d724f604f69ab93c6da2919c014667bedb refs/heads/master\n"); |
| 19 | + out.clear(); |
| 20 | + r.read_line(&mut out)?; |
| 21 | + assert_eq!(out, "", "flush means empty lines…"); |
| 22 | + out.clear(); |
| 23 | + r.read_line(&mut out)?; |
| 24 | + assert_eq!(out, "", "…which can't be overcome unless the reader is reset"); |
| 25 | + |
| 26 | + drop(r); |
| 27 | + rd.reset(); |
| 28 | + |
| 29 | + let mut r = rd.as_read(); |
| 30 | + r.read_line(&mut out)?; |
| 31 | + assert_eq!(out, "NAK\n"); |
| 32 | + |
| 33 | + drop(r); |
| 34 | + let mut r = rd.as_read_with_sidebands(|_, _| ()); |
| 35 | + let mut assert_next = |line: &str| -> crate::Result { |
| 36 | + out.clear(); |
| 37 | + r.read_line(&mut out)?; |
| 38 | + assert_eq!(out, line); |
| 39 | + Ok(()) |
| 40 | + }; |
| 41 | + assert_next("foo\n")?; |
| 42 | + Ok(()) |
| 43 | +} |
5 | 44 |
|
6 | 45 | #[test]
|
7 | 46 | fn read_pack_with_progress_extraction() -> crate::Result {
|
|
0 commit comments