Fix unexpected exception in Google Calendar OAuth exchange #73963
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed change
Rewrite google calendar oauth exchange callbacks. The goal is to prevent this error:
I am not totally positive how it gets into this state, but it seemed worth trying to simplify anyway. The asserts have been replaced with explicit checks before running the unsub calls.
This replaces the asserts with some other rewrite of the logic to match more common patterns seen in other code in home assistant. Instead of having a single callback for updates and a timeout, the timeout is split into a separate listener. The new code is more lines of code, but seems like it could be a bit more straight forward avoiding passing callback parameters around.
The tests that use freezetime needed to be reverted because of spulec/freezegun#89 -- not sure if that was exposed because of moving patches around or specific callbacks around.
Type of change
Additional information
Checklist
black --fast homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.The integration reached or maintains the following Integration Quality Scale:
To help with the load of incoming pull requests: