Test suite changes



"Billinghurst, David (CALCRTS)" <david.billinghurst@comalco.riotinto.com.au> writes:

> I had noted some time ago that kill(all) broke trigsimp(), but hadn't 
> followed up.  The following Makefile fragment may be of interest, as
> it shows some stuff that gets cleaned up by kill().
>
> 1.save 2.save 3.save:
>         ( echo 'save("1.save",all);' ;\
>         echo 'kill(all);' ;\
>         echo 'save("2.save",all);';\
>         echo "load('trgsmp);";\
>         echo 'save("3.save",all);';\
>         ) | maxima

Let me just recall that we have this problem because we dump some
translated files (e.g., from trigonometry/trgsmp.mac) in the standard
image.  This puts some info on the lists which are members of
$INFOLISTS.  Maxima thinks that everything on this lists has been
touched by the user in some way and therefore will scrub it.  However,
even a kill(all) will not completely break these translated and
compiled files because of the
$dont_kill_symbols_with_lisp_source_files switch (in suprv1.lisp),
which is T by default and which preserves function cells containing a
compiled function object.  It does not preserve other user-defined
properties of the corresponding symbols, though.

Now, trgsmp.mac has a number of lines like

PUT('SIN,'COS,'COMPLEMENT_FUNCTION)$

whose effect on the property lists of the trigonometric and hyperbolic
functions doesn't survive a KILL(ALL).  It does, however, survive a
KILL(ALLBUT(PROPS)).  So, my first suggestion would be to kill more
selectively in the test suite.

Obviously, we must also have a means to reset Maxima to the initial
state.  This could be accomplished by doing a
save("initial-save-maxima.LISP",all) after building the maxima image
(we could even prefabricate this file) and writing a RESET() command
(or a RESET argument to KILL) which does

kill(all);
load("initial-save-maxima.LISP");

Wolfgang