Mercurial > core / rust/lib/dl/tests/download-curl-resume.rs
changeset 698: |
96958d3eb5b0 |
parent: |
966f92770ddf
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
1 #![cfg(feature = "curl-backend")] 4 atomic::{AtomicBool, Ordering}, 13 use crate::support::{serve_file, tmp_dir, write_file}; 16 fn partially_downloaded_file_gets_resumed_from_byte_offset() { 17 let tmpdir = tmp_dir(); 18 let from_path = tmpdir.path().join("download-source"); 19 write_file(&from_path, "xxx45"); 21 let target_path = tmpdir.path().join("downloaded"); 22 write_file(&target_path, "123"); 24 let from_url = Url::from_file_path(&from_path).unwrap(); 25 download_to_path_with_backend( 32 .expect("Test download failed"); 34 assert_eq!(std::fs::read_to_string(&target_path).unwrap(), "12345"); 38 fn callback_gets_all_data_as_if_the_download_happened_all_at_once() { 39 let tmpdir = tmp_dir(); 40 let target_path = tmpdir.path().join("downloaded"); 41 write_file(&target_path, "123"); 43 let addr = serve_file(b"xxx45".to_vec()); 45 let from_url = format!("http://{addr}").parse().unwrap(); 47 let callback_partial = AtomicBool::new(false); 48 let callback_len = Mutex::new(None); 49 let received_in_callback = Mutex::new(Vec::new()); 51 download_to_path_with_backend( 58 Event::ResumingPartialDownload => { 59 assert!(!callback_partial.load(Ordering::SeqCst)); 60 callback_partial.store(true, Ordering::SeqCst); 62 Event::DownloadContentLengthReceived(len) => { 63 let mut flag = callback_len.lock().unwrap(); 64 assert!(flag.is_none()); 67 Event::DownloadDataReceived(data) => { 68 for b in data.iter() { 69 received_in_callback.lock().unwrap().push(*b); 77 .expect("Test download failed"); 79 assert!(callback_partial.into_inner()); 80 assert_eq!(*callback_len.lock().unwrap(), Some(5)); 81 let observed_bytes = received_in_callback.into_inner().unwrap(); 82 assert_eq!(observed_bytes, vec![b'1', b'2', b'3', b'4', b'5']); 83 assert_eq!(std::fs::read_to_string(&target_path).unwrap(), "12345");