]> code.delx.au - gnu-emacs/blobdiff - test/automated/finalizer-tests.el
* lisp/emacs-lisp/package.el (package-unpack): Load before compiling
[gnu-emacs] / test / automated / finalizer-tests.el
index 142152e3fb0d4865ef7ed857b49668150ba7a28a..218df05e42614eca26694e031238f766c7044dce 100644 (file)
 (require 'ert)
 (require 'cl-lib)
 
-(ert-deftest finalizer-basic ()
-  "Test that finalizers run at all."
-  (skip-unless gc-precise)
-  (let* ((finalized nil)
-         (finalizer (make-finalizer (lambda () (setf finalized t)))))
-    (garbage-collect)
-    (should (equal finalized nil))
-    (setf finalizer nil)
-    (garbage-collect)
-    (should (equal finalized t))))
-
-(ert-deftest finalizer-circular-reference ()
-  "Test references from a callback to a finalizer."
-  (skip-unless gc-precise)
-  (let ((finalized nil))
-    (let* ((value nil)
-           (finalizer (make-finalizer (lambda () (setf finalized value)))))
-      (setf value finalizer)
-      (setf finalizer nil))
-    (garbage-collect)
-    (should finalized)))
-
-(ert-deftest finalizer-cross-reference ()
-  "Test that between-finalizer references do not prevent collection."
-  (skip-unless gc-precise)
-  (let ((d nil) (fc 0))
-    (let* ((f1-data (cons nil nil))
-           (f2-data (cons nil nil))
-           (f1 (make-finalizer
-                (lambda () (cl-incf fc) (setf d f1-data))))
-           (f2 (make-finalizer
-                (lambda () (cl-incf fc) (setf d f2-data)))))
-      (setcar f1-data f2)
-      (setcar f2-data f1))
-    (garbage-collect)
-    (should (equal fc 2))))
-
-(ert-deftest finalizer-error ()
-  "Test that finalizer errors are suppressed"
-  (skip-unless gc-precise)
-  (make-finalizer (lambda () (error "ABCDEF")))
-  (garbage-collect)
-  (with-current-buffer "*Messages*"
-    (save-excursion
-      (goto-char (point-max))
-      (forward-line -1)
-      (should (equal
-               (buffer-substring (point) (point-at-eol))
-               "finalizer failed: (error \"ABCDEF\")")))))
-
 (ert-deftest finalizer-object-type ()
   (should (equal (type-of (make-finalizer nil)) 'finalizer)))