diff --git a/bin/test_pike.pike b/bin/test_pike.pike index 4bf2986f52b893f4e907e57d472f460b926e9516..1cf9a9560f6ebfe39cb7cecff1f6fbf155a2695b 100755 --- a/bin/test_pike.pike +++ b/bin/test_pike.pike @@ -1,6 +1,6 @@ #!/usr/local/bin/pike -/* $Id: test_pike.pike,v 1.11 1998/04/11 11:53:35 grubba Exp $ */ +/* $Id: test_pike.pike,v 1.12 1998/04/16 01:10:40 hubbe Exp $ */ #include <simulate.h> @@ -13,6 +13,9 @@ int foo(string opt) if(opt=="" || !opt) return 1; return (int)opt; } + +mapping(string:int) cond_cache=([]); + int main(int argc, string *argv) { int e, verbose, successes, errors, t, check; @@ -96,7 +99,15 @@ int main(int argc, string *argv) test=tests[e]; if(sscanf(test,"COND %s\n%s",condition,test)==2) { - if(!clone(compile_string("mixed c() { return "+condition+"; }","Cond "+(e+1)))->c()) + int tmp; + if(!(tmp=cond_cache[condition])) + { + tmp=!!(clone(compile_string("mixed c() { return "+condition+"; }","Cond "+(e+1)))->c()); + if(!tmp) tmp=-1; + cond_cache[condition]=tmp; + } + + if(tmp==-1) { if(verbose) werror("Not doing test "+(e+1)+"\n");