Initial Lime window manager

This commit is contained in:
2026-10-02 14:14:47 -05:00
commit 785c2e8968
103 changed files with 27259 additions and 0 deletions

54
test/development.lisp Normal file
View File

@@ -0,0 +1,54 @@
(in-package #:lime.dev.test)
(def-suite lime-dev-suite
:description "Developer runtime mailbox and reload-boundary tests.")
(in-suite lime-dev-suite)
(test only-ordinary-lime-systems-are-hot-reloadable
(is-true (lime.dev::%reloadable-development-system-p "lime"))
(is-true (lime.dev::%reloadable-development-system-p :lime/x11))
(is-false (lime.dev::%reloadable-development-system-p "lime/dev"))
(is-false (lime.dev::%reloadable-development-system-p "unrelated")))
(test developer-start-arguments-do-not-leak-into-start-lime
(is (equal (lime.dev::%plist-without
'(:display-name ":5" :repl-port 4444 :start-repl-p nil
:event-timeout 0.02 :diagnostic-file nil :config-file "/tmp/lime-config.lisp")
'(:repl-port :start-repl-p :event-timeout :diagnostic-file))
'(:display-name ":5" :config-file "/tmp/lime-config.lisp"))))
(test supervision-retains-paused-and-restarting-sessions
(let ((session (lime.dev::%make-development-session :running-p t :paused-p t)))
(is-true (lime.dev::%development-supervised-p session))
(setf (lime.dev::development-session-running-p session) nil
(lime.dev::development-session-restarting-p session) t)
(is-true (lime.dev::%development-supervised-p session))
(setf (lime.dev::development-session-restarting-p session) nil)
(is-false (lime.dev::%development-supervised-p session))
(is-false (lime.dev::%development-supervised-p nil))))
(test paused-mailbox-can-inspect-and-fail-without-losing-the-session
(let* ((session (lime.dev::%make-development-session :backend :fake :running-p t :paused-p t))
(bad (lime.dev::make-development-request :function (lambda (backend)
(declare (ignore backend)) (error "Nope")))))
(lime.dev::%enqueue-development-request session bad)
(lime.dev::%service-development-requests session :fake)
(is-true (lime.dev::development-request-completed-p bad))
(is (typep (lime.dev::development-request-failure bad) 'error))
(is-true (lime.dev::development-session-running-p session))
(is-true (lime.dev::development-session-paused-p session))))
(test developer-mailbox-completes-work-on-its-owner-boundary
(let* ((session (lime.dev::%make-development-session :backend :fake :running-p t))
(request (lime.dev::make-development-request
:function (lambda (backend) (list :backend backend)))))
(lime.dev::%enqueue-development-request session request)
(lime.dev::%service-development-requests session :fake)
(is-true (lime.dev::development-request-completed-p request))
(is (equal (lime.dev::development-request-values request)
'((:backend :fake))))
(is-false (lime.dev::development-request-failure request))))
(defun run-tests ()
(run! 'lime-dev-suite))