mirror of
https://github.com/esphome/esphome.git
synced 2026-09-15 09:08:41 +00:00
[cli] Add write_cpp-failure test for --prebuilt-dir pkg-install prep
Symmetric with test_upload_program_prebuilt_dir_pkg_install_failure_aborts_upload: covers the early-return path when write_cpp fails (codegen error, disk full, validation regression) before pkg install runs. Closes the coverage matrix for _ensure_platform_packages_for_prebuilt_upload's two failure points. Issue: esphome/device-builder#572
This commit is contained in:
@@ -1665,6 +1665,36 @@ def test_upload_program_prebuilt_dir_skips_install_when_tool_present(
|
||||
mock_pkg_install.assert_not_called()
|
||||
|
||||
|
||||
def test_upload_program_prebuilt_dir_write_cpp_failure_aborts_upload(
|
||||
mock_get_port_type: Mock,
|
||||
mock_check_permissions: Mock,
|
||||
tmp_path: Path,
|
||||
) -> None:
|
||||
"""Codegen failure (write_cpp returning non-zero) must short-circuit
|
||||
before pkg install runs; pkg install against a broken platformio.ini
|
||||
would just fail less informatively. Symmetric with the pkg-install
|
||||
failure test below."""
|
||||
setup_core(platform=PLATFORM_BK72XX, tmp_path=tmp_path)
|
||||
mock_get_port_type.return_value = "SERIAL"
|
||||
|
||||
prebuilt = tmp_path / "prebuilt"
|
||||
prebuilt.mkdir()
|
||||
args = MockArgs(prebuilt_dir=str(prebuilt))
|
||||
|
||||
with (
|
||||
patch("esphome.__main__.get_ltchiptool_path", return_value=None),
|
||||
patch("esphome.__main__.write_cpp", return_value=3),
|
||||
patch("esphome.platformio_api.run_pkg_install") as mock_pkg_install,
|
||||
patch("esphome.__main__.upload_using_ltchiptool") as mock_upload,
|
||||
):
|
||||
exit_code, host = upload_program({}, args, ["/dev/ttyUSB0"])
|
||||
|
||||
assert exit_code == 3
|
||||
assert host is None
|
||||
mock_pkg_install.assert_not_called()
|
||||
mock_upload.assert_not_called()
|
||||
|
||||
|
||||
def test_upload_program_prebuilt_dir_pkg_install_failure_aborts_upload(
|
||||
mock_get_port_type: Mock,
|
||||
mock_check_permissions: Mock,
|
||||
|
||||
Reference in New Issue
Block a user