diff --git a/lib/query.py b/lib/query.py index 937b4d3f14bdbed565b3d24a61825b6c11415801..7caa9c5a7956f737f09a42519a7adc711f25a851 100644 --- a/lib/query.py +++ b/lib/query.py @@ -207,10 +207,8 @@ class Query: # Verify result if __debug__: - for (idx, row) in enumerate(result): - assert _VerifyResultRow(self._fields, row), \ - ("Inconsistent result for fields %s in row %s: %r" % - (GetAllFields(self._fields), idx, row)) + for row in result: + _VerifyResultRow(self._fields, row) return result @@ -256,11 +254,17 @@ def _VerifyResultRow(fields, row): @param row: Row data """ - return (len(row) == len(fields) and - compat.all((status == QRFS_NORMAL and _VERIFY_FN[fdef.kind](value)) or - # Value for an abnormal status must be None - (status != QRFS_NORMAL and value is None) - for ((status, value), (fdef, _, _)) in zip(row, fields))) + assert len(row) == len(fields) + errs = [] + for ((status, value), (fdef, _, _)) in zip(row, fields): + if status == QRFS_NORMAL: + if not _VERIFY_FN[fdef.kind](value): + errs.append("normal field %s fails validation (value is %s)" % + (fdef.name, value)) + elif value is not None: + errs.append("abnormal field %s has a non-None value" % fdef.name) + assert not errs, ("Failed validation: %s in row %s" % + (utils.CommaJoin(errors), row)) def _PrepareFieldList(fields):