56 lines
1.4 KiB
C
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;
|
|
}
|