System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e9019913a4debb60f39c975f12bc7c22a06e7e22:


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 76 65 6e 64 6f 72 2e 65 61 67  .#..# vendor.eag
0060: 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 45 78 74 65  le --..#..# Exte
0070: 6e 73 69 62 6c 65 20 41 64 61 70 74 61 62 6c 65  nsible Adaptable
0080: 20 47 65 6e 65 72 61 6c 69 7a 65 64 20 4c 6f 67   Generalized Log
0090: 69 63 20 45 6e 67 69 6e 65 20 28 45 61 67 6c 65  ic Engine (Eagle
00a0: 29 0d 0a 23 20 56 65 6e 64 6f 72 20 49 6e 69 74  )..# Vendor Init
00b0: 69 61 6c 69 7a 61 74 69 6f 6e 20 46 69 6c 65 20  ialization File 
00c0: 66 6f 72 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  for System.Data.
00d0: 53 51 4c 69 74 65 0d 0a 23 0d 0a 23 20 43 6f 70  SQLite..#..# Cop
00e0: 79 72 69 67 68 74 20 28 63 29 20 32 30 30 37 2d  yright (c) 2007-
00f0: 32 30 31 32 20 62 79 20 4a 6f 65 20 4d 69 73 74  2012 by Joe Mist
0100: 61 63 68 6b 69 6e 2e 20 20 41 6c 6c 20 72 69 67  achkin.  All rig
0110: 68 74 73 20 72 65 73 65 72 76 65 64 2e 0d 0a 23  hts reserved...#
0120: 0d 0a 23 20 53 65 65 20 74 68 65 20 66 69 6c 65  ..# See the file
0130: 20 22 6c 69 63 65 6e 73 65 2e 74 65 72 6d 73 22   "license.terms"
0140: 20 66 6f 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e   for information
0150: 20 6f 6e 20 75 73 61 67 65 20 61 6e 64 20 72 65   on usage and re
0160: 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 66 0d  distribution of.
0170: 0a 23 20 74 68 69 73 20 66 69 6c 65 2c 20 61 6e  .# this file, an
0180: 64 20 66 6f 72 20 61 20 44 49 53 43 4c 41 49 4d  d for a DISCLAIM
0190: 45 52 20 4f 46 20 41 4c 4c 20 57 41 52 52 41 4e  ER OF ALL WARRAN
01a0: 54 49 45 53 2e 0d 0a 23 0d 0a 23 20 52 43 53 3a  TIES...#..# RCS:
01b0: 20 40 28 23 29 20 24 49 64 3a 20 24 0d 0a 23 0d   @(#) $Id: $..#.
01c0: 0a 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 23 23 23 23 23  ################
0200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0210: 0d 0a 0d 0a 23 0d 0a 23 20 53 54 55 42 3a 20 54  ....#..# STUB: T
0220: 68 69 73 20 73 63 72 69 70 74 20 66 69 6c 65 20  his script file 
0230: 69 73 20 61 20 70 6c 61 63 65 68 6f 6c 64 65 72  is a placeholder
0240: 2e 20 20 54 68 69 73 20 66 69 6c 65 2c 20 77 68  .  This file, wh
0250: 65 6e 20 70 72 65 73 65 6e 74 2c 20 69 73 20 61  en present, is a
0260: 6c 77 61 79 73 0d 0a 23 20 20 20 20 20 20 20 65  lways..#       e
0270: 76 61 6c 75 61 74 65 64 20 77 68 65 6e 20 61 6e  valuated when an
0280: 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 73 20   interpreter is 
0290: 69 6e 69 74 69 61 6c 69 7a 65 64 2e 20 20 56 65  initialized.  Ve
02a0: 6e 64 6f 72 73 20 64 69 73 74 72 69 62 75 74 69  ndors distributi
02b0: 6e 67 0d 0a 23 20 20 20 20 20 20 20 45 61 67 6c  ng..#       Eagl
02c0: 65 20 63 61 6e 20 70 6c 61 63 65 20 63 75 73 74  e can place cust
02d0: 6f 6d 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73  om application-s
02e0: 70 65 63 69 66 69 63 2c 20 69 6e 74 65 72 70 72  pecific, interpr
02f0: 65 74 65 72 2d 73 70 65 63 69 66 69 63 0d 0a 23  eter-specific..#
0300: 20 20 20 20 20 20 20 69 6e 69 74 69 61 6c 69 7a         initializ
0310: 61 74 69 6f 6e 20 61 6e 64 2f 6f 72 20 63 75 73  ation and/or cus
0320: 74 6f 6d 69 7a 61 74 69 6f 6e 73 20 69 6e 20 68  tomizations in h
0330: 65 72 65 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c  ere.  Additional
0340: 6c 79 2c 20 74 68 69 73 20 66 69 6c 65 0d 0a 23  ly, this file..#
0350: 20 20 20 20 20 20 20 6d 61 79 20 63 6f 6e 74 61         may conta
0360: 69 6e 20 70 65 72 2d 69 6e 74 65 72 70 72 65 74  in per-interpret
0370: 65 72 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e  er customization
0380: 73 20 72 65 71 75 69 72 65 64 20 77 68 65 6e 20  s required when 
0390: 70 6f 72 74 69 6e 67 20 74 6f 0d 0a 23 20 20 20  porting to..#   
03a0: 20 20 20 20 6e 65 77 20 70 6c 61 74 66 6f 72 6d      new platform
03b0: 73 2c 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  s, operating sys
03c0: 74 65 6d 73 2c 20 65 74 63 2e 0d 0a 23 0d 0a 0c  tems, etc...#...
03d0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
03e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
03f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0420: 23 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  #..#############
0430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0440: 23 20 42 45 47 49 4e 20 56 45 4e 44 4f 52 20 43  # BEGIN VENDOR C
0450: 4f 44 45 20 23 23 23 23 23 23 23 23 23 23 23 23  ODE ############
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0470: 23 23 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23  ##..############
0480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0490: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
04a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
04b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
04c0: 23 23 23 0d 0a 23 0d 0a 23 20 4e 4f 54 45 3a 20  ###..#..# NOTE: 
04d0: 55 73 65 20 6f 75 72 20 6f 77 6e 20 6e 61 6d 65  Use our own name
04e0: 73 70 61 63 65 20 68 65 72 65 20 62 65 63 61 75  space here becau
04f0: 73 65 20 65 76 65 6e 20 74 68 6f 75 67 68 20 77  se even though w
0500: 65 20 64 6f 20 6e 6f 74 20 64 69 72 65 63 74 6c  e do not directl
0510: 79 0d 0a 23 20 20 20 20 20 20 20 73 75 70 70 6f  y..#       suppo
0520: 72 74 20 6e 61 6d 65 73 70 61 63 65 73 20 6f 75  rt namespaces ou
0530: 72 73 65 6c 76 65 73 2c 20 77 65 20 64 6f 20 6e  rselves, we do n
0540: 6f 74 20 77 61 6e 74 20 74 6f 20 70 6f 6c 6c 75  ot want to pollu
0550: 74 65 20 74 68 65 20 67 6c 6f 62 61 6c 0d 0a 23  te the global..#
0560: 20 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65         namespace
0570: 20 69 66 20 74 68 69 73 20 73 63 72 69 70 74 20   if this script 
0580: 61 63 74 75 61 6c 6c 79 20 65 6e 64 73 20 75 70  actually ends up
0590: 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64   being evaluated
05a0: 20 69 6e 20 54 63 6c 2e 0d 0a 23 0d 0a 6e 61 6d   in Tcl...#..nam
05b0: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 45 61  espace eval ::Ea
05c0: 67 6c 65 20 7b 0d 0a 20 20 69 66 20 7b 5b 69 73  gle {..  if {[is
05d0: 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Eagle]} then {..
05e0: 20 20 20 20 70 72 6f 63 20 63 68 65 63 6b 46 6f      proc checkFo
05f0: 72 54 65 73 74 4f 76 65 72 72 69 64 65 73 20 7b  rTestOverrides {
0600: 20 63 68 61 6e 6e 65 6c 20 76 61 72 4e 61 6d 65   channel varName
0610: 73 20 71 75 69 65 74 20 7d 20 7b 0d 0a 20 20 20  s quiet } {..   
0620: 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 30 0d     set result 0.
0630: 0a 0d 0a 20 20 20 20 20 20 66 6f 72 65 61 63 68  ...      foreach
0640: 20 76 61 72 4e 61 6d 65 20 24 76 61 72 4e 61 6d   varName $varNam
0650: 65 73 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66  es {..        if
0660: 20 7b 21 5b 75 70 6c 65 76 65 6c 20 31 20 5b 6c   {![uplevel 1 [l
0670: 69 73 74 20 69 6e 66 6f 20 65 78 69 73 74 73 20  ist info exists 
0680: 24 76 61 72 4e 61 6d 65 5d 5d 7d 20 74 68 65 6e  $varName]]} then
0690: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 63 6f   {..          co
06a0: 6e 74 69 6e 75 65 0d 0a 20 20 20 20 20 20 20 20  ntinue..        
06b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 63  }....        inc
06c0: 72 20 72 65 73 75 6c 74 0d 0a 0d 0a 20 20 20 20  r result....    
06d0: 20 20 20 20 69 66 20 7b 21 24 71 75 69 65 74 7d      if {!$quiet}
06e0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
06f0: 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20     catch {..    
0700: 20 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24          tqputs $
0710: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
0720: 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  rgs \..         
0730: 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 66 6f 75         "---- fou
0740: 6e 64 20 76 65 6e 64 6f 72 2d 73 70 65 63 69 66  nd vendor-specif
0750: 69 63 20 74 65 73 74 20 6f 76 65 72 72 69 64 65  ic test override
0760: 20 5c 22 22 20 24 76 61 72 4e 61 6d 65 20 5c 0d   \"" $varName \.
0770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0780: 20 22 5c 22 20 77 69 74 68 20 76 61 6c 75 65 20   "\" with value 
0790: 5c 22 22 20 5b 75 70 6c 65 76 65 6c 20 31 20 5b  \"" [uplevel 1 [
07a0: 6c 69 73 74 20 73 65 74 20 24 76 61 72 4e 61 6d  list set $varNam
07b0: 65 5d 5d 20 5c 22 5c 6e 5d 0d 0a 20 20 20 20 20  e]] \"\n]..     
07c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
07d0: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
07e0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
07f0: 4f 54 45 3a 20 4b 65 65 70 20 74 72 61 63 6b 20  OTE: Keep track 
0800: 6f 66 20 74 68 65 20 6c 69 73 74 20 6f 66 20 74  of the list of t
0810: 65 73 74 20 6f 76 65 72 72 69 64 65 20 76 61 72  est override var
0820: 69 61 62 6c 65 73 2c 20 66 6f 72 20 6c 61 74 65  iables, for late
0830: 72 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  r..      #      
0840: 20 75 73 65 20 62 79 20 74 68 65 20 74 65 73 74   use by the test
0850: 20 73 75 69 74 65 2e 20 20 54 68 69 73 20 6e 65   suite.  This ne
0860: 65 64 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 61  eds to be done a
0870: 66 74 65 72 20 74 68 65 20 6c 6f 6f 70 0d 0a 20  fter the loop.. 
0880: 20 20 20 20 20 23 20 20 20 20 20 20 20 61 62 6f       #       abo
0890: 76 65 20 62 65 63 61 75 73 65 20 74 68 65 20 76  ve because the v
08a0: 61 72 69 61 62 6c 65 20 75 73 65 64 20 74 6f 20  ariable used to 
08b0: 6b 65 65 70 20 74 72 61 63 6b 20 69 73 20 6c 69  keep track is li
08c0: 73 74 65 64 20 77 69 74 68 0d 0a 20 20 20 20 20  sted with..     
08d0: 20 23 20 20 20 20 20 20 20 74 68 65 20 6f 74 68   #       the oth
08e0: 65 72 20 70 6f 73 73 69 62 6c 65 20 74 65 73 74  er possible test
08f0: 20 6f 76 65 72 72 69 64 65 20 76 61 72 69 61 62   override variab
0900: 6c 65 73 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  les...      #.. 
0910: 20 20 20 20 20 69 66 20 7b 21 5b 75 70 6c 65 76       if {![uplev
0920: 65 6c 20 31 20 5b 6c 69 73 74 20 69 6e 66 6f 20  el 1 [list info 
0930: 65 78 69 73 74 73 20 74 65 73 74 5f 6f 76 65 72  exists test_over
0940: 72 69 64 65 73 5d 5d 7d 20 74 68 65 6e 20 7b 0d  rides]]} then {.
0950: 0a 20 20 20 20 20 20 20 20 75 70 6c 65 76 65 6c  .        uplevel
0960: 20 31 20 5b 6c 69 73 74 20 73 65 74 20 74 65 73   1 [list set tes
0970: 74 5f 6f 76 65 72 72 69 64 65 73 20 24 76 61 72  t_overrides $var
0980: 4e 61 6d 65 73 5d 0d 0a 20 20 20 20 20 20 7d 0d  Names]..      }.
0990: 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
09a0: 24 72 65 73 75 6c 74 0d 0a 20 20 20 20 7d 0d 0a  $result..    }..
09b0: 0c 0d 0a 20 20 20 20 70 72 6f 63 20 72 65 66 72  ...    proc refr
09c0: 65 73 68 41 75 74 6f 50 61 74 68 20 7b 7d 20 7b  eshAutoPath {} {
09d0: 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 6c 6c 65  ..      if {[lle
09e0: 6e 67 74 68 20 5b 69 6e 66 6f 20 73 75 62 63 6f  ngth [info subco
09f0: 6d 6d 61 6e 64 73 20 64 65 62 75 67 20 72 65 66  mmands debug ref
0a00: 72 65 73 68 61 75 74 6f 70 61 74 68 5d 5d 20 3e  reshautopath]] >
0a10: 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20   0 && \..       
0a20: 20 20 20 5b 63 61 74 63 68 20 7b 64 65 62 75 67     [catch {debug
0a30: 20 72 65 66 72 65 73 68 61 75 74 6f 70 61 74 68   refreshautopath
0a40: 20 74 72 75 65 7d 5d 20 3d 3d 20 30 7d 20 74 68   true}] == 0} th
0a50: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65  en {..        re
0a60: 74 75 72 6e 20 64 65 62 75 67 0d 0a 20 20 20 20  turn debug..    
0a70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20    }....      if 
0a80: 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20  {[llength [info 
0a90: 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74 5d  commands object]
0aa0: 5d 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20 20  ] > 0 && \..    
0ab0: 20 20 20 20 20 20 5b 63 61 74 63 68 20 7b 6f 62        [catch {ob
0ac0: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 55 74 69 6c  ject invoke Util
0ad0: 69 74 79 20 52 65 66 72 65 73 68 41 75 74 6f 50  ity RefreshAutoP
0ae0: 61 74 68 4c 69 73 74 20 74 72 75 65 7d 5d 20 3d  athList true}] =
0af0: 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  = 0} then {..   
0b00: 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62 6a 65       return obje
0b10: 63 74 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ct..      }.... 
0b20: 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 0d 0a       return ""..
0b30: 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20 70 72      }.....    pr
0b40: 6f 63 20 61 64 64 54 65 73 74 53 75 69 74 65 54  oc addTestSuiteT
0b50: 6f 41 75 74 6f 50 61 74 68 20 7b 20 63 68 61 6e  oAutoPath { chan
0b60: 6e 65 6c 20 76 61 72 4e 61 6d 65 20 71 75 69 65  nel varName quie
0b70: 74 20 7d 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  t } {..      #..
0b80: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 74        # NOTE: St
0b90: 61 72 74 20 77 69 74 68 20 74 68 65 20 64 69 72  art with the dir
0ba0: 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
0bb0: 67 20 74 68 69 73 20 66 69 6c 65 2e 0d 0a 20 20  g this file...  
0bc0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74      #..      set
0bd0: 20 64 69 72 20 5b 66 69 6c 65 20 6e 6f 72 6d 61   dir [file norma
0be0: 6c 69 7a 65 20 5b 66 69 6c 65 20 64 69 72 6e 61  lize [file dirna
0bf0: 6d 65 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d  me [info script]
0c00: 5d 5d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ]]....      #.. 
0c10: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4b 65 65       # NOTE: Kee
0c20: 70 20 67 6f 69 6e 67 20 75 6e 74 69 6c 20 74 68  p going until th
0c30: 65 20 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65  e directory name
0c40: 20 69 73 20 65 6d 70 74 79 20 4f 52 20 69 73 20   is empty OR is 
0c50: 61 63 74 75 61 6c 6c 79 20 74 68 65 0d 0a 20 20  actually the..  
0c60: 20 20 20 20 23 20 20 20 20 20 20 20 72 6f 6f 74      #       root
0c70: 20 6f 66 20 74 68 65 20 61 73 73 6f 63 69 61 74   of the associat
0c80: 65 64 20 76 6f 6c 75 6d 65 2e 0d 0a 20 20 20 20  ed volume...    
0c90: 20 20 23 0d 0a 20 20 20 20 20 20 77 68 69 6c 65    #..      while
0ca0: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68   {[string length
0cb0: 20 24 64 69 72 5d 20 3e 20 30 20 26 26 20 5c 0d   $dir] > 0 && \.
0cc0: 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 73 65 61  .          [lsea
0cd0: 72 63 68 20 2d 65 78 61 63 74 20 2d 6e 6f 63 61  rch -exact -noca
0ce0: 73 65 20 2d 2d 20 5b 66 69 6c 65 20 76 6f 6c 75  se -- [file volu
0cf0: 6d 65 73 5d 20 24 64 69 72 5d 20 3d 3d 20 2d 31  mes] $dir] == -1
0d00: 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  } {..        #..
0d10: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
0d20: 44 6f 65 73 20 74 68 69 73 20 64 69 72 65 63 74  Does this direct
0d30: 6f 72 79 20 68 61 76 65 20 74 68 65 20 6e 65 63  ory have the nec
0d40: 65 73 73 61 72 79 20 73 75 62 2d 64 69 72 65 63  essary sub-direc
0d50: 74 6f 72 79 20 74 68 61 74 0d 0a 20 20 20 20 20  tory that..     
0d60: 20 20 20 23 20 20 20 20 20 20 20 63 6f 6e 74 61     #       conta
0d70: 69 6e 73 20 61 20 70 61 63 6b 61 67 65 20 69 6e  ins a package in
0d80: 64 65 78 20 66 69 6c 65 3f 0d 0a 20 20 20 20 20  dex file?..     
0d90: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
0da0: 20 7b 5b 66 69 6c 65 20 65 78 69 73 74 73 20 5b   {[file exists [
0db0: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 54  file join $dir T
0dc0: 65 73 74 73 5d 5d 20 26 26 20 5c 0d 0a 20 20 20  ests]] && \..   
0dd0: 20 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20 69           [file i
0de0: 73 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65  sdirectory [file
0df0: 20 6a 6f 69 6e 20 24 64 69 72 20 54 65 73 74 73   join $dir Tests
0e00: 5d 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  ]] && \..       
0e10: 20 20 20 20 20 5b 66 69 6c 65 20 65 78 69 73 74       [file exist
0e20: 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69  s [file join $di
0e30: 72 20 54 65 73 74 73 20 70 6b 67 49 6e 64 65 78  r Tests pkgIndex
0e40: 2e 65 61 67 6c 65 5d 5d 20 26 26 20 5c 0d 0a 20  .eagle]] && \.. 
0e50: 20 20 20 20 20 20 20 20 20 20 20 5b 66 69 6c 65             [file
0e60: 20 69 73 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f   isfile [file jo
0e70: 69 6e 20 24 64 69 72 20 54 65 73 74 73 20 70 6b  in $dir Tests pk
0e80: 67 49 6e 64 65 78 2e 65 61 67 6c 65 5d 5d 7d 20  gIndex.eagle]]} 
0e90: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
0ea0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
0eb0: 20 4e 4f 54 45 3a 20 49 66 20 72 65 71 75 65 73   NOTE: If reques
0ec0: 74 65 64 2c 20 67 69 76 65 20 6f 75 72 20 63 61  ted, give our ca
0ed0: 6c 6c 65 72 20 61 63 63 65 73 73 20 74 6f 20 74  ller access to t
0ee0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 0d 0a  he name of the..
0ef0: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
0f00: 20 20 64 69 72 65 63 74 6f 72 79 20 77 65 20 6a    directory we j
0f10: 75 73 74 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20  ust found...    
0f20: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
0f30: 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c     if {[string l
0f40: 65 6e 67 74 68 20 24 76 61 72 4e 61 6d 65 5d 20  ength $varName] 
0f50: 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  > 0} then {..   
0f60: 20 20 20 20 20 20 20 20 20 75 70 76 61 72 20 31           upvar 1
0f70: 20 24 76 61 72 4e 61 6d 65 20 64 69 72 32 0d 0a   $varName dir2..
0f80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
0f90: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
0fa0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f 6b        # NOTE: Ok
0fb0: 2c 20 73 68 6f 77 20 74 68 65 20 64 69 72 65 63  , show the direc
0fc0: 74 6f 72 79 20 77 65 20 66 6f 75 6e 64 2e 0d 0a  tory we found...
0fd0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
0fe0: 20 20 20 20 20 20 20 73 65 74 20 64 69 72 32 20         set dir2 
0ff0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20  [file join $dir 
1000: 54 65 73 74 73 5d 0d 0a 0d 0a 20 20 20 20 20 20  Tests]....      
1010: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1020: 20 23 20 4e 4f 54 45 3a 20 57 65 20 66 6f 75 6e   # NOTE: We foun
1030: 64 20 74 68 65 20 6e 65 63 65 73 73 61 72 79 20  d the necessary 
1040: 64 69 72 65 63 74 6f 72 79 20 74 6f 20 61 64 64  directory to add
1050: 20 74 6f 20 74 68 65 20 61 75 74 6f 2d 70 61 74   to the auto-pat
1060: 68 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20  h;..          # 
1070: 20 20 20 20 20 20 48 6f 77 65 76 65 72 2c 20 77        However, w
1080: 65 20 63 61 6e 6e 6f 74 20 73 69 6d 70 6c 79 20  e cannot simply 
1090: 61 64 64 20 69 74 20 74 6f 20 74 68 65 20 61 75  add it to the au
10a0: 74 6f 2d 70 61 74 68 20 64 69 72 65 63 74 6c 79  to-path directly
10b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
10c0: 20 20 20 20 62 65 63 61 75 73 65 20 74 68 65 20      because the 
10d0: 61 75 74 6f 2d 70 61 74 68 20 69 73 20 64 79 6e  auto-path is dyn
10e0: 61 6d 69 63 61 6c 6c 79 20 63 6f 6e 73 74 72 75  amically constru
10f0: 63 74 65 64 20 61 66 74 65 72 20 74 68 69 73 0d  cted after this.
1100: 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20  .          #    
1110: 20 20 20 73 63 72 69 70 74 20 69 73 20 65 76 61     script is eva
1120: 6c 75 61 74 65 64 3b 20 74 68 65 72 65 66 6f 72  luated; therefor
1130: 65 2c 20 73 65 74 20 74 68 65 20 45 61 67 6c 65  e, set the Eagle
1140: 20 6c 69 62 72 61 72 79 20 70 61 74 68 0d 0a 20   library path.. 
1150: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
1160: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
1170: 69 61 62 6c 65 20 61 6e 64 20 66 6f 72 63 65 20  iable and force 
1180: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20  the appropriate 
1190: 69 6e 74 65 72 6e 61 6c 20 70 61 74 68 0d 0a 20  internal path.. 
11a0: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
11b0: 20 6c 69 73 74 20 74 6f 20 62 65 20 72 65 66 72   list to be refr
11c0: 65 73 68 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  eshed...        
11d0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 69    #..          i
11e0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
11f0: 20 3a 3a 65 6e 76 28 45 41 47 4c 45 4c 49 42 50   ::env(EAGLELIBP
1200: 41 54 48 29 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20  ATH)] || \..    
1210: 20 20 20 20 20 20 20 20 20 20 5b 6c 73 65 61 72            [lsear
1220: 63 68 20 2d 65 78 61 63 74 20 24 3a 3a 65 6e 76  ch -exact $::env
1230: 28 45 41 47 4c 45 4c 49 42 50 41 54 48 29 20 24  (EAGLELIBPATH) $
1240: 64 69 72 32 5d 20 3d 3d 20 2d 31 7d 20 74 68 65  dir2] == -1} the
1250: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n {..           
1260: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1270: 23 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 68 61  # NOTE: If we ha
1280: 76 65 20 4e 4f 54 20 62 65 65 6e 20 69 6e 73 74  ve NOT been inst
1290: 72 75 63 74 65 64 20 74 6f 20 62 65 20 71 75 69  ructed to be qui
12a0: 65 74 2c 20 72 65 70 6f 72 74 20 6e 6f 77 2e 0d  et, report now..
12b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a  .            #..
12c0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b              if {
12d0: 21 24 71 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d  !$quiet} then {.
12e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
12f0: 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
1300: 20 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24          tqputs $
1310: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
1320: 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  rgs \..         
1330: 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d             "----
1340: 20 66 6f 75 6e 64 20 76 65 6e 64 6f 72 2d 73 70   found vendor-sp
1350: 65 63 69 66 69 63 20 74 65 73 74 20 70 61 63 6b  ecific test pack
1360: 61 67 65 20 64 69 72 65 63 74 6f 72 79 20 5c 22  age directory \"
1370: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " \..           
1380: 20 20 20 20 20 20 20 20 20 24 64 69 72 32 20 22           $dir2 "
1390: 5c 22 2c 20 61 64 64 69 6e 67 2e 2e 2e 5c 6e 22  \", adding...\n"
13a0: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ]..             
13b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
13d0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
13e0: 23 20 4e 4f 54 45 3a 20 41 70 70 65 6e 64 20 74  # NOTE: Append t
13f0: 68 65 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20  he directory to 
1400: 74 68 65 20 6e 65 63 65 73 73 61 72 79 20 65 6e  the necessary en
1410: 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62  vironment variab
1420: 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
1430: 23 20 20 20 20 20 20 20 73 6f 20 74 68 61 74 20  #       so that 
1440: 69 74 20 77 69 6c 6c 20 67 65 74 20 70 69 63 6b  it will get pick
1450: 65 64 20 75 70 20 77 68 65 6e 20 45 61 67 6c 65  ed up when Eagle
1460: 20 61 63 74 75 61 6c 6c 79 20 72 65 62 75 69 6c   actually rebuil
1470: 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
1480: 23 20 20 20 20 20 20 20 74 68 65 20 61 75 74 6f  #       the auto
1490: 2d 70 61 74 68 20 6c 69 73 74 20 28 62 65 6c 6f  -path list (belo
14a0: 77 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  w)...           
14b0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
14c0: 6c 61 70 70 65 6e 64 20 3a 3a 65 6e 76 28 45 41  lappend ::env(EA
14d0: 47 4c 45 4c 49 42 50 41 54 48 29 20 24 64 69 72  GLELIBPATH) $dir
14e0: 32 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2....           
14f0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1500: 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  # NOTE: Attempt 
1510: 74 6f 20 66 6f 72 63 65 20 45 61 67 6c 65 20 74  to force Eagle t
1520: 6f 20 72 65 62 75 69 6c 64 20 74 68 65 20 61 75  o rebuild the au
1530: 74 6f 2d 70 61 74 68 20 66 6f 72 20 74 68 65 0d  to-path for the.
1540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20  .            #  
1550: 20 20 20 20 20 63 75 72 72 65 6e 74 20 69 6e 74       current int
1560: 65 72 70 72 65 74 65 72 20 72 69 67 68 74 20 6e  erpreter right n
1570: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
1580: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1590: 73 65 74 20 72 65 66 72 65 73 68 20 5b 72 65 66  set refresh [ref
15a0: 72 65 73 68 41 75 74 6f 50 61 74 68 5d 0d 0a 0d  reshAutoPath]...
15b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
15c0: 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20  {[string length 
15d0: 24 72 65 66 72 65 73 68 5d 20 3d 3d 20 30 7d 20  $refresh] == 0} 
15e0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
15f0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1600: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f         # NOTE: O
1610: 6b 2c 20 6d 61 79 62 65 20 74 68 65 20 5b 6f 62  k, maybe the [ob
1620: 6a 65 63 74 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  ject] command is
1630: 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 20   not available. 
1640: 20 52 65 73 63 61 6e 0d 0a 20 20 20 20 20 20 20   Rescan..       
1650: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74         #       t
1660: 68 65 20 70 61 63 6b 61 67 65 20 69 6e 64 65 78  he package index
1670: 65 73 20 75 73 69 6e 67 20 74 68 65 20 5b 70 61  es using the [pa
1680: 63 6b 61 67 65 20 73 63 61 6e 5d 20 73 75 62 2d  ckage scan] sub-
1690: 63 6f 6d 6d 61 6e 64 0d 0a 20 20 20 20 20 20 20  command..       
16a0: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69         #       i
16b0: 6e 20 74 68 61 74 20 63 61 73 65 2e 20 20 54 68  n that case.  Th
16c0: 65 20 64 69 72 65 63 74 6f 72 69 65 73 20 77 69  e directories wi
16d0: 74 68 69 6e 20 45 41 47 4c 45 4c 49 42 50 41 54  thin EAGLELIBPAT
16e0: 48 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20  H will..        
16f0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6e 6f        #       no
1700: 74 20 62 65 20 61 64 64 65 64 20 74 6f 20 74 68  t be added to th
1710: 65 20 61 75 74 6f 2d 70 61 74 68 3b 20 68 6f 77  e auto-path; how
1720: 65 76 65 72 2c 20 61 6c 6c 20 74 68 65 20 70 61  ever, all the pa
1730: 63 6b 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20  ckage..         
1740: 20 20 20 20 20 23 20 20 20 20 20 20 20 69 6e 64       #       ind
1750: 65 78 65 73 20 61 6e 64 20 74 68 65 69 72 20 61  exes and their a
1760: 73 73 6f 63 69 61 74 65 64 20 70 61 63 6b 61 67  ssociated packag
1770: 65 73 20 77 69 6c 6c 20 62 65 20 61 76 61 69 6c  es will be avail
1780: 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  able...         
1790: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
17a0: 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69 65        if {!$quie
17b0: 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  t} then {..     
17c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
17d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17e0: 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63 68        tqputs $ch
17f0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
1800: 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s \..           
1810: 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d             "----
1820: 20 75 6e 61 62 6c 65 20 74 6f 20 66 6f 72 63 69   unable to forci
1830: 62 6c 79 20 72 65 66 72 65 73 68 20 61 75 74 6f  bly refresh auto
1840: 2d 70 61 74 68 20 6c 69 73 74 2c 20 22 20 5c 0d  -path list, " \.
1850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1860: 20 20 20 20 20 20 20 22 73 63 61 6e 6e 69 6e 67         "scanning
1870: 20 5c 22 22 20 24 3a 3a 65 6e 76 28 45 41 47 4c   \"" $::env(EAGL
1880: 45 4c 49 42 50 41 54 48 29 20 22 5c 22 20 69 6e  ELIBPATH) "\" in
1890: 73 74 65 61 64 2e 2e 2e 5c 6e 22 5d 0d 0a 20 20  stead...\n"]..  
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
18b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d  .              }
18c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18d0: 20 20 65 76 61 6c 20 70 61 63 6b 61 67 65 20 73    eval package s
18e0: 63 61 6e 20 2d 68 6f 73 74 20 2d 6e 6f 72 6d 61  can -host -norma
18f0: 6c 20 2d 72 65 66 72 65 73 68 20 2d 2d 20 24 3a  l -refresh -- $:
1900: 3a 65 6e 76 28 45 41 47 4c 45 4c 49 42 50 41 54  :env(EAGLELIBPAT
1910: 48 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  H)..            
1920: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
1930: 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 71 75          if {!$qu
1940: 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  iet} then {..   
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
1960: 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ch {..          
1970: 20 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24          tqputs $
1980: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
1990: 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  rgs \..         
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d               "--
19b0: 2d 2d 20 72 65 66 72 65 73 68 65 64 20 61 75 74  -- refreshed aut
19c0: 6f 2d 70 61 74 68 20 6c 69 73 74 20 76 69 61 20  o-path list via 
19d0: 5c 22 22 20 24 72 65 66 72 65 73 68 20 5c 0d 0a  \"" $refresh \..
19e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f0: 20 20 20 20 20 20 22 5c 22 20 63 6f 6d 6d 61 6e        "\" comman
1a00: 64 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20 20 20  d\n"]..         
1a10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1a30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1a40: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1a50: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1a60: 23 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 64  # NOTE: We are d
1a70: 6f 6e 65 2c 20 72 65 74 75 72 6e 20 73 75 63 63  one, return succ
1a80: 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ess...          
1a90: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  #..          ret
1aa0: 75 72 6e 20 74 72 75 65 0d 0a 20 20 20 20 20 20  urn true..      
1ab0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
1ac0: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
1ad0: 3a 20 4b 65 65 70 20 67 6f 69 6e 67 20 75 70 20  : Keep going up 
1ae0: 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 74 72  the directory tr
1af0: 65 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 23  ee.....        #
1b00: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 64 69  ..        set di
1b10: 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  r [file dirname 
1b20: 24 64 69 72 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a  $dir]..      }..
1b30: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
1b40: 20 23 20 4e 4f 54 45 3a 20 49 66 20 77 65 20 68   # NOTE: If we h
1b50: 61 76 65 20 4e 4f 54 20 62 65 65 6e 20 69 6e 73  ave NOT been ins
1b60: 74 72 75 63 74 65 64 20 74 6f 20 62 65 20 71 75  tructed to be qu
1b70: 69 65 74 2c 20 72 65 70 6f 72 74 20 6e 6f 77 2e  iet, report now.
1b80: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
1b90: 20 69 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68   if {!$quiet} th
1ba0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61  en {..        ca
1bb0: 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  tch {..         
1bc0: 20 74 71 70 75 74 73 20 24 63 68 61 6e 6e 65 6c   tqputs $channel
1bd0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1be0: 20 20 22 2d 2d 2d 2d 20 63 6f 75 6c 64 20 6e 6f    "---- could no
1bf0: 74 20 66 69 6e 64 20 76 65 6e 64 6f 72 2d 73 70  t find vendor-sp
1c00: 65 63 69 66 69 63 20 74 65 73 74 20 70 61 63 6b  ecific test pack
1c10: 61 67 65 20 64 69 72 65 63 74 6f 72 79 5c 6e 22  age directory\n"
1c20: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1c30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
1c40: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 44  .      # NOTE: D
1c50: 69 72 65 63 74 6f 72 79 20 6e 6f 74 20 66 6f 75  irectory not fou
1c60: 6e 64 2c 20 72 65 74 75 72 6e 20 66 61 69 6c 75  nd, return failu
1c70: 72 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  re...      #..  
1c80: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1c90: 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20  ..    }.....    
1ca0: 70 72 6f 63 20 73 65 74 75 70 49 6e 74 65 72 70  proc setupInterp
1cb0: 72 65 74 65 72 54 65 73 74 50 61 74 68 20 7b 20  reterTestPath { 
1cc0: 63 68 61 6e 6e 65 6c 20 64 69 72 20 71 75 69 65  channel dir quie
1cd0: 74 20 7d 20 7b 0d 0a 20 20 20 20 20 20 69 66 20  t } {..      if 
1ce0: 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20  {[llength [info 
1cf0: 73 75 62 63 6f 6d 6d 61 6e 64 73 20 64 65 62 75  subcommands debu
1d00: 67 20 74 65 73 74 70 61 74 68 5d 5d 20 3e 20 30  g testpath]] > 0
1d10: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
1d20: 20 5b 63 61 74 63 68 20 7b 64 65 62 75 67 20 74   [catch {debug t
1d30: 65 73 74 70 61 74 68 7d 20 74 65 73 74 50 61 74  estpath} testPat
1d40: 68 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d  h] == 0} then {.
1d50: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 24 64 69  .        if {$di
1d60: 72 20 6e 65 20 24 74 65 73 74 50 61 74 68 7d 20  r ne $testPath} 
1d70: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1d80: 20 20 64 65 62 75 67 20 74 65 73 74 70 61 74 68    debug testpath
1d90: 20 24 64 69 72 0d 0a 0d 0a 20 20 20 20 20 20 20   $dir....       
1da0: 20 20 20 69 66 20 7b 21 24 71 75 69 65 74 7d 20     if {!$quiet} 
1db0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1dc0: 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20      catch {..   
1dd0: 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75 74             tqput
1de0: 73 20 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  s $channel [appe
1df0: 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20  ndArgs \..      
1e00: 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d              "---
1e10: 2d 20 73 65 74 20 69 6e 74 65 72 70 72 65 74 65  - set interprete
1e20: 72 20 74 65 73 74 20 70 61 74 68 20 74 6f 20 5c  r test path to \
1e30: 22 22 20 24 64 69 72 20 5c 0d 0a 20 20 20 20 20  "" $dir \..     
1e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 22               "\"
1e50: 20 76 69 61 20 5c 22 64 65 62 75 67 5c 22 20 63   via \"debug\" c
1e60: 6f 6d 6d 61 6e 64 5c 6e 22 5d 0d 0a 20 20 20 20  ommand\n"]..    
1e70: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1e90: 7d 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 69  }..      } elsei
1ea0: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66  f {[llength [inf
1eb0: 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63  o commands objec
1ec0: 74 5d 5d 20 3e 20 30 20 26 26 20 5b 63 61 74 63  t]] > 0 && [catc
1ed0: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  h {..        obj
1ee0: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61 67  ect invoke -flag
1ef0: 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 49 6e 74  s +NonPublic Int
1f00: 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69  erpreter.GetActi
1f10: 76 65 20 54 65 73 74 50 61 74 68 0d 0a 20 20 20  ve TestPath..   
1f20: 20 20 20 7d 20 74 65 73 74 50 61 74 68 5d 20 3d     } testPath] =
1f30: 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  = 0} then {..   
1f40: 20 20 20 20 20 69 66 20 7b 24 64 69 72 20 6e 65       if {$dir ne
1f50: 20 24 74 65 73 74 50 61 74 68 7d 20 74 68 65 6e   $testPath} then
1f60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 6f 62   {..          ob
1f70: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61  ject invoke -fla
1f80: 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 49 6e  gs +NonPublic In
1f90: 74 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74  terpreter.GetAct
1fa0: 69 76 65 20 54 65 73 74 50 61 74 68 20 24 64 69  ive TestPath $di
1fb0: 72 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69  r....          i
1fc0: 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e  f {!$quiet} then
1fd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1fe0: 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20  catch {..       
1ff0: 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63         tqputs $c
2000: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
2010: 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
2020: 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73 65          "---- se
2030: 74 20 69 6e 74 65 72 70 72 65 74 65 72 20 74 65  t interpreter te
2040: 73 74 20 70 61 74 68 20 74 6f 20 5c 22 22 20 24  st path to \"" $
2050: 64 69 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  dir \..         
2060: 20 20 20 20 20 20 20 20 20 22 5c 22 20 76 69 61           "\" via
2070: 20 5c 22 6f 62 6a 65 63 74 5c 22 20 63 6f 6d 6d   \"object\" comm
2080: 61 6e 64 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20  and\n"]..       
2090: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
20b0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
20c0: 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 71 75          if {!$qu
20d0: 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  iet} then {..   
20e0: 20 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d 0a         catch {..
20f0: 20 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75              tqpu
2100: 74 73 20 24 63 68 61 6e 6e 65 6c 20 22 2d 2d 2d  ts $channel "---
2110: 2d 20 63 61 6e 6e 6f 74 20 73 65 74 20 69 6e 74  - cannot set int
2120: 65 72 70 72 65 74 65 72 20 74 65 73 74 20 70 61  erpreter test pa
2130: 74 68 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 20  th\n"..         
2140: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
2150: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0c       }..    }...
2160: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
2170: 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61  OTE: Check for a
2180: 6e 79 20 6f 76 65 72 72 69 64 64 65 6e 20 73 65  ny overridden se
2190: 74 74 69 6e 67 73 20 74 68 61 74 20 6d 61 79 20  ttings that may 
21a0: 68 61 76 65 20 62 65 65 6e 20 73 70 65 63 69 66  have been specif
21b0: 69 65 64 20 76 69 61 0d 0a 20 20 20 20 23 20 20  ied via..    #  
21c0: 20 20 20 20 20 74 68 65 20 63 6f 6d 6d 61 6e 64       the command
21d0: 20 6c 69 6e 65 2c 20 65 74 63 2e 0d 0a 20 20 20   line, etc...   
21e0: 20 23 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   #..    checkFor
21f0: 54 65 73 74 4f 76 65 72 72 69 64 65 73 20 73 74  TestOverrides st
2200: 64 6f 75 74 20 5b 65 78 70 72 20 7b 5b 69 6e 66  dout [expr {[inf
2210: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6f 76  o exists test_ov
2220: 65 72 72 69 64 65 73 5d 20 3f 20 5c 0d 0a 20 20  errides] ? \..  
2230: 20 20 20 20 20 20 24 74 65 73 74 5f 6f 76 65 72        $test_over
2240: 72 69 64 65 73 20 3a 20 5b 6c 69 73 74 20 62 69  rides : [list bi
2250: 6e 61 72 79 5f 64 69 72 65 63 74 6f 72 79 20 62  nary_directory b
2260: 75 69 6c 64 5f 62 61 73 65 5f 64 69 72 65 63 74  uild_base_direct
2270: 6f 72 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 62  ory \..        b
2280: 75 69 6c 64 5f 64 69 72 65 63 74 6f 72 79 20 63  uild_directory c
2290: 6f 6d 6d 6f 6e 5f 64 69 72 65 63 74 6f 72 79 20  ommon_directory 
22a0: 63 6f 6e 6e 65 63 74 69 6f 6e 5f 66 6c 61 67 73  connection_flags
22b0: 20 64 61 74 61 62 61 73 65 5f 64 69 72 65 63 74   database_direct
22c0: 6f 72 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 64  ory \..        d
22d0: 61 74 65 74 69 6d 65 5f 66 6f 72 6d 61 74 20 65  atetime_format e
22e0: 78 65 63 75 74 65 5f 6f 6e 5f 73 65 74 75 70 20  xecute_on_setup 
22f0: 72 65 6c 65 61 73 65 5f 76 65 72 73 69 6f 6e 20  release_version 
2300: 73 63 72 61 74 63 68 5f 64 69 72 65 63 74 6f 72  scratch_director
2310: 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 74 65 6d  y \..        tem
2320: 70 6f 72 61 72 79 5f 64 69 72 65 63 74 6f 72 79  porary_directory
2330: 20 74 65 73 74 5f 63 6c 72 20 74 65 73 74 5f 63   test_clr test_c
2340: 6c 72 5f 76 32 20 74 65 73 74 5f 63 6c 72 5f 76  lr_v2 test_clr_v
2350: 34 20 5c 0d 0a 20 20 20 20 20 20 20 20 74 65 73  4 \..        tes
2360: 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  t_configuration 
2370: 74 65 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69  test_configurati
2380: 6f 6e 73 20 74 65 73 74 5f 63 6f 6e 73 74 72 61  ons test_constra
2390: 69 6e 74 73 20 74 65 73 74 5f 6d 61 63 68 69 6e  ints test_machin
23a0: 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 74 65 73  e \..        tes
23b0: 74 5f 6e 65 74 5f 66 78 20 74 65 73 74 5f 6f 76  t_net_fx test_ov
23c0: 65 72 72 69 64 65 73 20 74 65 73 74 5f 70 6c 61  errides test_pla
23d0: 74 66 6f 72 6d 20 74 65 73 74 5f 73 75 69 74 65  tform test_suite
23e0: 20 74 65 73 74 5f 79 65 61 72 20 5c 0d 0a 20 20   test_year \..  
23f0: 20 20 20 20 20 20 74 65 73 74 5f 79 65 61 72 73        test_years
2400: 20 74 65 73 74 5f 79 65 61 72 5f 63 6c 72 5f 76   test_year_clr_v
2410: 32 20 74 65 73 74 5f 79 65 61 72 5f 63 6c 72 5f  2 test_year_clr_
2420: 76 34 20 76 65 6e 64 6f 72 5f 64 69 72 65 63 74  v4 vendor_direct
2430: 6f 72 79 5d 7d 5d 20 66 61 6c 73 65 0d 0a 0d 0a  ory]}] false....
2440: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
2450: 45 3a 20 53 65 74 20 74 68 65 20 6e 61 6d 65 20  E: Set the name 
2460: 6f 66 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 74  of the running t
2470: 65 73 74 20 73 75 69 74 65 2c 20 69 66 20 6e 65  est suite, if ne
2480: 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 23 0d  cessary...    #.
2490: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
24a0: 65 78 69 73 74 73 20 74 65 73 74 5f 73 75 69 74  exists test_suit
24b0: 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
24c0: 20 20 73 65 74 20 74 65 73 74 5f 73 75 69 74 65    set test_suite
24d0: 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
24e0: 4c 69 74 65 20 54 65 73 74 20 53 75 69 74 65 20  Lite Test Suite 
24f0: 66 6f 72 20 45 61 67 6c 65 22 0d 0a 20 20 20 20  for Eagle"..    
2500: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
2510: 23 20 4e 4f 54 45 3a 20 57 68 65 6e 20 62 65 69  # NOTE: When bei
2520: 6e 67 20 65 76 61 6c 75 61 74 65 64 20 69 6e 20  ng evaluated in 
2530: 61 20 22 73 61 66 65 22 20 69 6e 74 65 72 70 72  a "safe" interpr
2540: 65 74 65 72 2c 20 73 6f 6d 65 20 73 74 65 70 73  eter, some steps
2550: 20 6d 75 73 74 20 62 65 0d 0a 20 20 20 20 23 20   must be..    # 
2560: 20 20 20 20 20 20 73 6b 69 70 70 65 64 20 64 75        skipped du
2570: 65 20 74 6f 20 6d 69 73 73 69 6e 67 20 63 6f 6d  e to missing com
2580: 6d 61 6e 64 73 20 61 6e 64 2f 6f 72 20 73 75 62  mands and/or sub
2590: 2d 63 6f 6d 6d 61 6e 64 73 2e 0d 0a 20 20 20 20  -commands...    
25a0: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 74  #..    if {![int
25b0: 65 72 70 20 69 73 73 61 66 65 5d 7d 20 74 68 65  erp issafe]} the
25c0: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
25d0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73      # NOTE: This
25e0: 20 76 61 72 69 61 62 6c 65 20 77 69 6c 6c 20 63   variable will c
25f0: 6f 6e 74 61 69 6e 20 74 68 65 20 6e 61 6d 65 20  ontain the name 
2600: 6f 66 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  of the directory
2610: 20 63 6f 6e 74 61 69 6e 69 6e 67 0d 0a 20 20 20   containing..   
2620: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 76     #       the v
2630: 65 6e 64 6f 72 2d 73 70 65 63 69 66 69 63 20 74  endor-specific t
2640: 65 73 74 69 6e 67 20 69 6e 66 72 61 73 74 72 75  esting infrastru
2650: 63 74 75 72 65 2e 20 20 49 66 20 74 68 65 20 76  cture.  If the v
2660: 61 72 69 61 62 6c 65 20 64 6f 65 73 0d 0a 20 20  ariable does..  
2670: 20 20 20 20 23 20 20 20 20 20 20 20 6e 6f 74 20      #       not 
2680: 61 6c 72 65 61 64 79 20 65 78 69 73 74 2c 20 63  already exist, c
2690: 72 65 61 74 65 20 69 74 3b 20 6f 74 68 65 72 77  reate it; otherw
26a0: 69 73 65 2c 20 69 74 20 68 61 73 20 62 65 65 6e  ise, it has been
26b0: 20 6f 76 65 72 72 69 64 64 65 6e 0d 0a 20 20 20   overridden..   
26c0: 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 74     #       and t
26d0: 68 65 20 65 78 69 73 74 69 6e 67 20 76 61 6c 75  he existing valu
26e0: 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 74  e should be left
26f0: 20 69 6e 74 61 63 74 2e 0d 0a 20 20 20 20 20 20   intact...      
2700: 23 0d 0a 20 20 20 20 20 20 73 65 74 20 68 61 76  #..      set hav
2710: 65 5f 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f  e_vendor_directo
2720: 72 79 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  ry [info exists 
2730: 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79  vendor_directory
2740: 5d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 21  ]....      if {!
2750: 24 68 61 76 65 5f 76 65 6e 64 6f 72 5f 64 69 72  $have_vendor_dir
2760: 65 63 74 6f 72 79 7d 20 74 68 65 6e 20 7b 0d 0a  ectory} then {..
2770: 20 20 20 20 20 20 20 20 73 65 74 20 76 65 6e 64          set vend
2780: 6f 72 5f 64 69 72 65 63 74 6f 72 79 20 22 22 0d  or_directory "".
2790: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
27a0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
27b0: 45 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72  E: This procedur
27c0: 65 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74  e will attempt t
27d0: 6f 20 66 69 6e 64 20 74 68 65 20 76 65 6e 64 6f  o find the vendo
27e0: 72 2d 73 70 65 63 69 66 69 63 20 74 65 73 74 69  r-specific testi
27f0: 6e 67 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  ng..      #     
2800: 20 20 69 6e 66 72 61 73 74 72 75 63 74 75 72 65    infrastructure
2810: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 20 61   directory and a
2820: 64 64 20 69 74 20 74 6f 20 74 68 65 20 61 75 74  dd it to the aut
2830: 6f 2d 70 61 74 68 20 66 6f 72 20 74 68 65 0d 0a  o-path for the..
2840: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63 75        #       cu
2850: 72 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65  rrent interprete
2860: 72 2e 20 20 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68  r.  Normally, th
2870: 69 73 20 77 69 6c 6c 20 61 6c 73 6f 20 73 65 74  is will also set
2880: 20 74 68 65 20 76 61 72 69 61 62 6c 65 0d 0a 20   the variable.. 
2890: 20 20 20 20 20 23 20 20 20 20 20 20 20 63 72 65       #       cre
28a0: 61 74 65 64 20 61 62 6f 76 65 20 74 6f 20 70 6f  ated above to po
28b0: 69 6e 74 20 74 6f 20 74 68 65 20 64 69 72 65 63  int to the direc
28c0: 74 6f 72 79 20 61 64 64 65 64 20 74 6f 20 74 68  tory added to th
28d0: 65 20 61 75 74 6f 2d 70 61 74 68 3b 0d 0a 20 20  e auto-path;..  
28e0: 20 20 20 20 23 20 20 20 20 20 20 20 68 6f 77 65      #       howe
28f0: 76 65 72 2c 20 74 68 69 73 20 77 69 6c 6c 20 6e  ver, this will n
2900: 6f 74 20 62 65 20 64 6f 6e 65 20 69 66 20 74 68  ot be done if th
2910: 65 20 76 61 72 69 61 62 6c 65 20 77 61 73 20 6e  e variable was n
2920: 6f 74 20 63 72 65 61 74 65 64 0d 0a 20 20 20 20  ot created..    
2930: 20 20 23 20 20 20 20 20 20 20 62 79 20 75 73 2e    #       by us.
2940: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
2950: 20 61 64 64 54 65 73 74 53 75 69 74 65 54 6f 41   addTestSuiteToA
2960: 75 74 6f 50 61 74 68 20 73 74 64 6f 75 74 20 5b  utoPath stdout [
2970: 65 78 70 72 20 7b 24 68 61 76 65 5f 76 65 6e 64  expr {$have_vend
2980: 6f 72 5f 64 69 72 65 63 74 6f 72 79 20 3f 20 22  or_directory ? "
2990: 22 20 3a 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  " : \..         
29a0: 20 22 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f   "vendor_directo
29b0: 72 79 22 7d 5d 20 66 61 6c 73 65 0d 0a 0d 0a 20  ry"}] false.... 
29c0: 20 20 20 20 20 75 6e 73 65 74 20 68 61 76 65 5f       unset have_
29d0: 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79  vendor_directory
29e0: 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
29f0: 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 77 65     # NOTE: If we
2a00: 20 61 63 74 75 61 6c 6c 79 20 66 6f 75 6e 64 20   actually found 
2a10: 61 20 76 65 6e 64 6f 72 2d 73 70 65 63 69 66 69  a vendor-specifi
2a20: 63 20 74 65 73 74 69 6e 67 20 69 6e 66 72 61 73  c testing infras
2a30: 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 20 20  tructure..      
2a40: 23 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72  #       director
2a50: 79 20 74 68 65 6e 20 6d 6f 64 69 66 79 20 74 68  y then modify th
2a60: 65 20 54 65 73 74 50 61 74 68 20 70 72 6f 70 65  e TestPath prope
2a70: 72 74 79 20 6f 66 20 74 68 65 20 63 75 72 72 65  rty of the curre
2a80: 6e 74 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  nt..      #     
2a90: 20 20 69 6e 74 65 72 70 72 65 74 65 72 20 74 6f    interpreter to
2aa0: 20 70 6f 69 6e 74 20 64 69 72 65 63 74 6c 79 20   point directly 
2ab0: 74 6f 20 69 74 2e 0d 0a 20 20 20 20 20 20 23 0d  to it...      #.
2ac0: 0a 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72 69  .      if {[stri
2ad0: 6e 67 20 6c 65 6e 67 74 68 20 24 76 65 6e 64 6f  ng length $vendo
2ae0: 72 5f 64 69 72 65 63 74 6f 72 79 5d 20 3e 20 30  r_directory] > 0
2af0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
2b00: 20 20 73 65 74 75 70 49 6e 74 65 72 70 72 65 74    setupInterpret
2b10: 65 72 54 65 73 74 50 61 74 68 20 73 74 64 6f 75  erTestPath stdou
2b20: 74 20 24 76 65 6e 64 6f 72 5f 64 69 72 65 63 74  t $vendor_direct
2b30: 6f 72 79 20 66 61 6c 73 65 0d 0a 20 20 20 20 20  ory false..     
2b40: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
2b50: 20 23 0d 0a 20 20 20 20 23 20 48 41 43 4b 3a 20   #..    # HACK: 
2b60: 50 72 65 76 65 6e 74 20 74 68 65 20 45 61 67 6c  Prevent the Eagl
2b70: 65 20 63 6f 72 65 20 74 65 73 74 20 73 75 69 74  e core test suit
2b80: 65 20 69 6e 66 72 61 73 74 72 75 63 74 75 72 65  e infrastructure
2b90: 20 66 72 6f 6d 20 63 68 65 63 6b 69 6e 67 0d 0a   from checking..
2ba0: 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73 74      #       test
2bb0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 68 61   constraints tha
2bc0: 74 20 61 72 65 20 74 69 6d 65 2d 63 6f 6e 73 75  t are time-consu
2bd0: 6d 69 6e 67 20 61 6e 64 2f 6f 72 20 6d 6f 73 74  ming and/or most
2be0: 20 6c 69 6b 65 6c 79 20 74 6f 0d 0a 20 20 20 20   likely to..    
2bf0: 23 20 20 20 20 20 20 20 62 65 20 73 75 70 65 72  #       be super
2c00: 66 6c 75 6f 75 73 20 74 6f 20 74 68 69 72 64 2d  fluous to third-
2c10: 70 61 72 74 79 20 74 65 73 74 20 73 75 69 74 65  party test suite
2c20: 73 20 28 69 2e 65 2e 20 74 68 6f 73 65 20 74 68  s (i.e. those th
2c30: 61 74 20 61 72 65 0d 0a 20 20 20 20 23 20 20 20  at are..    #   
2c40: 20 20 20 20 6e 6f 74 20 74 65 73 74 69 6e 67 20      not testing 
2c50: 74 68 65 20 45 61 67 6c 65 20 63 6f 72 65 20 6c  the Eagle core l
2c60: 69 62 72 61 72 79 20 69 74 73 65 6c 66 29 2e 0d  ibrary itself)..
2c70: 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20  .    #..    set 
2c80: 6e 6f 28 63 6f 72 65 29 20 31 0d 0a 0d 0a 20 20  no(core) 1....  
2c90: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
2ca0: 20 4d 61 6b 65 20 74 68 65 20 70 65 72 2d 74 65   Make the per-te
2cb0: 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66 6c  st connection fl
2cc0: 61 67 20 6f 75 74 70 75 74 20 61 20 6c 69 74 74  ag output a litt
2cd0: 6c 65 20 6c 65 73 73 20 6e 6f 69 73 79 2e 0d 0a  le less noisy...
2ce0: 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6e      #..    set n
2cf0: 6f 28 65 6d 69 74 4c 6f 63 61 6c 46 6c 61 67 73  o(emitLocalFlags
2d00: 49 66 4e 6f 6e 65 29 20 31 0d 0a 20 20 20 20 73  IfNone) 1..    s
2d10: 65 74 20 6e 6f 28 65 6d 69 74 53 68 61 72 65 64  et no(emitShared
2d20: 46 6c 61 67 73 49 66 4e 6f 6e 65 29 20 31 0d 0a  FlagsIfNone) 1..
2d30: 20 20 20 20 73 65 74 20 6e 6f 28 65 6d 69 74 47      set no(emitG
2d40: 6c 6f 62 61 6c 46 6c 61 67 73 49 66 4e 6f 6e 65  lobalFlagsIfNone
2d50: 29 20 31 0d 0a 20 20 20 20 73 65 74 20 6e 6f 28  ) 1..    set no(
2d60: 65 6d 69 74 43 6f 6d 62 69 6e 65 64 46 6c 61 67  emitCombinedFlag
2d70: 73 49 66 4e 6f 6e 65 29 20 31 0d 0a 20 20 7d 0d  sIfNone) 1..  }.
2d80: 0a 7d 0d 0a 0c 0d 0a 23 23 23 23 23 23 23 23 23  .}.....#########
2d90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2da0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2db0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2dc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2dd0: 23 23 23 23 23 23 0d 0a 23 23 23 23 23 23 23 23  ######..########
2de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2df0: 23 23 23 23 23 23 23 20 45 4e 44 20 56 45 4e 44  ####### END VEND
2e00: 4f 52 20 43 4f 44 45 20 23 23 23 23 23 23 23 23  OR CODE ########
2e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e20: 23 23 23 23 23 23 23 0d 0a 23 23 23 23 23 23 23  #######..#######
2e30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e70: 23 23 23 23 23 23 23 23 0d 0a                    ########..