branch: externals/detached commit 4eb5e3e9aa105bad494d3eb211ce2c541bcf6223 Author: Niklas Eklund <niklas.ekl...@posteo.net> Commit: Niklas Eklund <niklas.ekl...@posteo.net>
Add side effect to start command Update session to state started when the function is called. --- detached.el | 11 ++++++++--- test/detached-test.el | 10 ++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/detached.el b/detached.el index 08ece25a5e..bfab5c7591 100644 --- a/detached.el +++ b/detached.el @@ -734,6 +734,7 @@ Optionally SUPPRESS-OUTPUT." (defun detached-start-detached-session (session) "Start SESSION in detached mode." + (detached--set-session-state session 'started) (if (detached-session-local-p session) (apply #'start-process-shell-command `("detached" nil ,(detached--dtach-command session t))) @@ -910,6 +911,7 @@ This function uses the `notifications' library." (detached-connection-local-variables (let* ((socket (detached--session-file session 'socket t)) (log (detached--session-file session 'log t))) + (detached--set-session-state session 'started) (if (detached-session-degraded-p session) (let ((tail-command `(,detached-tail-program @@ -970,9 +972,7 @@ This function uses the `notifications' library." (defun detached-session-state (session) "Return SESSION's state." - (if (detached-session-validated-p session) - (detached--session-state session) - 'unknown)) + (detached--session-state session)) (defun detached-session-status (session) "Return status for SESSION." @@ -1490,6 +1490,11 @@ Optionally make the path LOCAL to host." (seq-length durations))))) `(:durations ,durations :mean ,mean :std ,std))) +(defun detached--set-session-state (session state) + "Update SESSION with STATE." + (setf (detached--session-state session) state) + (detached--db-update-entry session)) + ;;;;; Database (defun detached--db-initialize () diff --git a/test/detached-test.el b/test/detached-test.el index 2ad733e19f..9a26dc4794 100644 --- a/test/detached-test.el +++ b/test/detached-test.el @@ -68,6 +68,16 @@ ;;;;; Session interface +(ert-deftest detached-test-set-session-state () + (detached-test--with-temp-database + (cl-letf* ((session (detached-create-session "foo"))) + (should (eq 'unknown (detached-session-state session))) + (detached--set-session-state session 'started) + (should (eq 'started + (detached-session-state + (detached--db-get-session + (detached-session-id session)))))))) + (ert-deftest detached-test-session-status () (let ((failed-session (detached--session-create :status `(failure . 128)))) (should (detached-session-failed-p failed-session))