System.Data.SQLite
Hex Artifact Content
Not logged in

## Artifact 9062c83904003b854c2f9cd6ae91f3ea7f66c7bd:

• File Tests/common.eagle — part of check-in [a49d88c5aa] at 2011-09-02 17:57:42 on branch trunk — Add comments to several test suite routines. Also, make sure to strip the directory information from file names provided to the setupDb and cleanupDb test helpers. (user: mistachkin size: 10886)

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 63 6f 6d 6d 6f 6e 2e 65 61 67  .#..# common.eag
0060: 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 57 72 69 74  le --..#..# Writ
0070: 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69 73 74 61  ten by Joe Mista
0080: 63 68 6b 69 6e 2e 0d 0a 23 20 52 65 6c 65 61 73  chkin...# Releas
0090: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00a0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at
00b0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00c0: 23 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  #..#############
00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 23 0d 0a 0d 0a 69 66 20 7b 5b 69 73 45 61 67  ##....if {[isEag
0120: 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 70  le]} then {..  p
0130: 72 6f 63 20 67 65 74 42 75 69 6c 64 59 65 61 72  roc getBuildYear
0140: 20 7b 7d 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20   {} {..    #..
0150: 20 20 23 20 4e 4f 54 45 3a 20 53 65 65 20 69 66    # NOTE: See if
0160: 20 74 68 65 20 22 79 65 61 72 22 20 73 65 74 74   the "year" sett
0170: 69 6e 67 20 68 61 73 20 62 65 65 6e 20 6f 76 65  ing has been ove
0180: 72 72 69 64 64 65 6e 20 62 79 20 74 68 65 20 75  rridden by the u
0190: 73 65 72 20 28 65 2e 67 2e 20 6f 6e 0d 0a 20 20  ser (e.g. on..
01a0: 20 20 23 20 20 20 20 20 20 20 74 68 65 20 63 6f    #       the co
01b0: 6d 6d 61 6e 64 20 6c 69 6e 65 29 2e 20 20 54 68  mmand line).  Th
01c0: 69 73 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63  is controls whic
01d0: 68 20 62 69 6e 61 72 69 65 73 20 77 65 20 61 72  h binaries we ar
01e0: 65 20 74 65 73 74 69 6e 67 2c 0d 0a 20 20 20 20  e testing,..
01f0: 23 20 20 20 20 20 20 20 74 68 6f 73 65 20 70 72  #       those pr
0200: 6f 64 75 63 65 64 20 62 79 20 65 69 74 68 65 72  oduced by either
0210: 20 74 68 65 20 56 69 73 75 61 6c 20 53 74 75 64   the Visual Stud
0220: 69 6f 20 32 30 30 38 20 6f 72 20 56 69 73 75 61  io 2008 or Visua
0230: 6c 20 53 74 75 64 69 6f 0d 0a 20 20 20 20 23 20  l Studio..    #
0240: 20 20 20 20 20 20 32 30 31 30 20 62 75 69 6c 64        2010 build
0250: 20 73 79 73 74 65 6d 73 2e 20 20 54 6f 20 6f 76   systems.  To ov
0260: 65 72 72 69 64 65 20 74 68 69 73 20 76 61 6c 75  erride this valu
0270: 65 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61 6e  e via the comman
0280: 64 20 6c 69 6e 65 2c 0d 0a 20 20 20 20 23 20 20  d line,..    #
0290: 20 20 20 20 20 65 6e 74 65 72 20 61 20 63 6f 6d       enter a com
02a0: 6d 61 6e 64 20 73 69 6d 69 6c 61 72 20 74 6f 20  mand similar to
02b0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 28 61  the following (a
02c0: 6c 6c 20 6f 6e 20 6f 6e 65 20 6c 69 6e 65 29 3a  ll on one line):
02d0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 20  ..    #..    #
02e0: 20 20 20 20 20 45 61 67 6c 65 53 68 65 6c 6c 2e       EagleShell.
02f0: 65 78 65 20 2d 70 72 65 49 6e 69 74 69 61 6c 69  exe -preInitiali
0300: 7a 65 20 22 73 65 74 20 74 65 73 74 5f 79 65 61  ze "set test_yea
0310: 72 20 32 30 30 38 22 0d 0a 20 20 20 20 23 20 20  r 2008"..    #
0320: 20 20 20 20 20 20 20 2d 66 69 6c 65 20 2e 5c 70         -file .\p
0330: 61 74 68 5c 74 6f 5c 61 6c 6c 2e 65 61 67 6c 65  ath\to\all.eagle
0340: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if
0350: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a  {[info exists ::
0360: 74 65 73 74 5f 79 65 61 72 5d 20 26 26 20 5b 73  test_year] && [s
0370: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 3a 3a  tring length $:: 0380: 74 65 73 74 5f 79 65 61 72 5d 20 3e 20 30 7d 20 test_year] > 0} 0390: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 72 65 then {.. re 03a0: 74 75 72 6e 20 24 3a 3a 74 65 73 74 5f 79 65 61 turn$::test_yea
03b0: 72 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d  r..    } else {.
03c0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 65  .      return [e
03d0: 78 70 72 20 7b 5b 68 61 76 65 43 6f 6e 73 74 72  xpr {[haveConstr
03e0: 61 69 6e 74 20 69 6d 61 67 65 52 75 6e 74 69 6d  aint imageRuntim
03f0: 65 34 30 5d 20 3f 20 22 32 30 31 30 22 20 3a 20  e40] ? "2010" :
0400: 22 32 30 30 38 22 7d 5d 0d 0a 20 20 20 20 7d 0d  "2008"}]..    }.
0410: 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20  .  }.....  proc
0420: 67 65 74 42 75 69 6c 64 44 69 72 65 63 74 6f 72  getBuildDirector
0430: 79 20 7b 7d 20 7b 0d 0a 20 20 20 20 23 0d 0a 20  y {} {..    #..
0440: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 65 20 69     # NOTE: See i
0450: 66 20 74 68 65 20 22 6e 61 74 69 76 65 22 20 72  f the "native" r
0460: 75 6e 74 69 6d 65 20 6f 70 74 69 6f 6e 20 68 61  untime option ha
0470: 73 20 62 65 65 6e 20 61 64 64 65 64 2e 20 20 49  s been added.  I
0480: 66 20 73 6f 2c 20 75 73 65 20 74 68 65 0d 0a 20  f so, use the..
0490: 20 20 20 23 20 20 20 20 20 20 20 64 69 72 65 63     #       direc
04a0: 74 6f 72 79 20 66 6f 72 20 74 68 65 20 6d 69 78  tory for the mix
04b0: 65 64 2d 6d 6f 64 65 20 61 73 73 65 6d 62 6c 79  ed-mode assembly
04c0: 2e 20 20 54 6f 20 65 6e 61 62 6c 65 20 74 68 69  .  To enable thi
04d0: 73 20 6f 70 74 69 6f 6e 20 76 69 61 0d 0a 20 20  s option via..
04e0: 20 20 23 20 20 20 20 20 20 20 74 68 65 20 63 6f    #       the co
04f0: 6d 6d 61 6e 64 20 6c 69 6e 65 2c 20 65 6e 74 65  mmand line, ente
0500: 72 20 61 20 63 6f 6d 6d 61 6e 64 20 73 69 6d 69  r a command simi
0510: 6c 61 72 20 74 6f 20 74 68 65 20 66 6f 6c 6c 6f  lar to the follo
0520: 77 69 6e 67 20 28 61 6c 6c 20 6f 6e 0d 0a 20 20  wing (all on..
0530: 20 20 23 20 20 20 20 20 20 20 6f 6e 65 20 6c 69    #       one li
0540: 6e 65 29 3a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ne):..    #..
0550: 20 23 20 20 20 20 20 20 20 45 61 67 6c 65 53 68   #       EagleSh
0560: 65 6c 6c 2e 65 78 65 20 2d 69 6e 69 74 69 61 6c  ell.exe -initial
0570: 69 7a 65 20 2d 72 75 6e 74 69 6d 65 4f 70 74 69  ize -runtimeOpti
0580: 6f 6e 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 23  on native..    #
0590: 20 20 20 20 20 20 20 20 20 2d 66 69 6c 65 20 2e           -file .
05a0: 5c 70 61 74 68 5c 74 6f 5c 61 6c 6c 2e 65 61 67  \path\to\all.eag
05b0: 6c 65 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  le..    #..    #
05c0: 20 20 20 20 20 20 20 54 6f 20 65 6e 61 62 6c 65         To enable
05d0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 76 69 61   this option via
05e0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e   the command lin
05f0: 65 20 70 72 69 6f 72 20 74 6f 20 74 68 65 20 22  e prior to the "
0600: 62 65 74 61 20 31 36 22 0d 0a 20 20 20 20 23 20  beta 16"..    #
0610: 20 20 20 20 20 20 72 65 6c 65 61 73 65 20 6f 66        release of
0620: 20 45 61 67 6c 65 2c 20 74 68 65 20 66 6f 6c 6c   Eagle, the foll
0630: 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 6d 75  owing command mu
0640: 73 74 20 62 65 20 75 73 65 64 20 69 6e 73 74 65  st be used inste
0650: 61 64 20 28 61 6c 73 6f 0d 0a 20 20 20 20 23 20  ad (also..    #
0660: 20 20 20 20 20 20 61 6c 6c 20 6f 6e 20 6f 6e 65        all on one
0670: 20 6c 69 6e 65 29 3a 0d 0a 20 20 20 20 23 0d 0a   line):..    #..
0680: 20 20 20 20 23 20 20 20 20 20 20 20 45 61 67 6c      #       Eagl
0690: 65 53 68 65 6c 6c 2e 65 78 65 20 2d 69 6e 69 74  eShell.exe -init
06a0: 69 61 6c 69 7a 65 20 2d 70 6f 73 74 49 6e 69 74  ialize -postInit
06b0: 69 61 6c 69 7a 65 0d 0a 20 20 20 20 23 20 20 20  ialize..    #
06c0: 20 20 20 20 20 20 22 6f 62 6a 65 63 74 20 69 6e        "object in
06d0: 76 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65 72  voke Interpreter
06e0: 2e 47 65 74 41 63 74 69 76 65 20 41 64 64 52 75  .GetActive AddRu
06f0: 6e 74 69 6d 65 4f 70 74 69 6f 6e 20 6e 61 74 69  ntimeOption nati
0700: 76 65 22 0d 0a 20 20 20 20 23 20 20 20 20 20 20  ve"..    #
0710: 20 20 20 2d 66 69 6c 65 20 2e 5c 70 61 74 68 5c     -file .\path\
0720: 74 6f 5c 61 6c 6c 2e 65 61 67 6c 65 0d 0a 20 20  to\all.eagle..
0730: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 5b 68 61    #..    if {[ha
0740: 73 52 75 6e 74 69 6d 65 4f 70 74 69 6f 6e 20 6e  sRuntimeOption n
0750: 61 74 69 76 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ative]} then {..
0760: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 66 69        return [fi
0770: 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69  le join [file di
0780: 72 6e 61 6d 65 20 24 3a 3a 70 61 74 68 5d 20 62  rname $::path] b 0790: 69 6e 20 5b 67 65 74 42 75 69 6c 64 59 65 61 72 in [getBuildYear 07a0: 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b ] \.. [ 07b0: 6d 61 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f 72 machineToPlatfor 07c0: 6d 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 m$::tcl_platfor
07d0: 6d 28 6d 61 63 68 69 6e 65 29 5d 20 24 3a 3a 74  m(machine)] $::t 07e0: 65 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f est_configuratio 07f0: 6e 5d 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b n].. } else { 0800: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b .. return [ 0810: 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 file join [file 0820: 64 69 72 6e 61 6d 65 20 24 3a 3a 70 61 74 68 5d dirname$::path]
0830: 20 62 69 6e 20 5b 67 65 74 42 75 69 6c 64 59 65   bin [getBuildYe
0840: 61 72 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ar] \..
0850: 20 24 3a 3a 74 65 73 74 5f 63 6f 6e 66 69 67 75   $::test_configu 0860: 72 61 74 69 6f 6e 20 62 69 6e 5d 0d 0a 20 20 20 ration bin].. 0870: 20 7d 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 }.. }..... pr 0880: 6f 63 20 67 65 74 42 75 69 6c 64 46 69 6c 65 4e oc getBuildFileN 0890: 61 6d 65 20 7b 20 66 69 6c 65 4e 61 6d 65 20 7d ame { fileName } 08a0: 20 7b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 5b {.. return [ 08b0: 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 file nativename 08c0: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66 69 6c 65 \.. [file 08d0: 20 6a 6f 69 6e 20 5b 67 65 74 42 75 69 6c 64 44 join [getBuildD 08e0: 69 72 65 63 74 6f 72 79 5d 20 5b 66 69 6c 65 20 irectory] [file 08f0: 74 61 69 6c 20 24 66 69 6c 65 4e 61 6d 65 5d 5d tail$fileName]]
0900: 5d 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f  ]..  }.....  pro
0910: 63 20 67 65 74 42 69 6e 61 72 79 44 69 72 65 63  c getBinaryDirec
0920: 74 6f 72 79 20 7b 7d 20 7b 0d 0a 20 20 20 20 23  tory {} {..    #
0930: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68  ..    # NOTE: Th
0940: 69 73 20 70 72 6f 63 65 64 75 72 65 20 72 65 74  is procedure ret
0950: 75 72 6e 73 20 74 68 65 20 64 69 72 65 63 74 6f  urns the directo
0960: 72 79 20 77 68 65 72 65 20 74 68 65 20 74 65 73  ry where the tes
0970: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20  t application..
0980: 20 20 20 23 20 20 20 20 20 20 20 69 74 73 65 6c     #       itsel
0990: 66 20 28 69 2e 65 2e 20 74 68 65 20 45 61 67 6c  f (i.e. the Eagl
09a0: 65 20 73 68 65 6c 6c 29 20 69 73 20 6c 6f 63 61  e shell) is loca
09b0: 74 65 64 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  ted.  This will
09c0: 62 65 20 75 73 65 64 20 61 73 0d 0a 20 20 20 20  be used as..
09d0: 23 20 20 20 20 20 20 20 74 68 65 20 64 65 73 74  #       the dest
09e0: 69 6e 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  ination for the
09f0: 63 6f 70 69 65 64 20 53 79 73 74 65 6d 2e 44 61  copied System.Da
0a00: 74 61 2e 53 51 4c 69 74 65 20 6e 61 74 69 76 65  ta.SQLite native
0a10: 20 61 6e 64 0d 0a 20 20 20 20 23 20 20 20 20 20   and..    #
0a20: 20 20 6d 61 6e 61 67 65 64 20 61 73 73 65 6d 62    managed assemb
0a30: 6c 69 65 73 20 28 69 2e 65 2e 20 62 65 63 61 75  lies (i.e. becau
0a40: 73 65 20 74 68 69 73 20 69 73 20 6f 6e 65 20 6f  se this is one o
0a50: 66 20 74 68 65 20 66 65 77 20 70 6c 61 63 65 73  f the few places
0a60: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 77 68  ..    #       wh
0a70: 65 72 65 20 74 68 65 20 43 4c 52 20 77 69 6c 6c  ere the CLR will
0a80: 20 61 63 74 75 61 6c 6c 79 20 66 69 6e 64 20 61   actually find a
0a90: 6e 64 20 6c 6f 61 64 20 74 68 65 6d 20 70 72 6f  nd load them pro
0aa0: 70 65 72 6c 79 29 2e 0d 0a 20 20 20 20 23 0d 0a  perly)...    #..
0ab0: 20 20 20 20 72 65 74 75 72 6e 20 5b 69 6e 66 6f      return [info
0ac0: 20 62 69 6e 61 72 79 5d 0d 0a 20 20 7d 0d 0a 0c   binary]..  }...
0ad0: 0d 0a 20 20 70 72 6f 63 20 67 65 74 42 69 6e 61  ..  proc getBina
0ae0: 72 79 46 69 6c 65 4e 61 6d 65 20 7b 20 66 69 6c  ryFileName { fil
0af0: 65 4e 61 6d 65 20 7d 20 7b 0d 0a 20 20 20 20 72  eName } {..    r
0b00: 65 74 75 72 6e 20 5b 66 69 6c 65 20 6e 61 74 69  eturn [file nati
0b10: 76 65 6e 61 6d 65 20 5c 0d 0a 20 20 20 20 20 20  vename \..
0b20: 20 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67 65    [file join [ge
0b30: 74 42 69 6e 61 72 79 44 69 72 65 63 74 6f 72 79  tBinaryDirectory
0b40: 5d 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69  ] [file tail $fi 0b50: 6c 65 4e 61 6d 65 5d 5d 5d 0d 0a 20 20 7d 0d 0a leName]]].. }.. 0b60: 0c 0d 0a 20 20 70 72 6f 63 20 74 72 79 43 6f 70 ... proc tryCop 0b70: 79 42 75 69 6c 64 46 69 6c 65 20 7b 20 66 69 6c yBuildFile { fil 0b80: 65 4e 61 6d 65 20 7d 20 7b 0d 0a 20 20 20 20 23 eName } {.. # 0b90: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 .. # NOTE: If 0ba0: 20 77 65 20 63 61 6e 6e 6f 74 20 63 6f 70 79 20 we cannot copy 0bb0: 74 68 65 20 61 73 73 65 6d 62 6c 79 20 74 68 65 the assembly the 0bc0: 6e 20 69 74 20 69 73 20 70 72 6f 62 61 62 6c 79 n it is probably 0bd0: 20 61 6c 72 65 61 64 79 20 6c 6f 61 64 65 64 2e already loaded. 0be0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 .. #.. set 0bf0: 20 73 6f 75 72 63 65 46 69 6c 65 4e 61 6d 65 20 sourceFileName 0c00: 5b 67 65 74 42 75 69 6c 64 46 69 6c 65 4e 61 6d [getBuildFileNam 0c10: 65 20 24 66 69 6c 65 4e 61 6d 65 5d 0d 0a 0d 0a e$fileName]....
0c20: 20 20 20 20 69 66 20 7b 21 5b 66 69 6c 65 20 65      if {![file e
0c30: 78 69 73 74 73 20 24 73 6f 75 72 63 65 46 69 6c  xists $sourceFil 0c40: 65 4e 61 6d 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a eName]} then {.. 0c50: 20 20 20 20 20 20 74 70 75 74 73 20 24 3a 3a 74 tputs$::t
0c60: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
0c70: 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20  endArgs \..
0c80: 20 20 20 20 20 22 2d 2d 2d 2d 20 73 6b 69 70 70       "---- skipp
0c90: 65 64 20 63 6f 70 79 69 6e 67 20 62 75 69 6c 64  ed copying build
0ca0: 20 66 69 6c 65 20 5c 22 22 20 24 73 6f 75 72 63   file \"" $sourc 0cb0: 65 46 69 6c 65 4e 61 6d 65 20 5c 0d 0a 20 20 20 eFileName \.. 0cc0: 20 20 20 20 20 20 20 22 5c 22 2c 20 69 74 20 64 "\", it d 0cd0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 5c 6e 22 oes not exist\n" 0ce0: 5d 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 ].... retur 0cf0: 6e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 n.. }.... 0d00: 73 65 74 20 74 61 72 67 65 74 46 69 6c 65 4e 61 set targetFileNa 0d10: 6d 65 20 5b 67 65 74 42 69 6e 61 72 79 46 69 6c me [getBinaryFil 0d20: 65 4e 61 6d 65 20 24 66 69 6c 65 4e 61 6d 65 5d eName$fileName]
0d30: 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 63 61 74  ....    if {[cat
0d40: 63 68 20 7b 66 69 6c 65 20 63 6f 70 79 20 2d 66  ch {file copy -f
0d50: 6f 72 63 65 20 24 73 6f 75 72 63 65 46 69 6c 65  orce $sourceFile 0d60: 4e 61 6d 65 20 24 74 61 72 67 65 74 46 69 6c 65 Name$targetFile
0d70: 4e 61 6d 65 7d 5d 20 3d 3d 20 30 7d 20 74 68 65  Name}] == 0} the
0d80: 6e 20 7b 0d 0a 20 20 20 20 20 20 74 70 75 74 73  n {..      tputs
0d90: 20 24 3a 3a 74 65 73 74 5f 63 68 61 6e 6e 65 6c   $::test_channel 0da0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a [appendArgs \.. 0db0: 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 "---- 0dc0: 63 6f 70 69 65 64 20 62 75 69 6c 64 20 66 69 6c copied build fil 0dd0: 65 20 66 72 6f 6d 20 5c 22 22 20 24 73 6f 75 72 e from \""$sour
0de0: 63 65 46 69 6c 65 4e 61 6d 65 20 22 5c 22 20 74  ceFileName "\" t
0df0: 6f 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 20  o \"" \..
0e00: 20 20 20 24 74 61 72 67 65 74 46 69 6c 65 4e 61     $targetFileNa 0e10: 6d 65 20 5c 22 5c 6e 5d 0d 0a 20 20 20 20 7d 20 me \"\n].. } 0e20: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 74 70 else {.. tp 0e30: 75 74 73 20 24 3a 3a 74 65 73 74 5f 63 68 61 6e uts$::test_chan
0e40: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs
0e50: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 22 2d 2d  \..          "--
0e60: 2d 2d 20 66 61 69 6c 65 64 20 74 6f 20 63 6f 70  -- failed to cop
0e70: 79 20 62 75 69 6c 64 20 66 69 6c 65 20 66 72 6f  y build file fro
0e80: 6d 20 5c 22 22 20 24 73 6f 75 72 63 65 46 69 6c  m \"" $sourceFil 0e90: 65 4e 61 6d 65 20 22 5c 22 20 74 6f 20 5c 22 22 eName "\" to \"" 0ea0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 \..$t
0eb0: 61 72 67 65 74 46 69 6c 65 4e 61 6d 65 20 5c 22  argetFileName \"
0ec0: 5c 6e 5d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d  \n]..    }..  }.
0ed0: 0a 0c 0d 0a 20 20 70 72 6f 63 20 74 72 79 44 65  ....  proc tryDe
0ee0: 6c 65 74 65 42 69 6e 61 72 79 46 69 6c 65 20 7b  leteBinaryFile {
0ef0: 20 66 69 6c 65 4e 61 6d 65 20 7d 20 7b 0d 0a 20   fileName } {..
0f00: 20 20 20 73 65 74 20 66 69 6c 65 4e 61 6d 65 20     set fileName
0f10: 5b 67 65 74 42 69 6e 61 72 79 46 69 6c 65 4e 61  [getBinaryFileNa
0f20: 6d 65 20 24 66 69 6c 65 4e 61 6d 65 5d 0d 0a 0d  me $fileName]... 0f30: 0a 20 20 20 20 69 66 20 7b 21 5b 66 69 6c 65 20 . if {![file 0f40: 65 78 69 73 74 73 20 24 66 69 6c 65 4e 61 6d 65 exists$fileName
0f50: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..
0f60: 20 74 70 75 74 73 20 24 3a 3a 74 65 73 74 5f 63   tputs $::test_c 0f70: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 hannel [appendAr 0f80: 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 gs \.. 0f90: 22 2d 2d 2d 2d 20 73 6b 69 70 70 65 64 20 64 65 "---- skipped de 0fa0: 6c 65 74 69 6e 67 20 62 69 6e 61 72 79 20 66 69 leting binary fi 0fb0: 6c 65 20 5c 22 22 20 24 66 69 6c 65 4e 61 6d 65 le \""$fileName
0fc0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 22 5c   \..          "\
0fd0: 22 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 65  ", it does not e
0fe0: 78 69 73 74 5c 6e 22 5d 0d 0a 0d 0a 20 20 20 20  xist\n"]....
0ff0: 20 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 7d 0d    return..    }.
1000: 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 63 61 74 63  ...    if {[catc
1010: 68 20 7b 66 69 6c 65 20 64 65 6c 65 74 65 20 24  h {file delete $1020: 66 69 6c 65 4e 61 6d 65 7d 5d 20 3d 3d 20 30 7d fileName}] == 0} 1030: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 74 then {.. t 1040: 70 75 74 73 20 24 3a 3a 74 65 73 74 5f 63 68 61 puts$::test_cha
1050: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
1060: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 22 2d   \..          "-
1070: 2d 2d 2d 20 64 65 6c 65 74 65 64 20 62 69 6e 61  --- deleted bina
1080: 72 79 20 66 69 6c 65 20 5c 22 22 20 24 66 69 6c  ry file \"" $fil 1090: 65 4e 61 6d 65 20 5c 22 5c 6e 5d 0d 0a 20 20 20 eName \"\n].. 10a0: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 } else {.. 10b0: 20 74 70 75 74 73 20 24 3a 3a 74 65 73 74 5f 63 tputs$::test_c
10c0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
10d0: 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..
10e0: 22 2d 2d 2d 2d 20 66 61 69 6c 65 64 20 74 6f 20  "---- failed to
10f0: 64 65 6c 65 74 65 20 62 69 6e 61 72 79 20 66 69  delete binary fi
1100: 6c 65 20 5c 22 22 20 24 66 69 6c 65 4e 61 6d 65  le \"" $fileName 1110: 20 5c 22 5c 6e 5d 0d 0a 20 20 20 20 7d 0d 0a 20 \"\n].. }.. 1120: 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20 74 72 }..... proc tr 1130: 79 43 6f 70 79 41 73 73 65 6d 62 6c 79 20 7b 20 yCopyAssembly { 1140: 66 69 6c 65 4e 61 6d 65 20 7b 70 64 62 20 74 72 fileName {pdb tr 1150: 75 65 7d 20 7d 20 7b 0d 0a 20 20 20 20 74 72 79 ue} } {.. try 1160: 43 6f 70 79 42 75 69 6c 64 46 69 6c 65 20 24 66 CopyBuildFile$f
1170: 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 20 20 69  ileName....    i
1180: 66 20 7b 24 70 64 62 7d 20 74 68 65 6e 20 7b 0d  f {$pdb} then {. 1190: 0a 20 20 20 20 20 20 74 72 79 43 6f 70 79 42 75 . tryCopyBu 11a0: 69 6c 64 46 69 6c 65 20 5b 61 70 70 65 6e 64 41 ildFile [appendA 11b0: 72 67 73 20 5b 66 69 6c 65 20 72 6f 6f 74 6e 61 rgs [file rootna 11c0: 6d 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20 2e 70 me$fileName] .p
11d0: 64 62 5d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d  db]..    }..  }.
11e0: 0a 0c 0d 0a 20 20 70 72 6f 63 20 74 72 79 44 65  ....  proc tryDe
11f0: 6c 65 74 65 41 73 73 65 6d 62 6c 79 20 7b 20 66  leteAssembly { f
1200: 69 6c 65 4e 61 6d 65 20 7b 70 64 62 20 74 72 75  ileName {pdb tru
1210: 65 7d 20 7d 20 7b 0d 0a 20 20 20 20 74 72 79 44  e} } {..    tryD
1220: 65 6c 65 74 65 42 69 6e 61 72 79 46 69 6c 65 20  eleteBinaryFile
1230: 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 20  $fileName.... 1240: 20 69 66 20 7b 24 70 64 62 7d 20 74 68 65 6e 20 if {$pdb} then
1250: 7b 0d 0a 20 20 20 20 20 20 74 72 79 44 65 6c 65  {..      tryDele
1260: 74 65 42 69 6e 61 72 79 46 69 6c 65 20 5b 61 70  teBinaryFile [ap
1270: 70 65 6e 64 41 72 67 73 20 5b 66 69 6c 65 20 72  pendArgs [file r
1280: 6f 6f 74 6e 61 6d 65 20 24 66 69 6c 65 4e 61 6d  ootname $fileNam 1290: 65 5d 20 2e 70 64 62 5d 0d 0a 20 20 20 20 7d 0d e] .pdb].. }. 12a0: 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20 . }..... proc 12b0: 74 72 79 4c 6f 61 64 41 73 73 65 6d 62 6c 79 20 tryLoadAssembly 12c0: 7b 20 66 69 6c 65 4e 61 6d 65 20 7d 20 7b 0d 0a { fileName } {.. 12d0: 20 20 20 20 73 65 74 20 66 69 6c 65 4e 61 6d 65 set fileName 12e0: 20 5b 67 65 74 42 75 69 6c 64 46 69 6c 65 4e 61 [getBuildFileNa 12f0: 6d 65 20 24 66 69 6c 65 4e 61 6d 65 5d 0d 0a 0d me$fileName]...
1300: 0a 20 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20  .    if {[catch
1310: 7b 73 65 74 20 61 73 73 65 6d 62 6c 79 20 5c 0d  {set assembly \.
1320: 0a 20 20 20 20 20 20 20 20 5b 6f 62 6a 65 63 74  .        [object
1330: 20 6c 6f 61 64 20 2d 6c 6f 61 64 74 79 70 65 20   load -loadtype
1340: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d 7d  File $fileName]} 1350: 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a ] == 0} then {.. 1360: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 #.. # 1370: 20 4e 4f 54 45 3a 20 4e 6f 77 2c 20 61 64 64 20 NOTE: Now, add 1380: 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 74 65 the necessary te 1390: 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0d 0a st constraint... 13a0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 61 #.. a 13b0: 64 64 43 6f 6e 73 74 72 61 69 6e 74 20 5b 66 69 ddConstraint [fi 13c0: 6c 65 20 72 6f 6f 74 6e 61 6d 65 20 5b 66 69 6c le rootname [fil 13d0: 65 20 74 61 69 6c 20 24 66 69 6c 65 4e 61 6d 65 e tail$fileName
13e0: 5d 5d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ]]....      #..
13f0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 52 65 74       # NOTE: Ret
1400: 75 72 6e 20 74 68 65 20 66 75 6c 6c 20 70 61 74  urn the full pat
1410: 68 20 6f 66 20 74 68 65 20 6c 6f 61 64 65 64 20  h of the loaded
1420: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  file...      #..
1430: 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 66 69        return $fi 1440: 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 7d 0d 0a 0d leName.. }... 1450: 0a 20 20 20 20 72 65 74 75 72 6e 20 22 22 0d 0a . return "".. 1460: 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20 65 }..... proc e 1470: 6e 75 6d 65 72 61 62 6c 65 54 6f 53 74 72 69 6e numerableToStrin 1480: 67 20 7b 20 65 6e 75 6d 65 72 61 62 6c 65 20 7d g { enumerable } 1490: 20 7b 0d 0a 20 20 20 20 73 65 74 20 72 65 73 75 {.. set resu 14a0: 6c 74 20 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20 20 lt [list].... 14b0: 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e if {[string len 14c0: 67 74 68 20 24 65 6e 75 6d 65 72 61 62 6c 65 5d gth$enumerable]
14d0: 20 3d 3d 20 30 20 7c 7c 20 24 65 6e 75 6d 65 72   == 0 || $enumer 14e0: 61 62 6c 65 20 65 71 20 22 6e 75 6c 6c 22 7d 20 able eq "null"} 14f0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 72 65 then {.. re 1500: 74 75 72 6e 20 24 72 65 73 75 6c 74 0d 0a 20 20 turn$result..
1510: 20 20 7d 0d 0a 0d 0a 20 20 20 20 6f 62 6a 65 63    }....    objec
1520: 74 20 66 6f 72 65 61 63 68 20 2d 61 6c 69 61 73  t foreach -alias
1530: 20 69 74 65 6d 20 24 65 6e 75 6d 65 72 61 62 6c   item $enumerabl 1540: 65 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b e {.. if {[ 1550: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 69 string length$i
1560: 74 65 6d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  tem] > 0} then {
1570: 0d 0a 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e  ..        lappen
1580: 64 20 72 65 73 75 6c 74 20 5b 24 69 74 65 6d 20  d result [$item 1590: 54 6f 53 74 72 69 6e 67 5d 0d 0a 20 20 20 20 20 ToString].. 15a0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 }.. }.... 15b0: 20 72 65 74 75 72 6e 20 24 72 65 73 75 6c 74 0d return$result.
15c0: 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20  .  }.....  proc
15d0: 63 6f 6d 70 69 6c 65 43 53 68 61 72 70 57 69 74  compileCSharpWit
15e0: 68 20 7b 20 74 65 78 74 20 72 65 73 75 6c 74 73  h { text results
15f0: 56 61 72 4e 61 6d 65 20 65 72 72 6f 72 73 56 61  VarName errorsVa
1600: 72 4e 61 6d 65 20 66 69 6c 65 4e 61 6d 65 73 20  rName fileNames
1610: 61 72 67 73 20 7d 20 7b 0d 0a 20 20 20 20 23 0d  args } {..    #.
1620: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 43 72 65  .    # NOTE: Cre
1630: 61 74 65 20 74 68 65 20 62 61 73 65 20 63 6f 6d  ate the base com
1640: 6d 61 6e 64 20 74 6f 20 65 76 61 6c 75 61 74 65  mand to evaluate
1650: 20 61 6e 64 20 61 64 64 20 74 68 65 20 70 72 6f   and add the pro
1660: 70 65 72 74 79 20 73 65 74 74 69 6e 67 73 0d 0a  perty settings..
1670: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 61 74      #       that
1680: 20 61 72 65 20 61 6c 6d 6f 73 74 20 61 6c 77 61   are almost alwa
1690: 79 73 20 6e 65 65 64 65 64 20 62 79 20 6f 75 72  ys needed by our
16a0: 20 75 6e 69 74 20 74 65 73 74 73 20 28 69 2e 65   unit tests (i.e
16b0: 2e 20 74 68 65 20 53 79 73 74 65 6d 0d 0a 20 20  . the System..
16c0: 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 53 79    #       and Sy
16d0: 73 74 65 6d 2e 44 61 74 61 20 61 73 73 65 6d 62  stem.Data assemb
16e0: 6c 79 20 72 65 66 65 72 65 6e 63 65 73 29 2e 0d  ly references)..
16f0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20  .    #..    set
1700: 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 63 6f  command [list co
1710: 6d 70 69 6c 65 43 53 68 61 72 70 20 24 74 65 78  mpileCSharp $tex 1720: 74 20 72 65 73 75 6c 74 73 20 65 72 72 6f 72 73 t results errors 1730: 20 5c 0d 0a 20 20 20 20 20 20 20 20 52 65 66 65 \.. Refe 1740: 72 65 6e 63 65 64 41 73 73 65 6d 62 6c 69 65 73 rencedAssemblies 1750: 2e 41 64 64 20 53 79 73 74 65 6d 2e 64 6c 6c 20 .Add System.dll 1760: 52 65 66 65 72 65 6e 63 65 64 41 73 73 65 6d 62 ReferencedAssemb 1770: 6c 69 65 73 2e 41 64 64 20 5c 0d 0a 20 20 20 20 lies.Add \.. 1780: 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e System.Data. 1790: 64 6c 6c 20 52 65 66 65 72 65 6e 63 65 64 41 73 dll ReferencedAs 17a0: 73 65 6d 62 6c 69 65 73 2e 41 64 64 20 53 79 73 semblies.Add Sys 17b0: 74 65 6d 2e 58 6d 6c 2e 64 6c 6c 5d 0d 0a 0d 0a tem.Xml.dll].... 17c0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 #.. # NOT 17d0: 45 3a 20 41 64 64 20 61 6c 6c 20 74 68 65 20 70 E: Add all the p 17e0: 72 6f 76 69 64 65 64 20 66 69 6c 65 20 6e 61 6d rovided file nam 17f0: 65 73 20 61 73 20 61 73 73 65 6d 62 6c 79 20 72 es as assembly r 1800: 65 66 65 72 65 6e 63 65 73 2e 0d 0a 20 20 20 20 eferences... 1810: 23 0d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 66 #.. foreach f 1820: 69 6c 65 4e 61 6d 65 20 24 66 69 6c 65 4e 61 6d ileName$fileNam
1830: 65 73 20 7b 0d 0a 20 20 20 20 20 20 6c 61 70 70  es {..      lapp
1840: 65 6e 64 20 63 6f 6d 6d 61 6e 64 20 52 65 66 65  end command Refe
1850: 72 65 6e 63 65 64 41 73 73 65 6d 62 6c 69 65 73  rencedAssemblies
1860: 2e 41 64 64 20 5b 67 65 74 42 75 69 6c 64 46 69  .Add [getBuildFi
1870: 6c 65 4e 61 6d 65 20 24 66 69 6c 65 4e 61 6d 65  leName $fileName 1880: 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 ].. }.... 1890: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 #.. # NOTE: A 18a0: 64 64 20 74 68 65 20 65 78 74 72 61 20 61 72 67 dd the extra arg 18b0: 75 6d 65 6e 74 73 2c 20 69 66 20 61 6e 79 2c 20 uments, if any, 18c0: 74 6f 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 74 to the command t 18d0: 6f 20 65 76 61 6c 75 61 74 65 2e 0d 0a 20 20 20 o evaluate... 18e0: 20 23 0d 0a 20 20 20 20 65 76 61 6c 20 6c 61 70 #.. eval lap 18f0: 70 65 6e 64 20 63 6f 6d 6d 61 6e 64 20 24 61 72 pend command$ar
1900: 67 73 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  gs....    #..
1910: 20 23 20 4e 4f 54 45 3a 20 41 6c 69 61 73 20 74   # NOTE: Alias t
1920: 68 65 20 63 6f 6d 70 69 6c 65 72 20 6c 6f 63 61  he compiler loca
1930: 6c 20 72 65 73 75 6c 74 73 20 61 6e 64 20 65 72  l results and er
1940: 72 6f 72 73 20 76 61 72 69 61 62 6c 65 73 20 74  rors variables t
1950: 6f 20 74 68 65 0d 0a 20 20 20 20 23 20 20 20 20  o the..    #
1960: 20 20 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65     variable name
1970: 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 6f 75  s provided by ou
1980: 72 20 63 61 6c 6c 65 72 2e 0d 0a 20 20 20 20 23  r caller...    #
1990: 0d 0a 20 20 20 20 75 70 76 61 72 20 31 20 24 72  ..    upvar 1 $r 19a0: 65 73 75 6c 74 73 56 61 72 4e 61 6d 65 20 72 65 esultsVarName re 19b0: 73 75 6c 74 73 0d 0a 20 20 20 20 75 70 76 61 72 sults.. upvar 19c0: 20 31 20 24 65 72 72 6f 72 73 56 61 72 4e 61 6d 1$errorsVarNam
19d0: 65 20 65 72 72 6f 72 73 0d 0a 0d 0a 20 20 20 20  e errors....
19e0: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 45  #..    # NOTE: E
19f0: 76 61 6c 75 61 74 65 20 74 68 65 20 63 6f 6e 73  valuate the cons
1a00: 74 72 75 63 74 65 64 20 5b 63 6f 6d 70 69 6c 65  tructed [compile
1a10: 43 53 68 61 72 70 5d 20 63 6f 6d 6d 61 6e 64 20  CSharp] command
1a20: 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 0d 0a  and return the..
1a30: 20 20 20 20 23 20 20 20 20 20 20 20 72 65 73 75      #       resu
1a40: 6c 74 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  lt...    #..
1a50: 65 76 61 6c 20 24 63 6f 6d 6d 61 6e 64 0d 0a 20  eval $command.. 1a60: 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20 73 65 }..... proc se 1a70: 74 75 70 44 62 20 7b 66 69 6c 65 4e 61 6d 65 20 tupDb {fileName 1a80: 7b 6d 6f 64 65 20 22 22 7d 20 7b 64 65 6c 65 74 {mode ""} {delet 1a90: 65 20 22 22 7d 20 7b 65 78 74 72 61 20 22 22 7d e ""} {extra ""} 1aa0: 20 7b 76 61 72 4e 61 6d 65 20 64 62 7d 7d 20 7b {varName db}} { 1ab0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e .. #.. # N 1ac0: 4f 54 45 3a 20 46 6f 72 20 6e 6f 77 2c 20 61 6c OTE: For now, al 1ad0: 6c 20 74 65 73 74 20 64 61 74 61 62 61 73 65 73 l test databases 1ae0: 20 75 73 65 64 20 62 79 20 74 68 65 20 74 65 73 used by the tes 1af0: 74 20 73 75 69 74 65 20 61 72 65 20 70 6c 61 63 t suite are plac 1b00: 65 64 20 69 6e 74 6f 0d 0a 20 20 20 20 23 20 20 ed into.. # 1b10: 20 20 20 20 20 74 68 65 20 74 65 6d 70 6f 72 61 the tempora 1b20: 72 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 45 ry directory. E 1b30: 61 63 68 20 64 61 74 61 62 61 73 65 20 75 73 65 ach database use 1b40: 64 20 62 79 20 61 20 74 65 73 74 20 73 68 6f 75 d by a test shou 1b50: 6c 64 20 62 65 0d 0a 20 20 20 20 23 20 20 20 20 ld be.. # 1b60: 20 20 20 63 6c 65 61 6e 65 64 20 75 70 20 62 79 cleaned up by 1b70: 20 74 68 61 74 20 74 65 73 74 20 75 73 69 6e 67 that test using 1b80: 20 74 68 65 20 22 63 6c 65 61 6e 75 70 44 62 22 the "cleanupDb" 1b90: 20 70 72 6f 63 65 64 75 72 65 2c 20 62 65 6c 6f procedure, belo 1ba0: 77 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 w... #.. s 1bb0: 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66 69 6c et fileName [fil 1bc0: 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70 6f e join [getTempo 1bd0: 72 61 72 79 50 61 74 68 5d 20 5b 66 69 6c 65 20 raryPath] [file 1be0: 74 61 69 6c 20 24 66 69 6c 65 4e 61 6d 65 5d 5d tail$fileName]]
1bf0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
1c00: 20 4e 4f 54 45 3a 20 42 79 20 64 65 66 61 75 6c   NOTE: By defaul
1c10: 74 2c 20 64 65 6c 65 74 65 20 61 6e 79 20 70 72  t, delete any pr
1c20: 65 2d 65 78 69 73 74 69 6e 67 20 64 61 74 61 62  e-existing datab
1c30: 61 73 65 20 77 69 74 68 20 74 68 65 20 73 61 6d  ase with the sam
1c40: 65 20 66 69 6c 65 0d 0a 20 20 20 20 23 20 20 20  e file..    #
1c50: 20 20 20 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 23      name...    #
1c60: 0d 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e  ..    if {[strin
1c70: 67 20 6c 65 6e 67 74 68 20 24 64 65 6c 65 74 65  g length $delete 1c80: 5d 20 3d 3d 20 30 20 7c 7c 20 24 64 65 6c 65 74 ] == 0 ||$delet
1c90: 65 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  e} then {..
1ca0: 20 63 61 74 63 68 20 7b 66 69 6c 65 20 64 65 6c   catch {file del
1cb0: 65 74 65 20 24 66 69 6c 65 4e 61 6d 65 7d 0d 0a  ete $fileName}.. 1cc0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a }.... #.. 1cd0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 52 65 66 65 # NOTE: Refe 1ce0: 72 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 r to the specifi 1cf0: 65 64 20 76 61 72 69 61 62 6c 65 20 28 65 2e 67 ed variable (e.g 1d00: 2e 20 22 64 62 22 29 20 69 6e 20 74 68 65 20 63 . "db") in the c 1d10: 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 0d 0a 20 ontext of the.. 1d20: 20 20 20 23 20 20 20 20 20 20 20 63 61 6c 6c 65 # calle 1d30: 72 2e 20 20 54 68 65 20 68 61 6e 64 6c 65 20 74 r. The handle t 1d40: 6f 20 74 68 65 20 6f 70 65 6e 65 64 20 64 61 74 o the opened dat 1d50: 61 62 61 73 65 20 77 69 6c 6c 20 62 65 20 73 74 abase will be st 1d60: 6f 72 65 64 20 74 68 65 72 65 2e 0d 0a 20 20 20 ored there... 1d70: 20 23 0d 0a 20 20 20 20 75 70 76 61 72 20 31 20 #.. upvar 1 1d80: 24 76 61 72 4e 61 6d 65 20 64 62 0d 0a 0d 0a 20$varName db....
1d90: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
1da0: 3a 20 53 74 61 72 74 20 62 75 69 6c 64 69 6e 67  : Start building
1db0: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection
1dc0: 73 74 72 69 6e 67 2e 20 20 54 68 65 20 6f 6e 6c  string.  The onl
1dd0: 79 20 72 65 71 75 69 72 65 64 20 70 6f 72 74 69  y required porti
1de0: 6f 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  on..    #
1df0: 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  of the connectio
1e00: 6e 20 73 74 72 69 6e 67 20 69 73 20 74 68 65 20  n string is the
1e10: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e 61  database file na
1e20: 6d 65 20 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20  me itself...
1e30: 23 0d 0a 20 20 20 20 73 65 74 20 63 6f 6e 6e 65  #..    set conne
1e40: 63 74 69 6f 6e 20 7b 44 61 74 61 20 53 6f 75 72  ction {Data Sour
1e50: 63 65 3d 24 7b 66 69 6c 65 4e 61 6d 65 7d 7d 0d  ce=${fileName}}. 1e60: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 ... #.. # 1e70: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 63 61 6c NOTE: If the cal 1e80: 6c 65 72 20 73 70 65 63 69 66 69 65 64 20 61 20 ler specified a 1e90: 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 2c 20 61 64 journal mode, ad 1ea0: 64 20 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 d the necessary 1eb0: 70 6f 72 74 69 6f 6e 0d 0a 20 20 20 20 23 20 20 portion.. # 1ec0: 20 20 20 20 20 6f 66 20 74 68 65 20 63 6f 6e 6e of the conn 1ed0: 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 6e 6f ection string no 1ee0: 77 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 w... #.. i 1ef0: 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 f {[string lengt 1f00: 68 20 24 6d 6f 64 65 5d 20 3e 20 30 7d 20 74 68 h$mode] > 0} th
1f10: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 61 70 70 65  en {..      appe
1f20: 6e 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 7b 3b  nd connection {;
1f30: 4a 6f 75 72 6e 61 6c 20 4d 6f 64 65 3d 24 7b 6d  Journal Mode=${m 1f40: 6f 64 65 7d 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a ode}}.. }.... 1f50: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 #.. # NOT 1f60: 45 3a 20 49 66 20 74 68 65 20 63 61 6c 6c 65 72 E: If the caller 1f70: 20 73 70 65 63 69 66 69 65 64 20 61 6e 20 65 78 specified an ex 1f80: 74 72 61 20 70 61 79 6c 6f 61 64 20 74 6f 20 74 tra payload to t 1f90: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 he connection st 1fa0: 72 69 6e 67 2c 0d 0a 20 20 20 20 23 20 20 20 20 ring,.. # 1fb0: 20 20 20 61 70 70 65 6e 64 20 69 74 20 6e 6f 77 append it now 1fc0: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 ... #.. if 1fd0: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 {[string length 1fe0: 20 24 65 78 74 72 61 5d 20 3e 20 30 7d 20 74 68$extra] > 0} th
1ff0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 61 70 70 65  en {..      appe
2000: 6e 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 5c 3b  nd connection \;
2010: 20 24 65 78 74 72 61 0d 0a 20 20 20 20 7d 0d 0a   $extra.. }.. 2020: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e .. #.. # N 2030: 4f 54 45 3a 20 4f 70 65 6e 20 74 68 65 20 64 61 OTE: Open the da 2040: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f tabase connectio 2050: 6e 20 6e 6f 77 2c 20 70 6c 61 63 69 6e 67 20 74 n now, placing t 2060: 68 65 20 6f 70 61 71 75 65 20 68 61 6e 64 6c 65 he opaque handle 2070: 20 76 61 6c 75 65 0d 0a 20 20 20 20 23 20 20 20 value.. # 2080: 20 20 20 20 69 6e 74 6f 20 74 68 65 20 76 61 72 into the var 2090: 69 61 62 6c 65 20 73 70 65 63 69 66 69 65 64 20 iable specified 20a0: 62 79 20 74 68 65 20 63 61 6c 6c 65 72 2e 0d 0a by the caller... 20b0: 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 64 #.. set d 20c0: 62 20 5b 73 71 6c 20 6f 70 65 6e 20 2d 74 79 70 b [sql open -typ 20d0: 65 20 53 51 4c 69 74 65 20 5b 73 75 62 73 74 20 e SQLite [subst 20e0: 24 63 6f 6e 6e 65 63 74 69 6f 6e 5d 5d 0d 0a 20$connection]]..
20f0: 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f 63 20 63 6c   }.....  proc cl
2100: 65 61 6e 75 70 44 62 20 7b 66 69 6c 65 4e 61 6d  eanupDb {fileNam
2110: 65 20 7b 76 61 72 4e 61 6d 65 20 64 62 7d 7d 20  e {varName db}}
2120: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    #
2130: 4e 4f 54 45 3a 20 52 65 66 65 72 20 74 6f 20 74  NOTE: Refer to t
2140: 68 65 20 73 70 65 63 69 66 69 65 64 20 76 61 72  he specified var
2150: 69 61 62 6c 65 20 28 65 2e 67 2e 20 22 64 62 22  iable (e.g. "db"
2160: 29 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74  ) in the context
2170: 20 6f 66 20 74 68 65 0d 0a 20 20 20 20 23 20 20   of the..    #
2180: 20 20 20 20 20 63 61 6c 6c 65 72 2e 20 20 54 68       caller.  Th
2190: 65 20 68 61 6e 64 6c 65 20 74 6f 20 74 68 65 20  e handle to the
21a0: 6f 70 65 6e 65 64 20 64 61 74 61 62 61 73 65 20  opened database
21b0: 69 73 20 73 74 6f 72 65 64 20 74 68 65 72 65 2e  is stored there.
21c0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 75 70 76  ..    #..    upv
21d0: 61 72 20 31 20 24 76 61 72 4e 61 6d 65 20 64 62  ar 1 $varName db 21e0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 .... #.. # 21f0: 20 4e 4f 54 45 3a 20 43 6c 6f 73 65 20 74 68 65 NOTE: Close the 2200: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 connection to t 2210: 68 65 20 64 61 74 61 62 61 73 65 20 6e 6f 77 2e he database now. 2220: 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 61 6c This should al 2230: 6c 6f 77 20 75 73 20 74 6f 0d 0a 20 20 20 20 23 low us to.. # 2240: 20 20 20 20 20 20 20 64 65 6c 65 74 65 20 74 68 delete th 2250: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 61 74 e underlying dat 2260: 61 62 61 73 65 20 66 69 6c 65 2e 0d 0a 20 20 20 abase file... 2270: 20 23 0d 0a 20 20 20 20 63 61 74 63 68 20 7b 73 #.. catch {s 2280: 71 6c 20 63 6c 6f 73 65 20 24 64 62 7d 0d 0a 0d ql close$db}...
2290: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
22a0: 54 45 3a 20 44 65 6c 65 74 65 20 74 68 65 20 74  TE: Delete the t
22b0: 65 73 74 20 64 61 74 61 62 61 73 65 20 66 69 6c  est database fil
22c0: 65 20 6e 6f 77 2e 20 20 46 6f 72 20 6e 6f 77 2c  e now.  For now,
22d0: 20 61 6c 6c 20 74 65 73 74 20 64 61 74 61 62 61   all test databa
22e0: 73 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  se..    #
22f0: 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64  files are stored
2300: 20 69 6e 20 74 68 65 20 74 65 6d 70 6f 72 61 72   in the temporar
2310: 79 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20  y directory...
2320: 20 20 23 0d 0a 20 20 20 20 63 61 74 63 68 20 7b    #..    catch {
2330: 66 69 6c 65 20 64 65 6c 65 74 65 20 5b 66 69 6c  file delete [fil
2340: 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70 6f  e join [getTempo
2350: 72 61 72 79 50 61 74 68 5d 20 5b 66 69 6c 65 20  raryPath] [file
2360: 74 61 69 6c 20 24 66 69 6c 65 4e 61 6d 65 5d 5d  tail $fileName]] 2370: 7d 0d 0a 20 20 7d 0d 0a 0c 0d 0a 20 20 70 72 6f }.. }..... pro 2380: 63 20 72 75 6e 53 51 4c 69 74 65 54 65 73 74 50 c runSQLiteTestP 2390: 72 6f 6c 6f 67 75 65 20 7b 7d 20 7b 0d 0a 20 20 rologue {} {.. 23a0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a #.. # NOTE: 23b0: 20 53 6b 69 70 20 72 75 6e 6e 69 6e 67 20 6f 75 Skip running ou 23c0: 72 20 63 75 73 74 6f 6d 20 70 72 6f 6c 6f 67 75 r custom prologu 23d0: 65 20 69 66 20 74 68 65 20 6d 61 69 6e 20 6f 6e e if the main on 23e0: 65 20 68 61 73 20 62 65 65 6e 20 73 6b 69 70 70 e has been skipp 23f0: 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 ed... #.. 2400: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 if {![info exist 2410: 73 20 3a 3a 6e 6f 28 70 72 6f 6c 6f 67 75 65 2e s ::no(prologue. 2420: 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d eagle)]} then {. 2430: 0a 20 20 20 20 20 20 74 72 79 44 65 6c 65 74 65 . tryDelete 2440: 41 73 73 65 6d 62 6c 79 20 53 51 4c 69 74 65 2e Assembly SQLite. 2450: 49 6e 74 65 72 6f 70 2e 64 6c 6c 0d 0a 20 20 20 Interop.dll.. 2460: 20 20 20 74 72 79 44 65 6c 65 74 65 41 73 73 65 tryDeleteAsse 2470: 6d 62 6c 79 20 53 79 73 74 65 6d 2e 44 61 74 61 mbly System.Data 2480: 2e 53 51 4c 69 74 65 2e 64 6c 6c 0d 0a 20 20 20 .SQLite.dll.. 2490: 20 20 20 74 72 79 44 65 6c 65 74 65 41 73 73 65 tryDeleteAsse 24a0: 6d 62 6c 79 20 53 79 73 74 65 6d 2e 44 61 74 61 mbly System.Data 24b0: 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c .SQLite.Linq.dll 24c0: 0d 0a 0d 0a 20 20 20 20 20 20 74 72 79 43 6f 70 .... tryCop 24d0: 79 41 73 73 65 6d 62 6c 79 20 53 51 4c 69 74 65 yAssembly SQLite 24e0: 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c 0d 0a 20 20 .Interop.dll.. 24f0: 20 20 20 20 74 72 79 43 6f 70 79 41 73 73 65 6d tryCopyAssem 2500: 62 6c 79 20 53 79 73 74 65 6d 2e 44 61 74 61 2e bly System.Data. 2510: 53 51 4c 69 74 65 2e 64 6c 6c 0d 0a 20 20 20 20 SQLite.dll.. 2520: 20 20 74 72 79 43 6f 70 79 41 73 73 65 6d 62 6c tryCopyAssembl 2530: 79 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 y System.Data.SQ 2540: 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 0d 0a 0d Lite.Linq.dll... 2550: 0a 20 20 20 20 20 20 74 72 79 4c 6f 61 64 41 73 . tryLoadAs 2560: 73 65 6d 62 6c 79 20 53 79 73 74 65 6d 2e 44 61 sembly System.Da 2570: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 0d 0a 20 ta.SQLite.dll.. 2580: 20 20 20 20 20 74 72 79 4c 6f 61 64 41 73 73 65 tryLoadAsse 2590: 6d 62 6c 79 20 53 79 73 74 65 6d 2e 44 61 74 61 mbly System.Data 25a0: 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c .SQLite.Linq.dll 25b0: 0d 0a 0d 0a 20 20 20 20 20 20 63 61 74 63 68 20 .... catch 25c0: 7b 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74 73 {.. tputs 25d0: 20 24 3a 3a 74 65 73 74 5f 63 68 61 6e 6e 65 6c$::test_channel
25e0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a   [appendArgs \..
25f0: 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d              "---
2600: 2d 20 66 69 6c 65 20 76 65 72 73 69 6f 6e 20 6f  - file version o
2610: 66 20 5c 22 53 51 4c 69 74 65 2e 49 6e 74 65 72  f \"SQLite.Inter
2620: 6f 70 2e 64 6c 6c 5c 22 2e 2e 2e 20 22 20 5c 0d  op.dll\"... " \.
2630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 66 69  .            [fi
2640: 6c 65 20 76 65 72 73 69 6f 6e 20 5b 67 65 74 42  le version [getB
2650: 69 6e 61 72 79 46 69 6c 65 4e 61 6d 65 20 53 51  inaryFileName SQ
2660: 4c 69 74 65 2e 49 6e 74 65 72 6f 70 2e 64 6c 6c  Lite.Interop.dll
2670: 5d 5d 20 5c 6e 5d 0d 0a 20 20 20 20 20 20 7d 0d  ]] \n]..      }.
2680: 0a 0d 0a 20 20 20 20 20 20 63 61 74 63 68 20 7b  ...      catch {
2690: 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74 73 20  ..        tputs
26a0: 24 3a 3a 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  $::test_channel 26b0: 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 [appendArgs \.. 26c0: 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d "---- 26d0: 20 66 69 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66 file version of 26e0: 20 5c 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 \"System.Data.S 26f0: 51 4c 69 74 65 2e 64 6c 6c 5c 22 2e 2e 2e 20 22 QLite.dll\"... " 2700: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 \.. 2710: 5b 66 69 6c 65 20 76 65 72 73 69 6f 6e 20 5b 67 [file version [g 2720: 65 74 42 69 6e 61 72 79 46 69 6c 65 4e 61 6d 65 etBinaryFileName 2730: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c System.Data.SQL 2740: 69 74 65 2e 64 6c 6c 5d 5d 20 5c 6e 5d 0d 0a 20 ite.dll]] \n].. 2750: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }.... 2760: 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 catch {.. 2770: 20 74 70 75 74 73 20 24 3a 3a 74 65 73 74 5f 63 tputs$::test_c
2780: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
2790: 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..
27a0: 20 20 22 2d 2d 2d 2d 20 66 69 6c 65 20 76 65 72    "---- file ver
27b0: 73 69 6f 6e 20 6f 66 20 5c 22 53 79 73 74 65 6d  sion of \"System
27c0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 4c 69 6e  .Data.SQLite.Lin
27d0: 71 2e 64 6c 6c 5c 22 2e 2e 2e 20 22 20 5c 0d 0a  q.dll\"... " \..
27e0: 20 20 20 20 20 20 20 20 20 20 20 20 5b 66 69 6c              [fil
27f0: 65 20 76 65 72 73 69 6f 6e 20 5b 67 65 74 42 69  e version [getBi
2800: 6e 61 72 79 46 69 6c 65 4e 61 6d 65 20 53 79 73  naryFileName Sys
2810: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
2820: 4c 69 6e 71 2e 64 6c 6c 5d 5d 20 5c 6e 5d 0d 0a  Linq.dll]] \n]..
2830: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....
2840: 20 73 65 74 20 61 73 73 65 6d 62 6c 69 65 73 20   set assemblies
2850: 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 41  [object invoke A
2860: 70 70 44 6f 6d 61 69 6e 2e 43 75 72 72 65 6e 74  ppDomain.Current
2870: 44 6f 6d 61 69 6e 20 47 65 74 41 73 73 65 6d 62  Domain GetAssemb
2880: 6c 69 65 73 5d 0d 0a 0d 0a 20 20 20 20 20 20 6f  lies]....      o
2890: 62 6a 65 63 74 20 66 6f 72 65 61 63 68 20 61 73  bject foreach as
28a0: 73 65 6d 62 6c 79 20 24 61 73 73 65 6d 62 6c 69  sembly $assembli 28b0: 65 73 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 es {.. if 28c0: 20 7b 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 {[string match 28d0: 5c 7b 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 \{System.Data.SQ 28e0: 4c 69 74 65 2a 20 24 61 73 73 65 6d 62 6c 79 5d Lite*$assembly]
28f0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..
2900: 20 20 20 20 74 70 75 74 73 20 24 3a 3a 74 65 73      tputs $::tes 2910: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e t_channel [appen 2920: 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 dArgs \.. 2930: 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 66 6f 75 "---- fou 2940: 6e 64 20 61 73 73 65 6d 62 6c 79 3a 20 22 20 24 nd assembly: "$
2950: 61 73 73 65 6d 62 6c 79 20 5c 6e 5d 0d 0a 20 20  assembly \n]..
2960: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
2970: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0c 0d  ..    }..  }....
2980: 0a 20 20 70 72 6f 63 20 72 75 6e 53 51 4c 69 74  .  proc runSQLit
2990: 65 54 65 73 74 45 70 69 6c 6f 67 75 65 20 7b 7d  eTestEpilogue {}
29a0: 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23   {..    #..    #
29b0: 20 4e 4f 54 45 3a 20 53 6b 69 70 20 72 75 6e 6e   NOTE: Skip runn
29c0: 69 6e 67 20 6f 75 72 20 63 75 73 74 6f 6d 20 65  ing our custom e
29d0: 70 69 6c 6f 67 75 65 20 69 66 20 74 68 65 20 6d  pilogue if the m
29e0: 61 69 6e 20 6f 6e 65 20 68 61 73 20 62 65 65 6e  ain one has been
29f0: 20 73 6b 69 70 70 65 64 2e 0d 0a 20 20 20 20 23   skipped...    #
2a00: 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
2a10: 20 65 78 69 73 74 73 20 3a 3a 6e 6f 28 65 70 69   exists ::no(epi
2a20: 6c 6f 67 75 65 2e 65 61 67 6c 65 29 5d 7d 20 74  logue.eagle)]} t
2a30: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
2a40: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
2a50: 72 20 6e 6f 77 2c 20 6e 6f 74 68 69 6e 67 20 69  r now, nothing i
2a60: 73 20 64 6f 6e 65 20 68 65 72 65 2e 0d 0a 20 20  s done here...
2a70: 20 20 20 20 23 0d 0a 20 20 20 20 7d 0d 0a 20 20      #..    }..
2a80: 7d 0d 0a 7d 0d 0a                                }..}..