Revision: 4586
Author: KariHusa
Date: Wed Feb 2 06:09:52 2011
Log: monitor: Conditionally import windows stuff and fix
HighlightedStatusText msg creation
http://code.google.com/p/robotframework/source/detail?r=4586
Modified:
/trunk/src/robot/output/monitor.py
=======================================
--- /trunk/src/robot/output/monitor.py Wed Feb 2 05:55:56 2011
+++ /trunk/src/robot/output/monitor.py Wed Feb 2 06:09:52 2011
@@ -146,76 +146,78 @@
'WARN': ANSI_YELLOW,
'PASS': ANSI_GREEN}
- def __str__(self):
+ def __init__(self, msg):
+ PlainStatusText.__init__(self, msg)
color = self._get_highlight_color(self._msg)
reset = color != '' and self.ANSI_RESET or ''
- return color + self._msg + reset
+ self._msg = color + self._msg + reset
-from ctypes import windll, Structure, c_short, c_ushort, byref
-
-SHORT = c_short
-WORD = c_ushort
-
-class COORD(Structure):
- _fields_ = [
- ("X", SHORT),
- ("Y", SHORT)]
-
-class SMALL_RECT(Structure):
- _fields_ = [
- ("Left", SHORT),
- ("Top", SHORT),
- ("Right", SHORT),
- ("Bottom", SHORT)]
-
-class CONSOLE_SCREEN_BUFFER_INFO(Structure):
- _fields_ = [
- ("dwSize", COORD),
- ("dwCursorPosition", COORD),
- ("wAttributes", WORD),
- ("srWindow", SMALL_RECT),
- ("dwMaximumWindowSize", COORD)]
-
-
-class DosHiglightedStatusText(PlainStatusText):
- FOREGROUND_RED = 0x0004
- FOREGROUND_YELLOW = 0x0006
- FOREGROUND_GREEN = 0x0002
- FOREGROUND_INTENSITY = 0x0008
- FOREGROUND_GREY = 0x0007
-
- STD_OUTPUT_HANDLE = -11
-
- _highlight_colors = {'FAIL': FOREGROUND_RED,
- 'ERROR': FOREGROUND_RED,
- 'WARN': FOREGROUND_YELLOW,
- 'PASS': FOREGROUND_GREEN}
-
- def write_status(self, newline=True, stream=sys.__stdout__):
- self._write(None, ' |', '|', newline, stream)
-
- def write_message(self, message, newline=True, stream=sys.__stderr__):
- self._write(message, '[', ']', newline, stream)
-
- def _write(self, message, start_sep, end_sep, newline=True,
stream=sys.__stdout__):
- default_colors = self._get_text_attr()
- default_fg = default_colors & 0x0007
- default_bg = default_colors & 0x0070
- self._write_encoded_with_tab_replacing(stream, start_sep)
- self._set_text_attr(self._get_highlight_color(self._msg) |
self.FOREGROUND_INTENSITY)
- self._write_encoded_with_tab_replacing(stream, ' %s ' % self._msg)
- self._set_text_attr(default_fg | default_bg |
self.FOREGROUND_INTENSITY)
- self._write_encoded_with_tab_replacing(stream, end_sep)
- if message:
- stream.write(' %s' % message)
- if newline:
- self._write_encoded_with_tab_replacing(stream, '\n')
-
- def _set_text_attr(self, color):
-
windll.kernel32.SetConsoleTextAttribute(windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE),
color)
-
- def _get_text_attr(self):
- csbi = CONSOLE_SCREEN_BUFFER_INFO()
- windll.kernel32.GetConsoleScreenBufferInfo(self.STD_OUTPUT_HANDLE,
byref(csbi))
- return csbi.wAttributes
+if os.pathsep == '\\':
+ from ctypes import windll, Structure, c_short, c_ushort, byref
+
+ SHORT = c_short
+ WORD = c_ushort
+
+ class COORD(Structure):
+ _fields_ = [
+ ("X", SHORT),
+ ("Y", SHORT)]
+
+ class SMALL_RECT(Structure):
+ _fields_ = [
+ ("Left", SHORT),
+ ("Top", SHORT),
+ ("Right", SHORT),
+ ("Bottom", SHORT)]
+
+ class CONSOLE_SCREEN_BUFFER_INFO(Structure):
+ _fields_ = [
+ ("dwSize", COORD),
+ ("dwCursorPosition", COORD),
+ ("wAttributes", WORD),
+ ("srWindow", SMALL_RECT),
+ ("dwMaximumWindowSize", COORD)]
+
+
+ class DosHiglightedStatusText(PlainStatusText):
+ FOREGROUND_RED = 0x0004
+ FOREGROUND_YELLOW = 0x0006
+ FOREGROUND_GREEN = 0x0002
+ FOREGROUND_INTENSITY = 0x0008
+ FOREGROUND_GREY = 0x0007
+
+ STD_OUTPUT_HANDLE = -11
+
+ _highlight_colors = {'FAIL': FOREGROUND_RED,
+ 'ERROR': FOREGROUND_RED,
+ 'WARN': FOREGROUND_YELLOW,
+ 'PASS': FOREGROUND_GREEN}
+
+ def write_status(self, newline=True, stream=sys.__stdout__):
+ self._write(None, ' |', '|', newline, stream)
+
+ def write_message(self, message, newline=True,
stream=sys.__stderr__):
+ self._write(message, '[', ']', newline, stream)
+
+ def _write(self, message, start_sep, end_sep, newline=True,
stream=sys.__stdout__):
+ default_colors = self._get_text_attr()
+ default_fg = default_colors & 0x0007
+ default_bg = default_colors & 0x0070
+ self._write_encoded_with_tab_replacing(stream, start_sep)
+ self._set_text_attr(self._get_highlight_color(self._msg) |
self.FOREGROUND_INTENSITY)
+ self._write_encoded_with_tab_replacing(stream, ' %s ' %
self._msg)
+ self._set_text_attr(default_fg | default_bg |
self.FOREGROUND_INTENSITY)
+ self._write_encoded_with_tab_replacing(stream, end_sep)
+ if message:
+ stream.write(' %s' % message)
+ if newline:
+ self._write_encoded_with_tab_replacing(stream, '\n')
+
+ def _set_text_attr(self, color):
+
windll.kernel32.SetConsoleTextAttribute(windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE),
color)
+
+ def _get_text_attr(self):
+ csbi = CONSOLE_SCREEN_BUFFER_INFO()
+
windll.kernel32.GetConsoleScreenBufferInfo(self.STD_OUTPUT_HANDLE,
byref(csbi))
+ return csbi.wAttributes