1
1
use git_packetline:: PacketLine ;
2
- use std:: { io, path:: PathBuf } ;
2
+ use std:: io;
3
+ use std:: path:: PathBuf ;
3
4
4
5
fn fixture_path ( path : & str ) -> PathBuf {
5
6
PathBuf :: from ( "tests/fixtures" ) . join ( path)
@@ -10,7 +11,7 @@ fn fixture_bytes(path: &str) -> Vec<u8> {
10
11
}
11
12
12
13
mod to_read {
13
- use crate :: packet_line:: read:: { exhaust , fixture_bytes} ;
14
+ use crate :: packet_line:: read:: fixture_bytes;
14
15
use bstr:: ByteSlice ;
15
16
use git_odb:: pack;
16
17
use git_packetline:: RemoteProgress ;
@@ -21,13 +22,13 @@ mod to_read {
21
22
let buf = fixture_bytes ( "v1/01-clone.combined-output" ) ;
22
23
let mut rd = git_packetline:: Reader :: new ( & buf[ ..] , None ) ;
23
24
25
+ // Read without sideband decoding
24
26
let mut out = Vec :: new ( ) ;
25
27
rd. as_read ( ) . read_to_end ( & mut out) ?;
26
- assert_eq ! ( out. as_bstr( ) , b"foo " . as_bstr( ) ) ;
28
+ assert_eq ! ( out. as_bstr( ) , b"808e50d724f604f69ab93c6da2919c014667bedb HEAD \0 multi_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 808e50d724f604f69ab93c6da2919c014667bedb refs/heads/master \n " . as_bstr( ) ) ;
27
29
28
- assert_eq ! ( exhaust( & mut rd) , 2 ) ;
29
30
rd. reset ( ) ;
30
- assert_eq ! ( rd. read_line( ) ??. to_text( ) . 0 . as_bstr( ) , b"NAK" . as_bstr( ) ) ;
31
+ assert_eq ! ( rd. read_line( ) . expect ( "line" ) ??. to_text( ) . 0 . as_bstr( ) , b"NAK" . as_bstr( ) ) ;
31
32
fn no_parsing ( _: & [ u8 ] ) -> Option < RemoteProgress > {
32
33
None
33
34
}
@@ -55,7 +56,7 @@ fn read_from_file_and_reader_advancement() -> crate::Result {
55
56
bytes. extend ( fixture_bytes ( "v1/fetch/01-many-refs.response" ) . into_iter ( ) ) ;
56
57
let mut rd = git_packetline:: Reader :: new ( & bytes[ ..] , None ) ;
57
58
assert_eq ! (
58
- rd. read_line( ) ??. as_bstr( ) ,
59
+ rd. read_line( ) . expect ( "line" ) ??. as_bstr( ) ,
59
60
PacketLine :: Data ( b"7814e8a05a59c0cf5fb186661d1551c75d1299b5 HEAD\0 multi_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 " ) . as_bstr( )
60
61
) ;
61
62
assert_eq ! ( exhaust( & mut rd) + 1 , 1561 , "it stops after seeing the flush byte" ) ;
@@ -65,18 +66,20 @@ fn read_from_file_and_reader_advancement() -> crate::Result {
65
66
1561 ,
66
67
"it should read the second part of the identical file from the previously advanced reader"
67
68
) ;
69
+
70
+ // this reset is will cause actual io::Errors to occour
68
71
rd. reset ( ) ;
69
72
assert_eq ! (
70
- rd. read_line( ) . unwrap_err( ) . kind( ) ,
73
+ rd. read_line( ) . expect ( "some error" ) . unwrap_err( ) . kind( ) ,
71
74
io:: ErrorKind :: UnexpectedEof ,
72
- "trying to keep reading from exhausted input propagates the error"
75
+ "trying to keep reading from exhausted input results in Some() containing the original error"
73
76
) ;
74
77
Ok ( ( ) )
75
78
}
76
79
77
80
fn exhaust ( rd : & mut git_packetline:: Reader < & [ u8 ] > ) -> i32 {
78
81
let mut count = 0 ;
79
- while let Ok ( _) = rd. read_line ( ) {
82
+ while let Some ( _) = rd. read_line ( ) {
80
83
count += 1 ;
81
84
}
82
85
count
0 commit comments