System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 4bceffb09cafac6f1fe09d0694bee8a2cbcc9184:


0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0050: 0a 23 0d 0a 23 20 74 65 73 74 6c 6f 67 2e 65 61  .#..# testlog.ea
0060: 67 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 45 78 74  gle --..#..# Ext
0070: 65 6e 73 69 62 6c 65 20 41 64 61 70 74 61 62 6c  ensible Adaptabl
0080: 65 20 47 65 6e 65 72 61 6c 69 7a 65 64 20 4c 6f  e Generalized Lo
0090: 67 69 63 20 45 6e 67 69 6e 65 20 28 45 61 67 6c  gic Engine (Eagl
00a0: 65 29 0d 0a 23 20 45 61 67 6c 65 20 54 65 73 74  e)..# Eagle Test
00b0: 20 4c 6f 67 20 50 61 63 6b 61 67 65 20 46 69 6c   Log Package Fil
00c0: 65 0d 0a 23 0d 0a 23 20 43 6f 70 79 72 69 67 68  e..#..# Copyrigh
00d0: 74 20 28 63 29 20 32 30 30 37 2d 32 30 31 32 20  t (c) 2007-2012 
00e0: 62 79 20 4a 6f 65 20 4d 69 73 74 61 63 68 6b 69  by Joe Mistachki
00f0: 6e 2e 20 20 41 6c 6c 20 72 69 67 68 74 73 20 72  n.  All rights r
0100: 65 73 65 72 76 65 64 2e 0d 0a 23 0d 0a 23 20 53  eserved...#..# S
0110: 65 65 20 74 68 65 20 66 69 6c 65 20 22 6c 69 63  ee the file "lic
0120: 65 6e 73 65 2e 74 65 72 6d 73 22 20 66 6f 72 20  ense.terms" for 
0130: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75  information on u
0140: 73 61 67 65 20 61 6e 64 20 72 65 64 69 73 74 72  sage and redistr
0150: 69 62 75 74 69 6f 6e 20 6f 66 0d 0a 23 20 74 68  ibution of..# th
0160: 69 73 20 66 69 6c 65 2c 20 61 6e 64 20 66 6f 72  is file, and for
0170: 20 61 20 44 49 53 43 4c 41 49 4d 45 52 20 4f 46   a DISCLAIMER OF
0180: 20 41 4c 4c 20 57 41 52 52 41 4e 54 49 45 53 2e   ALL WARRANTIES.
0190: 0d 0a 23 0d 0a 23 20 52 43 53 3a 20 40 28 23 29  ..#..# RCS: @(#)
01a0: 20 24 49 64 3a 20 24 0d 0a 23 0d 0a 23 23 23 23   $Id: $..#..####
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01f0: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 23  ###########....#
0200: 0d 0a 23 20 4e 4f 54 45 3a 20 55 73 65 20 6f 75  ..# NOTE: Use ou
0210: 72 20 6f 77 6e 20 6e 61 6d 65 73 70 61 63 65 20  r own namespace 
0220: 68 65 72 65 20 62 65 63 61 75 73 65 20 65 76 65  here because eve
0230: 6e 20 74 68 6f 75 67 68 20 77 65 20 64 6f 20 6e  n though we do n
0240: 6f 74 20 64 69 72 65 63 74 6c 79 0d 0a 23 20 20  ot directly..#  
0250: 20 20 20 20 20 73 75 70 70 6f 72 74 20 6e 61 6d       support nam
0260: 65 73 70 61 63 65 73 20 6f 75 72 73 65 6c 76 65  espaces ourselve
0270: 73 2c 20 77 65 20 64 6f 20 6e 6f 74 20 77 61 6e  s, we do not wan
0280: 74 20 74 6f 20 70 6f 6c 6c 75 74 65 20 74 68 65  t to pollute the
0290: 20 67 6c 6f 62 61 6c 0d 0a 23 20 20 20 20 20 20   global..#      
02a0: 20 6e 61 6d 65 73 70 61 63 65 20 69 66 20 74 68   namespace if th
02b0: 69 73 20 73 63 72 69 70 74 20 61 63 74 75 61 6c  is script actual
02c0: 6c 79 20 65 6e 64 73 20 75 70 20 62 65 69 6e 67  ly ends up being
02d0: 20 65 76 61 6c 75 61 74 65 64 20 69 6e 20 54 63   evaluated in Tc
02e0: 6c 2e 0d 0a 23 0d 0a 6e 61 6d 65 73 70 61 63 65  l...#..namespace
02f0: 20 65 76 61 6c 20 3a 3a 45 61 67 6c 65 20 7b 0d   eval ::Eagle {.
0300: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
0310: 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 65  This procedure e
0320: 6d 69 74 73 20 61 20 6d 65 73 73 61 67 65 20 74  mits a message t
0330: 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  o the specified 
0340: 63 68 61 6e 6e 65 6c 20 61 6e 64 20 61 64 64 73  channel and adds
0350: 0d 0a 20 20 23 20 20 20 20 20 20 20 69 74 20 74  ..  #       it t
0360: 6f 20 74 68 65 20 74 65 73 74 20 6c 6f 67 20 71  o the test log q
0370: 75 65 75 65 2e 0d 0a 20 20 23 0d 0a 20 20 70 72  ueue...  #..  pr
0380: 6f 63 20 74 71 70 75 74 73 20 7b 20 63 68 61 6e  oc tqputs { chan
0390: 6e 65 6c 20 73 74 72 69 6e 67 20 7d 20 7b 0d 0a  nel string } {..
03a0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
03b0: 45 3a 20 49 66 20 61 6e 20 6f 75 74 70 75 74 20  E: If an output 
03c0: 63 68 61 6e 6e 65 6c 20 77 61 73 20 70 72 6f 76  channel was prov
03d0: 69 64 65 64 2c 20 75 73 65 20 69 74 3b 20 6f 74  ided, use it; ot
03e0: 68 65 72 77 69 73 65 2c 20 69 67 6e 6f 72 65 0d  herwise, ignore.
03f0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65  .    #       the
0400: 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 23   message...    #
0410: 0d 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e  ..    if {[strin
0420: 67 20 6c 65 6e 67 74 68 20 24 63 68 61 6e 6e 65  g length $channe
0430: 6c 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  l] > 0} then {..
0440: 20 20 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65        puts -none
0450: 77 6c 69 6e 65 20 24 63 68 61 6e 6e 65 6c 20 24  wline $channel $
0460: 73 74 72 69 6e 67 0d 0a 20 20 20 20 7d 0d 0a 0d  string..    }...
0470: 0a 20 20 20 20 74 71 6c 6f 67 20 24 73 74 72 69  .    tqlog $stri
0480: 6e 67 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 23 0d  ng..  }.....  #.
0490: 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20  .  # NOTE: This 
04a0: 70 72 6f 63 65 64 75 72 65 20 61 64 64 73 20 61  procedure adds a
04b0: 20 6d 65 73 73 61 67 65 20 74 6f 20 74 68 65 20   message to the 
04c0: 74 65 73 74 20 6c 6f 67 20 71 75 65 75 65 2e 20  test log queue. 
04d0: 20 49 74 20 77 69 6c 6c 20 62 65 0d 0a 20 20 23   It will be..  #
04e0: 20 20 20 20 20 20 20 77 72 69 74 74 65 6e 20 74         written t
04f0: 6f 20 74 68 65 20 74 65 73 74 20 6c 6f 67 20 66  o the test log f
0500: 69 6c 65 20 74 68 65 20 6e 65 78 74 20 74 69 6d  ile the next tim
0510: 65 20 74 68 65 20 5b 74 6c 6f 67 5d 20 70 72 6f  e the [tlog] pro
0520: 63 65 64 75 72 65 0d 0a 20 20 23 20 20 20 20 20  cedure..  #     
0530: 20 20 69 73 20 63 61 6c 6c 65 64 2e 20 20 49 66    is called.  If
0540: 20 74 68 65 20 5b 74 6c 6f 67 5d 20 70 72 6f 63   the [tlog] proc
0550: 65 64 75 72 65 20 69 73 20 6e 65 76 65 72 20 63  edure is never c
0560: 61 6c 6c 65 64 2c 20 74 68 65 6e 20 69 74 20 77  alled, then it w
0570: 69 6c 6c 0d 0a 20 20 23 20 20 20 20 20 20 20 6e  ill..  #       n
0580: 65 76 65 72 20 62 65 20 77 72 69 74 74 65 6e 20  ever be written 
0590: 74 6f 20 74 68 65 20 74 65 73 74 20 6c 6f 67 20  to the test log 
05a0: 66 69 6c 65 2e 0d 0a 20 20 23 0d 0a 20 20 70 72  file...  #..  pr
05b0: 6f 63 20 74 71 6c 6f 67 20 7b 20 73 74 72 69 6e  oc tqlog { strin
05c0: 67 20 7d 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  g } {..    #..  
05d0: 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 61 6e 20    # NOTE: If an 
05e0: 65 6d 70 74 79 20 73 74 72 69 6e 67 20 69 73 20  empty string is 
05f0: 73 75 70 70 6c 69 65 64 20 62 79 20 74 68 65 20  supplied by the 
0600: 63 61 6c 6c 65 72 2c 20 64 6f 20 6e 6f 74 68 69  caller, do nothi
0610: 6e 67 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ng...    #..    
0620: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  if {[string leng
0630: 74 68 20 24 73 74 72 69 6e 67 5d 20 3e 20 30 7d  th $string] > 0}
0640: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
0650: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
0660: 2a 53 50 45 43 49 41 4c 2a 20 54 68 65 20 73 70  *SPECIAL* The sp
0670: 65 63 69 61 6c 20 67 6c 6f 62 61 6c 20 76 61 72  ecial global var
0680: 69 61 62 6c 65 20 22 74 65 73 74 5f 6c 6f 67 5f  iable "test_log_
0690: 71 75 65 75 65 22 20 69 73 20 75 73 65 64 0d 0a  queue" is used..
06a0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 62 79        #       by
06b0: 20 74 68 65 20 5b 74 6c 6f 67 5d 20 73 63 72 69   the [tlog] scri
06c0: 70 74 20 6c 69 62 72 61 72 79 20 70 72 6f 63 65  pt library proce
06d0: 64 75 72 65 20 66 72 6f 6d 20 74 68 65 20 74 65  dure from the te
06e0: 73 74 20 70 61 63 6b 61 67 65 20 74 6f 0d 0a 20  st package to.. 
06f0: 20 20 20 20 20 23 20 20 20 20 20 20 20 65 6e 61       #       ena
0700: 62 6c 65 20 69 74 20 74 6f 20 65 6d 69 74 20 22  ble it to emit "
0710: 71 75 65 75 65 64 22 20 64 61 74 61 20 69 6e 74  queued" data int
0720: 6f 20 74 68 65 20 74 65 73 74 20 6c 6f 67 20 66  o the test log f
0730: 69 6c 65 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20  ile prior to..  
0740: 20 20 20 20 23 20 20 20 20 20 20 20 65 6d 69 74      #       emit
0750: 74 69 6e 67 20 74 68 65 20 73 74 72 69 6e 67 20  ting the string 
0760: 72 65 71 75 65 73 74 65 64 20 62 79 20 69 74 73  requested by its
0770: 20 63 61 6c 6c 65 72 2e 20 20 54 68 65 20 6f 6e   caller.  The on
0780: 6c 79 20 6a 6f 62 20 66 6f 72 0d 0a 20 20 20 20  ly job for..    
0790: 20 20 23 20 20 20 20 20 20 20 74 68 69 73 20 70    #       this p
07a0: 72 6f 63 65 64 75 72 65 20 69 73 20 74 6f 20 70  rocedure is to p
07b0: 6f 70 75 6c 61 74 65 20 74 68 65 20 22 74 65 73  opulate the "tes
07c0: 74 5f 6c 6f 67 5f 71 75 65 75 65 22 20 76 61 72  t_log_queue" var
07d0: 69 61 62 6c 65 20 66 6f 72 0d 0a 20 20 20 20 20  iable for..     
07e0: 20 23 20 20 20 20 20 20 20 6c 61 74 65 72 20 75   #       later u
07f0: 73 65 20 62 79 20 74 68 65 20 74 65 73 74 20 70  se by the test p
0800: 61 63 6b 61 67 65 2e 0d 0a 20 20 20 20 20 20 23  ackage...      #
0810: 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66  ..      if {[inf
0820: 6f 20 65 78 69 73 74 73 20 3a 3a 74 65 73 74 5f  o exists ::test_
0830: 6c 6f 67 5f 71 75 65 75 65 5d 7d 20 74 68 65 6e  log_queue]} then
0840: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
0850: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 55         # NOTE: U
0860: 73 65 20 74 68 65 20 6e 65 78 74 20 71 75 65 75  se the next queu
0870: 65 64 20 74 65 73 74 20 6c 6f 67 20 65 6e 74 72  ed test log entr
0880: 79 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  y...        #.. 
0890: 20 20 20 20 20 20 20 73 65 74 20 65 6e 74 72 79         set entry
08a0: 20 5b 65 78 70 72 20 7b 5b 61 72 72 61 79 20 73   [expr {[array s
08b0: 69 7a 65 20 3a 3a 74 65 73 74 5f 6c 6f 67 5f 71  ize ::test_log_q
08c0: 75 65 75 65 5d 20 2b 20 31 7d 5d 0d 0a 20 20 20  ueue] + 1}]..   
08d0: 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
08e0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
08f0: 23 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20  # NOTE: Use the 
0900: 66 69 72 73 74 20 71 75 65 75 65 64 20 74 65 73  first queued tes
0910: 74 20 6c 6f 67 20 65 6e 74 72 79 2e 0d 0a 20 20  t log entry...  
0920: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
0930: 20 73 65 74 20 65 6e 74 72 79 20 31 0d 0a 20 20   set entry 1..  
0940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
0950: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
0960: 41 64 64 20 74 68 65 20 6e 65 77 20 65 6e 74 72  Add the new entr
0970: 79 20 74 6f 20 74 68 65 20 74 65 73 74 20 6c 6f  y to the test lo
0980: 67 20 71 75 65 75 65 2e 20 20 41 6c 6c 20 65 6e  g queue.  All en
0990: 74 72 69 65 73 20 77 69 6c 6c 20 62 65 0d 0a 20  tries will be.. 
09a0: 20 20 20 20 20 23 20 20 20 20 20 20 20 73 65 6e       #       sen
09b0: 74 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20  t to the actual 
09c0: 74 65 73 74 20 6c 6f 67 20 66 69 6c 65 20 74 68  test log file th
09d0: 65 20 76 65 72 79 20 6e 65 78 74 20 74 69 6d 65  e very next time
09e0: 20 74 68 65 20 5b 74 6c 6f 67 5d 0d 0a 20 20 20   the [tlog]..   
09f0: 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d 6d 61     #       comma
0a00: 6e 64 20 66 72 6f 6d 20 74 68 65 20 74 65 73 74  nd from the test
0a10: 20 70 61 63 6b 61 67 65 20 69 73 20 65 78 65 63   package is exec
0a20: 75 74 65 64 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  uted...      #..
0a30: 20 20 20 20 20 20 73 65 74 20 3a 3a 74 65 73 74        set ::test
0a40: 5f 6c 6f 67 5f 71 75 65 75 65 28 24 65 6e 74 72  _log_queue($entr
0a50: 79 29 20 24 73 74 72 69 6e 67 0d 0a 20 20 20 20  y) $string..    
0a60: 7d 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e 20  }....    return 
0a70: 22 22 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 23 0d  ""..  }.....  #.
0a80: 0a 20 20 23 20 4e 4f 54 45 3a 20 50 72 6f 76 69  .  # NOTE: Provi
0a90: 64 65 20 74 68 65 20 45 61 67 6c 65 20 22 74 65  de the Eagle "te
0aa0: 73 74 20 6c 6f 67 22 20 70 61 63 6b 61 67 65 20  st log" package 
0ab0: 74 6f 20 74 68 65 20 69 6e 74 65 72 70 72 65 74  to the interpret
0ac0: 65 72 2e 0d 0a 20 20 23 0d 0a 20 20 70 61 63 6b  er...  #..  pack
0ad0: 61 67 65 20 70 72 6f 76 69 64 65 20 45 61 67 6c  age provide Eagl
0ae0: 65 2e 54 65 73 74 2e 4c 6f 67 20 5c 0d 0a 20 20  e.Test.Log \..  
0af0: 20 20 5b 65 78 70 72 20 7b 5b 69 73 45 61 67 6c    [expr {[isEagl
0b00: 65 5d 20 3f 20 5b 69 6e 66 6f 20 65 6e 67 69 6e  e] ? [info engin
0b10: 65 20 50 61 74 63 68 4c 65 76 65 6c 5d 20 3a 20  e PatchLevel] : 
0b20: 22 31 2e 30 22 7d 5d 0d 0a 7d 0d 0a 0c           "1.0"}]..}...