From c67850fd17d9fe4629a2553fb592fb848b140fa5 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 6 Jul 2023 10:07:22 -0500 Subject: [PATCH] Remove feature flag override ability It has gone unused since its introduction, could possibly be misinterpreted as a user-facing feature, and complicates testing. --- cloudinit/features.py | 13 +----- tests/unittests/test_features.py | 73 -------------------------------- 2 files changed, 2 insertions(+), 84 deletions(-) delete mode 100644 tests/unittests/test_features.py diff --git a/cloudinit/features.py b/cloudinit/features.py index 471a4331236..7ba04d1879c 100644 --- a/cloudinit/features.py +++ b/cloudinit/features.py @@ -5,11 +5,8 @@ downstream configuration changes. Currently used upstream values for feature flags are set in -``cloudinit/features.py``. Overrides to these values (typically via quilt -patch) can be placed -in a file called ``feature_overrides.py`` in the same directory. Any value -set in ``feature_overrides.py`` will override the original value set -in ``features.py``. +``cloudinit/features.py``. Overrides to these values should be +patched directly (e.g., via quilt patch) by downstreams. Each flag should include a short comment regarding the reason for the flag and intended lifetime. @@ -79,9 +76,3 @@ (This flag can be removed when Jammy is no longer supported.) """ - -try: - # pylint: disable=wildcard-import - from cloudinit.feature_overrides import * # noqa -except ImportError: - pass diff --git a/tests/unittests/test_features.py b/tests/unittests/test_features.py deleted file mode 100644 index 8aace78d404..00000000000 --- a/tests/unittests/test_features.py +++ /dev/null @@ -1,73 +0,0 @@ -# This file is part of cloud-init. See LICENSE file for license information. -# pylint: disable=no-member,no-name-in-module -""" -This file is for testing the feature flag functionality itself, -NOT for testing any individual feature flag -""" -import sys -from pathlib import Path - -import pytest - -import cloudinit - - -@pytest.fixture() -def create_override(request): - """ - Create a feature overrides file and do some module wizardry to make - it seem like we're importing the features file for the first time. - - After creating the override file with the values passed by the test, - we need to reload cloudinit.features - to get all of the current features (including the overridden ones). - Once the test is complete, we remove the file we created and set - features and feature_overrides modules to how they were before - the test started - """ - override_path = Path(cloudinit.__file__).parent / "feature_overrides.py" - if override_path.exists(): - raise RuntimeError( - "feature_overrides.py unexpectedly exists! " - "Remove it to run this test." - ) - with override_path.open("w") as f: - for key, value in request.param.items(): - f.write("{} = {}\n".format(key, value)) - - sys.modules.pop("cloudinit.features", None) - - yield - - override_path.unlink() - sys.modules.pop("cloudinit.feature_overrides", None) - - -class TestFeatures: - """default pytest-xdist behavior may fail due to these tests""" - - @pytest.mark.serial - def test_feature_without_override(self): - from cloudinit.features import ERROR_ON_USER_DATA_FAILURE - - assert ERROR_ON_USER_DATA_FAILURE is True - - @pytest.mark.serial - @pytest.mark.parametrize( - "create_override", - [{"ERROR_ON_USER_DATA_FAILURE": False}], - indirect=True, - ) - def test_feature_with_override(self, create_override): - from cloudinit.features import ERROR_ON_USER_DATA_FAILURE - - assert ERROR_ON_USER_DATA_FAILURE is False - - @pytest.mark.serial - @pytest.mark.parametrize( - "create_override", [{"SPAM": True}], indirect=True - ) - def test_feature_only_in_override(self, create_override): - from cloudinit.features import SPAM - - assert SPAM is True