figured out how to unit test --set

This commit is contained in:
Mike Kinney
2021-12-12 18:01:49 -08:00
parent d2a9b87968
commit 4e3dcb6531
2 changed files with 35 additions and 3 deletions

View File

@@ -19,10 +19,10 @@ from . import remote_hardware
from . import portnums_pb2, channel_pb2, radioconfig_pb2
from .globals import Globals
"""We only import the tunnel code if we are on a platform that can run it"""
have_tunnel = platform.system() == 'Linux'
def onReceive(packet, interface):
"""Callback invoked when a packet arrives"""
our_globals = Globals.getInstance()
@@ -290,8 +290,7 @@ def onConnected(interface):
# Handle the int/float/bool arguments
for pref in args.set:
setPref(
prefs, pref[0], pref[1])
setPref(prefs, pref[0], pref[1])
print("Writing modified preferences to device")
getNode().writeConfig()

View File

@@ -11,6 +11,7 @@ from meshtastic.__main__ import initParser, main, Globals
from ..serial_interface import SerialInterface
from ..node import Node
from ..radioconfig_pb2 import RadioConfig
@pytest.mark.unit
@@ -625,3 +626,35 @@ def test_main_seturl(capsys):
assert re.search(r'Connected to radio', out, re.MULTILINE)
assert err == ''
mo.assert_called()
@pytest.mark.unit
def test_main_set_valid(capsys):
"""Test --set with valid field"""
sys.argv = ['', '--set', 'wifi_ssid', 'foo']
args = sys.argv
parser = None
parser = argparse.ArgumentParser()
our_globals = Globals.getInstance()
our_globals.set_parser(parser)
our_globals.set_args(args)
mocked_user_prefs = MagicMock(autospec=RadioConfig.UserPreferences)
mocked_user_prefs.phone_timeout_secs.return_value = 900
mocked_user_prefs.ls_secs.return_value = 300
mocked_node = MagicMock(autospec=Node)
mocked_node.radioConfig.preferences = ( mocked_user_prefs )
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()
print('out:', out)
print('err:', err)
assert re.search(r'Connected to radio', out, re.MULTILINE)
assert re.search(r'Set wifi_ssid to foo', out, re.MULTILINE)
assert err == ''
mo.assert_called()