Allow QA asserts to produce more messages
authorHrvoje Ribicic <riba@google.com>
Thu, 3 Apr 2014 11:11:56 +0000 (11:11 +0000)
committerHrvoje Ribicic <riba@google.com>
Fri, 4 Apr 2014 09:10:50 +0000 (11:10 +0200)
This patch adds a tiny helper function that allows error messages
output by the QA asserts to be prefixed with whatever the user
supplies.

Signed-off-by: Hrvoje Ribicic <riba@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

qa/qa_utils.py

index 49739d2..7cce741 100644 (file)
@@ -67,36 +67,47 @@ _QA_OUTPUT = pathutils.GetLogFilename("qa-output")
  RETURN_VALUE) = range(1000, 1002)
 
 
-def AssertIn(item, sequence):
+def _RaiseWithInfo(msg, error_desc):
+  """Raises a QA error with the given content, and adds a message if present.
+
+  """
+  if msg:
+    output = "%s: %s" % (msg, error_desc)
+  else:
+    output = error_desc
+  raise qa_error.Error(output)
+
+
+def AssertIn(item, sequence, msg=None):
   """Raises an error when item is not in sequence.
 
   """
   if item not in sequence:
-    raise qa_error.Error("%r not in %r" % (item, sequence))
+    _RaiseWithInfo(msg, "%r not in %r" % (item, sequence))
 
 
-def AssertNotIn(item, sequence):
+def AssertNotIn(item, sequence, msg=None):
   """Raises an error when item is in sequence.
 
   """
   if item in sequence:
-    raise qa_error.Error("%r in %r" % (item, sequence))
+    _RaiseWithInfo(msg, "%r in %r" % (item, sequence))
 
 
-def AssertEqual(first, second):
+def AssertEqual(first, second, msg=None):
   """Raises an error when values aren't equal.
 
   """
   if not first == second:
-    raise qa_error.Error("%r == %r" % (first, second))
+    _RaiseWithInfo(msg, "%r == %r" % (first, second))
 
 
-def AssertMatch(string, pattern):
+def AssertMatch(string, pattern, msg=None):
   """Raises an error when string doesn't match regexp pattern.
 
   """
   if not re.match(pattern, string):
-    raise qa_error.Error("%r doesn't match /%r/" % (string, pattern))
+    _RaiseWithInfo(msg, "%r doesn't match /%r/" % (string, pattern))
 
 
 def _GetName(entity, fn):