summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/plugin/pytestplugin.py
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2022-06-18 21:08:27 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-06-18 21:08:27 +0000
commitbe576e7d88b6038781e52f7ef79799dbad09cd54 (patch)
tree772c368e107d13537ad8fb030b2b02fb1638169b /lib/sqlalchemy/testing/plugin/pytestplugin.py
parentf7daad21ef66c29aecfbdb2b967641d0adad8779 (diff)
parentdb08a699489c9b0259579d7ff7fd6bf3496ca3a2 (diff)
downloadsqlalchemy-be576e7d88b6038781e52f7ef79799dbad09cd54.tar.gz
Merge "rearchitect reflection for batched performance" into main
Diffstat (limited to 'lib/sqlalchemy/testing/plugin/pytestplugin.py')
-rw-r--r--lib/sqlalchemy/testing/plugin/pytestplugin.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/sqlalchemy/testing/plugin/pytestplugin.py b/lib/sqlalchemy/testing/plugin/pytestplugin.py
index fa7d2ca19..cea07b305 100644
--- a/lib/sqlalchemy/testing/plugin/pytestplugin.py
+++ b/lib/sqlalchemy/testing/plugin/pytestplugin.py
@@ -741,13 +741,18 @@ class PytestFixtureFunctions(plugin_base.FixtureFunctions):
fn._sa_parametrize.append((argnames, pytest_params))
return fn
else:
+ _fn_argnames = inspect.getfullargspec(fn).args[1:]
if argnames is None:
- _argnames = inspect.getfullargspec(fn).args[1:]
+ _argnames = _fn_argnames
else:
_argnames = re.split(r", *", argnames)
if has_exclusions:
- _argnames += ["_exclusions"]
+ existing_exl = sum(
+ 1 for n in _fn_argnames if n.startswith("_exclusions")
+ )
+ current_exclusion_name = f"_exclusions_{existing_exl}"
+ _argnames += [current_exclusion_name]
@_pytest_fn_decorator
def check_exclusions(fn, *args, **kw):
@@ -755,13 +760,10 @@ class PytestFixtureFunctions(plugin_base.FixtureFunctions):
if _exclusions:
exlu = exclusions.compound().add(*_exclusions)
fn = exlu(fn)
- return fn(*args[0:-1], **kw)
-
- def process_metadata(spec):
- spec.args.append("_exclusions")
+ return fn(*args[:-1], **kw)
fn = check_exclusions(
- fn, add_positional_parameters=("_exclusions",)
+ fn, add_positional_parameters=(current_exclusion_name,)
)
return pytest.mark.parametrize(_argnames, pytest_params)(fn)