Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""Shared fixtures for setFeatureCompatibilityVersion tests.

Provides an autouse fixture that snapshots the FCV before each test and
unconditionally restores it after, preventing leaked state even when a test
fails.
"""

import pytest

from documentdb_tests.framework.executor import execute_admin_command


@pytest.fixture(autouse=True)
def restore_fcv(collection):
"""Snapshot FCV before the test, restore after.

This runs unconditionally (autouse) so that any test modifying FCV
cannot leak changes into subsequent tests — whether it passes, fails, or errors.
"""
result = execute_admin_command(
collection, {"getParameter": 1, "featureCompatibilityVersion": 1}
)
if isinstance(result, dict):
fcv_data = result.get("featureCompatibilityVersion", {})
original_fcv = fcv_data.get("version", "8.2") if isinstance(fcv_data, dict) else "8.2"
else:
original_fcv = "8.2"

yield

execute_admin_command(
collection, {"setFeatureCompatibilityVersion": original_fcv, "confirm": True}
)
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,3 @@ def test_setFeatureCompatibilityVersion_upgrade_without_confirm(database_client,
msg=test.msg,
raw_res=True,
)
execute_admin_command(collection, {"setFeatureCompatibilityVersion": original, "confirm": True})
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,3 @@ def test_setFeatureCompatibilityVersion_confirm_truthy(database_client, collecti
msg=test.msg,
raw_res=True,
)
execute_admin_command(collection, {"setFeatureCompatibilityVersion": current, "confirm": True})
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ def test_setFeatureCompatibilityVersion_downgrade(database_client, collection, t
msg=test.msg,
raw_res=True,
)
execute_admin_command(collection, {"setFeatureCompatibilityVersion": original, "confirm": True})


@pytest.mark.parametrize("test", pytest_params(UPGRADE_TESTS))
Expand Down Expand Up @@ -136,4 +135,3 @@ def test_setFeatureCompatibilityVersion_getParameter_reflects_change(
result = execute_admin_command(collection, test.build_command(ctx))
expected = {"ok": 1.0, "featureCompatibilityVersion": {"version": other}}
assertSuccessPartial(result, expected, msg=test.msg)
execute_admin_command(collection, {"setFeatureCompatibilityVersion": original, "confirm": True})
Loading