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