pytest_usb_device_console.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. # SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  2. # SPDX-License-Identifier: CC0-1.0
  3. from time import sleep
  4. import pytest
  5. from pytest_embedded import Dut
  6. from serial import Serial
  7. from serial.tools.list_ports import comports
  8. @pytest.mark.esp32s2
  9. @pytest.mark.usb_device
  10. def test_usb_device_console_example(dut: Dut) -> None:
  11. dut.expect_exact('USB initialization DONE')
  12. dut.expect_exact('example: log -> UART')
  13. dut.expect_exact('example: print -> stdout')
  14. dut.expect_exact('example: print -> stderr')
  15. # Find device with Espressif TinyUSB VID/PID
  16. sleep(2) # Some time for the OS to enumerate our USB device
  17. ports = comports()
  18. for port, _, hwid in ports:
  19. if '303A:4001' in hwid:
  20. with Serial(port) as s:
  21. # Assert TinyUSB output: Read 3 lines and check their content
  22. serial_output = list()
  23. serial_output.append(s.readline())
  24. serial_output.append(s.readline())
  25. serial_output.append(s.readline())
  26. assert any(b'example: log -> USB' in out for out in serial_output)
  27. assert any(b'example: print -> stdout' in out for out in serial_output)
  28. assert any(b'example: print -> stderr' in out for out in serial_output)
  29. return
  30. raise Exception('TinyUSB COM port not found')