Skip to content

Commit f4945bd

Browse files
authored
tests: fix compatibility with pytest 9.1.0 (#17465)
This PR fixes a compatibility issue with `pytest==9.1.0`. See https://docs.pytest.org/en/stable/deprecations.html#non-collection-iterables-in-pytest-mark-parametrize See the stack trace below which appears without the fix ``` ________________________________________________________________________________________________________ ERROR collecting tests/unit/test_python_version_support.py ________________________________________________________________________________________________________ .nox/97a4db2a/lib/python3.14/site-packages/pluggy/_hooks.py:512: in __call__ return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/pluggy/_manager.py:120: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/pluggy/_callers.py:53: in run_old_style_hookwrapper return result.get_result() ^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/pytest_asyncio/plugin.py:701: in pytest_pycollect_makeitem_convert_async_functions_to_subclass ) = hook_result.get_result() ^^^^^^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/pluggy/_callers.py:38: in run_old_style_hookwrapper res = yield ^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/_pytest/python.py:250: in pytest_pycollect_makeitem return list(collector._genfunctions(name, obj)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/_pytest/python.py:476: in _genfunctions self.ihook.pytest_generate_tests.call_extra(methods, dict(metafunc=metafunc)) .nox/97a4db2a/lib/python3.14/site-packages/pluggy/_hooks.py:573: in call_extra return self._hookexec(self.name, hookimpls, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/pluggy/_manager.py:120: in _hookexec return self._inner_hookexec(hook_name, methods, kwargs, firstresult) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .nox/97a4db2a/lib/python3.14/site-packages/_pytest/python.py:124: in pytest_generate_tests metafunc.parametrize(*marker.args, **marker.kwargs, _param_mark=marker) .nox/97a4db2a/lib/python3.14/site-packages/_pytest/python.py:1316: in parametrize argnames, parametersets = ParameterSet._for_parametrize( .nox/97a4db2a/lib/python3.14/site-packages/_pytest/mark/structures.py:203: in _for_parametrize warnings.warn( E pytest.PytestRemovedIn10Warning: Passing a non-Collection iterable to parametrize is deprecated. E Test: tests/unit/test_python_version_support.py::test_all_tracked_versions_and_date_scenarios, argvalues type: generator E Please convert to a list or tuple. E See https://docs.pytest.org/en/stable/deprecations.html#parametrize-iterators ```
1 parent 56cbea8 commit f4945bd

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

packages/google-api-core/tests/unit/test_python_version_support.py

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import pytest
1615
import datetime
1716
import textwrap
1817
import warnings
1918
from collections import namedtuple
20-
2119
from unittest.mock import patch
2220

21+
import pytest
22+
2323
# Code to be tested
2424
from google.api_core._python_version_support import (
25+
PYTHON_VERSION_INFO,
26+
PythonVersionStatus,
2527
_flatten_message,
2628
check_python_version,
27-
PythonVersionStatus,
28-
PYTHON_VERSION_INFO,
2929
)
3030

3131
# Helper object for mocking sys.version_info
@@ -65,10 +65,12 @@ def _create_failure_message(
6565
)
6666

6767

68-
def generate_tracked_version_test_cases():
68+
def get_tracked_version_test_cases():
6969
"""
70-
Yields test parameters for all tracked versions and boundary conditions.
70+
Returns a list of test parameters for all tracked versions and boundary conditions.
7171
"""
72+
results = []
73+
7274
for version_tuple, version_info in PYTHON_VERSION_INFO.items():
7375
py_version_str = f"{version_tuple[0]}.{version_tuple[1]}"
7476
gapic_dep = version_info.gapic_deprecation or (
@@ -111,20 +113,23 @@ def generate_tracked_version_test_cases():
111113
}
112114

113115
for name, params in test_cases.items():
114-
yield pytest.param(
115-
version_tuple,
116-
params["date"],
117-
params["expected"],
118-
gapic_dep,
119-
gapic_end,
120-
eol_warning_starts,
121-
id=f"{py_version_str}-{name}",
116+
results.append(
117+
pytest.param(
118+
version_tuple,
119+
params["date"],
120+
params["expected"],
121+
gapic_dep,
122+
gapic_end,
123+
eol_warning_starts,
124+
id=f"{py_version_str}-{name}",
125+
)
122126
)
127+
return results
123128

124129

125130
@pytest.mark.parametrize(
126131
"version_tuple, mock_date, expected_status, gapic_dep, gapic_end, eol_warning_starts",
127-
generate_tracked_version_test_cases(),
132+
get_tracked_version_test_cases(),
128133
)
129134
def test_all_tracked_versions_and_date_scenarios(
130135
version_tuple, mock_date, expected_status, gapic_dep, gapic_end, eol_warning_starts

0 commit comments

Comments
 (0)