winserial.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # -*- coding: utf-8 -*-
  2. # Copyright (C) 2015-2016 Peter Magnusson <peter@birchroad.net>
  3. import unittest
  4. import os
  5. import serial
  6. from nodemcu_uploader.utils import default_port
  7. import time
  8. SERIALPORT = os.environ.get('SERIALPORT', default_port())
  9. def expect(port, timeout, exp='> '):
  10. timeout = port.timeout
  11. # lt = 0.0001
  12. # if port.timeout != lt:
  13. # port.timeout = lt
  14. end = time.time() + timeout
  15. data = ''
  16. while not data.endswith(exp) and time.time() <= end:
  17. data += port.read()
  18. # port.timeout = timeout
  19. return data
  20. class WinSerialCase(unittest.TestCase):
  21. port = None
  22. def setUp(self):
  23. self.port = serial.serial_for_url(SERIALPORT, 9600, timeout=5)
  24. def tearDown(self):
  25. self.port.close()
  26. def test_sync(self):
  27. self.port.write('print("%self%");\n'.encode())
  28. expect(self.port, 3)
  29. for i in range(50):
  30. self.port.write('print("%self%");\n'.encode())
  31. res = expect(self.port, 1)
  32. self.assertEqual(res, 'print("%self%");\r\n%self%\r\n> ')
  33. time.sleep(0.2)