Skip to content

Commit d62c97f

Browse files
authored
improve slcanTestCase robustness (#1559)
1 parent fd8d076 commit d62c97f

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

test/test_slcan.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#!/usr/bin/env python
22

33
import unittest
4+
from typing import cast
5+
6+
import serial
47

58
import can
69

@@ -15,16 +18,17 @@
1518
1619
https://realpython.com/pypy-faster-python/#it-doesnt-work-well-with-c-extensions
1720
"""
18-
TIMEOUT = 0.5 if IS_PYPY else 0.001 # 0.001 is the default set in slcanBus
21+
TIMEOUT = 0.5 if IS_PYPY else 0.01 # 0.001 is the default set in slcanBus
1922

2023

2124
class slcanTestCase(unittest.TestCase):
2225
def setUp(self):
23-
self.bus = can.Bus(
24-
"loop://", interface="slcan", sleep_after_open=0, timeout=TIMEOUT
26+
self.bus = cast(
27+
can.interfaces.slcan.slcanBus,
28+
can.Bus("loop://", interface="slcan", sleep_after_open=0, timeout=TIMEOUT),
2529
)
26-
self.serial = self.bus.serialPortOrig
27-
self.serial.read(self.serial.in_waiting)
30+
self.serial = cast(serial.Serial, self.bus.serialPortOrig)
31+
self.serial.reset_input_buffer()
2832

2933
def tearDown(self):
3034
self.bus.shutdown()
@@ -44,8 +48,9 @@ def test_send_extended(self):
4448
arbitration_id=0x12ABCDEF, is_extended_id=True, data=[0xAA, 0x55]
4549
)
4650
self.bus.send(msg)
47-
data = self.serial.read(self.serial.in_waiting)
48-
self.assertEqual(data, b"T12ABCDEF2AA55\r")
51+
expected = b"T12ABCDEF2AA55\r"
52+
data = self.serial.read(len(expected))
53+
self.assertEqual(data, expected)
4954

5055
def test_recv_standard(self):
5156
self.serial.write(b"t4563112233\r")
@@ -62,8 +67,9 @@ def test_send_standard(self):
6267
arbitration_id=0x456, is_extended_id=False, data=[0x11, 0x22, 0x33]
6368
)
6469
self.bus.send(msg)
65-
data = self.serial.read(self.serial.in_waiting)
66-
self.assertEqual(data, b"t4563112233\r")
70+
expected = b"t4563112233\r"
71+
data = self.serial.read(len(expected))
72+
self.assertEqual(data, expected)
6773

6874
def test_recv_standard_remote(self):
6975
self.serial.write(b"r1238\r")
@@ -79,8 +85,9 @@ def test_send_standard_remote(self):
7985
arbitration_id=0x123, is_extended_id=False, is_remote_frame=True, dlc=8
8086
)
8187
self.bus.send(msg)
82-
data = self.serial.read(self.serial.in_waiting)
83-
self.assertEqual(data, b"r1238\r")
88+
expected = b"r1238\r"
89+
data = self.serial.read(len(expected))
90+
self.assertEqual(data, expected)
8491

8592
def test_recv_extended_remote(self):
8693
self.serial.write(b"R12ABCDEF6\r")
@@ -96,8 +103,9 @@ def test_send_extended_remote(self):
96103
arbitration_id=0x12ABCDEF, is_extended_id=True, is_remote_frame=True, dlc=6
97104
)
98105
self.bus.send(msg)
99-
data = self.serial.read(self.serial.in_waiting)
100-
self.assertEqual(data, b"R12ABCDEF6\r")
106+
expected = b"R12ABCDEF6\r"
107+
data = self.serial.read(len(expected))
108+
self.assertEqual(data, expected)
101109

102110
def test_partial_recv(self):
103111
self.serial.write(b"T12ABCDEF")

0 commit comments

Comments
 (0)