diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 443434c..d74df8e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -70,7 +70,7 @@ jobs: with: python-version: "${{ matrix.python-version }}" - name: Install dependencies - run: python -m pip install tox "${{ matrix.pytest-version }}" pytest-cov . + run: python -m pip install mock tox "${{ matrix.pytest-version }}" pytest-cov . - name: Test run: | coverage run --branch --source=pytest_unordered -m pytest tests/ diff --git a/CHANGELOG.md b/CHANGELOG.md index a3ae6f4..cbfbe7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog +## [0.6.1] - 2024-07-05 +- Fix matching with `mock.ANY` (#16) + + ## [0.6.0] - 2024-03-13 - Add Pytest 8 support - Add Python 3.12 support diff --git a/pytest_unordered/__init__.py b/pytest_unordered/__init__.py index 36708ae..8cc89a1 100644 --- a/pytest_unordered/__init__.py +++ b/pytest_unordered/__init__.py @@ -44,8 +44,10 @@ def compare_to(self, other: List) -> Tuple[List, List]: placeholder = object() for elem in other: try: - extra_left.remove(elem) - reordered.append(elem) + i = extra_left.index(elem) + matched_element = extra_left[i] + del extra_left[i] + reordered.append(matched_element) except ValueError: extra_right.append(elem) reordered.append(placeholder) diff --git a/setup.py b/setup.py index 825fb6e..96b724f 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ def read(fname: str) -> str: setup( name="pytest-unordered", - version="0.6.0", + version="0.6.1", author="Ivan Zaikin", author_email="ut@pyngo.tom.ru", maintainer="Ivan Zaikin", diff --git a/tests/test_unordered.py b/tests/test_unordered.py index 65bcc06..4de3ff0 100644 --- a/tests/test_unordered.py +++ b/tests/test_unordered.py @@ -8,6 +8,7 @@ from _pytest.pytester import Pytester from pytest import raises +from mock import ANY from pytest_unordered import UnorderedList from pytest_unordered import _compare_eq_unordered from pytest_unordered import unordered @@ -244,3 +245,13 @@ def test_reorder_on_eq() -> None: unordered_list = unordered([1, 2, 3]) assert unordered_list == [3, 1, 2] assert list(unordered_list) == [3, 1, 2] + + +def test_mock_any() -> None: + p_unordered = {"results": unordered({"foo1": ANY}, {"foo2": ANY})} + test_1 = {"results": [{"foo1": "value10"}, {"foo2": "value20"}]} + test_2 = {"results": [{"foo1": "value11"}, {"foo2": "value21"}]} + test_3 = {"results": [{"foo1": "value10"}, {"foo2": "value20"}]} + assert p_unordered == test_1 + assert p_unordered == test_2 + assert p_unordered == test_3 diff --git a/tox.ini b/tox.ini index 1075bd1..40c5cc7 100644 --- a/tox.ini +++ b/tox.ini @@ -7,6 +7,7 @@ commands = deps = coverage codecov + mock pytest7: pytest==7.4.4 pytest8: pytest==8.1.1 pytestlatest: pytest