Skip to content

Commit ae59272

Browse files
yashhzdamilcarlucas
authored andcommitted
fix(upload): avoid advancing step on validation mismatch
1 parent 2656ae4 commit ae59272

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

ardupilot_methodic_configurator/data_model_parameter_editor.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,9 +1050,8 @@ def upload_selected_params_workflow( # pylint: disable=too-many-arguments, too-
10501050
)
10511051
if should_retry:
10521052
continue
1053-
# If not retrying, continue without success message
1054-
else:
1055-
logging_info(_("All parameters uploaded to the flight controller successfully"))
1053+
return
1054+
logging_info(_("All parameters uploaded to the flight controller successfully"))
10561055

10571056
if self._should_export_fc_params_diff:
10581057
self._export_fc_params_missing_or_different()

tests/test_data_model_parameter_editor.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3774,18 +3774,20 @@ def test_system_prompts_retry_when_parameter_validation_finds_mismatch(self, par
37743774
GIVEN: Parameters that were uploaded but their values are mismatched after re-download
37753775
WHEN: upload_selected_params_workflow is called
37763776
THEN: The ask_retry_cancel callback is invoked exactly once with a descriptive message
3777+
AND: The current step is not marked as successfully uploaded when the user cancels
37773778
"""
37783779
# Arrange: FC value differs from what was uploaded so validation will fail
37793780
parameter_editor._flight_controller.fc_parameters = {"P1": 1.0}
37803781

37813782
mock_retry = MagicMock(return_value=False) # User chooses not to retry
3783+
mock_write = MagicMock()
37823784

37833785
with patch.multiple(
37843786
parameter_editor,
37853787
upload_parameters_that_require_reset_workflow=MagicMock(return_value=(False, {})),
37863788
_upload_parameters_to_fc=MagicMock(return_value=1),
37873789
download_flight_controller_parameters=MagicMock(),
3788-
_write_current_file=MagicMock(),
3790+
_write_current_file=mock_write,
37893791
_export_fc_params_missing_or_different=MagicMock(),
37903792
_validate_uploaded_parameters=MagicMock(return_value=["P1"]),
37913793
):
@@ -3799,6 +3801,8 @@ def test_system_prompts_retry_when_parameter_validation_finds_mismatch(self, par
37993801

38003802
# Assert: retry dialog was presented exactly once
38013803
mock_retry.assert_called_once()
3804+
mock_write.assert_not_called()
3805+
assert parameter_editor._at_least_one_changed is True
38023806

38033807
@pytest.mark.parametrize(
38043808
("fc_val", "upload_val", "expect_mismatch"),

0 commit comments

Comments
 (0)