Integrating Femtounit with the File Manager and SEdit
To achieve this I defined the new File Manager type
TESTS for Femtounit tests and redefined
DEFTEST in terms of it, then tweaked the code formatting of tests in SEdit. Now the system notices and keeps track of new and modified tests.
Here's the File Manager type menu, which SEdit pops up when opening a test, with the
DEFTEST option highlighted under
Also, now SEdit handles and properly formats test definitions like this of a function
SQUARE to compute the square of its argument:
Implementing the new features was much easier than expected.
The traditional way of adding types to the File Manager, described in the Interlisp Reference Manual, involves writing a dozen functions for most of which it's not clear how they're supposed to work. Medley 1.0 added support for two easy to use File Manager type defining forms that replace all that,
XCL:DEFDEFINER. This code is all it took for Femtounit's new
(XCL:DEF-DEFINE-TYPE TESTS "Femtounit unit tests") (XCL:DEFDEFINER (DEFTEST (:PROTOTYPE (LAMBDA (NAME) (AND (LITATOM NAME) `(DEFTEST ,NAME ("Arg List") "Body"))))) TESTS (NAME PARAMETERS &BODY BODY) `(DEFINEQ (,NAME ,PARAMETERS (LET ((FTU.TEST.NAME (APPEND FTU.TEST.NAME (LIST ',NAME] ,@BODY))))
This additional tweak makes SEdit format and indent
DEFTEST unit test definitions the same way as
DEFUN function definitions in Common Lisp:
(SEDIT:DEF-LIST-FORMAT DEFTEST CL:DEFUN)
The simplified process is not discussed in the Interlisp Reference Manual, where I'd have expected, but in a more obscure source, the Medley 1.0 release notes from page 52 of the PDF document. My proactive reading of all the documentation paid off as it let me spot such crucial information and save a lot of work.