@@ -92,6 +92,7 @@ mod response_body_lengths {
92
92
}
93
93
94
94
fn run_test ( case : TestCase ) {
95
+ let _ = pretty_env_logger:: try_init ( ) ;
95
96
assert ! (
96
97
case. version == 0 || case. version == 1 ,
97
98
"TestCase.version must 0 or 1"
@@ -155,18 +156,22 @@ mod response_body_lengths {
155
156
let n = body. find ( "\r \n \r \n " ) . unwrap ( ) + 4 ;
156
157
157
158
if case. expects_chunked {
158
- let len = body. len ( ) ;
159
- assert_eq ! (
160
- & body[ n + 1 ..n + 3 ] ,
161
- "\r \n " ,
162
- "expected body chunk size header"
163
- ) ;
164
- assert_eq ! ( & body[ n + 3 ..len - 7 ] , body_str, "expected body" ) ;
165
- assert_eq ! (
166
- & body[ len - 7 ..] ,
167
- "\r \n 0\r \n \r \n " ,
168
- "expected body final chunk size header"
169
- ) ;
159
+ if body_str. len ( ) > 0 {
160
+ let len = body. len ( ) ;
161
+ assert_eq ! (
162
+ & body[ n + 1 ..n + 3 ] ,
163
+ "\r \n " ,
164
+ "expected body chunk size header"
165
+ ) ;
166
+ assert_eq ! ( & body[ n + 3 ..len - 7 ] , body_str, "expected body" ) ;
167
+ assert_eq ! (
168
+ & body[ len - 7 ..] ,
169
+ "\r \n 0\r \n \r \n " ,
170
+ "expected body final chunk size header"
171
+ ) ;
172
+ } else {
173
+ assert_eq ! ( & body[ n..] , "0\r \n \r \n " ) ;
174
+ }
170
175
} else {
171
176
assert_eq ! ( & body[ n..] , body_str, "expected body" ) ;
172
177
}
@@ -217,6 +222,17 @@ mod response_body_lengths {
217
222
} ) ;
218
223
}
219
224
225
+ #[ test]
226
+ fn chunked_response_known_empty ( ) {
227
+ run_test ( TestCase {
228
+ version : 1 ,
229
+ headers : & [ ( "transfer-encoding" , "chunked" ) ] ,
230
+ body : Bd :: Known ( "" ) ,
231
+ expects_chunked : true , // should still send chunked, and 0\r\n\r\n
232
+ expects_con_len : false ,
233
+ } ) ;
234
+ }
235
+
220
236
#[ test]
221
237
fn chunked_response_unknown ( ) {
222
238
run_test ( TestCase {
0 commit comments