Skip to content

Commit 2360a70

Browse files
committed
[clone] Add test which probably indicates the need for a custom read_line(…)
…which is one that is packet-line aware.
1 parent 359765a commit 2360a70

File tree

1 file changed

+40
-1
lines changed
  • git-packetline/tests/packet_line/reader

1 file changed

+40
-1
lines changed

git-packetline/tests/packet_line/reader/read.rs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,46 @@
11
use crate::packet_line::reader::fixture_bytes;
22
use bstr::{BString, ByteSlice};
33
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+
}
544

645
#[test]
746
fn read_pack_with_progress_extraction() -> crate::Result {

0 commit comments

Comments
 (0)