Skip to content

Commit d8250d5

Browse files
authored
Avoid panicking in unapproved path tests. (#22160)
# Objective - Simplify some tests. ## Solution - Instead of adding systems to an app that conditionally panic, we just access the `AssetServer` directly in the test and do the loads there. - I also added asserts that the assets do actually load eventually. ## Testing - Ran the tests and it works!
1 parent 5436f6a commit d8250d5

File tree

1 file changed

+28
-37
lines changed

1 file changed

+28
-37
lines changed

crates/bevy_asset/src/lib.rs

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2063,65 +2063,56 @@ mod tests {
20632063
..Default::default()
20642064
},
20652065
));
2066-
app.init_asset::<CoolText>();
2066+
app.init_asset::<CoolText>()
2067+
.register_asset_loader(CoolTextLoader);
20672068

20682069
app
20692070
}
20702071

2071-
fn load_a_asset(assets: Res<AssetServer>) {
2072-
let a = assets.load::<CoolText>("../a.cool.ron");
2073-
if a == Handle::default() {
2074-
panic!()
2075-
}
2076-
}
2077-
2078-
fn load_a_asset_override(assets: Res<AssetServer>) {
2079-
let a = assets.load_override::<CoolText>("../a.cool.ron");
2080-
if a == Handle::default() {
2081-
panic!()
2082-
}
2083-
}
2084-
20852072
#[test]
2086-
#[should_panic]
2087-
fn unapproved_path_forbid_should_panic() {
2088-
let mut app = unapproved_path_setup(UnapprovedPathMode::Forbid);
2089-
2090-
fn uses_assets(_asset: ResMut<Assets<CoolText>>) {}
2091-
app.add_systems(Update, (uses_assets, load_a_asset_override));
2073+
fn unapproved_path_forbid_does_not_load_even_with_override() {
2074+
let app = unapproved_path_setup(UnapprovedPathMode::Forbid);
20922075

2093-
app.world_mut().run_schedule(Update);
2076+
let asset_server = app.world().resource::<AssetServer>().clone();
2077+
assert_eq!(
2078+
asset_server.load_override::<CoolText>("../a.cool.ron"),
2079+
Handle::default()
2080+
);
20942081
}
20952082

20962083
#[test]
2097-
#[should_panic]
2098-
fn unapproved_path_deny_should_panic() {
2099-
let mut app = unapproved_path_setup(UnapprovedPathMode::Deny);
2100-
2101-
fn uses_assets(_asset: ResMut<Assets<CoolText>>) {}
2102-
app.add_systems(Update, (uses_assets, load_a_asset));
2084+
fn unapproved_path_deny_does_not_load() {
2085+
let app = unapproved_path_setup(UnapprovedPathMode::Deny);
21032086

2104-
app.world_mut().run_schedule(Update);
2087+
let asset_server = app.world().resource::<AssetServer>().clone();
2088+
assert_eq!(
2089+
asset_server.load::<CoolText>("../a.cool.ron"),
2090+
Handle::default()
2091+
);
21052092
}
21062093

21072094
#[test]
2108-
fn unapproved_path_deny_should_finish() {
2095+
fn unapproved_path_deny_loads_with_override() {
21092096
let mut app = unapproved_path_setup(UnapprovedPathMode::Deny);
21102097

2111-
fn uses_assets(_asset: ResMut<Assets<CoolText>>) {}
2112-
app.add_systems(Update, (uses_assets, load_a_asset_override));
2098+
let asset_server = app.world().resource::<AssetServer>().clone();
2099+
let handle = asset_server.load_override::<CoolText>("../a.cool.ron");
2100+
assert_ne!(handle, Handle::default());
21132101

2114-
app.world_mut().run_schedule(Update);
2102+
// Make sure this asset actually loads.
2103+
run_app_until(&mut app, |_| asset_server.is_loaded(&handle).then_some(()));
21152104
}
21162105

21172106
#[test]
2118-
fn unapproved_path_allow_should_finish() {
2107+
fn unapproved_path_allow_loads() {
21192108
let mut app = unapproved_path_setup(UnapprovedPathMode::Allow);
21202109

2121-
fn uses_assets(_asset: ResMut<Assets<CoolText>>) {}
2122-
app.add_systems(Update, (uses_assets, load_a_asset));
2110+
let asset_server = app.world().resource::<AssetServer>().clone();
2111+
let handle = asset_server.load::<CoolText>("../a.cool.ron");
2112+
assert_ne!(handle, Handle::default());
21232113

2124-
app.world_mut().run_schedule(Update);
2114+
// Make sure this asset actually loads.
2115+
run_app_until(&mut app, |_| asset_server.is_loaded(&handle).then_some(()));
21252116
}
21262117

21272118
#[test]

0 commit comments

Comments
 (0)