diff --git a/bin/export.pike b/bin/export.pike index 9065cfd196da9085fbf239e500d782d4bd9af828..84cd8f675e495cd864c9b4fa009fdc4f1a258168 100755 --- a/bin/export.pike +++ b/bin/export.pike @@ -1,6 +1,6 @@ #!/usr/local/bin/pike -/* $Id: export.pike,v 1.13 1997/12/28 09:27:41 hubbe Exp $ */ +/* $Id: export.pike,v 1.14 1998/02/24 22:48:11 hubbe Exp $ */ #include <simulate.h> @@ -106,7 +106,7 @@ int main(int argc, string *argv) x->hour, x->min); #else - string tag+="-rel"+rel; + tag+="-rel"+rel; #endif werror("Creating tag "+tag+" in the background.\n"); diff --git a/bin/mktestsuite b/bin/mktestsuite index c7805e30abd1650aa6c8b8c0a9931ecd19500d8d..380435e7588047e6e906d646e7b8baa724afc8b1 100755 --- a/bin/mktestsuite +++ b/bin/mktestsuite @@ -106,6 +106,46 @@ test_false($2<=$1) test_true($2<=$2) test_true($1>=$1) ]]) +define([[test_cmp3]],[[ +test_cmp($1,$2) +test_cmp($2,$3) +test_cmp($1,$3) + test_true(`<($1,$2,$3)) +test_false(`<($1,$3,$2)) +test_false(`<($2,$3,$1)) +test_false(`<($2,$1,$3)) +test_false(`<($3,$1,$2)) +test_false(`<($3,$2,$1)) +test_false(`<($3,$2,$2,$1)) + + test_true(`<=($1,$2,$3)) +test_false(`<=($1,$3,$2)) +test_false(`<=($2,$3,$1)) +test_false(`<=($2,$1,$3)) +test_false(`<=($3,$1,$2)) +test_false(`<=($3,$2,$1)) + test_true(`<=($1,$1,$2,$2,$3,$3)) + +test_false(`>($1,$2,$3)) +test_false(`>($1,$3,$2)) +test_false(`>($2,$3,$1)) +test_false(`>($2,$1,$3)) +test_false(`>($3,$1,$2)) + test_true(`>($3,$2,$1)) +test_false(`>($3,$2,$2,$1)) + +test_false(`>=($1,$2,$3)) +test_false(`>=($1,$3,$2)) +test_false(`>=($2,$3,$1)) +test_false(`>=($2,$1,$3)) +test_false(`>=($3,$1,$2)) + test_true(`>=($3,$2,$1)) + test_true(`>=($3,$3,$2,$2,$1,$1)) + +test_equal(min($2,$1,$3), $1) +test_equal(max($2,$1,$3), $3) + ]]) + EOF cat $1 diff --git a/bin/test_pike.pike b/bin/test_pike.pike index edd8a137f12108270bca16c239f42cb56ee90905..810d017fb2e532748854632339d50136c0e2aa78 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.5 1998/01/03 07:11:24 hubbe Exp $ */ +/* $Id: test_pike.pike,v 1.6 1998/02/24 22:48:13 hubbe Exp $ */ #include <simulate.h> @@ -8,7 +8,11 @@ #define _verify_internals() #endif - +int foo(string opt) +{ + if(opt=="" || !opt) return 1; + return (int)opt; +} int main(int argc, string *argv) { int e, verbose, successes, errors, t, check; @@ -17,265 +21,229 @@ int main(int argc, string *argv) int start, fail, mem; int loop=1; - for(e=1;e<argc;e++) - { - string opt; - int arg; - arg=1; - if(sscanf(argv[e],"--%s=%d",opt,arg)==2) - opt="--"+opt; - else if(sscanf(argv[e],"-%s%d",opt,arg)==2) - opt="-"+opt; - else - opt=argv[e]; - - switch(opt) + foreach(Getopt.find_all_options(argv,aggregate( + ({"help",Getopt.NO_ARG,({"-h","--help"})}), + ({"verbose",Getopt.NO_ARG,({"-v","--verbose"})}), + ({"start",Getopt.HAS_ARG,({"-s","--start-test"})}), + ({"fail",Getopt.MAY_HAVE_ARG,({"-f","--fail"})}), + ({"loop",Getopt.MAY_HAVE_ARG,({"-l","--loop"})}), + ({"trace",Getopt.MAY_HAVE_ARG,({"-t","--trace"})}), + ({"check",Getopt.MAY_HAVE_ARG,({"-c","--check"})}), + ({"mem",Getopt.MAY_HAVE_ARG,({"-m","--mem","--memory"})}), + )),array opt) { - case "-h": - case "--help": - perror("Usage: "+argv[e]+" [-v | --verbose] [-h | --help] [-t <testno>] <testfile>\n"); - return 0; - - case "-v": - case "--verbose": - verbose+=arg; - break; - - case "-s": - case "--start-test": - start=arg; - start--; - break; - - case "-f": - case "--fail": - fail+=arg; - break; - - - case "-l": - case "--loop": - loop+=arg; - break; - - case "-t": - case "--trace": - t+=arg; - break; - - case "-c": - case "--check": - check++; - break; - - - case "-m": - case "--mem": - case "--memory": - mem++; - break; - - default: - if(tests) - { - perror("Unknown argument: "+opt+".\n"); - exit(1); - } - tmp=read_bytes(argv[e]); - if(!tmp) - { - perror("Failed to read test file, errno="+errno()+".\n"); - exit(1); - } + switch(opt[0]) + { + case "help": + werror("Usage: "+argv[e]+" [-v | --verbose] [-h | --help] [-t <testno>] <testfile>\n"); + return 0; + + case "verbose": verbose+=foo(opt[1]); break; + case "start": start=foo(opt[1]); start--; break; + case "fail": fail+=foo(opt[1]); break; + case "loop": loop+=foo(opt[1]); break; + case "trace": t+=foo(opt[1]); break; + case "check": check+=foo(opt[1]); break; + case "mem": mem+=foo(opt[1]); break; + } } - } - if(!tmp) + argv=Getopt.get_args(argv,1); + if(sizeof(argv)<1) { - tmp=Stdio.stdin->read(0x7fffffff); if(!tmp) { - perror("Failed to read test file, errno="+errno()+".\n"); + werror("No tests?\n"); exit(1); } } - - tests=tmp/"\n....\n"; - tests=tests[0..sizeof(tests)-2]; - while(loop--) { successes=errors=0; - - for(e=start;e<sizeof(tests);e++) + for(int f=1;f<sizeof(argv);f++) { - string test,condition; - int type; - object o; - mixed a,b; - - if(check) _verify_internals(); - - test=tests[e]; - if(sscanf(test,"COND %s\n%s",condition,test)==2) + tmp=read_bytes(argv[f]); + if(!tmp) { - if(!clone(compile_string("mixed c() { return "+condition+"; }","Cond "+(e+1)))->c()) - { - if(verbose) - perror("Not doing test "+(e+1)+"\n"); - successes++; - continue; - } + werror("Failed to read test file, errno="+errno()+".\n"); + exit(1); } - sscanf(test,"%s\n%s",type,test); - sscanf(type,"%*s expected result: %s",type); + tests=tmp/"\n....\n"; + tmp=0; + tests=tests[0..sizeof(tests)-2]; - if(verbose) - { - perror("Doing test "+(e+1)+"\n"); - if(verbose>1) - perror(test+"\n"); - } + werror("Doing tests in %s (%d tests)\n",argv[f],sizeof(tests)); - if(check > 1) _verify_internals(); - switch(type) + for(e=start;e<sizeof(tests);e++) { - case "COMPILE_ERROR": - master()->set_inhibit_compile_errors(1); - if(catch(compile_string(test,"Test "+(e+1)))) - { - successes++; - }else{ - perror("Test "+(e+1)+" failed.\n"); - perror(test+"\n"); - errors++; - } - master()->set_inhibit_compile_errors(0); - break; + string test,condition; + int type; + object o; + mixed a,b; + + if(check) _verify_internals(); - case "EVAL_ERROR": - master()->set_inhibit_compile_errors(1); - if(catch(clone(compile_string(test,"Test "+(e+1)))->a())) + test=tests[e]; + if(sscanf(test,"COND %s\n%s",condition,test)==2) { - successes++; - }else{ - perror("Test "+(e+1)+" failed.\n"); - perror(test+"\n"); - errors++; + if(!clone(compile_string("mixed c() { return "+condition+"; }","Cond "+(e+1)))->c()) + { + if(verbose) + werror("Not doing test "+(e+1)+"\n"); + successes++; + continue; + } } - master()->set_inhibit_compile_errors(0); - break; - default: - o=clone(compile_string(test,"Test "+(e+1))); - - if(check > 1) _verify_internals(); + sscanf(test,"%s\n%s",type,test); + sscanf(type,"%*s expected result: %s",type); - a=b=0; - if(t) trace(t); - if(functionp(o->a)) a=o->a(); - if(functionp(o->b)) b=o->b(); - if(t) trace(0); + if(verbose) + { + werror("Doing test "+(e+1)+"\n"); + if(verbose>1) + werror(test+"\n"); + } if(check > 1) _verify_internals(); switch(type) { - case "FALSE": - a=!a; - - case "TRUE": - if(!a) - { - perror("Test "+(e+1)+" failed.\n"); - perror(test+"\n"); - errors++; - }else{ - successes++; - } - break; - - case "RUN": - successes++; - break; - - case "EQ": - if(a!=b) - { - perror("Test "+(e+1)+" failed.\n"); - perror(test+"\n"); - perror(sprintf("o->a(): %O\n",a)); - perror(sprintf("o->b(): %O\n",b)); - errors++; - }else{ - successes++; - } - break; - - case "EQUAL": - if(!equal(a,b)) - { - perror("Test "+(e+1)+" failed.\n"); - perror(test+"\n"); - perror(sprintf("o->a(): %O\n",a)); - perror(sprintf("o->b(): %O\n",b)); - errors++; - }else{ - successes++; - } - break; - - default: - perror(sprintf("Unknown test type (%O).\n",type)); - errors++; + case "COMPILE_ERROR": + master()->set_inhibit_compile_errors(1); + if(catch(compile_string(test,"Test "+(e+1)))) + { + successes++; + }else{ + werror("Test "+(e+1)+" failed.\n"); + werror(test+"\n"); + errors++; + } + master()->set_inhibit_compile_errors(0); + break; + + case "EVAL_ERROR": + master()->set_inhibit_compile_errors(1); + if(catch(clone(compile_string(test,"Test "+(e+1)))->a())) + { + successes++; + }else{ + werror("Test "+(e+1)+" failed.\n"); + werror(test+"\n"); + errors++; + } + master()->set_inhibit_compile_errors(0); + break; + + default: + o=clone(compile_string(test,"Test "+(e+1))); + + if(check > 1) _verify_internals(); + + a=b=0; + if(t) trace(t); + if(functionp(o->a)) a=o->a(); + if(functionp(o->b)) b=o->b(); + if(t) trace(0); + + if(check > 1) _verify_internals(); + + switch(type) + { + case "FALSE": + a=!a; + + case "TRUE": + if(!a) + { + werror("Test "+(e+1)+" failed.\n"); + werror(test+"\n"); + errors++; + }else{ + successes++; + } + break; + + case "RUN": + successes++; + break; + + case "EQ": + if(a!=b) + { + werror("Test "+(e+1)+" failed.\n"); + werror(test+"\n"); + werror(sprintf("o->a(): %O\n",a)); + werror(sprintf("o->b(): %O\n",b)); + errors++; + }else{ + successes++; + } + break; + + case "EQUAL": + if(!equal(a,b)) + { + werror("Test "+(e+1)+" failed.\n"); + werror(test+"\n"); + werror(sprintf("o->a(): %O\n",a)); + werror(sprintf("o->b(): %O\n",b)); + errors++; + }else{ + successes++; + } + break; + + default: + werror(sprintf("Unknown test type (%O).\n",type)); + errors++; + } } + + if(check > 2) _verify_internals(); + + if(fail && errors) + exit(1); + + a=b=0; } - if(check > 2) _verify_internals(); - - if(fail && errors) - exit(1); + if(errors || verbose) + { + werror("Failed tests: "+errors+".\n"); + } - a=b=0; - } - - if(errors + successes != sizeof(tests)) - { - perror("Errors + Successes != number of tests!\n"); - errors++; } - - if(errors || verbose) + if(mem) { - perror("Failed tests: "+errors+".\n"); + int total; + tests=0; + gc(); + mapping tmp=_memory_usage(); + write(sprintf("%-10s: %6s %10s\n","Category","num","bytes")); + foreach(sort(indices(tmp)),string foo) + { + if(sscanf(foo,"%s_bytes",foo)) + { + write(sprintf("%-10s: %6d %10d\n", + foo+"s", + tmp["num_"+foo+"s"], + tmp[foo+"_bytes"])); + total+=tmp[foo+"_bytes"]; + } + } + write(sprintf("%-10s: %6s %10d\n", + "Total", + "", + total)); } - } - if(mem) + if(verbose) { - int total; - tests=0; - gc(); - mapping tmp=_memory_usage(); - write(sprintf("%-10s: %6s %10s\n","Category","num","bytes")); - foreach(sort(indices(tmp)),string foo) - { - if(sscanf(foo,"%s_bytes",foo)) - { - write(sprintf("%-10s: %6d %10d\n", - foo+"s", - tmp["num_"+foo+"s"], - tmp[foo+"_bytes"])); - total+=tmp[foo+"_bytes"]; - } - } - write(sprintf("%-10s: %6s %10d\n", - "Total", - "", - total)); + werror("Total tests: %d\n",successes+errors); } return errors;