summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/plugin/pytestplugin.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-12-04 19:18:57 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2019-12-04 19:18:57 -0500
commit1ab483ac5481cb60e898f0bfdad54e5ca45bbb80 (patch)
treeda401d91f98b9d59035c27c0f056bf9bd83ce0a5 /lib/sqlalchemy/testing/plugin/pytestplugin.py
parent380f4389922004589bfa7cb4f9b8c8208aa68659 (diff)
downloadsqlalchemy-1ab483ac5481cb60e898f0bfdad54e5ca45bbb80.tar.gz
Introduce lambda combinations
As the ORM's combinatoric tests mostly use entities and table metadata that's defined in fixtures, we can't use @testing.combinations directly as it takes place at the module level. Instead we use lambdas, but to reduce verbosity we use a code replacement so that the namespace of the lambda can be provided at runtime rather than module import time. Change-Id: Ia63a510f9c1d08b055eef62cf047f1f427f0450c
Diffstat (limited to 'lib/sqlalchemy/testing/plugin/pytestplugin.py')
-rw-r--r--lib/sqlalchemy/testing/plugin/pytestplugin.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/sqlalchemy/testing/plugin/pytestplugin.py b/lib/sqlalchemy/testing/plugin/pytestplugin.py
index 44fccf28d..3e0630890 100644
--- a/lib/sqlalchemy/testing/plugin/pytestplugin.py
+++ b/lib/sqlalchemy/testing/plugin/pytestplugin.py
@@ -363,6 +363,7 @@ class PytestFixtureFunctions(plugin_base.FixtureFunctions):
for idx, char in enumerate(id_)
if char in _combination_id_fns
]
+
arg_sets = [
pytest.param(
*_arg_getter(_filter_exclusions(arg))[1:],
@@ -370,14 +371,21 @@ class PytestFixtureFunctions(plugin_base.FixtureFunctions):
comb_fn(getter(arg)) for getter, comb_fn in fns
)
)
- for arg in arg_sets
+ for arg in [
+ (arg,) if not isinstance(arg, tuple) else arg
+ for arg in arg_sets
+ ]
]
else:
# ensure using pytest.param so that even a 1-arg paramset
# still needs to be a tuple. otherwise paramtrize tries to
# interpret a single arg differently than tuple arg
arg_sets = [
- pytest.param(*_filter_exclusions(arg)) for arg in arg_sets
+ pytest.param(*_filter_exclusions(arg))
+ for arg in [
+ (arg,) if not isinstance(arg, tuple) else arg
+ for arg in arg_sets
+ ]
]
def decorate(fn):