diff options
| author | Lars Ingebrigtsen | 2021-12-14 03:15:48 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2021-12-14 03:15:48 +0100 |
| commit | e6460032e8e2ea7811155b54e995d3ce59759cae (patch) | |
| tree | ba9caa3fef2d1b4a09f657d7b059232e075f53f4 | |
| parent | 167278eb608541785871471c5cde7c7644c94e84 (diff) | |
| download | emacs-e6460032e8e2ea7811155b54e995d3ce59759cae.tar.gz emacs-e6460032e8e2ea7811155b54e995d3ce59759cae.zip | |
Add busy-waiting files test
| -rw-r--r-- | test/lisp/emacs-lisp/multisession-tests.el | 38 |
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 |