diff --git a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/conftest.py b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/conftest.py new file mode 100644 index 000000000..216efba82 --- /dev/null +++ b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/conftest.py @@ -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} + ) diff --git a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_semantics_error.py b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_semantics_error.py index 530e6e5b6..873acb61b 100644 --- a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_semantics_error.py +++ b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_semantics_error.py @@ -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}) diff --git a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_truthy_coercion.py b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_truthy_coercion.py index 6a976a43a..6b4323692 100644 --- a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_truthy_coercion.py +++ b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_confirm_truthy_coercion.py @@ -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}) diff --git a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_core_behavior.py b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_core_behavior.py index 8757587fa..89ae3ca3d 100644 --- a/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_core_behavior.py +++ b/documentdb_tests/compatibility/tests/system/administration/commands/setFeatureCompatibilityVersion/test_setFeatureCompatibilityVersion_core_behavior.py @@ -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)) @@ -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})