summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/testing/config.py')
-rw-r--r--lib/sqlalchemy/testing/config.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/sqlalchemy/testing/config.py b/lib/sqlalchemy/testing/config.py
index 0b8027b84..270ac4c2c 100644
--- a/lib/sqlalchemy/testing/config.py
+++ b/lib/sqlalchemy/testing/config.py
@@ -7,6 +7,8 @@
import collections
+from .. import util
+
requirements = None
db = None
db_url = None
@@ -14,6 +16,7 @@ db_opts = None
file_config = None
test_schema = None
test_schema_2 = None
+any_async = False
_current = None
ident = "main"
@@ -104,6 +107,10 @@ class Config(object):
self.test_schema = "test_schema"
self.test_schema_2 = "test_schema_2"
+ self.is_async = db.dialect.is_async and not util.asbool(
+ db.url.query.get("async_fallback", False)
+ )
+
_stack = collections.deque()
_configs = set()
@@ -121,7 +128,15 @@ class Config(object):
If there are no configs set up yet, this config also
gets set as the "_current".
"""
+ global any_async
+
cfg = Config(db, db_opts, options, file_config)
+
+ # if any backends include an async driver, then ensure
+ # all setup/teardown and tests are wrapped in the maybe_async()
+ # decorator that will set up a greenlet context for async drivers.
+ any_async = any_async or cfg.is_async
+
cls._configs.add(cfg)
return cfg