74일차 자료 추가(답 제외), 73일차 정답 공개(LAB-A · VIBE-A · answers · tscan), 64 · 65 · 68~73일차 교안 · 실습 문서 수정 반영

This commit is contained in:
mcchae committed 2026-10-27 23:16:10 +09:00
1 parent 4ef0464525
commit bb719d81fa
191 files changed
+36875 -64

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
"""R8: table, masked preview, [i] ignore."""
import asyncio
from conftest import FAKE_EMAIL, FAKE_KEY, FAKE_PHONE
from textual.widgets import DataTable
from tscan.app import ScanApp
async def wait_rows(app, pilot, n=None):
for _ in range(50):
await asyncio.sleep(0.05)
await pilot.pause()
rows = app.query_one(DataTable).row_count
if rows and (n is None or rows == n):
return rows
return app.query_one(DataTable).row_count
async def test_table_preview_and_ignore(fake):
app = ScanApp(fake)
async with app.run_test() as pilot:
assert await wait_rows(app, pilot) == 5
await pilot.press("down")
await pilot.pause()
preview = str(app.query_one("#preview").render())
for secret in (FAKE_KEY, FAKE_PHONE, FAKE_EMAIL):
assert secret not in preview
assert "010-****-1234" in preview
await pilot.press("i")
assert await wait_rows(app, pilot, 4) == 4
assert (fake / ".tscanignore").read_text() == "notes.md:1\n"