sbcl.sbcl/tests/loop-2.pure.lisp
Douglas Katzman 559f9e0049 Enforce fewer side-effects of "pure" regression tests
- Capture before/after state of globaldb and global symbols for comparison.
- Do a better job clobbering remants of defining forms after each test file.
- Allow DEFSTRUCT and DEFTYPE in pure tests.

The intent of this change is to  get a larger set of tests that don't fork
a new child, which will provide more metrics on the effectiveness of GC
during the regression run.

Contrary to the comments, DEFUN and DEFMACRO do not render a test impure,
because DELETE-PACKAGE undoes those. Apparently thread creation is treated
as pure, evidenced by the mere existence of 'threads.pure.lisp'.
Also, creating a file is not impure, because state change outside the process
is usually irrelevant. A failing pure test may have side-effects by accident,
which isn't great, but we can live with it.
2022-01-10 00:54:05 -05:00

32 lines
1.2 KiB
Common Lisp

;;;; miscellaneous tests of LOOP-related stuff
;;;; This software is part of the SBCL system. See the README file for
;;;; more information.
;;;;
;;;; While most of SBCL is derived from the CMU CL system, the test
;;;; files (like this one) were written from scratch after the fork
;;;; from CMU CL.
;;;;
;;;; This software is in the public domain and is provided with
;;;; absolutely no warranty. See the COPYING and CREDITS files for
;;;; more information.
;;; Bug 49b, reported by Peter Van Eynde 2000-07-25, was fixed by
;;; Alexey Dejneka's patch on sbcl-devel 2001-09-30.
;;;
(let ((package (make-package "loop-test-scratch")))
(intern "blah" package)
(let ((blah2 (intern "blah2" package)))
(export blah2 package))
(assert (equal '("blah" "blah2")
(sort (loop for sym being each present-symbol of package
for sym-name = (symbol-name sym)
collect sym-name)
#'string<)))
(assert (equal '("blah2")
(sort (loop for sym being each external-symbol of package for
sym-name = (symbol-name sym) collect sym-name)
(function string<)))))
;;; success