Skip to content

Commit 6a28209

Browse files
committed
feat: move Rust Cargo Lambda out of experimental
- Add CargoLambda to ExperimentalFlag with persistent=True - Update is_experimental_enabled() to always return True for persistent flags - Update unit tests for new flag count and persistent behavior
1 parent fac5110 commit 6a28209

2 files changed

Lines changed: 21 additions & 4 deletions

File tree

samcli/commands/_utils/experimental.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,14 @@ class ExperimentalFlag:
5454
"experimentalTerraformSupport", EXPERIMENTAL_ENV_VAR_PREFIX + "TERRAFORM_SUPPORT"
5555
)
5656
}
57+
# CargoLambda is no longer experimental - always enabled
58+
CargoLambda = ExperimentalEntry("experimentalCargoLambda", EXPERIMENTAL_ENV_VAR_PREFIX + "CARGO_LAMBDA", persistent=True)
5759

5860

5961
def is_experimental_enabled(config_entry: ExperimentalEntry) -> bool:
6062
"""Whether a given experimental flag is enabled or not.
6163
If experimentalAll is set to True, then it will always return True.
64+
If the config_entry has persistent=True, it will always return True.
6265
6366
Parameters
6467
----------
@@ -70,6 +73,9 @@ def is_experimental_enabled(config_entry: ExperimentalEntry) -> bool:
7073
bool
7174
Whether the experimental flag is enabled or not.
7275
"""
76+
# Persistent flags are always enabled (graduated from experimental)
77+
if config_entry.persistent:
78+
return True
7379
gc = GlobalConfig()
7480
enabled = gc.get_value(config_entry, default=False, value_type=bool, is_flag=True)
7581
if not enabled:

tests/unit/commands/_utils/test_experimental.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,38 +35,49 @@ def tearDown(self):
3535

3636
def test_is_experimental_enabled(self):
3737
config_entry = MagicMock()
38+
config_entry.persistent = False
3839
self.gc_mock.return_value.get_value.side_effect = [False, True]
3940
result = is_experimental_enabled(config_entry)
4041
self.assertTrue(result)
4142

4243
def test_is_experimental_enabled_all(self):
4344
config_entry = MagicMock()
45+
config_entry.persistent = False
4446
self.gc_mock.return_value.get_value.side_effect = [True, False]
4547
result = is_experimental_enabled(config_entry)
4648
self.assertTrue(result)
4749

4850
def test_is_experimental_enabled_false(self):
4951
config_entry = MagicMock()
52+
config_entry.persistent = False
5053
self.gc_mock.return_value.get_value.side_effect = [False, False]
5154
result = is_experimental_enabled(config_entry)
5255
self.assertFalse(result)
5356

57+
def test_is_experimental_enabled_persistent(self):
58+
config_entry = MagicMock()
59+
config_entry.persistent = True
60+
result = is_experimental_enabled(config_entry)
61+
self.assertTrue(result)
62+
# GlobalConfig should not be called for persistent flags
63+
self.gc_mock.return_value.get_value.assert_not_called()
64+
5465
def test_set_experimental(self):
5566
config_entry = MagicMock()
5667
set_experimental(config_entry, False)
5768
self.gc_mock.return_value.set_value.assert_called_once_with(config_entry, False, is_flag=True, flush=False)
5869

5970
def test_get_all_experimental(self):
60-
self.assertEqual(len(get_all_experimental()), 4)
71+
self.assertEqual(len(get_all_experimental()), 5)
6172

6273
def test_get_all_experimental_statues(self):
63-
self.assertEqual(len(get_all_experimental_statues()), 4)
74+
self.assertEqual(len(get_all_experimental_statues()), 5)
6475

6576
def test_get_all_experimental_env_vars(self):
66-
self.assertEqual(len(get_all_experimental_env_vars()), 4)
77+
self.assertEqual(len(get_all_experimental_env_vars()), 5)
6778

6879
def test_get_enabled_experimental_flags(self):
69-
self.assertEqual(len(get_enabled_experimental_flags()), 4)
80+
self.assertEqual(len(get_enabled_experimental_flags()), 5)
7081

7182
@patch("samcli.commands._utils.experimental.set_experimental")
7283
@patch("samcli.commands._utils.experimental.get_all_experimental")

0 commit comments

Comments
 (0)