Ignore patching when not on MacOS

This commit is contained in:
Simon Alibert 2025-03-20 09:38:36 +01:00
parent 2d56f35071
commit c1c71fb994
2 changed files with 15 additions and 5 deletions

View File

@ -263,13 +263,18 @@ class MockStatusPacket(MockDynamixelPacketv2):
class MockPortHandler(dxl.PortHandler): class MockPortHandler(dxl.PortHandler):
def setupPort(self, baud): # noqa: N802 """
This class overwrite the 'setupPort' method of the dynamixel PortHandler because it can specify
baudrates that are not supported with a serial port on MacOS.
"""
def setupPort(self, cflag_baud): # noqa: N802
if self.is_open: if self.is_open:
self.closePort() self.closePort()
self.ser = serial.Serial( self.ser = serial.Serial(
port=self.port_name, port=self.port_name,
# baudrate=self.baudrate, <- This is forbidden for ttys ports (on macos at least) # baudrate=self.baudrate, <- This will fail on MacOS
# parity = serial.PARITY_ODD, # parity = serial.PARITY_ODD,
# stopbits = serial.STOPBITS_TWO, # stopbits = serial.STOPBITS_TWO,
bytesize=serial.EIGHTBITS, bytesize=serial.EIGHTBITS,

View File

@ -1,3 +1,4 @@
import sys
from unittest.mock import patch from unittest.mock import patch
import dynamixel_sdk as dxl import dynamixel_sdk as dxl
@ -9,12 +10,16 @@ from tests.mocks.mock_dynamixel import MockInstructionPacket, MockMotors, MockPo
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
def patch_port_handler(): def patch_port_handler():
with patch.object(dxl, "PortHandler", MockPortHandler): if sys.platform == "darwin":
yield # Patch is applied for the duration of each test with patch.object(dxl, "PortHandler", MockPortHandler):
yield
else:
yield
@pytest.mark.skipif(sys.platform != "darwin", reason=f"No patching needed on {sys.platform=}")
def test_autouse_patch(): def test_autouse_patch():
"""Ensure that the autouse fixture correctly patches dxl.PortHandler with MockPortHandler.""" """Ensures that the autouse fixture correctly patches dxl.PortHandler with MockPortHandler."""
assert dxl.PortHandler is MockPortHandler assert dxl.PortHandler is MockPortHandler