bevyengine / bevyengine/bevy

Report execution order ambiguities in tests

Open
#3,818 0 comments 0 reactions 0 assignees View on GitHub
A-ECS C-Usability
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 16h
Merged PRs (30d)
171

Description

## What problem does this solve or what need does it fill?

System execution order ambiguities are particularly dangerous in tests, as they lead to flakiness.

The `ReportExecutionOrderAmbiguities` resource however does not report its results when run inside of a test using manual `App.update` calls.

## What solution would you like?

Create a method on both `App` and `Stage` (post-stageless, just `Schedule`) that fetches execution order ambiguities and stores them in an object for inspection.

Then, use `dbg!(app.execution_order_ambiguities())` in your tests when ambiguous execution order is suspected.

## What alternative(s) have you considered?

Allow users to forbid execution order ambiguities and panic if any (local) ambiguities are detected.

This would also be useful, but not quite as flexible for this use case.

## Additional context

Any PR attempting this should be based off of ~~#2766~~ #4299, which massively improves this system.

Contributor guide

Open the contributing guide

Research direction

Start from the execution-order ambiguity system and the ReportExecutionOrderAmbiguities resource, then review the changes in PR #4299 before touching App, Stage, or the post-stageless Schedule API. Verify how manual App.update calls expose ambiguity results and add coverage showing that execution_order_ambiguities() stores them for inspection in tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
game-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.