mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			851 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			851 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
#![warn(rust_2018_idioms)]
 | 
						|
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support file operations
 | 
						|
 | 
						|
use tempfile::NamedTempFile;
 | 
						|
use tokio::fs::File;
 | 
						|
use tokio::io::{AsyncBufReadExt, BufReader};
 | 
						|
use tokio_test::assert_ok;
 | 
						|
 | 
						|
#[tokio::test]
 | 
						|
async fn fill_buf_file() {
 | 
						|
    let file = NamedTempFile::new().unwrap();
 | 
						|
 | 
						|
    assert_ok!(std::fs::write(file.path(), b"hello"));
 | 
						|
 | 
						|
    let file = assert_ok!(File::open(file.path()).await);
 | 
						|
    let mut file = BufReader::new(file);
 | 
						|
 | 
						|
    let mut contents = Vec::new();
 | 
						|
 | 
						|
    loop {
 | 
						|
        let consumed = {
 | 
						|
            let buffer = assert_ok!(file.fill_buf().await);
 | 
						|
            if buffer.is_empty() {
 | 
						|
                break;
 | 
						|
            }
 | 
						|
            contents.extend_from_slice(buffer);
 | 
						|
            buffer.len()
 | 
						|
        };
 | 
						|
 | 
						|
        file.consume(consumed);
 | 
						|
    }
 | 
						|
 | 
						|
    assert_eq!(contents, b"hello");
 | 
						|
}
 |