Browse Source

transmit command: fix logging of transceiver config; adapt log format

Fabian Peter Hammerle 3 years ago
parent
commit
26d8122661
2 changed files with 39 additions and 5 deletions
  1. 4 3
      cc1101/_cli.py
  2. 35 2
      tests/test_cli_transmit.py

+ 4 - 3
cc1101/_cli.py

@@ -50,8 +50,9 @@ def _transmit():
     args = argparser.parse_args()
     logging.basicConfig(
         level=logging.DEBUG if args.debug else logging.INFO,
-        # format="%(asctime)s:%(levelname)s:%(name)s:%(funcName)s:%(message)s",
-        format="%(name)s:%(funcName)s:%(message)s",
+        format="%(asctime)s:%(levelname)s:%(name)s:%(funcName)s:%(message)s"
+        if args.debug
+        else "%(message)s",
         datefmt="%Y-%m-%dT%H:%M:%S%z",
     )
     _LOGGER.debug("args=%r", args)
@@ -76,5 +77,5 @@ def _transmit():
                 transceiver.set_packet_length_bytes(len(payload))
         if args.disable_checksum:
             transceiver.disable_checksum()
-        _LOGGER.debug("transceiver=%r", transceiver)
+        _LOGGER.info("%s", transceiver)
         transceiver.transmit(payload)

+ 35 - 2
tests/test_cli_transmit.py

@@ -146,9 +146,17 @@ def test_configure_device(
 
 
 @pytest.mark.parametrize(
-    ("args", "root_log_level"), (([""], logging.INFO), (["", "--debug"], logging.DEBUG))
+    ("args", "root_log_level", "log_format"),
+    (
+        ([""], logging.INFO, "%(message)s"),
+        (
+            ["", "--debug"],
+            logging.DEBUG,
+            "%(asctime)s:%(levelname)s:%(name)s:%(funcName)s:%(message)s",
+        ),
+    ),
 )
-def test_root_log_level(args, root_log_level):
+def test_root_log_level(args, root_log_level, log_format):
     stdin_mock = unittest.mock.MagicMock()
     stdin_mock.buffer = io.BytesIO(b"")
     with unittest.mock.patch("cc1101.CC1101"), unittest.mock.patch(
@@ -159,3 +167,28 @@ def test_root_log_level(args, root_log_level):
         cc1101._cli._transmit()
     assert logging_basic_config_mock.call_count == 1
     assert logging_basic_config_mock.call_args[1]["level"] == root_log_level
+    assert logging_basic_config_mock.call_args[1]["format"] == log_format
+
+
+@pytest.mark.parametrize("payload", (b"", b"message"))
+def test_logging(caplog, payload):
+    # pylint: disable=too-many-arguments
+    stdin_mock = unittest.mock.MagicMock()
+    stdin_mock.buffer = io.BytesIO(payload)
+    with unittest.mock.patch("sys.stdin", stdin_mock), unittest.mock.patch(
+        "sys.argv", [""]
+    ), unittest.mock.patch("cc1101.CC1101") as transceiver_mock, caplog.at_level(
+        logging.DEBUG
+    ):
+        transceiver_mock().__enter__().__str__.return_value = "dummy"
+        cc1101._cli._transmit()
+    assert caplog.record_tuples == [
+        (
+            "cc1101._cli",
+            logging.DEBUG,
+            "args=Namespace(base_frequency_hertz=None, debug=False, "
+            "disable_checksum=False, packet_length_mode=None, symbol_rate_baud=None, "
+            "sync_mode=None)",
+        ),
+        ("cc1101._cli", logging.INFO, "dummy"),
+    ]