From 5a4960b2686a58a036e78772777b64dacfeaf2e4 Mon Sep 17 00:00:00 2001 From: Matthew Wolter Date: Sun, 12 Apr 2026 07:55:03 -0700 Subject: [PATCH] Remove finding IDs from test_reader.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strip internal forensics finding references (F06, N07, NEW-C, R02) from docstrings, comments, and assertion messages. Descriptive text is preserved — only the ID prefixes are removed. --- tests/unit/test_reader.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/unit/test_reader.py b/tests/unit/test_reader.py index 24b8a1b..758968e 100644 --- a/tests/unit/test_reader.py +++ b/tests/unit/test_reader.py @@ -106,14 +106,14 @@ class _CapturingDispatcher: @pytest.mark.asyncio async def test_handle_rx_malformed_frame_logged_and_swallowed(caplog): - """F06: malformed frame must not propagate, must be logged with traceback.""" + """Malformed frame must not propagate, must be logged with traceback.""" dispatcher = _CapturingDispatcher() reader = MessageReader(dispatcher) # 4-byte CHANNEL_MSG_RECV_V3 frame: type byte (0x11) + 1 SNR byte + # 2 reserved bytes, but no channel_idx byte. The handler will raise # IndexError on the next dbuf.read(1)[0] when the buffer is empty. - # F06's umbrella try/except must catch it, log the parse error, and + # The umbrella try/except must catch it, log the parse error, and # return cleanly. malformed = bytearray.fromhex("11100000") @@ -125,9 +125,9 @@ async def test_handle_rx_malformed_frame_logged_and_swallowed(caplog): f"Expected an error log containing 'handle_rx parse error'; " f"got: {[r.message for r in caplog.records]}" ) - # Traceback should be present in the log message (F06 includes it) + # Traceback should be present in the log message assert "Traceback" in error_records[0].message, ( - "F06 umbrella log message must include a traceback" + "Umbrella log message must include a traceback" ) # No CHANNEL_MSG_RECV event should have been dispatched assert not any(e.type == EventType.CHANNEL_MSG_RECV for e in dispatcher.events) @@ -135,7 +135,7 @@ async def test_handle_rx_malformed_frame_logged_and_swallowed(caplog): @pytest.mark.asyncio async def test_battery_short_frame_omits_storage_fields(): - """N07: short BATTERY frame must not silently yield zero used_kb/total_kb.""" + """Short BATTERY frame must not silently yield zero used_kb/total_kb.""" dispatcher = _CapturingDispatcher() reader = MessageReader(dispatcher) @@ -168,7 +168,7 @@ async def test_battery_too_short_for_level(caplog): A 1-byte frame (just the packet-type byte 0x0c, no level bytes) would cause dbuf.read(2) to return b"" and int.from_bytes(b"", ...) to silently yield 0. - The fix adds an early return with a debug log, matching the NEW-C pattern. + The fix adds an early return with a debug log. """ dispatcher = _CapturingDispatcher() reader = MessageReader(dispatcher) @@ -191,7 +191,7 @@ async def test_battery_too_short_for_level(caplog): @pytest.mark.asyncio async def test_status_response_short_frame_skipped(caplog): - """NEW-C: short STATUS_RESPONSE push frame must be skipped, not parsed with bogus zeros.""" + """Short STATUS_RESPONSE push frame must be skipped, not parsed with bogus zeros.""" dispatcher = _CapturingDispatcher() reader = MessageReader(dispatcher) @@ -212,12 +212,12 @@ async def test_status_response_short_frame_skipped(caplog): ) assert any( "STATUS_RESPONSE push frame too short" in r.message for r in caplog.records - ), "Expected the NEW-C debug log line for short STATUS_RESPONSE frames" + ), "Expected a debug log line for short STATUS_RESPONSE frames" @pytest.mark.asyncio async def test_parse_packet_payload_txt_type_decodes_high_bits(): - """R02: txt_type must decode the high 6 bits of byte 4, not always be 0.""" + """txt_type must decode the high 6 bits of byte 4, not always be 0.""" from Crypto.Cipher import AES from Crypto.Hash import HMAC, SHA256 from meshcore.meshcore_parser import MeshcorePacketParser @@ -242,7 +242,7 @@ async def test_parse_packet_payload_txt_type_decodes_high_bits(): # byte 4 = (txt_type << 2) | attempt # bytes 5-15 = message + null padding # Pick txt_type=5, attempt=1 → byte 4 = (5 << 2) | 1 = 0x15. - # Pre-R02-fix uncrypted[4:4] is empty so txt_type would be 0; + # Pre-fix uncrypted[4:4] is empty so txt_type would be 0; # post-fix uncrypted[4:5] yields 0x15 >> 2 = 5. plaintext = b"\x00\x00\x00\x00\x15hello\x00\x00\x00\x00\x00\x00" assert len(plaintext) == 16 @@ -273,7 +273,7 @@ async def test_parse_packet_payload_txt_type_decodes_high_bits(): f"log_data keys: {list(log_data.keys())}" ) assert log_data["txt_type"] == 5, ( - f"Expected txt_type=5 (R02 fix), got {log_data['txt_type']}" + f"Expected txt_type=5, got {log_data['txt_type']}" ) assert log_data["attempt"] == 1, ( f"Expected attempt=1, got {log_data['attempt']}"