From ebd3c7f5e81ebfccac82462793bf2e5dae2a8005 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Wed, 5 Jun 2024 19:48:58 -0700 Subject: [PATCH 1/3] Add test for fromStr base64 branch --- meshtastic/tests/test_util.py | 1 + 1 file changed, 1 insertion(+) diff --git a/meshtastic/tests/test_util.py b/meshtastic/tests/test_util.py index 9961f4b..74f66d9 100644 --- a/meshtastic/tests/test_util.py +++ b/meshtastic/tests/test_util.py @@ -65,6 +65,7 @@ def test_fromStr(): assert fromStr("123") == 123 assert fromStr("abc") == "abc" assert fromStr("123456789") == 123456789 + assert fromStr("base64:Zm9vIGJhciBiYXo=") == b"foo bar baz" @pytest.mark.unitslow From 16c08b8b4722f58e4649865a0b96ddf2c81c4f10 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Wed, 5 Jun 2024 19:54:12 -0700 Subject: [PATCH 2/3] Add simple --remove-position test --- meshtastic/tests/test_main.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/meshtastic/tests/test_main.py b/meshtastic/tests/test_main.py index a5a345a..650ccf2 100644 --- a/meshtastic/tests/test_main.py +++ b/meshtastic/tests/test_main.py @@ -724,11 +724,37 @@ def test_main_sendtext_with_dest(mock_findPorts, mock_serial, mocked_open, mock_ assert re.search(r"Warning: There were no self.nodes.", caplog.text, re.MULTILINE) assert err == "" +@pytest.mark.unit +@pytest.mark.usefixtures("reset_mt_config") +def test_main_removeposition(capsys): + """Test --remove-position""" + sys.argv = ["", "--remove-position"] + + mt_config.args = sys.argv + + mocked_node = MagicMock(autospec=Node) + + def mock_removeFixedPosition(): + print("inside mocked removeFixedPosition") + + mocked_node.removeFixedPosition.side_effect = mock_removeFixedPosition + + iface = MagicMock(autospec=SerialInterface) + iface.localNode = 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"Removing fixed position", out, re.MULTILINE) + assert re.search(r"inside mocked removeFixedPosition", out, re.MULTILINE) + assert err == "" + mo.assert_called() @pytest.mark.unit @pytest.mark.usefixtures("reset_mt_config") def test_main_setlat(capsys): - """Test --sendlat""" + """Test --setlat""" sys.argv = ["", "--setlat", "37.5"] mt_config.args = sys.argv From e27d210a710afe78b1c34eb6117a65d742a55d32 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Wed, 5 Jun 2024 19:57:40 -0700 Subject: [PATCH 3/3] Test with --dest on setlat/remove-position for the error/exit case --- meshtastic/tests/test_main.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/meshtastic/tests/test_main.py b/meshtastic/tests/test_main.py index 650ccf2..18fa497 100644 --- a/meshtastic/tests/test_main.py +++ b/meshtastic/tests/test_main.py @@ -724,12 +724,41 @@ def test_main_sendtext_with_dest(mock_findPorts, mock_serial, mocked_open, mock_ assert re.search(r"Warning: There were no self.nodes.", caplog.text, re.MULTILINE) assert err == "" +@pytest.mark.unit +@pytest.mark.usefixtures("reset_mt_config") +def test_main_removeposition_invalid(capsys): + """Test --remove-position with an invalid dest""" + sys.argv = ["", "--remove-position", "--dest", "!12345678"] + mt_config.args = sys.argv + iface = MagicMock(autospec=SerialInterface) + 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"remote nodes is not supported", out, re.MULTILINE) + assert err == "" + mo.assert_called() + +@pytest.mark.unit +@pytest.mark.usefixtures("reset_mt_config") +def test_main_setlat_invalid(capsys): + """Test --setlat with an invalid dest""" + sys.argv = ["", "--setlat", "37.5", "--dest", "!12345678"] + mt_config.args = sys.argv + iface = MagicMock(autospec=SerialInterface) + 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"remote nodes is not supported", out, re.MULTILINE) + assert err == "" + mo.assert_called() + @pytest.mark.unit @pytest.mark.usefixtures("reset_mt_config") def test_main_removeposition(capsys): """Test --remove-position""" sys.argv = ["", "--remove-position"] - mt_config.args = sys.argv mocked_node = MagicMock(autospec=Node)