Eleven `tests/*.rs` were eleven binaries, each linking the whole graph -- `wgpu` and all -- to run a handful of cases. They are modules of one target now, under `tests/cases/`, and `cargo test --test suite layout::` still picks one out. The fuzzers and the `*_cost` measurements stay their own targets: they are run on their own and want to be selectable without building the rest. `profile.test` takes `debug = "line-tables-only"`, which is what a backtrace here actually reads; the type and variable information was the bulk of what the linker was writing. Measured on this machine, rebuilding `iris`'s test targets after a change to the crate: 14.3 s before, 9.8 s with one target, 7.7 s with both. `target/` went from 45 GB to 13 GB. The suite still passes 102 tests, and the binary still carries `.debug_line`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
24 lines
620 B
Rust
24 lines
620 B
Rust
//! What a background task can change, and how it gets back to the ui.
|
|
|
|
use std::time::Duration;
|
|
|
|
use iris::harness::Harness;
|
|
use iris::prelude::*;
|
|
|
|
#[test]
|
|
fn a_task_update_reaches_the_tree() {
|
|
let mut h = Harness::new((400, 200));
|
|
let widget = rect(Color::RED).add(&mut h.rsc);
|
|
h.set_root(widget.task_on(CursorSense::click(), async move |mut ctx| {
|
|
ctx.update(move |_, rsc| widget(rsc).color = Color::BLUE);
|
|
}));
|
|
|
|
h.click((200, 100));
|
|
|
|
assert!(
|
|
h.await_update(Duration::from_secs(5)),
|
|
"the task sent no update"
|
|
);
|
|
assert_eq!(h.rsc[widget].color, Color::BLUE);
|
|
}
|