diff options
Diffstat (limited to 'lib/sqlalchemy/testing')
| -rw-r--r-- | lib/sqlalchemy/testing/plugin/plugin_base.py | 18 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/provision.py | 26 |
2 files changed, 31 insertions, 13 deletions
diff --git a/lib/sqlalchemy/testing/plugin/plugin_base.py b/lib/sqlalchemy/testing/plugin/plugin_base.py index c20110071..8e5113954 100644 --- a/lib/sqlalchemy/testing/plugin/plugin_base.py +++ b/lib/sqlalchemy/testing/plugin/plugin_base.py @@ -149,12 +149,6 @@ def setup_options(make_option): help="Filename where a single profile run will be dumped", ) make_option( - "--postgresql-templatedb", - type=str, - help="name of template database to use for PostgreSQL " - "CREATE DATABASE (defaults to current database)", - ) - make_option( "--low-connections", action="store_true", dest="low_connections", @@ -220,6 +214,18 @@ def setup_options(make_option): help="Additional test directories to add to the mypy tests. " "This is used only when running mypy tests. Multiple OK", ) + # db specific options + make_option( + "--postgresql-templatedb", + type=str, + help="name of template database to use for PostgreSQL " + "CREATE DATABASE (defaults to current database)", + ) + make_option( + "--oracledb-thick-mode", + action="store_true", + help="enables the 'thick mode' when testing with oracle+oracledb", + ) def configure_follower(follower_ident): diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py index 498d92a77..12448b2fe 100644 --- a/lib/sqlalchemy/testing/provision.py +++ b/lib/sqlalchemy/testing/provision.py @@ -21,15 +21,22 @@ FOLLOWER_IDENT = None class register: - def __init__(self): + def __init__(self, decorator=None): self.fns = {} + self.decorator = decorator @classmethod def init(cls, fn): return register().for_db("*")(fn) + @classmethod + def init_decorator(cls, decorator): + return register(decorator).for_db("*") + def for_db(self, *dbnames): def decorate(fn): + if self.decorator: + fn = self.decorator(fn) for dbname in dbnames: self.fns[dbname] = fn return self @@ -66,7 +73,7 @@ def setup_config(db_url, options, file_config, follower_ident): if follower_ident: db_url = follower_url_from_main(db_url, follower_ident) db_opts = {} - update_db_opts(db_url, db_opts) + update_db_opts(db_url, db_opts, options) db_opts["scope"] = "global" eng = engines.testing_engine(db_url, db_opts) post_configure_engine(db_url, eng, follower_ident) @@ -331,10 +338,17 @@ def drop_db(cfg, eng, ident): raise NotImplementedError("no DB drop routine for cfg: %s" % (eng.url,)) -@register.init -def update_db_opts(db_url, db_opts): +def _adapt_update_db_opts(fn): + insp = util.inspect_getfullargspec(fn) + if len(insp.args) == 3: + return fn + else: + return lambda db_url, db_opts, _options: fn(db_url, db_opts) + + +@register.init_decorator(_adapt_update_db_opts) +def update_db_opts(db_url, db_opts, options): """Set database options (db_opts) for a test database that we created.""" - pass @register.init @@ -343,7 +357,6 @@ def post_configure_engine(url, engine, follower_ident): (For the internal dialects, currently only used by sqlite, oracle) """ - pass @register.init @@ -374,7 +387,6 @@ def run_reap_dbs(url, ident): use. For the internal dialects, this is currently only necessary for mssql and oracle. """ - pass def reap_dbs(idents_file): |
