summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/assertsql.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/testing/assertsql.py')
-rw-r--r--lib/sqlalchemy/testing/assertsql.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/sqlalchemy/testing/assertsql.py b/lib/sqlalchemy/testing/assertsql.py
index 3e0d4c9d3..d77fc18a2 100644
--- a/lib/sqlalchemy/testing/assertsql.py
+++ b/lib/sqlalchemy/testing/assertsql.py
@@ -256,11 +256,30 @@ class AllOf(AssertRule):
if rule.rule_passed(): # a rule passed, move on
self.rules.remove(rule)
return len(self.rules) == 0
- assert False, 'No assertion rules were satisfied for statement'
+ return False
+
+ def rule_passed(self):
+ return self.is_consumed()
def consume_final(self):
return len(self.rules) == 0
+class Or(AllOf):
+ def __init__(self, *rules):
+ self.rules = set(rules)
+ self._consume_final = False
+
+ def is_consumed(self):
+ if not self.rules:
+ return True
+ for rule in list(self.rules):
+ if rule.rule_passed(): # a rule passed
+ self._consume_final = True
+ return True
+ return False
+
+ def consume_final(self):
+ assert self._consume_final, "Unsatisified rules remain"
def _process_engine_statement(query, context):
if util.jython: