def test_get_tape_file_number_returncode_is_2_raise_exception(self, mock_popen): attrs = {'communicate.return_value': ('output', 'error'), 'returncode': 2} mock_popen.return_value.configure_mock(**attrs) with self.assertRaises(MTFailedOperationException): get_tape_file_number("device_to_verify") cmd = 'mt -f device_to_verify status | grep -i "file number"' mock_popen.assert_called_once_with(cmd, shell=True, stderr=PIPE, stdout=PIPE)
def test_get_tape_file_number_success(self, mock_popen): attrs = {'communicate.return_value': ('the_drive=42, something else', ''), 'returncode': 0} mock_popen.return_value.configure_mock(**attrs) self.assertEqual(get_tape_file_number("device_to_verify"), 42) cmd = 'mt -f device_to_verify status | grep -i "file number"' mock_popen.assert_called_once_with(cmd, shell=True, stderr=PIPE, stdout=PIPE)
def run(self, medium=None): """ Gets the current file number (position) of the given tape """ try: drive = TapeDrive.objects.get(storage_medium__pk=medium) except TapeDrive.DoesNotExist: raise ValueError("Tape not mounted") return get_tape_file_number(drive.device)