Skip to content

fix(uart): uses IDF 5.x API to set loopback #3344

fix(uart): uses IDF 5.x API to set loopback

fix(uart): uses IDF 5.x API to set loopback #3344

GitHub Actions / Test Results failed Oct 9, 2024 in 0s

2 errors, 7 fail, 18 pass in 25m 36s

116 files  116 suites   25m 36s ⏱️
 27 tests  18 ✅ 0 💤  7 ❌ 2 🔥
285 runs  246 ✅ 0 💤 33 ❌ 6 🔥

Results for commit 61e2263.

Annotations

Check warning on line 101 in /home/runner/work/arduino-esp32/arduino-esp32/tests/validation/uart/uart.ino

See this annotation in the file changed.

@github-actions github-actions / Test Results

3 out of 12 runs failed: basic_transmission_test

./artifacts/tests-results-wokwi-esp32c6-validation/validation/uart/esp32c6/uart.xml
./artifacts/tests-results-wokwi-esp32h2-validation/validation/uart/esp32h2/uart.xml
./artifacts/tests-results-wokwi-esp32s3-validation/validation/uart/esp32s3/uart.xml
Raw output
Expected 'Hello from Serial1 (UART1) >>> via loopback >>> Serial1 (UART1) ' Was '> via loopback >>> Serial1 (UART1) '

Check warning on line 101 in /home/runner/work/arduino-esp32/arduino-esp32/tests/validation/uart/uart.ino

See this annotation in the file changed.

@github-actions github-actions / Test Results

5 out of 12 runs failed: change_baudrate_test

./artifacts/tests-results-wokwi-esp32c3-validation/validation/uart/esp32c3/uart.xml
./artifacts/tests-results-wokwi-esp32c6-validation/validation/uart/esp32c6/uart.xml
./artifacts/tests-results-wokwi-esp32h2-validation/validation/uart/esp32h2/uart.xml
./artifacts/tests-results-wokwi-esp32s2-validation/validation/uart/esp32s2/uart.xml
./artifacts/tests-results-wokwi-esp32s3-validation/validation/uart/esp32s3/uart.xml
Raw output
Expected 'Hello from Serial1 (UART1) >>> via loopback >>> Serial1 (UART1) using 9600 baudrate' Was 'ial1 (UART1) using 9600 baudrate'

Check warning on line 101 in /home/runner/work/arduino-esp32/arduino-esp32/tests/validation/uart/uart.ino

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 12 runs failed: change_cpu_frequency_test

./artifacts/tests-results-wokwi-esp32c6-validation/validation/uart/esp32c6/uart.xml
./artifacts/tests-results-wokwi-esp32h2-validation/validation/uart/esp32h2/uart.xml
Raw output
Expected 'Hello from Serial1 (UART1) >>> via loopback >>> Serial1 (UART1) with new CPU frequency' Was '>> Serial1 (UART1) with new CPU frequency'

Check warning on line 515 in /home/runner/work/arduino-esp32/arduino-esp32/tests/validation/uart/uart.ino

See this annotation in the file changed.

@github-actions github-actions / Test Results

All 12 runs failed: periman_test

./artifacts/parent-artifacts/results/hw/validation/uart/esp32/uart.xml
./artifacts/parent-artifacts/results/hw/validation/uart/esp32c3/uart.xml
./artifacts/parent-artifacts/results/hw/validation/uart/esp32c6/uart.xml
./artifacts/parent-artifacts/results/hw/validation/uart/esp32h2/uart.xml
./artifacts/parent-artifacts/results/hw/validation/uart/esp32s2/uart.xml
./artifacts/parent-artifacts/results/hw/validation/uart/esp32s3/uart.xml
./artifacts/tests-results-wokwi-esp32-validation/validation/uart/esp32/uart.xml
./artifacts/tests-results-wokwi-esp32c3-validation/validation/uart/esp32c3/uart.xml
./artifacts/tests-results-wokwi-esp32c6-validation/validation/uart/esp32c6/uart.xml
./artifacts/tests-results-wokwi-esp32h2-validation/validation/uart/esp32h2/uart.xml
./artifacts/tests-results-wokwi-esp32s2-validation/validation/uart/esp32s2/uart.xml
./artifacts/tests-results-wokwi-esp32s3-validation/validation/uart/esp32s3/uart.xml
Raw output
Expected '' Was 'Hello from Serial2 (UART2) >>> to >>> Serial1 (UART1) while used by I2C'

Check warning on line 101 in /home/runner/work/arduino-esp32/arduino-esp32/tests/validation/uart/uart.ino

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 12 runs failed: change_pins_test

./artifacts/tests-results-wokwi-esp32c6-validation/validation/uart/esp32c6/uart.xml
./artifacts/tests-results-wokwi-esp32h2-validation/validation/uart/esp32h2/uart.xml
Raw output
Expected 'Hello from Serial1 (UART1) >>> via loopback >>> Serial1 (UART1) using new pins' Was 'opback >>> Serial1 (UART1) using new pins'

Check warning on line 493 in /home/runner/work/arduino-esp32/arduino-esp32/tests/validation/uart/uart.ino

See this annotation in the file changed.

@github-actions github-actions / Test Results

3 out of 4 runs failed: auto_baudrate_test

./artifacts/parent-artifacts/results/hw/validation/uart/esp32/uart.xml
./artifacts/parent-artifacts/results/hw/validation/uart/esp32s2/uart.xml
./artifacts/tests-results-wokwi-esp32s2-validation/validation/uart/esp32s2/uart.xml
Raw output
Values Not Within Delta 2304 Expected 115200 Was 0

Check warning on line 0 in validation.periman.test_periman

See this annotation in the file changed.

@github-actions github-actions / Test Results

All 6 runs failed: test_periman (validation.periman.test_periman)

./artifacts/parent-artifacts/results/hw/validation/periman/esp32/periman.xml [took 24s]
./artifacts/parent-artifacts/results/hw/validation/periman/esp32c3/periman.xml [took 22s]
./artifacts/parent-artifacts/results/hw/validation/periman/esp32c6/periman.xml [took 19s]
./artifacts/parent-artifacts/results/hw/validation/periman/esp32h2/periman.xml [took 21s]
./artifacts/parent-artifacts/results/hw/validation/periman/esp32s2/periman.xml [took 22s]
./artifacts/parent-artifacts/results/hw/validation/periman/esp32s3/periman.xml [took 24s]
Raw output
AssertionError: Peripheral GPIO printed when it should not
assert False
dut = <pytest_embedded_serial.dut.SerialDut object at 0x7f07ef5887c0>

    def test_periman(dut):
        peripherals = [
            "GPIO",
            "SigmaDelta",
            "LEDC",
            "RMT",
            "I2S",
            "I2C",
            "SPI",
            "ADC_Oneshot",
            "ADC_Continuous",
            "DAC",
            "Touch",
        ]
    
        pattern = rb"(?:\b\w+\b test: This should(?: not)? be printed|Peripheral Manager test done)"
    
        while True:
            try:
                res = dut.expect(pattern, timeout=10)
            except Exception as e:  # noqa: F841
                assert False, "Could not detect end of test"
    
            console_output = res.group(0).decode("utf-8")
            peripheral = console_output.split()[0]
    
            if "Peripheral Manager test done" in console_output:
                break
    
            if peripheral in peripherals:
                if "not" in console_output:
>                   assert False, f"Peripheral {peripheral} printed when it should not"
E                   AssertionError: Peripheral GPIO printed when it should not
E                   assert False

tests/validation/periman/test_periman.py:32: AssertionError

Check failure on line 0 in performance.psramspeed.test_psramspeed

See this annotation in the file changed.

@github-actions github-actions / Test Results

All 3 runs with error: test_psramspeed (performance.psramspeed.test_psramspeed)

./artifacts/parent-artifacts/results/hw/validation/psram/esp32/psram.xml [took 2s]
./artifacts/parent-artifacts/results/hw/validation/psram/esp32s2/psram.xml [took 0s]
./artifacts/parent-artifacts/results/hw/validation/psram/esp32s3/psram.xml [took 0s]
Raw output
failed on setup with "SystemExit: 2"
self = AddrFilenamePairAction(option_strings=[], dest='addr_filename', nargs='+', const=None, default=None, type=None, choices=None, help='Address followed by binary filename, separated by space', metavar='<address> <filename>')
parser = ArgumentParser(prog='esptool write_flash', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
namespace = Namespace(addr_filename=None, erase_all=False, flash_freq='keep', flash_mode='keep', flash_size='keep', spi_connection...=False, encrypt_files=None, ignore_flash_encryption_efuse_setting=False, force=False, compress=None, no_compress=False)
values = ['0', '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bootloader.bin', '32768', '/github/home/.arduino/tes...am/build.tmp/psramspeed.ino.partitions.bin', '65536', '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bin']
option_string = None

    def __call__(self, parser, namespace, values, option_string=None):
        # validate pair arguments
        pairs = []
        for i in range(0, len(values), 2):
            try:
                address = int(values[i], 0)
            except ValueError:
                raise argparse.ArgumentError(
                    self, 'Address "%s" must be a number' % values[i]
                )
            try:
>               argfile = open(values[i + 1], "rb")
E               FileNotFoundError: [Errno 2] No such file or directory: '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bootloader.bin'

/usr/local/lib/python3.10/site-packages/esptool/__init__.py:1278: FileNotFoundError

During handling of the above exception, another exception occurred:

self = ArgumentParser(prog='esptool write_flash', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
args = ['0', '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bootloader.bin', '32768', '/github/home/.arduino/tes...ild.tmp/psramspeed.ino.partitions.bin', '65536', '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bin', ...]
namespace = Namespace(addr_filename=None, erase_all=False, flash_freq='keep', flash_mode='keep', flash_size='keep', spi_connection...=False, encrypt_files=None, ignore_flash_encryption_efuse_setting=False, force=False, compress=None, no_compress=False)

    def parse_known_args(self, args=None, namespace=None):
        if args is None:
            # args default to the system args
            args = _sys.argv[1:]
        else:
            # make sure that args are mutable
            args = list(args)
    
        # default Namespace built from parser defaults
        if namespace is None:
            namespace = Namespace()
    
        # add any action defaults that aren't present
        for action in self._actions:
            if action.dest is not SUPPRESS:
                if not hasattr(namespace, action.dest):
                    if action.default is not SUPPRESS:
                        setattr(namespace, action.dest, action.default)
    
        # add any parser defaults that aren't present
        for dest in self._defaults:
            if not hasattr(namespace, dest):
                setattr(namespace, dest, self._defaults[dest])
    
        # parse the arguments and exit if there are any errors
        if self.exit_on_error:
            try:
>               namespace, args = self._parse_known_args(args, namespace)

/usr/local/lib/python3.10/argparse.py:1854: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.10/argparse.py:2045: in _parse_known_args
    positionals_end_index = consume_positionals(start_index)
/usr/local/lib/python3.10/argparse.py:2022: in consume_positionals
    take_action(action, args)
/usr/local/lib/python3.10/argparse.py:1931: in take_action
    action(self, namespace, argument_values, option_string)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = AddrFilenamePairAction(option_strings=[], dest='addr_filename', nargs='+', const=None, default=None, type=None, choices=None, help='Address followed by binary filename, separated by space', metavar='<address> <filename>')
parser = ArgumentParser(prog='esptool write_flash', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
namespace = Namespace(addr_filename=None, erase_all=False, flash_freq='keep', flash_mode='keep', flash_size='keep', spi_connection...=False, encrypt_files=None, ignore_flash_encryption_efuse_setting=False, force=False, compress=None, no_compress=False)
values = ['0', '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bootloader.bin', '32768', '/github/home/.arduino/tes...am/build.tmp/psramspeed.ino.partitions.bin', '65536', '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bin']
option_string = None

    def __call__(self, parser, namespace, values, option_string=None):
        # validate pair arguments
        pairs = []
        for i in range(0, len(values), 2):
            try:
                address = int(values[i], 0)
            except ValueError:
                raise argparse.ArgumentError(
                    self, 'Address "%s" must be a number' % values[i]
                )
            try:
                argfile = open(values[i + 1], "rb")
            except IOError as e:
>               raise argparse.ArgumentError(self, e)
E               argparse.ArgumentError: argument <address> <filename>: [Errno 2] No such file or directory: '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bootloader.bin'

/usr/local/lib/python3.10/site-packages/esptool/__init__.py:1280: ArgumentError

During handling of the above exception, another exception occurred:

args = ()
kwargs = {'_fixture_classes_and_options': ClassCliOptions(classes={'app': <class 'pytest_embedded_arduino.app.ArduinoApp'>, 'se...ded_arduino.app.ArduinoApp object at 0xb5608370>, 'msg_queue': <pytest_embedded.log.MessageQueue object at 0xb55efc28>}
_close_or_terminate = <function multi_dut_generator_fixture.<locals>.wrapper.<locals>._close_or_terminate at 0xb560d148>
res = None

    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        def _close_or_terminate(obj):
            if obj is None:
                del obj
                return
    
            try:
                if isinstance(obj, (subprocess.Popen, multiprocessing.process.BaseProcess)):
                    obj.terminate()
                    obj.kill()
                elif isinstance(obj, io.IOBase):
                    try:
                        obj.close()
                    except Exception as e:
                        logging.debug('file %s closed failed with error: %s', obj, str(e))
                else:
                    try:
                        obj.close()
                    except AttributeError:
                        try:
                            obj.terminate()
                        except AttributeError:
                            pass
                    except Exception as e:
                        logging.debug('Not properly caught object %s: %s', obj, str(e))
            except Exception as e:
                logging.debug('%s: %s', obj, str(e))
                return  # swallow up all error
            finally:
                referrers = gc.get_referrers(obj)
                for _referrer in referrers:
                    if isinstance(_referrer, list):
                        for _i, val in enumerate(_referrer):
                            if val is obj:
                                _referrer[_i] = None
                    elif isinstance(_referrer, dict):
                        for key, value in _referrer.items():
                            if value is obj:
                                _referrer[key] = None
                del obj
    
        if _COUNT == 1:
            res = None
            try:
>               res = func(*args, **kwargs)

/usr/local/lib/python3.10/site-packages/pytest_embedded/plugin.py:490: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.10/site-packages/pytest_embedded/plugin.py:1111: in serial
    return serial_gn(**locals())
/usr/local/lib/python3.10/site-packages/pytest_embedded/dut_factory.py:431: in serial_gn
    return cls(**_drop_none_kwargs(kwargs))
/usr/local/lib/python3.10/site-packages/pytest_embedded_arduino/serial.py:26: in __init__
    super().__init__(
/usr/local/lib/python3.10/site-packages/pytest_embedded_serial_esp/serial.py:130: in __init__
    super().__init__(
/usr/local/lib/python3.10/site-packages/pytest_embedded_serial/serial.py:94: in __init__
    self._start()
/usr/local/lib/python3.10/site-packages/pytest_embedded_arduino/serial.py:36: in _start
    self.flash()
/usr/local/lib/python3.10/site-packages/pytest_embedded_serial_esp/serial.py:174: in wrapper
    ret = func(self, *args, **kwargs)
/usr/local/lib/python3.10/site-packages/pytest_embedded_arduino/serial.py:58: in flash
    esptool.main(
/usr/local/lib/python3.10/site-packages/esptool/__init__.py:720: in main
    args = parser.parse_args(argv)
/usr/local/lib/python3.10/argparse.py:1821: in parse_args
    args, argv = self.parse_known_args(args, namespace)
/usr/local/lib/python3.10/argparse.py:1854: in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
/usr/local/lib/python3.10/argparse.py:2045: in _parse_known_args
    positionals_end_index = consume_positionals(start_index)
/usr/local/lib/python3.10/argparse.py:2022: in consume_positionals
    take_action(action, args)
/usr/local/lib/python3.10/argparse.py:1931: in take_action
    action(self, namespace, argument_values, option_string)
/usr/local/lib/python3.10/argparse.py:1210: in __call__
    subnamespace, arg_strings = parser.parse_known_args(arg_strings, None)
/usr/local/lib/python3.10/argparse.py:1857: in parse_known_args
    self.error(str(err))
/usr/local/lib/python3.10/argparse.py:2578: in error
    self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = ArgumentParser(prog='esptool write_flash', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
status = 2
message = "esptool write_flash: error: argument <address> <filename>: [Errno 2] No such file or directory: '/github/home/.arduino/tests/psram/build.tmp/psramspeed.ino.bootloader.bin'\n"

    def exit(self, status=0, message=None):
        if message:
            self._print_message(message, _sys.stderr)
>       _sys.exit(status)
E       SystemExit: 2

/usr/local/lib/python3.10/argparse.py:2565: SystemExit

Check failure on line 0 in validation.psram.test_psram

See this annotation in the file changed.

@github-actions github-actions / Test Results

All 3 runs with error: test_psram (validation.psram.test_psram)

./artifacts/parent-artifacts/results/hw/validation/psram/esp32/psram.xml [took 2s]
./artifacts/parent-artifacts/results/hw/validation/psram/esp32s2/psram.xml [took 4s]
./artifacts/parent-artifacts/results/hw/validation/psram/esp32s3/psram.xml [took 2s]
Raw output
failed on setup with "ValueError: Couldn't auto detect chip. Please manually specify with "--port""
args = ()
kwargs = {'_fixture_classes_and_options': ClassCliOptions(classes={'app': <class 'pytest_embedded_arduino.app.ArduinoApp'>, 'se...ded_arduino.app.ArduinoApp object at 0xb4d8a3a0>, 'msg_queue': <pytest_embedded.log.MessageQueue object at 0xb4d8a418>}
_close_or_terminate = <function multi_dut_generator_fixture.<locals>.wrapper.<locals>._close_or_terminate at 0xb4b192f8>
res = None

    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        def _close_or_terminate(obj):
            if obj is None:
                del obj
                return
    
            try:
                if isinstance(obj, (subprocess.Popen, multiprocessing.process.BaseProcess)):
                    obj.terminate()
                    obj.kill()
                elif isinstance(obj, io.IOBase):
                    try:
                        obj.close()
                    except Exception as e:
                        logging.debug('file %s closed failed with error: %s', obj, str(e))
                else:
                    try:
                        obj.close()
                    except AttributeError:
                        try:
                            obj.terminate()
                        except AttributeError:
                            pass
                    except Exception as e:
                        logging.debug('Not properly caught object %s: %s', obj, str(e))
            except Exception as e:
                logging.debug('%s: %s', obj, str(e))
                return  # swallow up all error
            finally:
                referrers = gc.get_referrers(obj)
                for _referrer in referrers:
                    if isinstance(_referrer, list):
                        for _i, val in enumerate(_referrer):
                            if val is obj:
                                _referrer[_i] = None
                    elif isinstance(_referrer, dict):
                        for key, value in _referrer.items():
                            if value is obj:
                                _referrer[key] = None
                del obj
    
        if _COUNT == 1:
            res = None
            try:
>               res = func(*args, **kwargs)

/usr/local/lib/python3.10/site-packages/pytest_embedded/plugin.py:490: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.10/site-packages/pytest_embedded/plugin.py:1111: in serial
    return serial_gn(**locals())
/usr/local/lib/python3.10/site-packages/pytest_embedded/dut_factory.py:431: in serial_gn
    return cls(**_drop_none_kwargs(kwargs))
/usr/local/lib/python3.10/site-packages/pytest_embedded_arduino/serial.py:26: in __init__
    super().__init__(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_arduino.serial.ArduinoSerial object at 0xb4d8a4d8>
pexpect_proc = <pytest_embedded.log.PexpectProcess object at 0xb4d8abc8>
msg_queue = <pytest_embedded.log.MessageQueue object at 0xb4d8a418>
target = 'esp32s3', beta_target = None, port = None, port_mac = None
baud = 115200, esptool_baud = 921600, esp_flash_force = False
skip_autoflash = False, erase_all = False
meta = Meta(logdir='/tmp/pytest-embedded/2024-10-09_18-51-42-577122/test_psram', port_target_cache={'/dev/ttyUSB2': 'esp32s3'}, port_app_cache={}, logfile_extension='.log')
ports_to_occupy = (), kwargs = {}
available_ports = ['/dev/ttyAMA0', '/dev/ttyUSB0', '/dev/ttyUSB1', '/dev/ttyUSB2', '/dev/ttyUSB3']
ports = ['/dev/ttyAMA0', '/dev/ttyUSB0', '/dev/ttyUSB1', '/dev/ttyUSB3', '/dev/ttyUSB2']

    def __init__(
        self,
        pexpect_proc: PexpectProcess,
        msg_queue: MessageQueue,
        target: Optional[str] = None,
        beta_target: Optional[str] = None,
        port: Optional[str] = None,
        port_mac: Optional[str] = None,
        baud: int = Serial.DEFAULT_BAUDRATE,
        esptool_baud: int = ESPTOOL_DEFAULT_BAUDRATE,
        esp_flash_force: bool = False,
        skip_autoflash: bool = False,
        erase_all: bool = False,
        meta: Optional[Meta] = None,
        ports_to_occupy: List[str] = (),
        **kwargs,
    ) -> None:
        self._meta = meta
    
        esptool_target = beta_target or target or 'auto'
        if port is None or port.endswith('*'):
            port_filter = port.strip('*') if port else ''
            available_ports = [_p for _p in esptool.get_port_list() if port_filter in _p]
            ports = list(set(available_ports) - set(self.occupied_ports.keys()) - set(ports_to_occupy))
    
            # sort to make /dev/ttyS* ports before /dev/ttyUSB* ports
            # esptool will reverse the list
            ports.sort()
            if port_mac:
                for port in ports:
                    if _is_port_mac_verified(pexpect_proc, port, port_mac, msg_queue):
                        ports = [port]
                        break
                else:
                    raise ValueError(f'The specified MAC address {port_mac} cannot be found.')
    
            # prioritize the cache recorded target port
            if esptool_target and self._meta:
                ports.sort(key=lambda x: self._meta.hit_port_target_cache(x, esptool_target))
    
            logging.debug(f'Detecting ports from {", ".join(ports)}')
        else:
            if port_mac:
                if _is_port_mac_verified(pexpect_proc, port, port_mac, msg_queue):
                    ports = [port]
                else:
                    raise ValueError(f'The specified MAC address {port_mac} binds with different port, not with {port}')
            else:
                ports = [port]
    
        # normal loader
        if esptool_target not in ['auto', *ESPTOOL_CHIPS]:
            raise ValueError(
                f'esptool version {ESPTOOL_VERSION} not support target {esptool_target}\n'
                f'Supported targets: {ESPTOOL_CHIPS}'
            )
    
        with contextlib.redirect_stdout(msg_queue):
            self.esp = esptool.get_default_connected_device(
                ports,
                port=port,
                connect_attempts=3,
                initial_baud=baud,
                chip=esptool_target,
            )
    
        if not self.esp:
>           raise ValueError('Couldn\'t auto detect chip. Please manually specify with "--port"')
E           ValueError: Couldn't auto detect chip. Please manually specify with "--port"

/usr/local/lib/python3.10/site-packages/pytest_embedded_serial_esp/serial.py:118: ValueError

Check notice on line 0 in .github

See this annotation in the file changed.

@github-actions github-actions / Test Results

27 tests found

There are 27 tests, see "Raw output" for the full list of tests.
Raw output
auto_baudrate_test
basic_transmission_test
begin_when_running_test
change_baudrate_test
change_cpu_frequency_test
change_pins_test
disabled_uart_calls_test
enabled_uart_calls_test
end_when_stopped_test
performance.psramspeed.test_psramspeed ‑ test_psramspeed
periman_test
resize_buffers_test
test_fail
test_pass
test_touch_errors
test_touch_interrtupt
test_touch_read
timer_clock_select_test
timer_divider_test
timer_interrupt_test
timer_read_test
validation.democfg.test_democfg ‑ test_cfg
validation.hello_world.test_hello_world ‑ test_hello_world
validation.nvs.test_nvs ‑ test_nvs
validation.periman.test_periman ‑ test_periman
validation.psram.test_psram ‑ test_psram
validation.wifi.test_wifi ‑ test_wifi