refactor: 분리되어 관리하고 있던 문서 시스템을 하나로 통일

This commit is contained in:
DongHyeonka
2026-09-04 18:56:01 +09:00
parent 4b9e7148b5
commit 43bccd08a8
121 changed files with 2861 additions and 534 deletions
@@ -0,0 +1,79 @@
import re
import unittest
import xml.etree.ElementTree as ET
from render_terminal import redact_line, render_svg
class RenderTerminalTest(unittest.TestCase):
def test_svg_is_valid_xml_and_escapes_output(self):
svg = render_svg(
"<tag>& value\nsecond",
command="printf '<tag>& value'",
cwd="/shared/codebase/demo",
exit_code=0,
executed_at="2026-08-28T06:00:00Z",
)
ET.fromstring(svg)
self.assertIn("&lt;tag&gt;&amp; value", svg)
self.assertNotIn("<tag>& value", svg)
def test_metadata_is_rendered(self):
svg = render_svg(
"BUILD SUCCESSFUL",
command="./gradlew test",
cwd="/shared/codebase/demo",
exit_code=0,
executed_at="2026-08-28T06:00:00Z",
)
self.assertIn("./gradlew test", svg)
self.assertIn("/shared/codebase/demo", svg)
self.assertIn("exit 0", svg)
self.assertIn("2026-08-28T06:00:00Z", svg)
def test_obvious_secrets_are_redacted(self):
cases = {
"Authorization: Bearer abc.def.ghi": "Authorization: Bearer [REDACTED]",
"TOKEN=super-secret": "TOKEN=[REDACTED]",
"PASSWORD=hunter2": "PASSWORD=[REDACTED]",
"client_secret: abc123": "client_secret: [REDACTED]",
"Cookie: SESSION=abcdef": "Cookie: [REDACTED]",
}
for raw, expected in cases.items():
with self.subTest(raw=raw):
self.assertEqual(expected, redact_line(raw))
def test_normal_output_is_not_changed_by_redaction(self):
line = "GET /api/me -> 200 in 14ms"
self.assertEqual(line, redact_line(line))
def test_truncation_marker_is_rendered_without_fabricating_hidden_lines(self):
output = "\n".join(f"line-{i}" for i in range(8))
svg = render_svg(
output,
command="demo",
cwd="/tmp",
exit_code=1,
executed_at="2026-08-28T06:00:00Z",
max_lines=3,
)
self.assertIn("line-0", svg)
self.assertIn("line-2", svg)
self.assertNotIn("line-3", svg)
self.assertIn("[5 more lines omitted]", svg)
def test_terminal_chrome_and_monospace_are_present(self):
svg = render_svg(
"ok",
command="echo ok",
cwd="/tmp",
exit_code=0,
executed_at="2026-08-28T06:00:00Z",
)
self.assertGreaterEqual(len(re.findall(r"<circle\b", svg)), 3)
self.assertIn("monospace", svg)
self.assertIn("terminal evidence", svg)
if __name__ == "__main__":
unittest.main()