mirror of
https://github.com/meshtastic/python.git
synced 2025-12-25 17:07:53 -05:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4955ab8df2 | ||
|
|
de39c98e50 | ||
|
|
51378bb0eb | ||
|
|
aff3bdd78e | ||
|
|
e9a8e26e76 | ||
|
|
83439679c1 |
@@ -14,3 +14,4 @@ user_prefs:
|
||||
send_owner_interval: 2
|
||||
screen_on_secs: 31536000
|
||||
wait_bluetooth_secs: 31536000
|
||||
location_share: 'LocEnabled'
|
||||
|
||||
@@ -117,6 +117,7 @@ def setPref(attributes, name, valStr):
|
||||
return
|
||||
|
||||
val = meshtastic.util.fromStr(valStr)
|
||||
logging.debug(f'valStr:{valStr} val:{val}')
|
||||
|
||||
enumType = field.enum_type
|
||||
# pylint: disable=C0123
|
||||
@@ -133,15 +134,16 @@ 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
|
||||
|
||||
setattr(attributes, snake_name, val)
|
||||
try:
|
||||
setattr(attributes, snake_name, val)
|
||||
except TypeError:
|
||||
# The setter didn't like our arg type guess try again as a string
|
||||
setattr(attributes, snake_name, valStr)
|
||||
|
||||
if Globals.getInstance().get_camel_case():
|
||||
print(f"Set {camel_name} to {valStr}")
|
||||
|
||||
@@ -803,6 +803,27 @@ def test_main_set_valid(capsys):
|
||||
mo.assert_called()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
@pytest.mark.usefixtures("reset_globals")
|
||||
def test_main_set_valid_wifi_passwd(capsys):
|
||||
"""Test --set with valid field"""
|
||||
sys.argv = ['', '--set', 'wifi_password', '123456789']
|
||||
Globals.getInstance().set_args(sys.argv)
|
||||
|
||||
mocked_node = MagicMock(autospec=Node)
|
||||
|
||||
iface = MagicMock(autospec=SerialInterface)
|
||||
iface.getNode.return_value = mocked_node
|
||||
|
||||
with patch('meshtastic.serial_interface.SerialInterface', return_value=iface) as mo:
|
||||
main()
|
||||
out, err = capsys.readouterr()
|
||||
assert re.search(r'Connected to radio', out, re.MULTILINE)
|
||||
assert re.search(r'Set wifi_password to 123456789', out, re.MULTILINE)
|
||||
assert err == ''
|
||||
mo.assert_called()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
@pytest.mark.usefixtures("reset_globals")
|
||||
def test_main_set_valid_camel_case(capsys):
|
||||
@@ -872,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()
|
||||
@@ -1942,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 == ''
|
||||
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ def test_fromStr():
|
||||
assert fromStr('100.01') == 100.01
|
||||
assert fromStr('123') == 123
|
||||
assert fromStr('abc') == 'abc'
|
||||
assert fromStr('123456789') == 123456789
|
||||
|
||||
|
||||
@pytest.mark.unitslow
|
||||
|
||||
2
setup.py
2
setup.py
@@ -12,7 +12,7 @@ with open("README.md", "r") as fh:
|
||||
# This call to setup() does all the work
|
||||
setup(
|
||||
name="meshtastic",
|
||||
version="1.2.55",
|
||||
version="1.2.57",
|
||||
description="Python API & client shell for talking to Meshtastic devices",
|
||||
long_description=long_description,
|
||||
long_description_content_type="text/markdown",
|
||||
|
||||
Reference in New Issue
Block a user