The theme system (theme class, define-preset, load-preset, theme-color) was part of the bloated cl-tty.box package even though it had nothing to do with boxes, spans, or component rendering. It only used cl-tty.backend for the *theme-colors* hash table. Changes: - added defpackage :cl-tty.theme as the first block in theme.lisp (inline defpackage avoids ASDF dependency ordering issues with separate package files) - removed theme exports from cl-tty.box defpackage - theme tests now run in their own THEME-SUITE (16 tests) instead of part of BOX-SUITE - box suite drops from 64 to 48 tests (16 moved to theme suite) - updated ASDF, run-all-tests.lisp All 15 test suites pass at 100%.
50 lines
2.1 KiB
Common Lisp
50 lines
2.1 KiB
Common Lisp
(load "~/quicklisp/setup.lisp")
|
|
(ql:register-local-projects)
|
|
(ql:quickload :cl-tty :silent t)
|
|
(ql:quickload :fiveam :silent t)
|
|
|
|
;; Load all test files
|
|
(dolist (f '("src/backend/tests.lisp" "src/backend/modern-tests.lisp"
|
|
"src/layout/tests.lisp"
|
|
"src/components/box-tests.lisp"
|
|
"src/components/dirty-tests.lisp"
|
|
"src/components/render-tests.lisp"
|
|
"src/components/theme-tests.lisp"
|
|
"tests/input-tests.lisp"
|
|
"tests/scrollbox-tabbar-tests.lisp"
|
|
"tests/markdown-tests.lisp"
|
|
"tests/dialog-tests.lisp"
|
|
"tests/slot-tests.lisp"
|
|
"tests/framebuffer-tests.lisp"
|
|
"tests/integration-tests.lisp"))
|
|
(load f))
|
|
|
|
;; Run all test suites, exit non-zero if any fails
|
|
(let ((all-passed t))
|
|
(dolist (suite '((:cl-tty-backend-test "BACKEND-SUITE")
|
|
(:cl-tty-box-test "BOX-SUITE")
|
|
(:cl-tty-input-test "INPUT-SUITE")
|
|
(:cl-tty-scrollbox-test "SCROLLBOX-SUITE")
|
|
(:cl-tty-markdown-test :cl-tty-markdown-test)
|
|
(:cl-tty-dialog-test "DIALOG-SUITE")
|
|
(:cl-tty-theme-test "THEME-SUITE")
|
|
(:cl-tty-slot-test "SLOT-SUITE")
|
|
(:cl-tty-layout-test "LAYOUT-SUITE")
|
|
(:cl-tty-modern-backend-test "MODERN-BACKEND-SUITE")
|
|
(:cl-tty-framebuffer-test "FRAMEBUFFER-SUITE")
|
|
(:cl-tty-integration-test "INTEGRATION-SUITE")))
|
|
(let* ((pkg (find-package (first suite)))
|
|
(suite-name (second suite))
|
|
(s (etypecase suite-name
|
|
(keyword (find-symbol (string suite-name) :keyword))
|
|
(string (find-symbol suite-name pkg)))))
|
|
(format t "~&=== ~a ===~%" (first suite))
|
|
(if s
|
|
(let ((result (fiveam:run s)))
|
|
(fiveam:explain! result)
|
|
(unless (fiveam:results-status result)
|
|
(setf all-passed nil)
|
|
(format t "~&FAILED: ~a~%" (first suite))))
|
|
(format t "Suite not found~%"))))
|
|
(uiop:quit (if all-passed 0 1)))
|