Fix premature evaluation after blinking completes

When transitioning from STATE_BLINKING to STATE_WAIT_FOR_INPUT, the script used a stale timestamp `now` from before the blocking `blink_led` function. This caused the puzzle to immediately evaluate as failed. Updated to use `time.time()` after blinking finishes to ensure the user gets the full 3 seconds to enter their answer.
This commit is contained in:
Markus Graf
2026-05-10 07:41:00 +02:00
parent a7c4febd67
commit 5b5b845e41
2 changed files with 15 additions and 1 deletions
+14
View File
@@ -103,3 +103,17 @@ def test_state_machine_incorrect(mock_gpio, mock_pygame):
assert keep_running
assert clock.state == wecker.STATE_WAIT_BEFORE_RETRY
@patch('wecker.time.time')
def test_blinking_updates_time_correctly(mock_time, mock_gpio, mock_pygame):
clock = wecker.AlarmClock()
clock.state = wecker.STATE_BLINKING
clock.target_blinks = 4
mock_time.return_value = 200.0
with patch('wecker.blink_led'):
clock.update(100.0, False)
assert clock.state == wecker.STATE_WAIT_FOR_INPUT
assert clock.last_interaction_time == 200.0