@@ -603,43 +603,34 @@ mod tests {
603603
604604 #[ tokio:: test]
605605 async fn response_range_empty_file ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
606- struct TempFile ( & ' static str ) ;
607-
608- impl Drop for TempFile {
609- fn drop ( & mut self ) {
610- let _ = std:: fs:: remove_file ( self . 0 ) ;
611- }
612- }
613-
614- let filename = "test_empty_file.txt" ;
615- std:: fs:: write ( filename, [ ] ) . unwrap ( ) ;
616- let _cleanup = TempFile ( filename) ;
606+ let file = tempfile:: NamedTempFile :: new ( ) ?;
607+ file. as_file ( ) . set_len ( 0 ) ?;
608+ let path = file. path ( ) . to_owned ( ) ;
617609
618610 let app = Router :: new ( ) . route (
619611 "/range_empty" ,
620- get ( move |headers : HeaderMap | async move {
621- let range_header = headers
622- . get ( header:: RANGE )
623- . and_then ( |value| value. to_str ( ) . ok ( ) ) ;
624-
625- let ( start, end) = if let Some ( range) = range_header {
626- if let Some ( range) = parse_range_header ( range) {
627- range
612+ get ( move |headers : HeaderMap | {
613+ let path = path. clone ( ) ;
614+ async move {
615+ let range_header = headers
616+ . get ( header:: RANGE )
617+ . and_then ( |value| value. to_str ( ) . ok ( ) ) ;
618+
619+ let ( start, end) = if let Some ( range) = range_header {
620+ if let Some ( range) = parse_range_header ( range) {
621+ range
622+ } else {
623+ return ( StatusCode :: RANGE_NOT_SATISFIABLE , "Invalid Range" )
624+ . into_response ( ) ;
625+ }
628626 } else {
629- return ( StatusCode :: RANGE_NOT_SATISFIABLE , "Invalid Range" )
630- . into_response ( ) ;
631- }
632- } else {
633- ( 0 , 0 )
634- } ;
635-
636- FileStream :: < ReaderStream < File > > :: try_range_response (
637- Path :: new ( "test_empty_file.txt" ) ,
638- start,
639- end,
640- )
641- . await
642- . unwrap_or_else ( |_| StatusCode :: INTERNAL_SERVER_ERROR . into_response ( ) )
627+ ( 0 , 0 )
628+ } ;
629+
630+ FileStream :: < ReaderStream < File > > :: try_range_response ( path, start, end)
631+ . await
632+ . unwrap_or_else ( |_| StatusCode :: INTERNAL_SERVER_ERROR . into_response ( ) )
633+ }
643634 } ) ,
644635 ) ;
645636
0 commit comments