diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-05-30 00:22:04 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-05-30 00:22:04 -0400 |
| commit | c447ff74228acb35920a44324487314e23464e02 (patch) | |
| tree | 2f6bf4c48b34b0d60f540cf9d79726da515fc0ac /lib/sqlalchemy | |
| parent | d1404f627ebc8962deb3845812cd459724d47a7c (diff) | |
| parent | 2c8689fd141c278a7bbc250087e553b76a515bc6 (diff) | |
| download | sqlalchemy-c447ff74228acb35920a44324487314e23464e02.tar.gz | |
Merge branch 'master' into rel_1_0
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/testing/assertsql.py | 21 |
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: |
