Initial Lime window manager
This commit is contained in:
54
test/development.lisp
Normal file
54
test/development.lisp
Normal 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))
|
||||
Reference in New Issue
Block a user