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.