# HG changeset patch # User Richard M. Stallman # Date 1060132913 0 # Node ID e00701b0e24f26ceacdd2eaa92478bb79a6c8042 # Parent 6a00e88ede7573cc6104b157c8f4a3a92bd34cb5 (Test Coverage): New node. diff -r 6a00e88ede75 -r e00701b0e24f lispref/debugging.texi --- a/lispref/debugging.texi Wed Aug 06 01:17:13 2003 +0000 +++ b/lispref/debugging.texi Wed Aug 06 01:21:53 2003 +0000 @@ -30,6 +30,7 @@ * Debugger:: How the Emacs Lisp debugger is implemented. * Edebug:: A source-level Emacs Lisp debugger. * Syntax Errors:: How to find syntax errors. +* Test Coverage:: Ensuring you have tested all branches in your code. * Compilation Errors:: How to find errors that show up in byte compilation. @end menu @@ -738,6 +739,42 @@ and you have put back those parentheses, @kbd{C-M-q} should not change anything. +@node Test Coverage +@section Test Coverage +@cindex coverage testing + +@findex testcover-start +@findex testcover-mark-all +@findex testcover-next-mark + You can do coverage testing for a file of Lisp code by first using +the command @kbd{M-x testcover-start @key{RET} @var{file} @key{RET}} +to instrument it. Then test your code by calling it one or more +times. Then use the command @kbd{M-x testcover-mark-all} to display +``splotches'' on the code to show where coverage is insufficient. The +command @kbd{M-x testcover-next-mark} will move point forward to the +next spot that has a splotch. + + Normally, a red splotch indicates the form was never completely +evaluated; a brown splotch means it always evaluated to the same value +(meaning there has been little testing of what is done with the +result). However, the red splotch is skipped for forms that can't +possibly complete their evaluation, such as @code{error}. The brown +splotch is skipped for forms that are expected to always evaluate to +the same value, such as @code{(setq x 14)}. + + For difficult cases, you can add do-nothing macros to your code to +give advice to the test coverage tool. + +@defmac 1value form +Evaluate @var{form} and return its value, but inform coverage testing +that @var{form}'s value should always be the same. +@end defmac + +@defmac noreturn form +Evaluate @var{form}, informing coverage testing that @var{form} should +never return. If it ever does return, you get a run-time error. +@end defmac + @node Compilation Errors @section Debugging Problems in Compilation