Is there a reason why 'runtests' ignores scripts (rather than functions)? If I forget the useless line 'function testBLAH' at the beginning of a test case, then that test is silently ignored. This does not seem a sound practice, since it can lead to unnoticed failure. I strongly suggest you to fix this behaviour, unless it is intended for some reason.
% warning test to match assertExceptionThrown in XUnit
% throws an error unless f throws a warning with id "id".
% well, in fact, unless it throws *some* warnings, whose last one has id
% "id". I don't see how to make it work in the other way.
error('assertWarningThrown:noWarning','expected warning with message_id %s, but none thrown',id);
error('assertWarningThrown','expected warning %s, but got warning %s instead',id,id_obtained);