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):
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:
self.closePort()
self.ser = serial.Serial(
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,
# stopbits = serial.STOPBITS_TWO,
bytesize=serial.EIGHTBITS,

View File

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