Esempio n. 1
0
 def testMessageContainsAnsiCodes(self):
   self.StartEnvPatch({'TERM': 'screen'})
   self.SetEncoding('utf8')
   self.console_size = self.SetConsoleSize(20)
   message = ('This is a line constructed from \x1b[31;1mcolorized\x1b[39;0m '
              'parts and long enough to be split into \x1b[34;1m'
              'multiple\x1b[39;0m lines at \x1b[32mwidth=20\x1b[39;0m.')
   stream = io.StringIO()
   mco = multiline.MultilineConsoleOutput(stream)
   mco.AddMessage(message)
   mco.UpdateConsole()
   self.assertEqual(
       '\r' + ' ' * self.console_size + '\r' +
       'This is a line const\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'ructed from \x1b[31;1mcolorize\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'd\x1b[39;0m parts and long eno\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'ugh to be split into\n' +
       '\r' + ' ' * self.console_size + '\r' +
       ' \x1b[34;1mmultiple\x1b[39;0m lines at \x1b[32mw\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'idth=20\x1b[39;0m.\n',
       stream.getvalue())
Esempio n. 2
0
 def testMessagesGetShorter(self):
   stream = io.StringIO()
   mco = multiline.MultilineConsoleOutput(stream)
   message1 = mco.AddMessage('a' * 20)
   message2 = mco.AddMessage('b' * 20)
   mco.UpdateConsole()
   mco.UpdateMessage(message1, 'c' * 5)
   mco.UpdateMessage(message2, 'd' * 5)
   mco.UpdateConsole()
   self.assertEqual(
       # Update 1
       '\r' + ' ' * self.console_size + '\r' +
       'a' * 15 + '\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'a' * 5 + '\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'b' * 15 + '\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'b' * 5 + '\n' +
       # Update 2
       self.ansi_cursor_up.format(4) +
       '\r' + ' ' * self.console_size + '\r' +
       'c' * 5 + '\n' +
       '\r' + ' ' * self.console_size + '\r' +
       'd' * 5 + '\n',
       stream.getvalue())
Esempio n. 3
0
 def testUpdateMessageInvalidMessage(self):
   stream = io.StringIO()
   mco = multiline.MultilineConsoleOutput(stream)
   stray_message = multiline.MultilineConsoleMessage('asdf', stream)
   with self.assertRaisesRegex(
       ValueError,
       'The given message does not belong to this output object.'):
     mco.UpdateMessage(stray_message, 'fdsa')
Esempio n. 4
0
 def testAddAndUpdateConsole(self):
     stream = io.StringIO()
     mco = multiline.MultilineConsoleOutput(stream)
     mco.AddMessage('message')
     self.assertEqual('', stream.getvalue())
     mco.UpdateConsole()
     mco.UpdateConsole()
     self.assertEqual(
         # Update 1 (Update 2 is empty as no update necessary)
         '\r' + ' ' * self.console_size + '\r' + 'message\n',
         stream.getvalue())
 def _SetupOutput(self):
   # Console outputting objects
   self._maintain_queue = False
   self._console_output = multiline.MultilineConsoleOutput(self._stream)
   self._header_message = self._console_output.AddMessage(self._message)
   self._stage_messages = dict()
   for stage in self._stages:
     self._stage_messages[stage] = self._console_output.AddMessage(
         stage.header, indentation_level=1)
     self._UpdateStageTickMark(stage)
   self._console_output.UpdateConsole()
Esempio n. 6
0
 def _SetupOutput(self):
   # Console outputting objects
   self._maintain_queue = False
   self._console_output = multiline.MultilineConsoleOutput(self._stream)
   self._header_message = self._AddMessage(self._message)
   self._header_stage = Stage('')  # Use a Stage object to hold header state.
   self._header_stage.status = StageCompletionStatus.RUNNING
   self._stage_messages = dict()
   for stage in self._stages.values():
     self._stage_messages[stage] = self._AddMessage(stage.header,
                                                    indentation_level=1)
     self._UpdateStageTickMark(stage)
   self._console_output.UpdateConsole()
Esempio n. 7
0
 def testAddAndUpdateMessage(self):
     stream = io.StringIO()
     mco = multiline.MultilineConsoleOutput(stream)
     message = mco.AddMessage('message')
     mco.UpdateConsole()
     mco.UpdateMessage(message, 'egassem')
     mco.UpdateConsole()
     self.assertEqual(
         # Update 1
         '\r' + ' ' * self.console_size + '\r' + 'message\n' +
         # Update 2
         self.ansi_cursor_up.format(1) + '\r' + ' ' * self.console_size +
         '\r' + 'egassem\n',
         stream.getvalue())
Esempio n. 8
0
 def testUpdateMessageNoMessage(self):
   stream = io.StringIO()
   mco = multiline.MultilineConsoleOutput(stream)
   with self.assertRaisesRegex(ValueError, 'A message must be passed.'):
     mco.UpdateMessage(None, 'fdsa')
Esempio n. 9
0
 def testUpdateNoMessages(self):
   stream = io.StringIO()
   mco = multiline.MultilineConsoleOutput(stream)
   mco.UpdateConsole()
   self.assertEqual('', stream.getvalue())