coverage: Add a test for async
blocks
We have coverage tests that use async functions, but none that use async blocks.
This commit is contained in:
parent
5810deef69
commit
4ae792036e
32
tests/coverage/async_block.cov-map
Normal file
32
tests/coverage/async_block.cov-map
Normal file
@ -0,0 +1,32 @@
|
||||
Function name: async_block::main
|
||||
Raw bytes (38): 0x[01, 01, 02, 01, 05, 03, 05, 06, 01, 05, 01, 00, 0b, 05, 01, 09, 00, 0a, 03, 00, 0e, 00, 13, 05, 00, 14, 01, 16, 05, 07, 0a, 02, 06, 06, 03, 01, 00, 02]
|
||||
Number of files: 1
|
||||
- file 0 => global file 1
|
||||
Number of expressions: 2
|
||||
- expression 0 operands: lhs = Counter(0), rhs = Counter(1)
|
||||
- expression 1 operands: lhs = Expression(0, Add), rhs = Counter(1)
|
||||
Number of file 0 mappings: 6
|
||||
- Code(Counter(0)) at (prev + 5, 1) to (start + 0, 11)
|
||||
- Code(Counter(1)) at (prev + 1, 9) to (start + 0, 10)
|
||||
- Code(Expression(0, Add)) at (prev + 0, 14) to (start + 0, 19)
|
||||
= (c0 + c1)
|
||||
- Code(Counter(1)) at (prev + 0, 20) to (start + 1, 22)
|
||||
- Code(Counter(1)) at (prev + 7, 10) to (start + 2, 6)
|
||||
- Code(Expression(1, Sub)) at (prev + 3, 1) to (start + 0, 2)
|
||||
= ((c0 + c1) - c1)
|
||||
|
||||
Function name: async_block::main::{closure#0}
|
||||
Raw bytes (28): 0x[01, 01, 02, 01, 05, 05, 02, 04, 01, 07, 1c, 01, 17, 05, 01, 18, 02, 0e, 02, 02, 14, 02, 0e, 07, 03, 09, 00, 0a]
|
||||
Number of files: 1
|
||||
- file 0 => global file 1
|
||||
Number of expressions: 2
|
||||
- expression 0 operands: lhs = Counter(0), rhs = Counter(1)
|
||||
- expression 1 operands: lhs = Counter(1), rhs = Expression(0, Sub)
|
||||
Number of file 0 mappings: 4
|
||||
- Code(Counter(0)) at (prev + 7, 28) to (start + 1, 23)
|
||||
- Code(Counter(1)) at (prev + 1, 24) to (start + 2, 14)
|
||||
- Code(Expression(0, Sub)) at (prev + 2, 20) to (start + 2, 14)
|
||||
= (c0 - c1)
|
||||
- Code(Expression(1, Add)) at (prev + 3, 9) to (start + 0, 10)
|
||||
= (c1 + (c0 - c1))
|
||||
|
37
tests/coverage/async_block.coverage
Normal file
37
tests/coverage/async_block.coverage
Normal file
@ -0,0 +1,37 @@
|
||||
LL| |#![feature(coverage_attribute)]
|
||||
LL| |#![feature(noop_waker)]
|
||||
LL| |// edition: 2021
|
||||
LL| |
|
||||
LL| 1|fn main() {
|
||||
LL| 17| for i in 0..16 {
|
||||
^16
|
||||
LL| 16| let future = async {
|
||||
LL| 16| if i >= 12 {
|
||||
LL| 4| println!("big");
|
||||
LL| 12| } else {
|
||||
LL| 12| println!("small");
|
||||
LL| 12| }
|
||||
LL| 16| };
|
||||
LL| 16| executor::block_on(future);
|
||||
LL| 16| }
|
||||
LL| 1|}
|
||||
LL| |
|
||||
LL| |mod executor {
|
||||
LL| | use core::future::Future;
|
||||
LL| | use core::pin::pin;
|
||||
LL| | use core::task::{Context, Poll, Waker};
|
||||
LL| |
|
||||
LL| | #[coverage(off)]
|
||||
LL| | pub fn block_on<F: Future>(mut future: F) -> F::Output {
|
||||
LL| | let mut future = pin!(future);
|
||||
LL| | let waker = Waker::noop();
|
||||
LL| | let mut context = Context::from_waker(&waker);
|
||||
LL| |
|
||||
LL| | loop {
|
||||
LL| | if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
|
||||
LL| | break val;
|
||||
LL| | }
|
||||
LL| | }
|
||||
LL| | }
|
||||
LL| |}
|
||||
|
35
tests/coverage/async_block.rs
Normal file
35
tests/coverage/async_block.rs
Normal file
@ -0,0 +1,35 @@
|
||||
#![feature(coverage_attribute)]
|
||||
#![feature(noop_waker)]
|
||||
// edition: 2021
|
||||
|
||||
fn main() {
|
||||
for i in 0..16 {
|
||||
let future = async {
|
||||
if i >= 12 {
|
||||
println!("big");
|
||||
} else {
|
||||
println!("small");
|
||||
}
|
||||
};
|
||||
executor::block_on(future);
|
||||
}
|
||||
}
|
||||
|
||||
mod executor {
|
||||
use core::future::Future;
|
||||
use core::pin::pin;
|
||||
use core::task::{Context, Poll, Waker};
|
||||
|
||||
#[coverage(off)]
|
||||
pub fn block_on<F: Future>(mut future: F) -> F::Output {
|
||||
let mut future = pin!(future);
|
||||
let waker = Waker::noop();
|
||||
let mut context = Context::from_waker(&waker);
|
||||
|
||||
loop {
|
||||
if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
|
||||
break val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user