Ensure that all children TestState are completed() (#4752) * Ensure that all children TestState are completed()
With fail fast for tests enabled, some of the `TestState`s tracked by the `StateTrackingTestResultProcessor` may never receive the `completed()` call. When this happens, the parent/ancester `TestState` will not include the test count and failure information. When combined with a `--tests` filter, this can cause an erroneous failure message that no tests matched the filter.
This change ensures that all of the children/descendents of a `testId` (`TestState`) are `completed` before the given `testId` is processed.