pike.git / bin / test_pike.pike

version» Context lines:

pike.git/bin/test_pike.pike:1:   #!/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>      #if !efun(_verify_internals)   #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;    string *tests,tmp;    program testprogram;    int start, fail, mem;    int loop=1;    -  for(e=1;e<argc;e++) +  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)    { -  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) +  switch(opt[0])    { -  case "-h": -  case "--help": -  perror("Usage: "+argv[e]+" [-v | --verbose] [-h | --help] [-t <testno>] <testfile>\n"); +  case "help": +  werror("Usage: "+argv[e]+" [-v | --verbose] [-h | --help] [-t <testno>] <testfile>\n");    return 0;    -  case "-v": -  case "--verbose": -  verbose+=arg; -  break; +  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; +  } +  }    -  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) +  argv=Getopt.get_args(argv,1); +  if(sizeof(argv)<1)    { -  perror("Unknown argument: "+opt+".\n"); -  exit(1); -  } -  tmp=read_bytes(argv[e]); +     if(!tmp)    { -  perror("Failed to read test file, errno="+errno()+".\n"); +  werror("No tests?\n");    exit(1);    }    } -  } +     -  if(!tmp) +  while(loop--)    { -  tmp=Stdio.stdin->read(0x7fffffff); +  successes=errors=0; +  for(int f=1;f<sizeof(argv);f++) +  { +  tmp=read_bytes(argv[f]);    if(!tmp)    { -  perror("Failed to read test file, errno="+errno()+".\n"); +  werror("Failed to read test file, errno="+errno()+".\n");    exit(1);    } -  } +     -  +     tests=tmp/"\n....\n"; -  +  tmp=0;    tests=tests[0..sizeof(tests)-2];    -  while(loop--) -  { -  successes=errors=0; +  werror("Doing tests in %s (%d tests)\n",argv[f],sizeof(tests));    -  +     for(e=start;e<sizeof(tests);e++)    {    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)    {    if(!clone(compile_string("mixed c() { return "+condition+"; }","Cond "+(e+1)))->c())    {    if(verbose) -  perror("Not doing test "+(e+1)+"\n"); +  werror("Not doing test "+(e+1)+"\n");    successes++;    continue;    }    }       sscanf(test,"%s\n%s",type,test);    sscanf(type,"%*s expected result: %s",type);       if(verbose)    { -  perror("Doing test "+(e+1)+"\n"); +  werror("Doing test "+(e+1)+"\n");    if(verbose>1) -  perror(test+"\n"); +  werror(test+"\n");    }       if(check > 1) _verify_internals();       switch(type)    {    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"); +  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{ -  perror("Test "+(e+1)+" failed.\n"); -  perror(test+"\n"); +  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();   
pike.git/bin/test_pike.pike:183:    if(check > 1) _verify_internals();       switch(type)    {    case "FALSE":    a=!a;       case "TRUE":    if(!a)    { -  perror("Test "+(e+1)+" failed.\n"); -  perror(test+"\n"); +  werror("Test "+(e+1)+" failed.\n"); +  werror(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)); +  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))    { -  perror("Test "+(e+1)+" failed.\n"); -  perror(test+"\n"); -  perror(sprintf("o->a(): %O\n",a)); -  perror(sprintf("o->b(): %O\n",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: -  perror(sprintf("Unknown test type (%O).\n",type)); +  werror(sprintf("Unknown test type (%O).\n",type));    errors++;    }    }       if(check > 2) _verify_internals();       if(fail && errors)    exit(1);       a=b=0;    }    -  if(errors + successes != sizeof(tests)) -  { -  perror("Errors + Successes != number of tests!\n"); -  errors++; -  } -  +     if(errors || verbose)    { -  perror("Failed tests: "+errors+".\n"); +  werror("Failed tests: "+errors+".\n");    }       }    if(mem)    {    int total;    tests=0;    gc();    mapping tmp=_memory_usage();    write(sprintf("%-10s: %6s %10s\n","Category","num","bytes"));
pike.git/bin/test_pike.pike:270:    tmp["num_"+foo+"s"],    tmp[foo+"_bytes"]));    total+=tmp[foo+"_bytes"];    }    }    write(sprintf("%-10s: %6s %10d\n",    "Total",    "",    total));    } +  } +  if(verbose) +  { +  werror("Total tests: %d\n",successes+errors); +  }       return errors;   }