def test_check_ready_should_return_False_if_no_results(self, mock_chmod, mock_stat, mock_isfile, mock_Popen):
        mock_Popen.return_value.communicate.return_value = ('', '')
        mock_Popen.return_value.wait.return_value = 0

        fw_up = LinuxFirmwareUpdater('somepath', self.BOOTLOADER_IDVENDOR, self.BOOTLOADER_IDPRODUCT, self.PEACHY_IDVENDOR, self.PEACHY_IDPRODUCT)
        result = fw_up.check_ready()

        self.assertFalse(result)
        mock_Popen.assert_called_with(['lsusb'], stdout=PIPE, stderr=PIPE)
    def test_check_ready_should_raise_exception_if_multipule_bootloaders(self, mock_chmod, mock_stat, mock_isfile, mock_Popen):
        mock_Popen.return_value.communicate.return_value = ('{0:04x}:{1:04x}\n{0:04x}:{1:04x}'.format(self.BOOTLOADER_IDVENDOR, self.BOOTLOADER_IDPRODUCT), '')
        mock_Popen.return_value.wait.return_value = 0

        fw_up = LinuxFirmwareUpdater('somepath', self.BOOTLOADER_IDVENDOR, self.BOOTLOADER_IDPRODUCT, self.PEACHY_IDVENDOR, self.PEACHY_IDPRODUCT)
        with self.assertRaises(Exception):
            fw_up.check_ready()

        mock_Popen.assert_called_with(['lsusb'], stdout=PIPE, stderr=PIPE)
    def test_update_should_return_false_if_update_not_successfull(self, mock_chmod, mock_stat, mock_isfile, mock_Popen):
        mock_isfile.return_value = True
        mock_Popen.return_value.communicate.return_value = ('err', 'out')
        mock_Popen.return_value.wait.return_value = 34
        usb_addess = '{}:{}'.format('0483', 'df11')
        expected_command = [os.path.join(self.bin_path, 'dfu-util'), '-a', '0', '--dfuse-address', '0x08000000', '-D', self.firmware_path, '-d', usb_addess]

        l_fw_up = LinuxFirmwareUpdater(self.bin_path, self.BOOTLOADER_IDVENDOR, self.BOOTLOADER_IDPRODUCT, self.PEACHY_IDVENDOR, self.PEACHY_IDPRODUCT)
        result = l_fw_up.update(self.firmware_path)

        self.assertFalse(result)
        mock_Popen.assert_called_with(expected_command, stdout=PIPE, stderr=PIPE)
        mock_Popen.return_value.wait.assert_called_with()