(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))