literate: add org sources for orphan test files, update README
- Create org/integration-tests.org (15 blocks, per-test prose) - Add Markdown tests section to org/markdown-renderer.org (11 test blocks) - Delete deprecated src/components/input-tests.lisp stub - Update README.org: tree diagram, literate programming section, development commands, remove stale test counts All 13 test suites pass at 100%. Zero .lisp files without org origin.
This commit is contained in:
86
README.org
86
README.org
@@ -309,7 +309,7 @@ Result is cached in ~*detected-backend*~.
|
||||
* Development
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
# Run all tests (483 checks, 13 suites)
|
||||
# Run all tests
|
||||
sbcl --script run-all-tests.lisp
|
||||
|
||||
# Run interactive demo
|
||||
@@ -317,13 +317,18 @@ sbcl --script demo.lisp
|
||||
|
||||
# Tangle org files (regenerate .lisp from .org sources)
|
||||
python3 ~/.hermes/skills/software-development/org-babel-tangle/scripts/tangle.py org/*.org
|
||||
|
||||
# Verify syntax of all tangled files
|
||||
for f in src/**/*.lisp tests/*.lisp; do
|
||||
sbcl --eval "(with-open-file (s \"$f\") (loop for e = (read s nil s) until (eq e s)))" \
|
||||
--eval "(format t \"~a: OK~%\" \"$f\")" --quit 2>/dev/null
|
||||
done
|
||||
#+END_SRC
|
||||
|
||||
Literate programming: ~.org~ files in ~org/~ are the source of truth for
|
||||
the input system, scrollbox/tabbar, dialog, mouse, select, slot,
|
||||
framebuffer, and markdown modules. The backend (~modern.lisp~,
|
||||
~simple.lisp~) and basic components (~box.lisp~, ~text.lisp~, ~render.lisp~,
|
||||
~theme.lisp~, ~dirty.lisp~) are written directly.
|
||||
Literate programming: every ~.lisp~ file in ~src/~ and ~tests/~ is a generated
|
||||
artifact from an ~.org~ file in ~org/~. The org files are the source of truth.
|
||||
Each function has its own code block with prose explaining the design reasoning.
|
||||
Delete every ~.lisp~ file and they can all be regenerated by tangling the org files.
|
||||
|
||||
Project structure:
|
||||
|
||||
@@ -332,46 +337,51 @@ cl-tty/
|
||||
├── cl-tty.asd # ASDF system definition
|
||||
├── demo.lisp # Interactive demo
|
||||
├── run-all-tests.lisp # Test runner
|
||||
├── src/backend/ # Backend protocol + implementations
|
||||
│ ├── package.lisp
|
||||
│ ├── classes.lisp # Generic definitions
|
||||
│ ├── simple.lisp # ASCII fallback backend
|
||||
│ ├── modern.lisp # Truecolor escape backend
|
||||
│ └── detection.lisp # Auto-detect backend from env
|
||||
├── src/layout/ # Flexbox layout engine
|
||||
│ └── layout.lisp
|
||||
├── src/
|
||||
│ ├── rendering/ # Framebuffer backend + diff + flush
|
||||
│ ├── backend/ # Backend protocol + implementations
|
||||
│ │ ├── package.lisp, classes.lisp
|
||||
│ │ ├── simple.lisp, modern.lisp
|
||||
│ │ └── detection.lisp
|
||||
│ ├── layout/ # Flexbox layout engine
|
||||
│ │ └── layout.lisp
|
||||
│ ├── rendering/ # Framebuffer diffing pipeline
|
||||
│ │ └── framebuffer.lisp
|
||||
│ └── components/ # Widgets
|
||||
│ ├── box.lisp, text.lisp, render.lisp, theme.lisp
|
||||
│ ├── dirty.lisp, input-package.lisp, input.lisp
|
||||
│ └── components/ # Widget library
|
||||
│ ├── package.lisp, dirty.lisp, render.lisp, theme.lisp
|
||||
│ ├── box.lisp, text.lisp
|
||||
│ ├── input-package.lisp, input.lisp
|
||||
│ ├── text-input.lisp, textarea.lisp, keybindings.lisp
|
||||
│ ├── scrollbox.lisp, tabbar.lisp, container-package.lisp
|
||||
│ ├── select.lisp, select-package.lisp
|
||||
│ ├── markdown.lisp, markdown-package.lisp
|
||||
│ ├── dialog.lisp, dialog-package.lisp
|
||||
│ ├── mouse.lisp, mouse-package.lisp
|
||||
│ └── slot.lisp, slot-package.lisp
|
||||
├── tests/ # Test files
|
||||
├── org/ # Literate source files
|
||||
│ ├── container-package.lisp, scrollbox.lisp, tabbar.lisp
|
||||
│ ├── select-package.lisp, select.lisp
|
||||
│ ├── markdown-package.lisp, markdown.lisp
|
||||
│ ├── dialog-package.lisp, dialog.lisp
|
||||
│ ├── mouse-package.lisp, mouse.lisp
|
||||
│ └── slot-package.lisp, slot.lisp
|
||||
├── tests/ # FiveAM test files
|
||||
│ ├── input-tests.lisp, scrollbox-tabbar-tests.lisp
|
||||
│ ├── select-tests.lisp, markdown-tests.lisp
|
||||
│ ├── dialog-tests.lisp, mouse-tests.lisp, slot-tests.lisp
|
||||
│ ├── framebuffer-tests.lisp, integration-tests.lisp
|
||||
│ ├── box-tests.lisp, dirty-tests.lisp, render-tests.lisp
|
||||
│ └── theme-tests.lisp
|
||||
├── org/ # Literate source (all .lisp files come from here)
|
||||
│ ├── package.org, dirty.org, render.org, theme.org
|
||||
│ ├── box-renderable.org
|
||||
│ ├── text-input.org
|
||||
│ ├── scrollbox.org
|
||||
│ ├── tabbar.org
|
||||
│ ├── container-package.org
|
||||
│ ├── scrollbox.org, tabbar.org, container-package.org
|
||||
│ ├── select.org
|
||||
│ ├── markdown-renderer.org
|
||||
│ ├── dialog.org
|
||||
│ ├── mouse.org
|
||||
│ ├── select.org
|
||||
│ ├── slot.org
|
||||
│ ├── backend-protocol.org, modern-backend.org, detection.org
|
||||
│ ├── layout-engine.org
|
||||
│ ├── framebuffer.org
|
||||
│ ├── markdown-renderer.org
|
||||
│ ├── detection.org
|
||||
│ ├── modern-backend.org
|
||||
│ ├── box-renderable.org
|
||||
│ └── layout-engine.org
|
||||
└── docs/
|
||||
├── ROADMAP.org # Versioned roadmap
|
||||
└── ARCHITECTURE.org # Design docs
|
||||
│ └── integration-tests.org
|
||||
├── docs/
|
||||
│ ├── ROADMAP.org
|
||||
│ └── ARCHITECTURE.org
|
||||
└── demo/ # Demo assets (optional)
|
||||
#+END_EXAMPLE
|
||||
|
||||
* License
|
||||
|
||||
Reference in New Issue
Block a user