Skip to content

fix: guard against KeyError in get_priority_change_date by using .get()#2901

Open
AmSach wants to merge 4 commits into
mozilla:masterfrom
AmSach:fix/keyerror-field-name-in-get-priority-change-date
Open

fix: guard against KeyError in get_priority_change_date by using .get()#2901
AmSach wants to merge 4 commits into
mozilla:masterfrom
AmSach:fix/keyerror-field-name-in-get-priority-change-date

Conversation

@AmSach

@AmSach AmSach commented Jun 1, 2026

Copy link
Copy Markdown

Fixed the bug described in issue #2607. Here's what was wrong and how I fixed it: In get_priority_change_date(), the code directly accessed change['field_name'] and change['added'] without checking if those keys exist, causing KeyError on malformed history entries. Fixed by using .get() with None defaults. Tested by verifying syntax with ast.parse().

AmSach added 4 commits June 1, 2026 00:34
The change history entries may not always contain 'field_name' or 'added'
keys, causing a KeyError when iterating through bug history. Using .get()
with None default prevents the crash while preserving the original logic:
only entries with field_name=='priority' and matching added value are used.

Fixes mozilla#2607
Adds regression coverage for the change in mozilla#2901 that
replaced change['field_name']/change['added'] with change.get(...) in
AssigneeNoLogin.get_priority_change_date. Tests cover:
- matching the most recent priority change
- history entries missing field_name or added (the original crash)
- returning None when no priority change matches
- skipping malformed entries without raising

Helps restore the test coverage that dropped after mozilla#2901.
…rity

- Remove unused 'timedelta' import (ruff F401)
- Wrap long dict literal in test_get_priority_change_date_returns_none_when_no_match
  across multiple lines to satisfy ruff-format line length

These fixes resolve the pre-commit hook failures that were blocking CI on
mozilla#2901. The pre-commit hooks were auto-fixing the file but
still exited non-zero when files were modified, which failed the check.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant