Megatest

Hex Artifact Content
Login

Artifact e50a47bd5d58e5712d84ca128798df541b3b0e48:


0000: 3b 3b 20 28 63 29 20 32 30 30 36 2c 32 30 30 37  ;; (c) 2006,2007
0010: 2c 32 30 30 38 2c 32 30 30 39 20 4d 61 74 74 68  ,2008,2009 Matth
0020: 65 77 20 57 65 6c 6c 61 6e 64 20 6d 61 74 74 40  ew Welland matt@
0030: 6b 69 61 74 6f 61 2e 63 6f 6d 0a 3b 3b 20 20 0a  kiatoa.com.;;  .
0040: 3b 3b 20 20 20 4c 69 63 65 6e 73 65 20 47 50 4c  ;;   License GPL
0050: 2e 0a 0a 3b 3b 20 64 65 66 69 6e 65 20 79 6f 75  ...;; define you
0060: 72 20 68 6f 6f 6b 73 0a 28 68 6f 6f 6b 3a 66 69  r hooks.(hook:fi
0070: 72 73 74 2d 65 72 72 6f 72 20 20 20 22 65 63 68  rst-error   "ech
0080: 6f 20 5c 22 45 72 72 6f 72 20 68 6f 6f 6b 20 61  o \"Error hook a
0090: 63 74 69 76 61 74 65 64 3a 20 23 7b 65 73 63 61  ctivated: #{esca
00a0: 70 65 64 20 65 72 72 6d 73 67 7d 5c 22 22 29 0a  ped errmsg}\"").
00b0: 28 68 6f 6f 6b 3a 66 69 72 73 74 2d 77 61 72 6e  (hook:first-warn
00c0: 69 6e 67 20 22 65 63 68 6f 20 5c 22 47 6f 74 20  ing "echo \"Got 
00d0: 77 61 72 6e 69 6e 67 3a 20 23 7b 65 73 63 61 70  warning: #{escap
00e0: 65 64 20 77 61 72 6e 6d 73 67 7d 5c 22 22 29 0a  ed warnmsg}\"").
00f0: 28 68 6f 6f 6b 3a 76 61 6c 75 65 20 22 65 63 68  (hook:value "ech
0100: 6f 20 5c 22 56 61 6c 75 65 20 68 6f 6f 6b 20 61  o \"Value hook a
0110: 63 74 69 76 61 74 65 64 3a 20 65 78 70 65 63 74  ctivated: expect
0120: 65 64 3d 23 7b 65 78 70 65 63 74 65 64 7d 2c 20  ed=#{expected}, 
0130: 6d 65 61 73 75 72 65 64 3d 23 7b 6d 65 61 73 75  measured=#{measu
0140: 72 65 64 7d 2c 20 74 6f 6c 65 72 61 6e 63 65 3d  red}, tolerance=
0150: 23 7b 74 6f 6c 65 72 61 6e 63 65 7d 2c 20 6d 65  #{tolerance}, me
0160: 73 73 61 67 65 3d 23 7b 6d 65 73 73 61 67 65 7d  ssage=#{message}
0170: 5c 22 22 29 0a 0a 3b 3b 20 66 69 72 73 74 20 65  \"")..;; first e
0180: 6e 73 75 72 65 20 79 6f 75 72 20 72 75 6e 20 61  nsure your run a
0190: 74 20 6c 65 61 73 74 20 73 74 61 72 74 65 64 0a  t least started.
01a0: 3b 3b 0a 28 74 72 69 67 67 65 72 20 22 49 6e 69  ;;.(trigger "Ini
01b0: 74 22 20 20 20 20 20 23 2f 54 68 69 73 20 69 73  t"     #/This is
01c0: 20 61 20 68 65 61 64 65 72 2f 29 0a 28 74 72 69   a header/).(tri
01d0: 67 67 65 72 20 22 49 6e 69 74 45 6e 64 22 20 20  gger "InitEnd"  
01e0: 23 2f 5e 5c 73 2a 24 2f 29 0a 28 73 65 63 74 69  #/^\s*$/).(secti
01f0: 6f 6e 20 22 49 6e 69 74 22 20 22 49 6e 69 74 22  on "Init" "Init"
0200: 20 22 49 6e 69 74 45 6e 64 22 29 0a 0a 28 74 72   "InitEnd")..(tr
0210: 69 67 67 65 72 20 22 42 6f 64 79 22 20 20 20 20  igger "Body"    
0220: 20 23 2f 5e 2e 2a 24 2f 29 20 3b 3b 20 61 6e 79   #/^.*$/) ;; any
0230: 74 68 69 6e 67 20 73 74 61 72 74 73 20 74 68 65  thing starts the
0240: 20 62 6f 64 79 0a 3b 3b 20 28 74 72 69 67 67 65   body.;; (trigge
0250: 72 20 22 45 6e 64 42 6f 64 79 22 20 20 23 2f 54  r "EndBody"  #/T
0260: 68 69 73 20 68 61 64 20 62 65 74 74 65 72 20 6e  his had better n
0270: 65 76 65 72 20 6d 61 74 63 68 2f 29 0a 0a 28 73  ever match/)..(s
0280: 65 63 74 69 6f 6e 20 22 42 6f 64 79 22 20 20 20  ection "Body"   
0290: 20 20 22 42 6f 64 79 22 20 22 45 6e 64 42 6f 64    "Body" "EndBod
02a0: 79 22 29 0a 0a 28 74 72 69 67 67 65 72 20 22 42  y")..(trigger "B
02b0: 6c 61 68 32 22 20 20 20 20 23 2f 5e 62 65 67 69  lah2"    #/^begi
02c0: 6e 20 42 6c 61 68 32 2f 29 0a 28 74 72 69 67 67  n Blah2/).(trigg
02d0: 65 72 20 22 42 6c 61 68 32 45 6e 64 22 20 23 2f  er "Blah2End" #/
02e0: 5e 65 6e 64 20 42 6c 61 68 32 2f 29 0a 28 73 65  ^end Blah2/).(se
02f0: 63 74 69 6f 6e 20 22 42 6c 61 68 32 22 20 20 20  ction "Blah2"   
0300: 20 22 42 6c 61 68 32 22 20 22 42 6c 61 68 32 45   "Blah2" "Blah2E
0310: 6e 64 22 29 0a 0a 28 65 78 70 65 63 74 3a 72 65  nd")..(expect:re
0320: 71 75 69 72 65 64 20 69 6e 20 22 49 6e 69 74 22  quired in "Init"
0330: 20 20 3d 20 31 20 22 48 65 61 64 65 72 22 20 20    = 1 "Header"  
0340: 20 20 20 20 23 2f 54 68 69 73 20 69 73 20 61 20      #/This is a 
0350: 68 65 61 64 65 72 2f 29 0a 28 65 78 70 65 63 74  header/).(expect
0360: 3a 72 65 71 75 69 72 65 64 20 69 6e 20 22 4c 6f  :required in "Lo
0370: 67 46 69 6c 65 42 6f 64 79 22 20 3e 20 30 20 22  gFileBody" > 0 "
0380: 53 6f 6d 65 74 68 69 6e 67 20 72 65 71 75 69 72  Something requir
0390: 65 64 20 62 75 74 20 6e 6f 74 20 66 6f 75 6e 64  ed but not found
03a0: 22 20 23 2f 54 68 69 73 20 69 73 20 72 65 71 75  " #/This is requ
03b0: 69 72 65 64 20 62 75 74 20 6e 6f 74 20 66 6f 75  ired but not fou
03c0: 6e 64 2f 29 0a 28 65 78 70 65 63 74 3a 76 61 6c  nd/).(expect:val
03d0: 75 65 20 20 20 20 69 6e 20 22 4c 6f 67 46 69 6c  ue    in "LogFil
03e0: 65 42 6f 64 79 22 20 31 2e 39 20 30 2e 31 20 22  eBody" 1.9 0.1 "
03f0: 4f 75 74 70 75 74 20 76 6f 6c 74 61 67 65 22 20  Output voltage" 
0400: 23 2f 4d 65 61 73 75 72 65 64 20 76 6f 6c 74 61  #/Measured volta
0410: 67 65 20 6f 75 74 70 75 74 3a 5c 73 2a 28 5b 5c  ge output:\s*([\
0420: 64 5c 2e 5c 2b 5c 2d 65 5d 2b 29 76 2f 29 0a 28  d\.\+\-e]+)v/).(
0430: 65 78 70 65 63 74 3a 76 61 6c 75 65 20 20 20 20  expect:value    
0440: 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22  in "LogFileBody"
0450: 20 30 2e 35 20 30 2e 31 20 22 4f 75 74 70 75 74   0.5 0.1 "Output
0460: 20 63 75 72 72 65 6e 74 22 20 23 2f 4d 65 61 73   current" #/Meas
0470: 75 72 65 64 20 6f 75 74 70 75 74 20 63 75 72 72  ured output curr
0480: 65 6e 74 3a 5c 73 2a 28 5b 5c 64 5c 2e 5c 2b 5c  ent:\s*([\d\.\+\
0490: 2d 65 5d 2b 29 6d 41 2f 29 0a 28 65 78 70 65 63  -e]+)mA/).(expec
04a0: 74 3a 76 61 6c 75 65 20 20 20 20 69 6e 20 22 4c  t:value    in "L
04b0: 6f 67 46 69 6c 65 42 6f 64 79 22 20 31 31 30 65  ogFileBody" 110e
04c0: 39 20 32 65 39 20 22 41 20 62 69 67 20 6e 75 6d  9 2e9 "A big num
04d0: 62 65 72 20 28 66 69 72 73 74 29 22 20 23 2f 46  ber (first)" #/F
04e0: 72 65 71 3a 5c 73 2a 28 5b 5c 64 5c 2e 5c 2b 5c  req:\s*([\d\.\+\
04f0: 2d 65 5d 2b 29 5c 73 2b 48 7a 2f 29 0a 28 65 78  -e]+)\s+Hz/).(ex
0500: 70 65 63 74 3a 76 61 6c 75 65 20 20 20 20 69 6e  pect:value    in
0510: 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 31   "LogFileBody" 1
0520: 31 30 65 39 20 31 65 39 20 22 41 20 62 69 67 20  10e9 1e9 "A big 
0530: 6e 75 6d 62 65 72 20 28 73 65 63 6f 6e 64 29 2c  number (second),
0540: 20 68 6f 6f 6b 20 6e 6f 74 20 63 61 6c 6c 65 64   hook not called
0550: 22 20 23 2f 46 72 65 71 3a 5c 73 2a 28 5b 5c 64  " #/Freq:\s*([\d
0560: 5c 2e 5c 2b 5c 2d 65 5d 2b 29 48 7a 2f 29 0a 28  \.\+\-e]+)Hz/).(
0570: 65 78 70 65 63 74 3a 76 61 6c 75 65 20 20 20 20  expect:value    
0580: 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22  in "LogFileBody"
0590: 20 31 31 30 65 39 20 31 65 39 20 22 41 20 62 69   110e9 1e9 "A bi
05a0: 67 20 6e 75 6d 62 65 72 20 28 6e 65 76 65 72 20  g number (never 
05b0: 61 63 74 69 76 61 74 65 64 29 22 20 23 2f 46 72  activated)" #/Fr
05c0: 65 71 3a 5c 73 2a 28 5b 5c 64 5c 2e 5c 2b 5c 2d  eq:\s*([\d\.\+\-
05d0: 65 5d 2b 29 7a 48 2f 29 0a 0a 3b 3b 20 55 73 69  e]+)zH/)..;; Usi
05e0: 6e 67 20 6d 61 74 63 68 20 6e 75 6d 62 65 72 0a  ng match number.
05f0: 28 65 78 70 65 63 74 3a 76 61 6c 75 65 20 20 20  (expect:value   
0600: 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79   in "LogFileBody
0610: 22 20 31 2e 39 20 30 2e 31 20 22 54 69 6d 65 20  " 1.9 0.1 "Time 
0620: 56 6f 6c 74 61 67 65 22 20 23 2f 6f 75 74 3a 20  Voltage" #/out: 
0630: 28 5c 64 2b 29 5c 73 2b 28 5c 64 2b 29 2f 20 6d  (\d+)\s+(\d+)/ m
0640: 61 74 63 68 3a 20 32 29 0a 0a 3b 3b 20 43 6f 6d  atch: 2)..;; Com
0650: 70 61 72 69 73 6f 6e 20 69 6e 73 74 65 61 64 20  parison instead 
0660: 6f 66 20 74 6f 6c 65 72 61 6e 63 65 0a 28 65 78  of tolerance.(ex
0670: 70 65 63 74 3a 76 61 6c 75 65 20 20 20 20 69 6e  pect:value    in
0680: 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 31   "LogFileBody" 1
0690: 2e 39 20 3e 20 20 20 22 54 69 6d 65 20 76 6f 6c  .9 >   "Time vol
06a0: 74 61 67 65 22 20 23 2f 6f 75 74 3a 20 28 5c 64  tage" #/out: (\d
06b0: 2b 29 5c 73 2b 28 5c 64 2b 29 2f 20 6d 61 74 63  +)\s+(\d+)/ matc
06c0: 68 3a 20 32 29 0a 0a 28 65 78 70 65 63 74 3a 69  h: 2)..(expect:i
06d0: 67 6e 6f 72 65 20 20 20 69 6e 20 22 42 6c 61 68  gnore   in "Blah
06e0: 32 22 20 3c 20 39 39 20 22 46 41 4c 53 45 20 45  2" < 99 "FALSE E
06f0: 52 52 4f 52 22 20 23 2f 45 52 52 4f 52 2f 29 0a  RROR" #/ERROR/).
0700: 28 65 78 70 65 63 74 3a 69 67 6e 6f 72 65 20 20  (expect:ignore  
0710: 20 69 6e 20 22 42 6f 64 79 22 20 20 3c 20 39 39   in "Body"  < 99
0720: 20 22 49 67 6e 6f 72 65 20 74 68 65 20 77 6f 72   "Ignore the wor
0730: 64 20 65 72 72 6f 72 20 69 6e 20 63 6f 6d 6d 65  d error in comme
0740: 6e 74 73 22 20 23 2f 5e 5c 2f 5c 2f 2e 2a 65 72  nts" #/^\/\/.*er
0750: 72 6f 72 2f 29 0a 28 65 78 70 65 63 74 3a 77 61  ror/).(expect:wa
0760: 72 6e 69 6e 67 20 20 69 6e 20 22 42 6f 64 79 22  rning  in "Body"
0770: 20 20 3d 20 30 20 22 41 6e 79 20 77 61 72 6e 69    = 0 "Any warni
0780: 6e 67 22 20 23 2f 57 41 52 4e 49 4e 47 2f 29 0a  ng" #/WARNING/).
0790: 28 65 78 70 65 63 74 3a 65 72 72 6f 72 20 20 20  (expect:error   
07a0: 20 69 6e 20 22 42 6f 64 79 22 20 20 3d 20 30 20   in "Body"  = 0 
07b0: 22 45 52 52 4f 52 20 42 4c 41 48 22 20 20 28 6c  "ERROR BLAH"  (l
07c0: 69 73 74 20 23 2f 45 52 52 4f 52 2f 20 23 2f 65  ist #/ERROR/ #/e
07d0: 72 72 6f 72 2f 29 29 20 3b 3b 20 62 75 74 20 64  rror/)) ;; but d
07e0: 69 73 61 6c 6c 6f 77 20 61 6e 79 20 6f 74 68 65  isallow any othe
07f0: 72 20 65 72 72 6f 72 73 0a 0a 3b 28 65 78 70 65  r errors..;(expe
0800: 63 74 20 69 6e 20 22 49 6e 69 74 22 20 20 3c 20  ct in "Init"  < 
0810: 31 20 22 4a 75 6e 6b 22 20 20 20 20 20 20 20 20  1 "Junk"        
0820: 23 2f 54 68 69 73 20 69 73 20 62 6f 67 75 73 2f  #/This is bogus/
0830: 29 0a                                            ).