add WrappedReaderStream test
Mostly to just document the rt.block_on() issue with blocking(). Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
		@ -42,3 +42,51 @@ impl<R: Read + Unpin> Stream for WrappedReaderStream<R> {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod test {
 | 
			
		||||
    use std::io;
 | 
			
		||||
 | 
			
		||||
    use failure::Error;
 | 
			
		||||
    use futures::stream::TryStreamExt;
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_wrapped_stream_reader() -> Result<(), Error> {
 | 
			
		||||
        let rt = tokio::runtime::Runtime::new()?;
 | 
			
		||||
 | 
			
		||||
        // This cannot be used currently, because it doesn't permit blocking() annotations:
 | 
			
		||||
        //rt.block_on(run_wrapped_stream_reader_test());
 | 
			
		||||
 | 
			
		||||
        rt.spawn(async {
 | 
			
		||||
            run_wrapped_stream_reader_test().await.unwrap();
 | 
			
		||||
        });
 | 
			
		||||
        rt.shutdown_on_idle();
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    struct DummyReader(usize);
 | 
			
		||||
 | 
			
		||||
    impl io::Read for DummyReader {
 | 
			
		||||
        fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
 | 
			
		||||
            self.0 += 1;
 | 
			
		||||
 | 
			
		||||
            if self.0 >= 10 {
 | 
			
		||||
                return Ok(0);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            unsafe {
 | 
			
		||||
                std::ptr::write_bytes(buf.as_mut_ptr(), 0, buf.len());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Ok(buf.len())
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fn run_wrapped_stream_reader_test() -> Result<(), Error> {
 | 
			
		||||
        let mut reader = super::WrappedReaderStream::new(DummyReader(0));
 | 
			
		||||
        while let Some(_data) = reader.try_next().await? {
 | 
			
		||||
            // just waiting
 | 
			
		||||
        }
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user