add regression test for #10385/#10389 (#10609)

Bevy introduced unintentional breaking behaviour along with the v0.12.0
release regarding the `App::set_runner` API. See: #10385, #10389 for
details. We weren't able to catch this before release because this API
is only used internally in one or two places (the very places which
motivated the break).

This commit adds a regression test to help guarantee some expected
behaviour for custom runners, namely that `app::update` won't be called
before the runner has a chance to initialise state.
This commit is contained in:
ickk 2023-11-18 23:53:09 +11:00 committed by GitHub
parent 48d10e6d48
commit 29f711cd40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1204,4 +1204,36 @@ mod tests {
GenericLabel::<u64>(PhantomData).intern()
);
}
/// Custom runners should be in charge of when `app::update` gets called as they may need to
/// coordinate some state.
/// bug: <https://github.com/bevyengine/bevy/issues/10385>
/// fix: <https://github.com/bevyengine/bevy/pull/10389>
#[test]
fn regression_test_10385() {
use super::{Res, Resource};
use crate::PreUpdate;
#[derive(Resource)]
struct MyState {}
fn my_runner(mut app: App) {
let my_state = MyState {};
app.world.insert_resource(my_state);
for _ in 0..5 {
app.update();
}
}
fn my_system(_: Res<MyState>) {
// access state during app update
}
// Should not panic due to missing resource
App::new()
.set_runner(my_runner)
.add_systems(PreUpdate, my_system)
.run();
}
}