Merge branch 'fix/runtool_crcrlf_v5.1' into 'release/v5.1'

fix: save RunTool command output with correct line endings (v5.1)

See merge request espressif/esp-idf!28678
This commit is contained in:
Roland Dobai
2024-02-27 17:45:52 +08:00

View File

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD # SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import asyncio import asyncio
import importlib import importlib
@ -8,7 +8,6 @@ import re
import subprocess import subprocess
import sys import sys
from asyncio.subprocess import Process from asyncio.subprocess import Process
from io import open
from pkgutil import iter_modules from pkgutil import iter_modules
from types import FunctionType from types import FunctionType
from typing import Any, Dict, Generator, List, Match, Optional, TextIO, Tuple, Union from typing import Any, Dict, Generator, List, Match, Optional, TextIO, Tuple, Union
@ -396,7 +395,11 @@ class RunTool:
last_line = '' last_line = ''
try: try:
with open(output_filename, 'w', encoding='utf8') as output_file: # The command output from asyncio stream already contains OS specific line ending,
# because it's read in as bytes and decoded to string. On Windows "output" already
# contains CRLF. Use "newline=''" to prevent python to convert CRLF into CRCRLF.
# Please see "newline" description at https://docs.python.org/3/library/functions.html#open
with open(output_filename, 'w', encoding='utf8', newline='') as output_file:
while True: while True:
if self.interactive: if self.interactive:
output = await read_interactive_stream() output = await read_interactive_stream()