Convenience context manager for testing callback tracebacks.
(self, cm, exc, exc_regex, msg_regex, obj_name)
| 43 | |
| 44 | @contextlib.contextmanager |
| 45 | def check_tracebacks(self, cm, exc, exc_regex, msg_regex, obj_name): |
| 46 | """Convenience context manager for testing callback tracebacks.""" |
| 47 | sqlite3.enable_callback_tracebacks(True) |
| 48 | try: |
| 49 | buf = io.StringIO() |
| 50 | with contextlib.redirect_stderr(buf): |
| 51 | yield |
| 52 | |
| 53 | self.assertEqual(cm.unraisable.exc_type, exc) |
| 54 | if exc_regex: |
| 55 | msg = str(cm.unraisable.exc_value) |
| 56 | self.assertIsNotNone(exc_regex.search(msg), (exc_regex, msg)) |
| 57 | if msg_regex: |
| 58 | msg = cm.unraisable.err_msg |
| 59 | self.assertIsNotNone(msg_regex.search(msg), (msg_regex, msg)) |
| 60 | if obj_name: |
| 61 | self.assertEqual(cm.unraisable.object.__name__, obj_name) |
| 62 | finally: |
| 63 | sqlite3.enable_callback_tracebacks(False) |
| 64 | |
| 65 | |
| 66 | class MemoryDatabaseMixin: |
no test coverage detected
searching dependent graphs…