sbcl.sbcl/tests/run-tests.sh
William Harold Newman ce02ab2ecd 0.6.11.13:
converted SIMPLE-/COMPLEX- -INTERSECTION to -INTERSECTION2
	reviewed old SIMPLE-/COMPLEX- -INTERSECTION methods to make
		them OK in the new world
	made TYPE-INTERSECTION2 and TYPE-APPROX-INTERSECTION2 for
		some things which used to call TYPE-INTERSECTION
	made new with-&REST-list TYPE-INTERSECTION to replace
		MAKE-INTERSECTION-TYPE-OR-SOMETHING
	HIERARCHICAL-INTERSECTION is more descriptive than
		VANILLA-INTERSECTION.
	deleted unused SIMPLIFY2 stuff
	deleted unused TYPE-INTERSECT and VALUES-TYPE-ALLOWP
	Pure BOOLEAN TYPE-ENUMERABLE is too much trouble; relax to
		generalized boolean instead.
	tweaked DEFUN-CACHED so that it will work early in cold init
		(if some clueless bozo happens to mess up types so
		badly that it gets called early in cold init:-)
	Now the AND type translator can just use TYPE-INTERSECTION.
	added *SOFT-HEAP-LIMIT*
	removed some unused symbols in SB!UNIX
	tweaked /SHOW0 to automatically stringify and concatenate its
		arguments, to abbreviate an idiom that I use a lot
	wrote /HEXSTR0 to abbreviate another idiom
	defined /PRIMITIVE-PRINT to abbreviate another idiom
	DO-LOAD-TIME-CODE-FIXUP and DO-LOAD-TIME-VALUE-FIXUP are
		only needed at cold init.
	added tests/type.after-xc.lisp and tests/type.before-xc.lisp
	upgraded SB-XC:TYPEP to handle (TYPEP #(1 2 3) 'VECTOR) etc.
	Intersection with *EMPTY-TYPE* and *UNIVERSAL-TYPE* should
		behave (and be commutative).
	Guard against some type method operations on *. (easier than
		worrying about them, or trying to make them right..)
	moved STYLE-WARN and friends to SB-INT to eliminate thought
		about whether they're visible e.g. in ir1tran.lisp
	tripped over bug 84
	made SB!C-CALL use SB!INT and SB!EXT so I can use /SHOW0 et al.
	DEF-PRIMITIVE-TYPE stuff can become !DEF-PRIMITIVE-TYPE.
	DEF-BOUNDED-TYPE and DEFINE-FLOAT-FORMAT can become
		!DEF-BOUNDED-TYPE and !DEFINE-FLOAT-FORMAT.
	moved DEFTYPE FLOAT-FORMAT earlier so that it's visible in
		early-type.lisp (for NUMERIC-TYPE FORMAT slot :TYPE)
	moved LIST, CONS, and NULL classes earlier in *BUILT-IN-CLASSES*
		to try to help with RATIO cold init problem
	removed pre-ANSI keyword-only stuff in ARG-INFO-KEYWORD and
		in various &KEY-related error messages and symbol names
	bug 12 fixed: (SUBTYPEP 'KEYWORD 'SYMBOL)=>T,T
	added INTERSECTION-TYPE support to CTYPEP
2001-03-12 13:47:43 +00:00

102 lines
3.2 KiB
Bash

#!/bin/sh
# Run the regression tests in this directory.
# 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.
# how we invoke SBCL
sbcl=${1:-../src/runtime/sbcl --core ../output/sbcl.core --noinform --sysinit /dev/null --userinit /dev/null --noprint --noprogrammer}
# "Ten four" is the closest numerical slang I can find to "OK", so
# it's the Unix status value that we expect from a successful test.
# (Of course, zero is the usual success value, but we don't want to
# use that because SBCL returns that by default, so we might think
# we passed a test when in fact some error caused us to exit SBCL
# in a weird unexpected way. In contrast, 104 is unlikely to be
# returned unless we exit through the intended explicit "test
# successful" path.
tenfour () {
if [ $? = 104 ]; then
echo ok
else
echo test failed: $?
exit 1
fi
}
# *.pure.lisp files are ordinary Lisp code with no side effects,
# and we can run them all in a single Lisp process.
echo //running '*.pure.lisp' tests
echo //i.e. *.pure.lisp
(
echo "(progn"
for f in *.pure.lisp; do
if [ -f $f ]; then
echo " (progn (format t \"//running $f test~%\") (load \"$f\"))"
fi
done
echo " (sb-ext:quit :unix-status 104)) ; Return status=success."
) | $sbcl ; tenfour
# *.impure.lisp files are Lisp code with side effects (e.g. doing DEFSTRUCT
# or DEFTYPE or DEFVAR). Each one needs to be run as a separate
# invocation of Lisp.
echo //running '*.impure.lisp' tests
for f in *.impure.lisp; do
if [ -f $f ]; then
echo //running $f test
echo "(load \"$f\")" | $sbcl ; tenfour
fi
done
# *.test.sh files are scripts to test stuff, typically stuff which can't
# so easily be tested within Lisp itself. A file foo.test.sh
# may be associated with other files foo*, e.g. foo.lisp, foo-1.lisp,
# or foo.pl.
echo //running '*.test.sh' tests
for f in *.test.sh; do
if [ -f $f ]; then
echo //running $f test
sh $f "$sbcl"; tenfour
fi
done
# *.assertoids files contain ASSERTOID statements to test things
# interpreted and at various compilation levels.
echo //running '*.assertoids' tests
for f in *.assertoids; do
if [ -f $f ]; then
echo //running $f test
echo "(load \"$f\")" | $sbcl --eval '(load "assertoid.lisp")' ; tenfour
fi
done
# *.pure-cload.lisp files want to be compiled, then loaded. They
# can all be done in the same invocation of Lisp.
echo //running '*.pure-cload.lisp' tests
for f in *.pure-cload.lisp; do
if [ -f $f ]; then
echo //running $f test
$sbcl <<EOF ; tenfour
(compile-file "$f")
(progn (load *) (sb-ext:quit :unix-status 104))
EOF
fi
done
# (*.before-xc.lisp and *.after-xc.lisp files aren't handled in this
# script at all. They're tests intended to run in the cross-compiler,
# so that some functionality can be tested even when cold init doesn't
# work.)
echo '//apparent success (reached end of run-tests.sh normally)'