#!/usr/bin/env php
══════════════════════════════════════════════════
~jisifu Build System — Comprehensive Test Suite
══════════════════════════════════════════════════
── ContentRenderer ──
[31m✗[0m render() converts basic markdown to HTML — Expected H1 tag
[32m✓[0m render() handles empty markdown
[31m✗[0m render() handles bold and italic — Expected string to contain 'bold'
[31m✗[0m render() handles tables — Expected string to contain '
'
[31m✗[0m render() handles HTML passthrough (unsafe mode) — Expected string to contain ''
[31m✗[0m render() handles strikethrough (GFM) — Expected string to contain 'struck'
[31m✗[0m render() handles task lists (GFM) — Expected string to contain 'checked'
[31m✗[0m render() handles footnotes — Expected string to contain 'footnote'
[31m✗[0m render() handles smart punctuation — Expected string to contain '“hello”'
[31m✗[0m render() handles gemoji — Expected string to contain '😄'
[31m✗[0m render() handles code blocks with syntax highlighting — Expected string to contain ' {body_md5, path})
── build_pdfs.php ──
[32m✓[0m build_pdfs: missing source file exits 1 with stderr message
[32m✓[0m build_pdfs: empty typst --version exits 1 with stderr
[31m✗[0m build_pdfs: cold run both PDFs and writes hash file — build_pdfs.php cold run: -> content/files/cv/Ji_Matt_CV.pdf (rebuilding: output missing)
! CV compile failed (exit 1)
(no web resources needed)
PHP Warning: file_put_contents(/home/jisifu/public_html/public/.web_hashes.json.tmp): Failed to open stream: Permission denied in /home/jisifu/public_html/lib/fetch_web_resources.php on line 50
! atomic write failed (cannot write tmp): /home/jisifu/public_html/public/.web_hashes.json.tmp
[31m✗[0m build_pdfs: warm run skips both PDFs when fingerprint matches — Expected 0, got 1