|
|
1.1 ! root 1: #! /bin/csh -f ! 2: # ! 3: # $Header$ ! 4: # ! 5: # ptest - test a project module ! 6: # ! 7: # Author: Peter J. Nicklin ! 8: # ! 9: set template = t.Makefile ! 10: ! 11: top: ! 12: ! 13: if ($#argv > 0) then ! 14: switch ($argv[1]) ! 15: case -d: ! 16: set debug ! 17: shift ! 18: breaksw ! 19: case -F*: ! 20: if ($argv[1] != -F) then ! 21: set argv[1] = `echo $argv[1] | sed -e s/-F//` ! 22: else if ($#argv < 2) then ! 23: set error ! 24: breaksw ! 25: else ! 26: shift ! 27: endif ! 28: set template = $argv[1] ! 29: shift ! 30: breaksw ! 31: case -P*: ! 32: if ($argv[1] != -P) then ! 33: set argv[1] = `echo $argv[1] | sed -e s/-P//` ! 34: else if ($#argv < 2) then ! 35: set error ! 36: breaksw ! 37: else ! 38: shift ! 39: endif ! 40: pushd . >& /dev/null ! 41: eval `chproject -f $argv[1]` ! 42: if ($status != 0) exit(1) ! 43: popd >& /dev/null ! 44: shift ! 45: breaksw ! 46: case -*: ! 47: echo "ptest: bad option $argv[1]" ! 48: set error ! 49: shift ! 50: breaksw ! 51: default: ! 52: goto next ! 53: breaksw ! 54: endsw ! 55: goto top ! 56: endif ! 57: ! 58: next: ! 59: ! 60: if ($?error) then ! 61: echo "ptest: usage: ptest [-d] [-F template] [-P projectname] [module ...]" ! 62: exit(1) ! 63: endif ! 64: ! 65: if (!($?PROJECT)) then ! 66: echo "ptest: no project environment" ! 67: exit(1) ! 68: endif ! 69: ! 70: # does the test case directory exist? ! 71: if (!(-e $PROJECT/test)) then ! 72: echo "ptest: $PROJECT/test: No such file or directory" ! 73: exit(1) ! 74: endif ! 75: ! 76: # test all modules ! 77: if ($#argv < 1) then ! 78: pushd $PROJECT/test >& /dev/null ! 79: foreach test (`ls`) ! 80: if ($test =~ *.a) set argv = ($argv $test:r) ! 81: end ! 82: if ($#argv < 1) then ! 83: echo "ptest: no test cases available" ! 84: exit(1) ! 85: endif ! 86: popd >& /dev/null ! 87: endif ! 88: ! 89: # remove compilable test programs ! 90: foreach file (`ls`) ! 91: switch ($file) ! 92: case T*.sh: ! 93: breaksw ! 94: case T*.*: ! 95: rm -f $file ! 96: breaksw ! 97: endsw ! 98: end ! 99: ! 100: foreach test ($argv[*]) ! 101: # extract test files from archive ! 102: if (!(-e $PROJECT/test/$test.a)) then ! 103: echo "ptest: test case $test not found" ! 104: continue ! 105: endif ! 106: echo -n "$test:q: extracting archive ... " ! 107: ar xo $PROJECT/test/$test.a ! 108: ! 109: # Compile test program ! 110: unset userscript ! 111: foreach program (T*.*) ! 112: switch ($program) ! 113: case T*.sh: ! 114: set userscript ! 115: breaksw ! 116: default: ! 117: echo -n "compiling test ... " ! 118: mkmf -cd -fT_makefile -F$template PROGRAM=T$test ! 119: make -f T_makefile -s >& E$test ! 120: if ($status != 0) goto badtest ! 121: breaksw ! 122: endsw ! 123: end ! 124: ! 125: # Run test ! 126: echo -n "executing test ... " ! 127: if ($?userscript) then ! 128: # User supplied test script ! 129: T$test.sh >>& E$test ! 130: if ($status != 0) goto badtest ! 131: else if (-e I$test) then ! 132: # Default test script with input ! 133: T$test < I$test |& diff - O$test >>& E$test ! 134: if ($status != 0) goto badtest ! 135: else ! 136: # Default test script without input ! 137: T$test |& diff - O$test >>& E$test ! 138: if ($status != 0) goto badtest ! 139: endif ! 140: ! 141: if (!($?debug)) rm -f E$test T$test* I$test O$test T_makefile ! 142: echo done ! 143: continue ! 144: ! 145: badtest: ! 146: if (!($?debug)) rm -f T$test* I$test O$test T_makefile ! 147: echo failed ! 148: set error ! 149: end ! 150: ! 151: if ($?error) exit(1) ! 152: exit(0)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.