def testUpdateMessageInvalidMessage(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) stray_message = multiline.SuffixConsoleMessage('asdf', stream) with self.assertRaisesRegex( ValueError, 'The given message does not belong to this output object.'): ssco.UpdateMessage(stray_message, 'fdsa')
def testUpdateMessageUpdatingOldMessage(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) msg1 = ssco.AddMessage('Im a little ') ssco.AddMessage('I make soup in the ') with self.assertRaisesRegex( ValueError, 'Only the last added message can be updated.'): ssco.UpdateMessage(msg1, 'teapot')
def testAddAndUpdateConsole(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) ssco.AddMessage('message') self.assertEqual('', stream.getvalue()) ssco.UpdateConsole() self.assertEqual( # Update 1 '\r' + ' ' * self.console_size + '\r' + 'message', stream.getvalue())
def _SetupOutput(self): def _FormattedCallback(): if self._detail_message_callback: detail_message = self._detail_message_callback() if detail_message: return ' ' + detail_message + '...' return None self._console_output = multiline.SimpleSuffixConsoleOutput(self._stream) self._console_message = self._console_output.AddMessage( self._prefix, detail_message_callback=_FormattedCallback)
def testUpdateMessageAddMessageUpdateConsole(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) message = ssco.AddMessage('message') ssco.UpdateConsole() ssco.UpdateMessage(message, 'suffix') ssco.AddMessage('new message') ssco.UpdateConsole() self.assertEqual( # Update 1 '\r' + ' ' * self.console_size + '\r' + 'message' + # Update 2 '\r' + ' ' * self.console_size + '\r' + 'messagesuffix' + '\n' + '\r' + ' ' * self.console_size + '\r' + 'new message', stream.getvalue())
def testMultipleAddsAndUpdateConsoles(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) ssco.AddMessage('message') ssco.UpdateConsole() ssco.AddMessage('egassem') ssco.UpdateConsole() ssco.UpdateConsole() self.assertEqual( # Update 1 '\r' + ' ' * self.console_size + '\r' + 'message' + # Update 2 '\r' + ' ' * self.console_size + '\r' + 'message' + '\n' + '\r' + ' ' * self.console_size + '\r' + 'egassem' + # Update 2 '\r' + ' ' * self.console_size + '\r' + 'egassem', stream.getvalue())
def _SetupOutput(self): # Console outputting objects self._console_output = multiline.SimpleSuffixConsoleOutput(self._stream) self._header_message = self._console_output.AddMessage(self._message) self._current_stage_message = self._header_message
def testUpdateNoMessages(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) ssco.UpdateConsole() self.assertEqual('', stream.getvalue())
def testUpdateMessageNoMessage(self): stream = io.StringIO() ssco = multiline.SimpleSuffixConsoleOutput(stream) with self.assertRaisesRegex(ValueError, 'A message must be passed.'): ssco.UpdateMessage(None, 'fdsa')