mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
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:
parent
48d10e6d48
commit
29f711cd40
1 changed files with 32 additions and 0 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue