def test_micropython_mode_find_device_darwin_remove_extraneous_devices(): """ Check that if on OS X, only one version of the same device is shown, as OS X shows every device on two different ports. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.valid_boards = [(0x0D28, 0x0204, None, "micro:bit")] mock_port = mock.MagicMock() mock_port.portName = mock.MagicMock(return_value="tty.usbserial-XXX") mock_port.productIdentifier = mock.MagicMock(return_value=0x0204) mock_port.vendorIdentifier = mock.MagicMock(return_value=0x0D28) mock_port.serialNumber = mock.MagicMock(return_value="123456") mock_port2 = mock.MagicMock() mock_port2.portName = mock.MagicMock(return_value="cu.usbserial-XXX") mock_port2.productIdentifier = mock.MagicMock(return_value=0x0204) mock_port2.vendorIdentifier = mock.MagicMock(return_value=0x0D28) mock_port2.serialNumber = mock.MagicMock(return_value="123456") device = Device( mock_port2.vendorIdentifier(), mock_port2.productIdentifier(), "/dev/" + mock_port2.portName(), mock_port2.serialNumber(), "ARM", "BBC micro:bit", "microbit", None, ) with mock.patch("sys.platform", "darwin"), mock.patch("os.name", "posix"), mock.patch( "mu.modes.base.QSerialPortInfo.availablePorts", return_value=[mock_port, mock_port2], ): assert mm.find_devices() == [device]
def test_micropython_mode_find_device(): """ Ensure it's possible to detect a device and return the expected port. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mock_port = mock.MagicMock() for vid, pid, manufacturer, board_name in mm.valid_boards: mock_port.vid = vid mock_port.productIdentifier = mock.MagicMock(return_value=pid) mock_port.vendorIdentifier = mock.MagicMock(return_value=vid) mock_port.manufacturer = mock.MagicMock(return_value=manufacturer) mock_port.portName = mock.MagicMock(return_value="COM0") mock_port.serialNumber = mock.MagicMock(return_value="12345") mock_os = mock.MagicMock() mock_os.name = "nt" mock_sys = mock.MagicMock() mock_sys.platform = "win32" device = Device( mock_port.vendorIdentifier(), mock_port.productIdentifier(), mock_port.portName(), mock_port.serialNumber(), "micro:bit", board_name, None, ) with mock.patch( "mu.modes.base.QSerialPortInfo.availablePorts", return_value=[mock_port], ), mock.patch("mu.modes.base.os", mock_os), mock.patch("mu.modes.base.sys", mock_sys): assert mm.find_devices() == [device]
def test_micropython_mode_find_device_no_ports(): """ There are no connected devices so return None. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) with mock.patch("mu.modes.base.QSerialPortInfo.availablePorts", return_value=[]): assert mm.find_devices() == []
def test_micropython_mode_find_device_but_no_device(): """ None of the connected devices is a valid board so return None. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mock_port = mock.MagicMock() mock_port.productIdentifier = mock.MagicMock(return_value=666) mock_port.vendorIdentifier = mock.MagicMock(return_value=999) mock_port.serialNumber = mock.MagicMock(return_value="123456") with mock.patch( "mu.modes.base.QSerialPortInfo.availablePorts", return_value=[mock_port], ): assert mm.find_devices() == []