Fix the parser so that it doesn't loop forever (bugfix) #1555
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.
Description
When validating units, Checkbox tries to parse fields to see if there are any errors with them. Turns out that if a field contains an un-terminated string
"...
, that will cause the parser to always loop forever or crash with an assertion error. This was affecting a test run today due to a non-sluggified name getting templated into a job. This manifested itself as an infinited crash-restore loop due to also an un-related error (if the session gets stuck on an infinite loop, the controller tries to reconnect eventually, Checkbox refuses to "recover" during bootstrapping, restarting the session)Resolved issues
Fixes: https://warthogs.atlassian.net/browse/CHECKBOX-1622
Documentation
This also documents how the parser works because it is quite something
Tests
This also adds the tests I used to reproduce the issue