source file: /home/buildslave/tahoe/edgy/build/src/allmydata/util/assertutil.py
file stats: 58 lines, 47 executed: 81.0% covered
   1. # Copyright (c) 2003-2006 Bryce "Zooko" Wilcox-O'Hearn
   2. # mailto:zooko@zooko.com
   3. # http://zooko.com/
   4. # Permission is hereby granted, free of charge, to any person obtaining a
   5. # copy of this work to deal in this work without restriction (including the
   6. # rights to use, modify, distribute, sublicense, and/or sell copies)
   7. 
   8. """
   9. Tests useful in assertion checking, prints out nicely formated messages too.
  10. """
  11. 
  12. from humanreadable import hr
  13. 
  14. from twisted.python import log
  15. 
  16. def _assert(___cond=False, *___args, **___kwargs):
  17.     if ___cond:
  18.         return True
  19.     msgbuf=[]
  20.     if ___args:
  21.         msgbuf.append("%s %s" % tuple(map(hr, (___args[0], type(___args[0]),))))
  22.         msgbuf.extend([", %s %s" % tuple(map(hr, (arg, type(arg),))) for arg in ___args[1:]])
  23.         if ___kwargs:
  24.             msgbuf.append(", %s: %s %s" % ((___kwargs.items()[0][0],) + tuple(map(hr, (___kwargs.items()[0][1], type(___kwargs.items()[0][1]),)))))
  25.     else:
  26.         if ___kwargs:
  27.             msgbuf.append("%s: %s %s" % ((___kwargs.items()[0][0],) + tuple(map(hr, (___kwargs.items()[0][1], type(___kwargs.items()[0][1]),)))))
  28.     msgbuf.extend([", %s: %s %s" % tuple(map(hr, (k, v, type(v),))) for k, v in ___kwargs.items()[1:]])
  29. 
  30.     raise AssertionError, "".join(msgbuf)
  31. 
  32.     return False
  33. 
  34. def precondition(___cond=False, *___args, **___kwargs):
  35.     try:
  36.         if ___cond:
  37.             return True
  38.         msgbuf=["precondition", ]
  39.         if ___args or ___kwargs:
  40.             msgbuf.append(": ")
  41.         if ___args:
  42.             msgbuf.append("%s %s" % tuple(map(hr, (___args[0], type(___args[0]),))))
  43.             msgbuf.extend([", %s %s" % tuple(map(hr, (arg, type(arg),))) for arg in ___args[1:]])
  44.             if ___kwargs:
  45.                 msgbuf.append(", %s: %s %s" % ((___kwargs.items()[0][0],) + tuple(map(hr, (___kwargs.items()[0][1], type(___kwargs.items()[0][1]),)))))
  46.         else:
  47.             if ___kwargs:
  48.                 msgbuf.append("%s: %s %s" % ((___kwargs.items()[0][0],) + tuple(map(hr, (___kwargs.items()[0][1], type(___kwargs.items()[0][1]),)))))
  49.         msgbuf.extend([", %s: %s %s" % tuple(map(hr, (k, v, type(v),))) for k, v in ___kwargs.items()[1:]])
  50.     except Exception, le:
  51.         log.msg("assertutil.precondition(): INTERNAL ERROR IN allmydata.util.assertutil. %s %s %s" % (type(le), repr(le), le.args,))
  52.         log.err()
  53.         raise le
  54.     except:
  55.         log.msg("assertutil.precondition(): INTERNAL ERROR IN allmydata.util.assertutil.")
  56.         log.err()
  57.         raise
  58. 
  59.     raise AssertionError, "".join(msgbuf)
  60. 
  61.     return False
  62. 
  63. def postcondition(___cond=False, *___args, **___kwargs):
  64.     if ___cond:
  65.         return True
  66.     msgbuf=["postcondition", ]
  67.     if ___args or ___kwargs:
  68.         msgbuf.append(": ")
  69.     if ___args:
  70.         msgbuf.append("%s %s" % tuple(map(hr, (___args[0], type(___args[0]),))))
  71.         msgbuf.extend([", %s %s" % tuple(map(hr, (arg, type(arg),))) for arg in ___args[1:]])
  72.         if ___kwargs:
  73.             msgbuf.append(", %s: %s %s" % ((___kwargs.items()[0][0],) + tuple(map(hr, (___kwargs.items()[0][1], type(___kwargs.items()[0][1]),)))))
  74.     else:
  75.         if ___kwargs:
  76.             msgbuf.append("%s: %s %s" % ((___kwargs.items()[0][0],) + tuple(map(hr, (___kwargs.items()[0][1], type(___kwargs.items()[0][1]),)))))
  77.     msgbuf.extend([", %s: %s %s" % tuple(map(hr, (k, v, type(v),))) for k, v in ___kwargs.items()[1:]])
  78. 
  79.     raise AssertionError, "".join(msgbuf)
  80. 
  81.     return False
  82.