Skip to content

Merge branch 'ci/fixes' #84

Merge branch 'ci/fixes'

Merge branch 'ci/fixes' #84

GitHub Actions / Test Results failed Oct 15, 2025 in 0s

2 errors, 14 fail, 39 pass in 2h 34m 6s

215 files  215 suites   2h 34m 6s ⏱️
 55 tests  39 ✅ 0 💤 14 ❌  2 🔥
514 runs  489 ✅ 0 💤 14 ❌ 11 🔥

Results for commit a6c2634.

Annotations

Check warning on line 0 in validation.democfg.test_democfg

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 6 runs failed: test_cfg (validation.democfg.test_democfg)

./artifacts/test-results-hw/validation/democfg/esp32c5/democfg.xml [took 47s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Hello cfg!"
Bytes in current buffer (color code eliminated): ash_boot
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-41-268545/test_cfg/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x78595491d9d0>
pattern = 'Hello cfg!', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {}
patterns = ['Hello cfg!'], res = []
debug_str = 'Not found "Hello cfg!"\nBytes in current buffer (color code eliminated): ash_boot\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-41-268545/test_cfg/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:170: in expect_exact
    return self.pexpect_proc.expect_exact(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:432: in expect_exact
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x785954b457f0>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x785955bb69f0>\nsearcher: searcher_string:\n    0: b'Hello cfg!'")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x785955bb69f0>
E           searcher: searcher_string:
E               0: b'Hello cfg!'
E           <pytest_embedded.log.PexpectProcess object at 0x785955bb69f0>
E           searcher: searcher_string:
E               0: b'Hello cfg!'

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x78595491d9d0>

    def test_cfg(dut):
>       dut.expect_exact("Hello cfg!")

tests/validation/democfg/test_democfg.py:2: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x78595491d9d0>
pattern = 'Hello cfg!', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {}
patterns = ['Hello cfg!'], res = []
debug_str = 'Not found "Hello cfg!"\nBytes in current buffer (color code eliminated): ash_boot\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-41-268545/test_cfg/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Hello cfg!"
E               Bytes in current buffer (color code eliminated): ash_boot
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-41-268545/test_cfg/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in validation.nvs.test_nvs

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 43 runs failed: test_nvs (validation.nvs.test_nvs)

./artifacts/test-results-hw/validation/nvs/esp32c5/nvs.xml [took 48s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}"
Bytes in current buffer (color code eliminated): :0x10 (RTC_WDT_SYS),boot:0x18 (SPI_FAST_FLASH_BOOT) invalid header: 0x40857637 invalid header: 0x40857637 invalid header: 0x40857637 assertion "result == ETS_OK" failed: file... (total 229 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-55-985339/test_nvs/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x7f22caa62450>
pattern = 'Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}'
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {}
patterns = ['Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}']
res = []
debug_str = 'Not found "Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0..... (total 229 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-55-985339/test_nvs/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:170: in expect_exact
    return self.pexpect_proc.expect_exact(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:432: in expect_exact
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x7f22cab1ae10>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x7f22caa604a0>\nsearcher: searcher_string:\n    0: b'Values fr...64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}'")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x7f22caa604a0>
E           searcher: searcher_string:
E               0: b'Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}'
E           <pytest_embedded.log.PexpectProcess object at 0x7f22caa604a0>
E           searcher: searcher_string:
E               0: b'Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}'

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x7f22caa62450>

    def test_nvs(dut):
        LOGGER = logging.getLogger(__name__)
    
        LOGGER.info("Expecting default values from Preferences")
>       dut.expect_exact(
            "Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | "
            "long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | "
            "struct: {id:1,val:100}"
        )

tests/validation/nvs/test_nvs.py:8: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x7f22caa62450>
pattern = 'Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}'
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {}
patterns = ['Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}']
res = []
debug_str = 'Not found "Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0..... (total 229 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-55-985339/test_nvs/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Values from Preferences: char: A | uchar: 0 | short: 0 | ushort: 0 | int: 0 | uint: 0 | long: 0 | ulong: 0 | long64: 0 | ulong64: 0 | float: 0.00 | double: 0.00 | bool: false | str: str0 | strLen: strLen0 | struct: {id:1,val:100}"
E               Bytes in current buffer (color code eliminated): :0x10 (RTC_WDT_SYS),boot:0x18 (SPI_FAST_FLASH_BOOT) invalid header: 0x40857637 invalid header: 0x40857637 invalid header: 0x40857637 assertion "result == ETS_OK" failed: file... (total 229 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-55-985339/test_nvs/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in performance.linpack_double.test_linpack_double

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 8 runs failed: test_linpack_double (performance.linpack_double.test_linpack_double)

./artifacts/test-results-hw/performance/linpack_double/esp32c5/linpack_double.xml [took 1m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-47-502265/test_linpack_double/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x723555e10e30>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...03 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-47-502265/test_linpack_double/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x723555e0f290>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x723554b5fe00>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x723554b5fe00>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x723554b5fe00>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x723555e10e30>
request = <FixtureRequest for <Function test_linpack_double>>

    def test_linpack_double(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/linpack_double/test_linpack_double.py:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x723555e10e30>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...03 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-47-502265/test_linpack_double/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-47-502265/test_linpack_double/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in performance.coremark.test_coremark

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 8 runs failed: test_coremark (performance.coremark.test_coremark)

./artifacts/test-results-hw/performance/coremark/esp32c5/coremark.xml [took 1m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-31-491047/test_coremark/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x733079ffc560>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...al 35303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-31-491047/test_coremark/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x73307a1f0a40>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x733079f358b0>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x733079f358b0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x733079f358b0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x733079ffc560>
request = <FixtureRequest for <Function test_coremark>>

    def test_coremark(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/coremark/test_coremark.py:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x733079ffc560>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...al 35303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-31-491047/test_coremark/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-47-31-491047/test_coremark/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in performance.superpi.test_superpi

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 8 runs failed: test_superpi (performance.superpi.test_superpi)

./artifacts/test-results-hw/performance/superpi/esp32c5/superpi.xml [took 1m 24s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35738 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_22-00-46-774963/test_superpi/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x7816c7e7b050>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...tal 35738 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_22-00-46-774963/test_superpi/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x7816c7cd1c70>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x7816c8cfd8e0>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x7816c8cfd8e0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x7816c8cfd8e0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x7816c7e7b050>
request = <FixtureRequest for <Function test_superpi>>

    def test_superpi(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/superpi/test_superpi.py:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x7816c7e7b050>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...tal 35738 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_22-00-46-774963/test_superpi/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35738 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_22-00-46-774963/test_superpi/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check failure on line 0 in validation.wifi

See this annotation in the file changed.

@github-actions github-actions / Test Results

All 10 runs with error: missing-run (validation.wifi)

./test_errors/test-results-hardware/tests/validation/wifi/esp32/wifi_missing_0.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32/wifi_missing_1.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32c3/wifi_missing_0.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32c5/wifi_missing_0.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32c6/wifi_missing_0.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32s2/wifi_missing_0.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32s2/wifi_missing_1.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32s3/wifi_missing_0.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32s3/wifi_missing_1.xml
./test_errors/test-results-hardware/tests/validation/wifi/esp32s3/wifi_missing_2.xml
Raw output
Expected test run missing
This placeholder indicates an expected test run did not execute.

Check warning on line 0 in validation.hello_world.test_hello_world

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 15 runs failed: test_hello_world (validation.hello_world.test_hello_world)

./artifacts/test-results-hw/validation/hello_world/esp32c5/hello_world.xml [took 47s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Hello Arduino!"
Bytes in current buffer (color code eliminated): s_flash_boot
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-49-18-194547/test_hello_world/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x7c4e198a1490>
pattern = 'Hello Arduino!', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {}
patterns = ['Hello Arduino!'], res = []
debug_str = 'Not found "Hello Arduino!"\nBytes in current buffer (color code eliminated): s_flash_boot\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-49-18-194547/test_hello_world/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:170: in expect_exact
    return self.pexpect_proc.expect_exact(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:432: in expect_exact
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x7c4e19cb7050>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x7c4e1ab398e0>\nsearcher: searcher_string:\n    0: b'Hello Arduino!'")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x7c4e1ab398e0>
E           searcher: searcher_string:
E               0: b'Hello Arduino!'
E           <pytest_embedded.log.PexpectProcess object at 0x7c4e1ab398e0>
E           searcher: searcher_string:
E               0: b'Hello Arduino!'

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x7c4e198a1490>

    def test_hello_world(dut):
>       dut.expect_exact("Hello Arduino!")

tests/validation/hello_world/test_hello_world.py:2: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x7c4e198a1490>
pattern = 'Hello Arduino!', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {}
patterns = ['Hello Arduino!'], res = []
debug_str = 'Not found "Hello Arduino!"\nBytes in current buffer (color code eliminated): s_flash_boot\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-49-18-194547/test_hello_world/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Hello Arduino!"
E               Bytes in current buffer (color code eliminated): s_flash_boot
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-49-18-194547/test_hello_world/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in performance.ramspeed.test_ramspeed

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 8 runs failed: test_ramspeed (performance.ramspeed.test_ramspeed)

./artifacts/test-results-hw/performance/ramspeed/esp32c5/ramspeed.xml [took 1m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-58-02-728762/test_ramspeed/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x774fd66dc4a0>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...al 35303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-58-02-728762/test_ramspeed/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x774fd66db290>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x774fd5650b30>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x774fd5650b30>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x774fd5650b30>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x774fd66dc4a0>
request = <FixtureRequest for <Function test_ramspeed>>

    def test_ramspeed(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        runs_results = []
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/ramspeed/test_ramspeed.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x774fd66dc4a0>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...al 35303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-58-02-728762/test_ramspeed/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-58-02-728762/test_ramspeed/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in validation.uart.test_uart

See this annotation in the file changed.

@github-actions github-actions / Test Results

test_uart (validation.uart.test_uart) failed

./artifacts/test-results-hw/validation/uart/esp32c5/uart.xml [took 2m 19s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 68922 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_22-03-52-075272/test_uart/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x7112c1c3d700>
pattern = re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 120}
patterns = [re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)]
res = []
debug_str = 'Not found "re.compile(b\'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)\', re....(total 68922 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_22-03-52-075272/test_uart/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x7112c2ecc2f0>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x7112c202bec0>\nsearcher: searcher_re:\n    0: re.compile(b'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x7112c202bec0>
E           searcher: searcher_re:
E               0: re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)')
E           <pytest_embedded.log.PexpectProcess object at 0x7112c202bec0>
E           searcher: searcher_re:
E               0: re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x7112c1c3d700>

    def test_uart(dut):
>       dut.expect_unity_test_output(timeout=120)

tests/validation/uart/test_uart.py:2: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:197: in expect_unity_test_output
    self.expect(UNITY_SUMMARY_LINE_REGEX, timeout=timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x7112c1c3d700>
pattern = re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 120}
patterns = [re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)]
res = []
debug_str = 'Not found "re.compile(b\'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)\', re....(total 68922 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_22-03-52-075272/test_uart/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 68922 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_22-03-52-075272/test_uart/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in performance.fibonacci.test_fibonacci

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 8 runs failed: test_fibonacci (performance.fibonacci.test_fibonacci)

./artifacts/test-results-hw/performance/fibonacci/esp32c5/fibonacci.xml [took 1m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-09-613743/test_fibonacci/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x7515410f78c0>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...l 35303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-09-613743/test_fibonacci/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x7515413a0710>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x751540964ef0>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x751540964ef0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x751540964ef0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x7515410f78c0>
request = <FixtureRequest for <Function test_fibonacci>>

    def test_fibonacci(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/fibonacci/test_fibonacci.py:22: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x7515410f78c0>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...l 35303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-09-613743/test_fibonacci/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-50-09-613743/test_fibonacci/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in validation.periman.test_periman

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 7 runs failed: test_periman (validation.periman.test_periman)

./artifacts/test-results-hw/validation/periman/esp32c5/periman.xml [took 33s]
Raw output
AssertionError: Could not detect end of test
assert False
self = <pytest_embedded_serial.dut.SerialDut object at 0x761842bcd010>
pattern = b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)'
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 10}
patterns = [b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)']
res = []
debug_str = 'Not found "b\'(?:\\\\b\\\\w+\\\\b test: This should(?: not)? be printed|Peripheral Manager test done)\'"\nBytes in cu...otal 8778 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-19-508239/test_periman/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x76184340e7b0>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x761842100860>\nsearcher: searcher_re:\n    0: re.compile(b'(?:\\\\b\\\\w+\\\\b test: This should(?: not)? be printed|Peripheral Manager test done)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x761842100860>
E           searcher: searcher_re:
E               0: re.compile(b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)')
E           <pytest_embedded.log.PexpectProcess object at 0x761842100860>
E           searcher: searcher_re:
E               0: re.compile(b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x761842bcd010>

    def test_periman(dut):
        LOGGER = logging.getLogger(__name__)
        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)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/validation/periman/test_periman.py:24: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x761842bcd010>
pattern = b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)'
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 10}
patterns = [b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)']
res = []
debug_str = 'Not found "b\'(?:\\\\b\\\\w+\\\\b test: This should(?: not)? be printed|Peripheral Manager test done)\'"\nBytes in cu...otal 8778 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-19-508239/test_periman/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "b'(?:\\b\\w+\\b test: This should(?: not)? be printed|Peripheral Manager test done)'"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 8778 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-52-19-508239/test_periman/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

During handling of the above exception, another exception occurred:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x761842bcd010>

    def test_periman(dut):
        LOGGER = logging.getLogger(__name__)
        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"
E               AssertionError: Could not detect end of test
E               assert False

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

Check warning on line 0 in performance.linpack_float.test_linpack_float

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 8 runs failed: test_linpack_float (performance.linpack_float.test_linpack_float)

./artifacts/test-results-hw/performance/linpack_float/esp32c5/linpack_float.xml [took 1m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-55-25-333771/test_linpack_float/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x7a64031b1280>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-55-25-333771/test_linpack_float/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x7a6402fbe480>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x7a640303a660>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x7a640303a660>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x7a640303a660>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x7a64031b1280>
request = <FixtureRequest for <Function test_linpack_float>>

    def test_linpack_float(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/linpack_float/test_linpack_float.py:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x7a64031b1280>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... C...303 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-55-25-333771/test_linpack_float/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB8: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 35303 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-55-25-333771/test_linpack_float/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check failure on line 0 in validation.psram.test_psram

See this annotation in the file changed.

@github-actions github-actions / Test Results

test_psram (validation.psram.test_psram) with error

./artifacts/test-results-hw/validation/psram/esp32c5/psram.xml [took 0s]
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...oApp object at 0x7cadf9bd0680>, 'msg_queue': <AutoProxy[MessageQueue] object, typeid 'MessageQueue' at 0x7cadf9cd2ae0>}
_close_or_terminate = <function multi_dut_generator_fixture.<locals>.wrapper.<locals>._close_or_terminate at 0x7cadf9bd8540>
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.12/site-packages/pytest_embedded/plugin.py:501: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/plugin.py:1131: in serial
    return serial_gn(**locals())
           ^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut_factory.py:482: in serial_gn
    return cls(**_drop_none_kwargs(kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pytest_embedded_arduino/serial.py:25: in __init__
    super().__init__(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_arduino.serial.ArduinoSerial object at 0x7cadf9bd09e0>
pexpect_proc = <pytest_embedded.log.PexpectProcess object at 0x7cadf9d5e390>
msg_queue = <AutoProxy[MessageQueue] object, typeid 'MessageQueue' at 0x7cadf9cd2ae0>
target = 'esp32c5', beta_target = None, port = None, port_serial_number = 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/2025-10-15_22-11-17-153341/test_psram', port_target_cache={}, port_app_cache={}, logfile_extension='.log')
ports_to_occupy = (), kwargs = {}, filters = {}, port_filter = ''
available_ports = [], ports = []

    def __init__(
        self,
        pexpect_proc: PexpectProcess,
        msg_queue: MessageQueue,
        target: str | None = None,
        beta_target: str | None = None,
        port: str | None = None,
        port_serial_number: str | None = None,
        port_mac: str | None = 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: Meta | None = None,
        ports_to_occupy: list[str] = (),
        **kwargs,
    ) -> None:
        self._meta = meta
        filters = {}
        if port_serial_number:
            filters['serials'] = [s.strip() for s in port_serial_number.split(',') if s.strip()]
    
        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(**filters) 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.12/site-packages/pytest_embedded_serial_esp/serial.py:107: ValueError

Check warning on line 0 in validation.timer.test_timer

See this annotation in the file changed.

@github-actions github-actions / Test Results

test_timer (validation.timer.test_timer) failed

./artifacts/test-results-hw/validation/timer/esp32c5/timer.xml [took 4m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 135020 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-57-12-690597/test_timer/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x711419f978c0>
pattern = re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 240}
patterns = [re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)]
res = []
debug_str = 'Not found "re.compile(b\'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)\', re....otal 135020 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-57-12-690597/test_timer/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x71141a05bf80>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x711419e884a0>\nsearcher: searcher_re:\n    0: re.compile(b'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x711419e884a0>
E           searcher: searcher_re:
E               0: re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)')
E           <pytest_embedded.log.PexpectProcess object at 0x711419e884a0>
E           searcher: searcher_re:
E               0: re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x711419f978c0>

    def test_timer(dut):
>       dut.expect_unity_test_output(timeout=240)

tests/validation/timer/test_timer.py:2: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:197: in expect_unity_test_output
    self.expect(UNITY_SUMMARY_LINE_REGEX, timeout=timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x711419f978c0>
pattern = re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 240}
patterns = [re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)]
res = []
debug_str = 'Not found "re.compile(b\'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)\', re....otal 135020 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-57-12-690597/test_timer/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 135020 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-57-12-690597/test_timer/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in performance.psramspeed.test_psramspeed

See this annotation in the file changed.

@github-actions github-actions / Test Results

1 out of 5 runs failed: test_psramspeed (performance.psramspeed.test_psramspeed)

./artifacts/test-results-hw/performance/psramspeed/esp32c5/psramspeed.xml [took 1m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB12: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 39743 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-46-28-500873/test_psramspeed/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x72c60270c800>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB12: Connecting.... ... 39743 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-46-28-500873/test_psramspeed/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x72c60270c8f0>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x72c6027015e0>\nsearcher: searcher_re:\n    0: re.compile(b'Runs: (\\\\d+)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x72c6027015e0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')
E           <pytest_embedded.log.PexpectProcess object at 0x72c6027015e0>
E           searcher: searcher_re:
E               0: re.compile(b'Runs: (\\d+)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x72c60270c800>
request = <FixtureRequest for <Function test_psramspeed>>

    def test_psramspeed(dut, request):
        LOGGER = logging.getLogger(__name__)
    
        runs_results = []
    
        # Match "Runs: %d"
>       res = dut.expect(r"Runs: (\d+)", timeout=60)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/performance/psramspeed/test_psramspeed.py:14: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x72c60270c800>
pattern = 'Runs: (\\d+)', expect_all = False, not_matching = ()
return_what_before_match = False, args = (), kwargs = {'timeout': 60}
patterns = ['Runs: (\\d+)'], res = []
debug_str = 'Not found "Runs: (\\d+)"\nBytes in current buffer (color code eliminated): Serial port /dev/ttyUSB12: Connecting.... ... 39743 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_21-46-28-500873/test_psramspeed/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "Runs: (\d+)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB12: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 39743 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_21-46-28-500873/test_psramspeed/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check warning on line 0 in validation.unity.test_unity

See this annotation in the file changed.

@github-actions github-actions / Test Results

test_unity (validation.unity.test_unity) failed

./artifacts/test-results-hw/validation/unity/esp32c5/unity.xml [took 4m 17s]
Raw output
pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)"
Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 135020 bytes)
Please check the full log here: /tmp/pytest-embedded/2025-10-15_22-10-31-025772/test_unity/dut.log
self = <pytest_embedded_serial.dut.SerialDut object at 0x74077a03bf50>
pattern = re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 240}
patterns = [re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)]
res = []
debug_str = 'Not found "re.compile(b\'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)\', re....otal 135020 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_22-10-31-025772/test_unity/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
>               index = func(self, pattern, *args, **kwargs)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:146: in expect
    return self.pexpect_proc.expect(pattern, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:354: in expect
    return self.expect_list(compiled_pattern_list,
/usr/local/lib/python3.12/site-packages/pexpect/spawnbase.py:383: in expect_list
    return exp.expect_loop(timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pexpect/expect.py:181: in expect_loop
    return self.timeout(e)
           ^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pexpect.expect.Expecter object at 0x740779d7cfe0>
err = TIMEOUT("<pytest_embedded.log.PexpectProcess object at 0x740779ba8410>\nsearcher: searcher_re:\n    0: re.compile(b'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)')")

    def timeout(self, err=None):
        spawn = self.spawn
    
        spawn.before = spawn._before.getvalue()
        spawn.after = TIMEOUT
        index = self.searcher.timeout_index
        if index >= 0:
            spawn.match = TIMEOUT
            spawn.match_index = index
            return index
        else:
            spawn.match = None
            spawn.match_index = None
            msg = str(spawn)
            msg += '\nsearcher: %s' % self.searcher
            if err is not None:
                msg = str(err) + '\n' + msg
    
            exc = TIMEOUT(msg)
            exc.__cause__ = None    # in Python 3.x we can use "raise exc from None"
>           raise exc
E           pexpect.exceptions.TIMEOUT: <pytest_embedded.log.PexpectProcess object at 0x740779ba8410>
E           searcher: searcher_re:
E               0: re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)')
E           <pytest_embedded.log.PexpectProcess object at 0x740779ba8410>
E           searcher: searcher_re:
E               0: re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)')

/usr/local/lib/python3.12/site-packages/pexpect/expect.py:144: TIMEOUT

The above exception was the direct cause of the following exception:

dut = <pytest_embedded_serial.dut.SerialDut object at 0x74077a03bf50>

    def test_unity(dut):
>       dut.expect_unity_test_output(timeout=240)

tests/validation/unity/test_unity.py:2: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:197: in expect_unity_test_output
    self.expect(UNITY_SUMMARY_LINE_REGEX, timeout=timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pytest_embedded_serial.dut.SerialDut object at 0x74077a03bf50>
pattern = re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)
expect_all = False, not_matching = (), return_what_before_match = False
args = (), kwargs = {'timeout': 240}
patterns = [re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)]
res = []
debug_str = 'Not found "re.compile(b\'^[-]+\\\\s*(\\\\d+) Tests (\\\\d+) Failures (\\\\d+) Ignored\\\\s*(?P<result>OK|FAIL)\', re....otal 135020 bytes)\nPlease check the full log here: /tmp/pytest-embedded/2025-10-15_22-10-31-025772/test_unity/dut.log'

    @functools.wraps(func)
    def wrapper(
        self,
        pattern,
        *args,
        expect_all: bool = False,
        not_matching: list[str | re.Pattern] = (),
        return_what_before_match: bool = False,
        **kwargs,
    ) -> Match | AnyStr | list[Match | AnyStr]:
        if return_what_before_match and expect_all:
            raise ValueError('`return_what_before_match` and `expect_all` cannot be `True` at the same time.')
    
        patterns = to_list(pattern)
        res = []
        while patterns:
            try:
                index = func(self, pattern, *args, **kwargs)
            except (pexpect.EOF, pexpect.TIMEOUT) as e:
                debug_str = (
                    f'Not found "{pattern!s}"\n'
                    f'Bytes in current buffer (color code eliminated): {self.pexpect_proc.buffer_debug_str}\n'
                    f'Please check the full log here: {self.logfile}'
                )
>               raise e.__class__(debug_str) from e
E               pexpect.exceptions.TIMEOUT: Not found "re.compile(b'^[-]+\\s*(\\d+) Tests (\\d+) Failures (\\d+) Ignored\\s*(?P<result>OK|FAIL)', re.MULTILINE)"
E               Bytes in current buffer (color code eliminated): Serial port /dev/ttyUSB15: Connecting.... Connecting.... Warning: Deprecated: Option '--flash_mode' is deprecated. Use '--flash-mode' instead. Warning: Deprecated: Option '--... (total 135020 bytes)
E               Please check the full log here: /tmp/pytest-embedded/2025-10-15_22-10-31-025772/test_unity/dut.log

/usr/local/lib/python3.12/site-packages/pytest_embedded/dut.py:93: TIMEOUT

Check notice on line 0 in .github

See this annotation in the file changed.

@github-actions github-actions / Test Results

55 tests found

There are 55 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_clock
change_cpu_frequency_test
change_pins_test
disabled_uart_calls_test
enabled_uart_calls_test
end_when_stopped_test
performance.coremark.test_coremark ‑ test_coremark
performance.fibonacci.test_fibonacci ‑ test_fibonacci
performance.linpack_double.test_linpack_double ‑ test_linpack_double
performance.linpack_float.test_linpack_float ‑ test_linpack_float
performance.psramspeed.test_psramspeed ‑ test_psramspeed
performance.ramspeed.test_ramspeed ‑ test_ramspeed
performance.superpi.test_superpi ‑ test_superpi
periman_test
psram_found
resize_buffers_test
rtc_run_clock
rtc_set_time
scan_bus
scan_bus_with_wifi
swap_pins
test_api
test_calloc_success
test_fail
test_malloc_fail
test_malloc_success
test_memcpy
test_memset_all_ones
test_memset_all_zeroes
test_memset_alternating
test_memset_random
test_pass
test_realloc_success
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.gpio.test_gpio ‑ test_gpio
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.timer.test_timer ‑ test_timer
validation.uart.test_uart ‑ test_uart
validation.unity.test_unity ‑ test_unity
validation.wifi ‑ missing-run
validation.wifi.test_wifi ‑ test_wifi