aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2021-12-14 03:15:48 +0100
committerLars Ingebrigtsen2021-12-14 03:15:48 +0100
commite6460032e8e2ea7811155b54e995d3ce59759cae (patch)
treeba9caa3fef2d1b4a09f657d7b059232e075f53f4
parent167278eb608541785871471c5cde7c7644c94e84 (diff)
downloademacs-e6460032e8e2ea7811155b54e995d3ce59759cae.tar.gz
emacs-e6460032e8e2ea7811155b54e995d3ce59759cae.zip
Add busy-waiting files test
-rw-r--r--test/lisp/emacs-lisp/multisession-tests.el38
1 files changed, 37 insertions, 1 deletions
diff --git a/test/lisp/emacs-lisp/multisession-tests.el b/test/lisp/emacs-lisp/multisession-tests.el
index 94db55262cf..7d636a2ed91 100644
--- a/test/lisp/emacs-lisp/multisession-tests.el
+++ b/test/lisp/emacs-lisp/multisession-tests.el
@@ -81,7 +81,7 @@
81 "--eval" (prin1-to-string 81 "--eval" (prin1-to-string
82 `(progn 82 `(progn
83 (require 'multisession) 83 (require 'multisession)
84 (let ((multisession-database-file ,dir) 84 (let ((multisession-directory ,dir)
85 (user-init-file "/tmp/bar.el")) 85 (user-init-file "/tmp/bar.el"))
86 (define-multisession-variable bar 0 86 (define-multisession-variable bar 0
87 "" :synchronized t) 87 "" :synchronized t)
@@ -124,4 +124,40 @@
124 (cl-incf (multisession-value sfoo)))))) 124 (cl-incf (multisession-value sfoo))))))
125 (should (= (multisession-value sfoo) 2))))) 125 (should (= (multisession-value sfoo) 2)))))
126 126
127(ert-deftest multi-test-files-busy ()
128 (skip-unless (and t (sqlite-available-p)))
129 (ert-with-temp-file dir
130 :directory t
131 (let ((user-init-file "/tmp/foo.el")
132 (multisession-storage 'files)
133 (multisession-directory dir)
134 proc)
135 (define-multisession-variable sbar 0
136 ""
137 :synchronized t)
138 (should (= (multisession-value sbar) 0))
139 (cl-incf (multisession-value sbar))
140 (should (= (multisession-value sbar) 1))
141 (setq proc
142 (start-process
143 "other-emacs"
144 nil
145 (concat invocation-directory invocation-name)
146 "-Q" "-batch"
147 "--eval" (prin1-to-string
148 `(progn
149 (require 'multisession)
150 (let ((multisession-directory ,dir)
151 (multisession-storage 'files)
152 (user-init-file "/tmp/sbar.el"))
153 (define-multisession-variable sbar 0
154 "" :synchronized t)
155 (dotimes (i 1000)
156 (cl-incf (multisession-value sbar))))))))
157 (while (process-live-p proc)
158 (cl-incf (multisession-value sbar))
159 (sleep-for 0.1))
160 (message "sbar ends up as %s" (multisession-value sbar))
161 (should (< (multisession-value sbar) 2000)))))
162
127;;; multisession-tests.el ends here 163;;; multisession-tests.el ends here