From 3dc608c7721cdc27e9d6957362b2a111aaf56f9f Mon Sep 17 00:00:00 2001 From: Panda <735591750@QQ.COM> Date: Thu, 1 Oct 2026 19:56:32 +0800 Subject: [PATCH] [core] Parse ESPHOME_SERIAL_LOGGING_RESET as a boolean (#19963) --- esphome/__main__.py | 4 ++-- tests/unit_tests/test_main.py | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/esphome/__main__.py b/esphome/__main__.py index 49fc7a3020..e4213e8edb 100644 --- a/esphome/__main__.py +++ b/esphome/__main__.py @@ -2343,7 +2343,7 @@ def parse_args(argv): "-r", action="store_true", help="Reset the device before starting serial logs.", - default=os.getenv("ESPHOME_SERIAL_LOGGING_RESET"), + default=get_bool_env("ESPHOME_SERIAL_LOGGING_RESET"), ) _add_states_args(parser_logs) @@ -2384,7 +2384,7 @@ def parse_args(argv): "-r", action="store_true", help="Reset the device before starting serial logs.", - default=os.getenv("ESPHOME_SERIAL_LOGGING_RESET"), + default=get_bool_env("ESPHOME_SERIAL_LOGGING_RESET"), ) parser_run.add_argument( "--ota-platform", diff --git a/tests/unit_tests/test_main.py b/tests/unit_tests/test_main.py index 837643417d..633ac1b3e1 100644 --- a/tests/unit_tests/test_main.py +++ b/tests/unit_tests/test_main.py @@ -6437,6 +6437,30 @@ def test_parse_args_logs_states() -> None: assert args.states is True +@pytest.mark.parametrize("command", ["logs", "run"]) +@pytest.mark.parametrize( + ("env_value", "expected"), + [(None, False), ("false", False), ("0", False), ("true", True), ("1", True)], +) +def test_parse_args_serial_logging_reset_env( + monkeypatch: pytest.MonkeyPatch, + command: str, + env_value: str | None, + expected: bool, +) -> None: + """The serial reset environment default must be a boolean for both commands.""" + if env_value is None: + monkeypatch.delenv("ESPHOME_SERIAL_LOGGING_RESET", raising=False) + else: + monkeypatch.setenv("ESPHOME_SERIAL_LOGGING_RESET", env_value) + + args = parse_args(["esphome", command, "device.yaml"]) + assert args.reset is expected + if not expected: + args = parse_args(["esphome", command, "--reset", "device.yaml"]) + assert args.reset is True + + def test_parse_args_argcomplete_only_runs_when_completing() -> None: """Only import and invoke argcomplete when _ARGCOMPLETE is set.