from modjam.log import TsvLogger def test_tsv_logger_writes_all_event_types(tmp_path): logger = TsvLogger("Z", tmp_path) logger.queued(42, "deadbeef", 915.1, 500.0, 7, 5, 22) logger.sent(42, "deadbeef", 13, "1234.5,0.0,1,deadbeef|abc") logger.received(99, "cafe1234", "1234.5,1.0,2,cafe1234|xyz") logger.close() rows = logger.path.read_text().strip().split("\n") assert len(rows) == 3 parts0 = rows[0].split("\t") assert parts0[1] == "queued" assert parts0[2] == "42" assert parts0[3] == "deadbeef" assert parts0[4] == "915.1,500.0,7,5,22" parts1 = rows[1].split("\t") assert parts1[1] == "sent" assert parts1[2] == "42" assert parts1[3] == "deadbeef" assert parts1[4] == "13" assert parts1[5] == "1234.5,0.0,1,deadbeef|abc" parts2 = rows[2].split("\t") assert parts2[1] == "received" assert parts2[2] == "99" assert parts2[3] == "cafe1234" assert parts2[4] == "1234.5,1.0,2,cafe1234|xyz" def test_tsv_logger_renders_missing_token_as_dash(tmp_path): logger = TsvLogger("Z", tmp_path) logger.received(99, None, "no-token-text") logger.close() parts = logger.path.read_text().strip().split("\t") assert parts[3] == "-" def test_tsv_logger_creates_log_dir(tmp_path): sub = tmp_path / "nested" / "logs" logger = TsvLogger("A", sub) logger.queued(1, "tok", 0, 0, 0, 0, 0) logger.close() assert sub.is_dir() assert logger.path.exists() def test_tsv_logger_filename_includes_test_name(tmp_path): logger = TsvLogger("A", tmp_path, test_name="run42") logger.close() assert logger.path.name.startswith("run42-A-") assert logger.path.name.endswith(".tsv") def test_tsv_logger_filename_without_test_name(tmp_path): logger = TsvLogger("A", tmp_path) logger.close() assert logger.path.name.startswith("A-")