+_INFO_SEQ = None
+_WARNING_SEQ = None
+_ERROR_SEQ = None
+_RESET_SEQ = None
+
+
+def _SetupColours():
+ """Initializes the colour constants.
+
+ """
+ global _INFO_SEQ, _WARNING_SEQ, _ERROR_SEQ, _RESET_SEQ
+
+ # Don't use colours if stdout isn't a terminal
+ if not sys.stdout.isatty():
+ return
+
+ try:
+ import curses
+ except ImportError:
+ # Don't use colours if curses module can't be imported
+ return
+
+ curses.setupterm()
+
+ _RESET_SEQ = curses.tigetstr("op")
+
+ setaf = curses.tigetstr("setaf")
+ _INFO_SEQ = curses.tparm(setaf, curses.COLOR_GREEN)
+ _WARNING_SEQ = curses.tparm(setaf, curses.COLOR_YELLOW)
+ _ERROR_SEQ = curses.tparm(setaf, curses.COLOR_RED)
+
+
+_SetupColours()
+
+
+def AssertIn(item, sequence):
+ """Raises an error when item is not in sequence.
+
+ """
+ if item not in sequence:
+ raise qa_error.Error('%r not in %r' % (item, sequence))
+
+
+def AssertEqual(first, second):