mud/fluffos-2.23-ds03/testsuite/command/tests.c
2020-09-06 05:43:07 -07:00

56 lines
1.4 KiB
C

#include <globals.h>
int main(string fun);
void recurse(string dir) {
mixed leaks;
foreach (string file in get_dir(dir + "*.c"))
main(dir + file);
foreach (string subdir in map(filter(get_dir(dir + "*", -1),
(: $1[1] == -2 :)),
(: $1[0] :)) - ({ ".", ".." }))
{
if (subdir == "fail") {
foreach (string fn in get_dir(dir + "fail/*.c")) {
ASSERT2(catch(load_object(dir+"fail/"+fn)), "fail/" + fn + " loaded");
#if defined(__DEBUGMALLOC_EXTENSIONS__) && defined(__CHECK_MEMORY__)
leaks = check_memory();
if (sizeof(filter(explode(leaks, "\n"), (: $1 && $1[0] :))) != 1) {
write("After trying to compile: " + dir + "fail/" + fn + "\n");
write(leaks);
error("LEAK\n");
}
#endif
}
rm("/log/compile");
} else
recurse(dir + subdir + "/");
}
}
int
main(string fun)
{
string leaks;
object tp = this_player();
if (!fun || fun == "") {
recurse("/single/tests/");
write("Checks succeeded.\n");
return 1;
}
fun->do_tests();
if (tp != this_player())
error("Bad this_player() after calling " + fun + "\n");
#if defined(__DEBUGMALLOC_EXTENSIONS__) && defined(__CHECK_MEMORY__)
leaks = check_memory();
if (sizeof(filter(explode(leaks, "\n"), (: $1 && $1[0] :))) != 1) {
write("After calling: " + fun + "\n");
write(leaks);
error("LEAK\n");
}
#endif
return 1;
}