From 51378bb0ebac4ee1d27cea3e676e177cd56795d5 Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Sun, 16 Jan 2022 12:45:28 -0800 Subject: [PATCH] fix enum listing; add tests for pref values --- example_config.yaml | 1 + meshtastic/__main__.py | 6 ++---- meshtastic/tests/test_main.py | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/example_config.yaml b/example_config.yaml index 90085125..eff8c3f8 100644 --- a/example_config.yaml +++ b/example_config.yaml @@ -14,3 +14,4 @@ user_prefs: send_owner_interval: 2 screen_on_secs: 31536000 wait_bluetooth_secs: 31536000 + location_share: 'LocEnabled' diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index 76fb0f8a..48ba8024 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -134,10 +134,8 @@ def setPref(attributes, name, valStr): print(f"Choices in sorted order are:") names = [] for f in enumType.values: - tmp_name = f'{f.name}' - if Globals.getInstance().get_camel_case(): - tmp_name = meshtastic.util.snake_to_camel(tmp_name) - names.append(name) + # Note: We must use the value of the enum (regardless if camel or snake case) + names.append(f'{f.name}') for temp_name in sorted(names): print(f" {temp_name}") return diff --git a/meshtastic/tests/test_main.py b/meshtastic/tests/test_main.py index 91263f18..21e9fe5f 100644 --- a/meshtastic/tests/test_main.py +++ b/meshtastic/tests/test_main.py @@ -893,6 +893,7 @@ def test_main_configure_with_snake_case(capsys): assert re.search(r'Fixing altitude', out, re.MULTILINE) assert re.search(r'Fixing latitude', out, re.MULTILINE) assert re.search(r'Fixing longitude', out, re.MULTILINE) + assert re.search(r'Set location_share to LocEnabled', out, re.MULTILINE) assert re.search(r'Writing modified preferences', out, re.MULTILINE) assert err == '' mo.assert_called() @@ -1963,6 +1964,27 @@ def test_main_setPref_valid_field_invalid_enum(capsys, caplog): setPref(prefs, 'charge_current', 'foo') out, err = capsys.readouterr() assert re.search(r'charge_current does not have an enum called foo', out, re.MULTILINE) + assert re.search(r'Choices in sorted order are', out, re.MULTILINE) + assert re.search(r'MA100', out, re.MULTILINE) + assert re.search(r'MA280', out, re.MULTILINE) + assert err == '' + + +@pytest.mark.unit +@pytest.mark.usefixtures("reset_globals") +def test_main_setPref_valid_field_invalid_enum_where_enums_are_camel_cased_values(capsys, caplog): + """Test setPref() with a valid field but invalid enum value""" + + radioConfig = RadioConfig() + prefs = radioConfig.preferences + + with caplog.at_level(logging.DEBUG): + setPref(prefs, 'location_share', 'foo') + out, err = capsys.readouterr() + assert re.search(r'location_share does not have an enum called foo', out, re.MULTILINE) + assert re.search(r'Choices in sorted order are', out, re.MULTILINE) + assert re.search(r'LocDisabled', out, re.MULTILINE) + assert re.search(r'LocEnabled', out, re.MULTILINE) assert err == ''