System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 92bd1489095ea70b80c5f8cf7e9fa363ee8ea616:


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 63 6f 6d 6d 61  ngth [info comma
09f0: 6e 64 73 20 64 65 62 75 67 5d 5d 20 3e 20 30 20  nds debug]] > 0 
0a00: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  && \..          
0a10: 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 73  [llength [info s
0a20: 75 62 63 6f 6d 6d 61 6e 64 73 20 64 65 62 75 67  ubcommands debug
0a30: 20 72 65 66 72 65 73 68 61 75 74 6f 70 61 74 68   refreshautopath
0a40: 5d 5d 20 3e 20 30 20 26 26 20 5c 0d 0a 20 20 20  ]] > 0 && \..   
0a50: 20 20 20 20 20 20 20 5b 63 61 74 63 68 20 7b 64         [catch {d
0a60: 65 62 75 67 20 72 65 66 72 65 73 68 61 75 74 6f  ebug refreshauto
0a70: 70 61 74 68 20 74 72 75 65 7d 5d 20 3d 3d 20 30  path true}] == 0
0a80: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
0a90: 20 20 72 65 74 75 72 6e 20 64 65 62 75 67 0d 0a    return debug..
0aa0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
0ab0: 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69   if {[llength [i
0ac0: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a  nfo commands obj
0ad0: 65 63 74 5d 5d 20 3e 20 30 20 26 26 20 5c 0d 0a  ect]] > 0 && \..
0ae0: 20 20 20 20 20 20 20 20 20 20 5b 63 61 74 63 68            [catch
0af0: 20 7b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20   {object invoke 
0b00: 55 74 69 6c 69 74 79 20 52 65 66 72 65 73 68 41  Utility RefreshA
0b10: 75 74 6f 50 61 74 68 4c 69 73 74 20 74 72 75 65  utoPathList true
0b20: 7d 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d  }] == 0} then {.
0b30: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
0b40: 6f 62 6a 65 63 74 0d 0a 20 20 20 20 20 20 7d 0d  object..      }.
0b50: 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  ...      return 
0b60: 22 22 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20  ""..    }.....  
0b70: 20 20 70 72 6f 63 20 61 64 64 54 65 73 74 53 75    proc addTestSu
0b80: 69 74 65 54 6f 41 75 74 6f 50 61 74 68 20 7b 20  iteToAutoPath { 
0b90: 63 68 61 6e 6e 65 6c 20 76 61 72 4e 61 6d 65 20  channel varName 
0ba0: 71 75 69 65 74 20 7d 20 7b 0d 0a 20 20 20 20 20  quiet } {..     
0bb0: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
0bc0: 3a 20 53 74 61 72 74 20 77 69 74 68 20 74 68 65  : Start with the
0bd0: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
0be0: 69 6e 69 6e 67 20 74 68 69 73 20 66 69 6c 65 2e  ining this file.
0bf0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
0c00: 20 73 65 74 20 64 69 72 20 5b 66 69 6c 65 20 6e   set dir [file n
0c10: 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 64  ormalize [file d
0c20: 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63 72  irname [info scr
0c30: 69 70 74 5d 5d 5d 0d 0a 0d 0a 20 20 20 20 20 20  ipt]]]....      
0c40: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
0c50: 20 4b 65 65 70 20 67 6f 69 6e 67 20 75 6e 74 69   Keep going unti
0c60: 6c 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20  l the directory 
0c70: 6e 61 6d 65 20 69 73 20 65 6d 70 74 79 20 4f 52  name is empty OR
0c80: 20 69 73 20 61 63 74 75 61 6c 6c 79 20 74 68 65   is actually the
0c90: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
0ca0: 72 6f 6f 74 20 6f 66 20 74 68 65 20 61 73 73 6f  root of the asso
0cb0: 63 69 61 74 65 64 20 76 6f 6c 75 6d 65 2e 0d 0a  ciated volume...
0cc0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 77        #..      w
0cd0: 68 69 6c 65 20 7b 5b 73 74 72 69 6e 67 20 6c 65  hile {[string le
0ce0: 6e 67 74 68 20 24 64 69 72 5d 20 3e 20 30 20 26  ngth $dir] > 0 &
0cf0: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b  & \..          [
0d00: 6c 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 2d  lsearch -exact -
0d10: 6e 6f 63 61 73 65 20 2d 2d 20 5b 66 69 6c 65 20  nocase -- [file 
0d20: 76 6f 6c 75 6d 65 73 5d 20 24 64 69 72 5d 20 3d  volumes] $dir] =
0d30: 3d 20 2d 31 7d 20 7b 0d 0a 20 20 20 20 20 20 20  = -1} {..       
0d40: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
0d50: 54 45 3a 20 44 6f 65 73 20 74 68 69 73 20 64 69  TE: Does this di
0d60: 72 65 63 74 6f 72 79 20 68 61 76 65 20 74 68 65  rectory have the
0d70: 20 6e 65 63 65 73 73 61 72 79 20 73 75 62 2d 64   necessary sub-d
0d80: 69 72 65 63 74 6f 72 79 20 74 68 61 74 0d 0a 20  irectory that.. 
0d90: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63         #       c
0da0: 6f 6e 74 61 69 6e 73 20 61 20 70 61 63 6b 61 67  ontains a packag
0db0: 65 20 69 6e 64 65 78 20 66 69 6c 65 3f 0d 0a 20  e index file?.. 
0dc0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
0dd0: 20 20 69 66 20 7b 5b 66 69 6c 65 20 65 78 69 73    if {[file exis
0de0: 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64  ts [file join $d
0df0: 69 72 20 54 65 73 74 73 5d 5d 20 26 26 20 5c 0d  ir Tests]] && \.
0e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 66 69  .            [fi
0e10: 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b  le isdirectory [
0e20: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 54  file join $dir T
0e30: 65 73 74 73 5d 5d 20 26 26 20 5c 0d 0a 20 20 20  ests]] && \..   
0e40: 20 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20 65           [file e
0e50: 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e  xists [file join
0e60: 20 24 64 69 72 20 54 65 73 74 73 20 70 6b 67 49   $dir Tests pkgI
0e70: 6e 64 65 78 2e 65 61 67 6c 65 5d 5d 20 26 26 20  ndex.eagle]] && 
0e80: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  \..            [
0e90: 66 69 6c 65 20 69 73 66 69 6c 65 20 5b 66 69 6c  file isfile [fil
0ea0: 65 20 6a 6f 69 6e 20 24 64 69 72 20 54 65 73 74  e join $dir Test
0eb0: 73 20 70 6b 67 49 6e 64 65 78 2e 65 61 67 6c 65  s pkgIndex.eagle
0ec0: 5d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  ]]} then {..    
0ed0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
0ee0: 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 72 65     # NOTE: If re
0ef0: 71 75 65 73 74 65 64 2c 20 67 69 76 65 20 6f 75  quested, give ou
0f00: 72 20 63 61 6c 6c 65 72 20 61 63 63 65 73 73 20  r caller access 
0f10: 74 6f 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  to the name of t
0f20: 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20  he..          # 
0f30: 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20        directory 
0f40: 77 65 20 6a 75 73 74 20 66 6f 75 6e 64 2e 0d 0a  we just found...
0f50: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
0f60: 20 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72 69         if {[stri
0f70: 6e 67 20 6c 65 6e 67 74 68 20 24 76 61 72 4e 61  ng length $varNa
0f80: 6d 65 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d  me] > 0} then {.
0f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 70 76  .            upv
0fa0: 61 72 20 31 20 24 76 61 72 4e 61 6d 65 20 64 69  ar 1 $varName di
0fb0: 72 32 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  r2..          }.
0fc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
0fd0: 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
0fe0: 3a 20 4f 6b 2c 20 73 68 6f 77 20 74 68 65 20 64  : Ok, show the d
0ff0: 69 72 65 63 74 6f 72 79 20 77 65 20 66 6f 75 6e  irectory we foun
1000: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  d...          #.
1010: 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20 64  .          set d
1020: 69 72 32 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  ir2 [file join $
1030: 64 69 72 20 54 65 73 74 73 5d 0d 0a 0d 0a 20 20  dir Tests]....  
1040: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
1050: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20       # NOTE: We 
1060: 66 6f 75 6e 64 20 74 68 65 20 6e 65 63 65 73 73  found the necess
1070: 61 72 79 20 64 69 72 65 63 74 6f 72 79 20 74 6f  ary directory to
1080: 20 61 64 64 20 74 6f 20 74 68 65 20 61 75 74 6f   add to the auto
1090: 2d 70 61 74 68 3b 0d 0a 20 20 20 20 20 20 20 20  -path;..        
10a0: 20 20 23 20 20 20 20 20 20 20 48 6f 77 65 76 65    #       Howeve
10b0: 72 2c 20 77 65 20 63 61 6e 6e 6f 74 20 73 69 6d  r, we cannot sim
10c0: 70 6c 79 20 61 64 64 20 69 74 20 74 6f 20 74 68  ply add it to th
10d0: 65 20 61 75 74 6f 2d 70 61 74 68 20 64 69 72 65  e auto-path dire
10e0: 63 74 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ctly..          
10f0: 23 20 20 20 20 20 20 20 62 65 63 61 75 73 65 20  #       because 
1100: 74 68 65 20 61 75 74 6f 2d 70 61 74 68 20 69 73  the auto-path is
1110: 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 63 6f 6e   dynamically con
1120: 73 74 72 75 63 74 65 64 20 61 66 74 65 72 20 74  structed after t
1130: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 23  his..          #
1140: 20 20 20 20 20 20 20 73 63 72 69 70 74 20 69 73         script is
1150: 20 65 76 61 6c 75 61 74 65 64 3b 20 74 68 65 72   evaluated; ther
1160: 65 66 6f 72 65 2c 20 73 65 74 20 74 68 65 20 45  efore, set the E
1170: 61 67 6c 65 20 6c 69 62 72 61 72 79 20 70 61 74  agle library pat
1180: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  h..          #  
1190: 20 20 20 20 20 65 6e 76 69 72 6f 6e 6d 65 6e 74       environment
11a0: 20 76 61 72 69 61 62 6c 65 20 61 6e 64 20 66 6f   variable and fo
11b0: 72 63 65 20 74 68 65 20 61 70 70 72 6f 70 72 69  rce the appropri
11c0: 61 74 65 20 69 6e 74 65 72 6e 61 6c 20 70 61 74  ate internal pat
11d0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  h..          #  
11e0: 20 20 20 20 20 6c 69 73 74 20 74 6f 20 62 65 20       list to be 
11f0: 72 65 66 72 65 73 68 65 64 2e 0d 0a 20 20 20 20  refreshed...    
1200: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1210: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
1220: 69 73 74 73 20 3a 3a 65 6e 76 28 45 41 47 4c 45  ists ::env(EAGLE
1230: 4c 49 42 50 41 54 48 29 5d 20 7c 7c 20 5c 0d 0a  LIBPATH)] || \..
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6c                [l
1250: 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 3a  search -exact $:
1260: 3a 65 6e 76 28 45 41 47 4c 45 4c 49 42 50 41 54  :env(EAGLELIBPAT
1270: 48 29 20 24 64 69 72 32 5d 20 3d 3d 20 2d 31 7d  H) $dir2] == -1}
1280: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
1290: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
12a0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 77      # NOTE: If w
12b0: 65 20 68 61 76 65 20 4e 4f 54 20 62 65 65 6e 20  e have NOT been 
12c0: 69 6e 73 74 72 75 63 74 65 64 20 74 6f 20 62 65  instructed to be
12d0: 20 71 75 69 65 74 2c 20 72 65 70 6f 72 74 20 6e   quiet, report n
12e0: 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow...           
12f0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1300: 69 66 20 7b 21 24 71 75 69 65 74 7d 20 74 68 65  if {!$quiet} the
1310: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n {..           
1320: 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20     catch {..    
1330: 20 20 20 20 20 20 20 20 20 20 20 20 74 71 70 75              tqpu
1340: 74 73 20 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70  ts $channel [app
1350: 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20  endArgs \..     
1360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1370: 2d 2d 2d 2d 20 66 6f 75 6e 64 20 76 65 6e 64 6f  ---- found vendo
1380: 72 2d 73 70 65 63 69 66 69 63 20 74 65 73 74 20  r-specific test 
1390: 70 61 63 6b 61 67 65 20 64 69 72 65 63 74 6f 72  package director
13a0: 79 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 20  y \"" \..       
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 64 69               $di
13c0: 72 32 20 22 5c 22 2c 20 61 64 64 69 6e 67 2e 2e  r2 "\", adding..
13d0: 2e 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20 20 20  .\n"]..         
13e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1400: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1410: 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 70 70 65      # NOTE: Appe
1420: 6e 64 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  nd the directory
1430: 20 74 6f 20 74 68 65 20 6e 65 63 65 73 73 61 72   to the necessar
1440: 79 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  y environment va
1450: 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20  riable..        
1460: 20 20 20 20 23 20 20 20 20 20 20 20 73 6f 20 74      #       so t
1470: 68 61 74 20 69 74 20 77 69 6c 6c 20 67 65 74 20  hat it will get 
1480: 70 69 63 6b 65 64 20 75 70 20 77 68 65 6e 20 45  picked up when E
1490: 61 67 6c 65 20 61 63 74 75 61 6c 6c 79 20 72 65  agle actually re
14a0: 62 75 69 6c 64 73 0d 0a 20 20 20 20 20 20 20 20  builds..        
14b0: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20      #       the 
14c0: 61 75 74 6f 2d 70 61 74 68 20 6c 69 73 74 20 28  auto-path list (
14d0: 62 65 6c 6f 77 29 2e 0d 0a 20 20 20 20 20 20 20  below)...       
14e0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
14f0: 20 20 20 20 6c 61 70 70 65 6e 64 20 3a 3a 65 6e      lappend ::en
1500: 76 28 45 41 47 4c 45 4c 49 42 50 41 54 48 29 20  v(EAGLELIBPATH) 
1510: 24 64 69 72 32 0d 0a 0d 0a 20 20 20 20 20 20 20  $dir2....       
1520: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1530: 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 74 74 65      # NOTE: Atte
1540: 6d 70 74 20 74 6f 20 66 6f 72 63 65 20 45 61 67  mpt to force Eag
1550: 6c 65 20 74 6f 20 72 65 62 75 69 6c 64 20 74 68  le to rebuild th
1560: 65 20 61 75 74 6f 2d 70 61 74 68 20 66 6f 72 20  e auto-path for 
1570: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
1580: 20 23 20 20 20 20 20 20 20 63 75 72 72 65 6e 74   #       current
1590: 20 69 6e 74 65 72 70 72 65 74 65 72 20 72 69 67   interpreter rig
15a0: 68 74 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 20  ht now...       
15b0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
15c0: 20 20 20 20 73 65 74 20 72 65 66 72 65 73 68 20      set refresh 
15d0: 5b 72 65 66 72 65 73 68 41 75 74 6f 50 61 74 68  [refreshAutoPath
15e0: 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ]....           
15f0: 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e   if {[string len
1600: 67 74 68 20 24 72 65 66 72 65 73 68 5d 20 3d 3d  gth $refresh] ==
1610: 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20   0} then {..    
1620: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
1630: 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
1640: 45 3a 20 4f 6b 2c 20 6d 61 79 62 65 20 74 68 65  E: Ok, maybe the
1650: 20 5b 6f 62 6a 65 63 74 5d 20 63 6f 6d 6d 61 6e   [object] comman
1660: 64 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  d is not availab
1670: 6c 65 2e 20 20 52 65 73 63 61 6e 0d 0a 20 20 20  le.  Rescan..   
1680: 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20             #    
1690: 20 20 20 74 68 65 20 70 61 63 6b 61 67 65 20 69     the package i
16a0: 6e 64 65 78 65 73 20 75 73 69 6e 67 20 74 68 65  ndexes using the
16b0: 20 5b 70 61 63 6b 61 67 65 20 73 63 61 6e 5d 20   [package scan] 
16c0: 73 75 62 2d 63 6f 6d 6d 61 6e 64 0d 0a 20 20 20  sub-command..   
16d0: 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20             #    
16e0: 20 20 20 69 6e 20 74 68 61 74 20 63 61 73 65 2e     in that case.
16f0: 20 20 54 68 65 20 64 69 72 65 63 74 6f 72 69 65    The directorie
1700: 73 20 77 69 74 68 69 6e 20 45 41 47 4c 45 4c 49  s within EAGLELI
1710: 42 50 41 54 48 20 77 69 6c 6c 0d 0a 20 20 20 20  BPATH will..    
1720: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
1730: 20 20 6e 6f 74 20 62 65 20 61 64 64 65 64 20 74    not be added t
1740: 6f 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68 3b  o the auto-path;
1750: 20 68 6f 77 65 76 65 72 2c 20 61 6c 6c 20 74 68   however, all th
1760: 65 20 70 61 63 6b 61 67 65 0d 0a 20 20 20 20 20  e package..     
1770: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
1780: 20 69 6e 64 65 78 65 73 20 61 6e 64 20 74 68 65   indexes and the
1790: 69 72 20 61 73 73 6f 63 69 61 74 65 64 20 70 61  ir associated pa
17a0: 63 6b 61 67 65 73 20 77 69 6c 6c 20 62 65 20 61  ckages will be a
17b0: 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 20  vailable...     
17c0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
17d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 21 24            if {!$
17e0: 71 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20  quiet} then {.. 
17f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1800: 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
1810: 20 20 20 20 20 20 20 20 20 20 74 71 70 75 74 73            tqputs
1820: 20 24 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e   $channel [appen
1830: 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20  dArgs \..       
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1850: 2d 2d 2d 2d 20 75 6e 61 62 6c 65 20 74 6f 20 66  ---- unable to f
1860: 6f 72 63 69 62 6c 79 20 72 65 66 72 65 73 68 20  orcibly refresh 
1870: 61 75 74 6f 2d 70 61 74 68 20 6c 69 73 74 2c 20  auto-path list, 
1880: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " \..           
1890: 20 20 20 20 20 20 20 20 20 20 20 22 73 63 61 6e             "scan
18a0: 6e 69 6e 67 20 5c 22 22 20 24 3a 3a 65 6e 76 28  ning \"" $::env(
18b0: 45 41 47 4c 45 4c 49 42 50 41 54 48 29 20 22 5c  EAGLELIBPATH) "\
18c0: 22 20 69 6e 73 74 65 61 64 2e 2e 2e 5c 6e 22 5d  " instead...\n"]
18d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
18f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1900: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1910: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49         # NOTE: I
1920: 6e 20 74 68 65 6f 72 79 2c 20 74 68 69 73 20 63  n theory, this c
1930: 61 6c 6c 20 74 6f 20 74 68 65 20 5b 70 61 63 6b  all to the [pack
1940: 61 67 65 20 73 63 61 6e 5d 20 73 75 62 2d 63 6f  age scan] sub-co
1950: 6d 6d 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  mmand..         
1960: 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 75       #       cou
1970: 6c 64 20 66 61 69 6c 2c 20 72 61 69 73 69 6e 67  ld fail, raising
1980: 20 61 20 73 63 72 69 70 74 20 65 72 72 6f 72 20   a script error 
1990: 68 65 72 65 3b 20 68 6f 77 65 76 65 72 2c 20 74  here; however, t
19a0: 68 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  hat..           
19b0: 20 20 20 23 20 20 20 20 20 20 20 69 73 20 68 69     #       is hi
19c0: 67 68 6c 79 20 75 6e 6c 69 6b 65 6c 79 2e 0d 0a  ghly unlikely...
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d                #.
19e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65  .              e
19f0: 76 61 6c 20 70 61 63 6b 61 67 65 20 73 63 61 6e  val package scan
1a00: 20 2d 68 6f 73 74 20 2d 6e 6f 72 6d 61 6c 20 2d   -host -normal -
1a10: 72 65 66 72 65 73 68 20 2d 2d 20 24 3a 3a 65 6e  refresh -- $::en
1a20: 76 28 45 41 47 4c 45 4c 49 42 50 41 54 48 29 0d  v(EAGLELIBPATH).
1a30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65  .            } e
1a40: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  lse {..         
1a50: 20 20 20 20 20 69 66 20 7b 21 24 71 75 69 65 74       if {!$quiet
1a60: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
1a70: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
1a80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a90: 20 20 20 20 20 74 71 70 75 74 73 20 24 63 68 61       tqputs $cha
1aa0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
1ab0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1ac0: 20 20 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20            "---- 
1ad0: 66 6f 72 63 69 62 6c 79 20 72 65 66 72 65 73 68  forcibly refresh
1ae0: 65 64 20 61 75 74 6f 2d 70 61 74 68 20 6c 69 73  ed auto-path lis
1af0: 74 20 76 69 61 20 5c 22 22 20 5c 0d 0a 20 20 20  t via \"" \..   
1b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b10: 20 20 20 24 72 65 66 72 65 73 68 20 22 5c 22 20     $refresh "\" 
1b20: 63 6f 6d 6d 61 6e 64 5c 6e 22 5d 0d 0a 20 20 20  command\n"]..   
1b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1b60: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
1b70: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1b80: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65        # NOTE: We
1b90: 20 61 72 65 20 64 6f 6e 65 2c 20 72 65 74 75 72   are done, retur
1ba0: 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20  n success...    
1bb0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1bc0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 0d 0a     return true..
1bd0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1be0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1bf0: 23 20 4e 4f 54 45 3a 20 4b 65 65 70 20 67 6f 69  # NOTE: Keep goi
1c00: 6e 67 20 75 70 20 74 68 65 20 64 69 72 65 63 74  ng up the direct
1c10: 6f 72 79 20 74 72 65 65 2e 2e 2e 0d 0a 20 20 20  ory tree.....   
1c20: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1c30: 73 65 74 20 64 69 72 20 5b 66 69 6c 65 20 64 69  set dir [file di
1c40: 72 6e 61 6d 65 20 24 64 69 72 5d 0d 0a 20 20 20  rname $dir]..   
1c50: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
1c60: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 49  .      # NOTE: I
1c70: 66 20 77 65 20 68 61 76 65 20 4e 4f 54 20 62 65  f we have NOT be
1c80: 65 6e 20 69 6e 73 74 72 75 63 74 65 64 20 74 6f  en instructed to
1c90: 20 62 65 20 71 75 69 65 74 2c 20 72 65 70 6f 72   be quiet, repor
1ca0: 74 20 6e 6f 77 2e 0d 0a 20 20 20 20 20 20 23 0d  t now...      #.
1cb0: 0a 20 20 20 20 20 20 69 66 20 7b 21 24 71 75 69  .      if {!$qui
1cc0: 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  et} then {..    
1cd0: 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20      catch {..   
1ce0: 20 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63         tqputs $c
1cf0: 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20  hannel \..      
1d00: 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63 6f          "---- co
1d10: 75 6c 64 20 6e 6f 74 20 66 69 6e 64 20 76 65 6e  uld not find ven
1d20: 64 6f 72 2d 73 70 65 63 69 66 69 63 20 74 65 73  dor-specific tes
1d30: 74 20 70 61 63 6b 61 67 65 20 64 69 72 65 63 74  t package direct
1d40: 6f 72 79 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20  ory\n"..        
1d50: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
1d60: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
1d70: 4f 54 45 3a 20 44 69 72 65 63 74 6f 72 79 20 6e  OTE: Directory n
1d80: 6f 74 20 66 6f 75 6e 64 2c 20 72 65 74 75 72 6e  ot found, return
1d90: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20   failure...     
1da0: 20 23 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   #..      return
1db0: 20 66 61 6c 73 65 0d 0a 20 20 20 20 7d 0d 0a 0c   false..    }...
1dc0: 0d 0a 20 20 20 20 70 72 6f 63 20 73 65 74 75 70  ..    proc setup
1dd0: 49 6e 74 65 72 70 72 65 74 65 72 54 65 73 74 50  InterpreterTestP
1de0: 61 74 68 20 7b 20 63 68 61 6e 6e 65 6c 20 64 69  ath { channel di
1df0: 72 20 71 75 69 65 74 20 7d 20 7b 0d 0a 20 20 20  r quiet } {..   
1e00: 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20     if {[llength 
1e10: 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 64  [info commands d
1e20: 65 62 75 67 5d 5d 20 3e 20 30 20 26 26 20 5c 0d  ebug]] > 0 && \.
1e30: 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65 6e  .          [llen
1e40: 67 74 68 20 5b 69 6e 66 6f 20 73 75 62 63 6f 6d  gth [info subcom
1e50: 6d 61 6e 64 73 20 64 65 62 75 67 20 74 65 73 74  mands debug test
1e60: 70 61 74 68 5d 5d 20 3e 20 30 20 26 26 20 5c 0d  path]] > 0 && \.
1e70: 0a 20 20 20 20 20 20 20 20 20 20 5b 63 61 74 63  .          [catc
1e80: 68 20 7b 64 65 62 75 67 20 74 65 73 74 70 61 74  h {debug testpat
1e90: 68 7d 20 74 65 73 74 50 61 74 68 5d 20 3d 3d 20  h} testPath] == 
1ea0: 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
1eb0: 20 20 20 69 66 20 7b 24 64 69 72 20 6e 65 20 24     if {$dir ne $
1ec0: 74 65 73 74 50 61 74 68 7d 20 74 68 65 6e 20 7b  testPath} then {
1ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 64 65 62 75  ..          debu
1ee0: 67 20 74 65 73 74 70 61 74 68 20 24 64 69 72 0d  g testpath $dir.
1ef0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
1f00: 7b 21 24 71 75 69 65 74 7d 20 74 68 65 6e 20 7b  {!$quiet} then {
1f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
1f20: 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  tch {..         
1f30: 20 20 20 20 20 74 71 70 75 74 73 20 24 63 68 61       tqputs $cha
1f40: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
1f50: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1f60: 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73 65 74 20        "---- set 
1f70: 69 6e 74 65 72 70 72 65 74 65 72 20 74 65 73 74  interpreter test
1f80: 20 70 61 74 68 20 74 6f 20 5c 22 22 20 24 64 69   path to \"" $di
1f90: 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r \..           
1fa0: 20 20 20 20 20 20 20 22 5c 22 20 76 69 61 20 5c         "\" via \
1fb0: 22 64 65 62 75 67 5c 22 20 63 6f 6d 6d 61 6e 64  "debug\" command
1fc0: 5c 6e 22 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  \n"]..          
1fd0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d    }..          }
1fe0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1ff0: 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 5b 6c 6c     } elseif {[ll
2000: 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d  ength [info comm
2010: 61 6e 64 73 20 6f 62 6a 65 63 74 5d 5d 20 3e 20  ands object]] > 
2020: 30 20 26 26 20 5b 63 61 74 63 68 20 7b 0d 0a 20  0 && [catch {.. 
2030: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 69 6e         object in
2040: 76 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e  voke -flags +Non
2050: 50 75 62 6c 69 63 20 49 6e 74 65 72 70 72 65 74  Public Interpret
2060: 65 72 2e 47 65 74 41 63 74 69 76 65 20 54 65 73  er.GetActive Tes
2070: 74 50 61 74 68 0d 0a 20 20 20 20 20 20 7d 20 74  tPath..      } t
2080: 65 73 74 50 61 74 68 5d 20 3d 3d 20 30 7d 20 74  estPath] == 0} t
2090: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 69  hen {..        i
20a0: 66 20 7b 24 64 69 72 20 6e 65 20 24 74 65 73 74  f {$dir ne $test
20b0: 50 61 74 68 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  Path} then {..  
20c0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 69          object i
20d0: 6e 76 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f  nvoke -flags +No
20e0: 6e 50 75 62 6c 69 63 20 49 6e 74 65 72 70 72 65  nPublic Interpre
20f0: 74 65 72 2e 47 65 74 41 63 74 69 76 65 20 54 65  ter.GetActive Te
2100: 73 74 50 61 74 68 20 24 64 69 72 0d 0a 0d 0a 20  stPath $dir.... 
2110: 20 20 20 20 20 20 20 20 20 69 66 20 7b 21 24 71           if {!$q
2120: 75 69 65 74 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  uiet} then {..  
2130: 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20            catch 
2140: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2150: 20 74 71 70 75 74 73 20 24 63 68 61 6e 6e 65 6c   tqputs $channel
2160: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a   [appendArgs \..
2170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2180: 20 20 22 2d 2d 2d 2d 20 73 65 74 20 69 6e 74 65    "---- set inte
2190: 72 70 72 65 74 65 72 20 74 65 73 74 20 70 61 74  rpreter test pat
21a0: 68 20 74 6f 20 5c 22 22 20 24 64 69 72 20 5c 0d  h to \"" $dir \.
21b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21c0: 20 20 20 22 5c 22 20 76 69 61 20 5c 22 6f 62 6a     "\" via \"obj
21d0: 65 63 74 5c 22 20 63 6f 6d 6d 61 6e 64 5c 6e 22  ect\" command\n"
21e0: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ]..            }
21f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
2200: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2210: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
2220: 20 20 69 66 20 7b 21 24 71 75 69 65 74 7d 20 74    if {!$quiet} t
2230: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
2240: 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20   catch {..      
2250: 20 20 20 20 20 20 74 71 70 75 74 73 20 24 63 68        tqputs $ch
2260: 61 6e 6e 65 6c 20 22 2d 2d 2d 2d 20 63 61 6e 6e  annel "---- cann
2270: 6f 74 20 73 65 74 20 69 6e 74 65 72 70 72 65 74  ot set interpret
2280: 65 72 20 74 65 73 74 20 70 61 74 68 5c 6e 22 0d  er test path\n".
2290: 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  .          }..  
22a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
22b0: 0d 0a 20 20 20 20 7d 0d 0a 0c 0d 0a 20 20 20 20  ..    }.....    
22c0: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 43  #..    # NOTE: C
22d0: 68 65 63 6b 20 66 6f 72 20 61 6e 79 20 6f 76 65  heck for any ove
22e0: 72 72 69 64 64 65 6e 20 73 65 74 74 69 6e 67 73  rridden settings
22f0: 20 74 68 61 74 20 6d 61 79 20 68 61 76 65 20 62   that may have b
2300: 65 65 6e 20 73 70 65 63 69 66 69 65 64 20 76 69  een specified vi
2310: 61 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74  a..    #       t
2320: 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2c  he command line,
2330: 20 65 74 63 2e 0d 0a 20 20 20 20 23 0d 0a 20 20   etc...    #..  
2340: 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74 4f 76    checkForTestOv
2350: 65 72 72 69 64 65 73 20 73 74 64 6f 75 74 20 5b  errides stdout [
2360: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
2370: 74 73 20 74 65 73 74 5f 6f 76 65 72 72 69 64 65  ts test_override
2380: 73 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20  s] ? \..        
2390: 24 74 65 73 74 5f 6f 76 65 72 72 69 64 65 73 20  $test_overrides 
23a0: 3a 20 5b 6c 69 73 74 20 62 69 6e 61 72 79 5f 64  : [list binary_d
23b0: 69 72 65 63 74 6f 72 79 20 62 75 69 6c 64 5f 62  irectory build_b
23c0: 61 73 65 5f 64 69 72 65 63 74 6f 72 79 20 5c 0d  ase_directory \.
23d0: 0a 20 20 20 20 20 20 20 20 62 75 69 6c 64 5f 64  .        build_d
23e0: 69 72 65 63 74 6f 72 79 20 63 6f 6d 6d 6f 6e 5f  irectory common_
23f0: 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 6e 65 63  directory connec
2400: 74 69 6f 6e 5f 66 6c 61 67 73 20 64 61 74 61 62  tion_flags datab
2410: 61 73 65 5f 64 69 72 65 63 74 6f 72 79 20 5c 0d  ase_directory \.
2420: 0a 20 20 20 20 20 20 20 20 64 61 74 65 74 69 6d  .        datetim
2430: 65 5f 66 6f 72 6d 61 74 20 65 78 65 63 75 74 65  e_format execute
2440: 5f 6f 6e 5f 73 65 74 75 70 20 72 65 6c 65 61 73  _on_setup releas
2450: 65 5f 76 65 72 73 69 6f 6e 20 73 63 72 61 74 63  e_version scratc
2460: 68 5f 64 69 72 65 63 74 6f 72 79 20 5c 0d 0a 20  h_directory \.. 
2470: 20 20 20 20 20 20 20 74 65 6d 70 6f 72 61 72 79         temporary
2480: 5f 64 69 72 65 63 74 6f 72 79 20 74 65 73 74 5f  _directory test_
2490: 63 6c 72 20 74 65 73 74 5f 63 6c 72 5f 76 32 20  clr test_clr_v2 
24a0: 74 65 73 74 5f 63 6c 72 5f 76 34 20 5c 0d 0a 20  test_clr_v4 \.. 
24b0: 20 20 20 20 20 20 20 74 65 73 74 5f 63 6f 6e 66         test_conf
24c0: 69 67 75 72 61 74 69 6f 6e 20 74 65 73 74 5f 63  iguration test_c
24d0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 73 20 74 65  onfigurations te
24e0: 73 74 5f 63 6f 6e 73 74 72 61 69 6e 74 73 20 74  st_constraints t
24f0: 65 73 74 5f 6d 61 63 68 69 6e 65 20 5c 0d 0a 20  est_machine \.. 
2500: 20 20 20 20 20 20 20 74 65 73 74 5f 6e 65 74 5f         test_net_
2510: 66 78 20 74 65 73 74 5f 6f 76 65 72 72 69 64 65  fx test_override
2520: 73 20 74 65 73 74 5f 70 6c 61 74 66 6f 72 6d 20  s test_platform 
2530: 74 65 73 74 5f 73 75 69 74 65 20 74 65 73 74 5f  test_suite test_
2540: 79 65 61 72 20 5c 0d 0a 20 20 20 20 20 20 20 20  year \..        
2550: 74 65 73 74 5f 79 65 61 72 73 20 74 65 73 74 5f  test_years test_
2560: 79 65 61 72 5f 63 6c 72 5f 76 32 20 74 65 73 74  year_clr_v2 test
2570: 5f 79 65 61 72 5f 63 6c 72 5f 76 34 20 76 65 6e  _year_clr_v4 ven
2580: 64 6f 72 5f 64 69 72 65 63 74 6f 72 79 5d 7d 5d  dor_directory]}]
2590: 20 66 61 6c 73 65 0d 0a 0d 0a 20 20 20 20 23 0d   false....    #.
25a0: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74  .    # NOTE: Set
25b0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
25c0: 20 72 75 6e 6e 69 6e 67 20 74 65 73 74 20 73 75   running test su
25d0: 69 74 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72  ite, if necessar
25e0: 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  y...    #..    i
25f0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
2600: 20 74 65 73 74 5f 73 75 69 74 65 5d 7d 20 74 68   test_suite]} th
2610: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20  en {..      set 
2620: 74 65 73 74 5f 73 75 69 74 65 20 22 53 79 73 74  test_suite "Syst
2630: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 54  em.Data.SQLite T
2640: 65 73 74 20 53 75 69 74 65 20 66 6f 72 20 45 61  est Suite for Ea
2650: 67 6c 65 22 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  gle"..    }.... 
2660: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
2670: 3a 20 57 68 65 6e 20 62 65 69 6e 67 20 65 76 61  : When being eva
2680: 6c 75 61 74 65 64 20 69 6e 20 61 20 22 73 61 66  luated in a "saf
2690: 65 22 20 69 6e 74 65 72 70 72 65 74 65 72 2c 20  e" interpreter, 
26a0: 73 6f 6d 65 20 73 74 65 70 73 20 6d 75 73 74 20  some steps must 
26b0: 62 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  be..    #       
26c0: 73 6b 69 70 70 65 64 20 64 75 65 20 74 6f 20 6d  skipped due to m
26d0: 69 73 73 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 20  issing commands 
26e0: 61 6e 64 2f 6f 72 20 73 75 62 2d 63 6f 6d 6d 61  and/or sub-comma
26f0: 6e 64 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  nds...    #..   
2700: 20 69 66 20 7b 21 5b 69 6e 74 65 72 70 20 69 73   if {![interp is
2710: 73 61 66 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  safe]} then {.. 
2720: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
2730: 4e 4f 54 45 3a 20 54 68 69 73 20 76 61 72 69 61  NOTE: This varia
2740: 62 6c 65 20 77 69 6c 6c 20 63 6f 6e 74 61 69 6e  ble will contain
2750: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2760: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
2770: 69 6e 69 6e 67 0d 0a 20 20 20 20 20 20 23 20 20  ining..      #  
2780: 20 20 20 20 20 74 68 65 20 76 65 6e 64 6f 72 2d       the vendor-
2790: 73 70 65 63 69 66 69 63 20 74 65 73 74 69 6e 67  specific testing
27a0: 20 69 6e 66 72 61 73 74 72 75 63 74 75 72 65 2e   infrastructure.
27b0: 20 20 49 66 20 74 68 65 20 76 61 72 69 61 62 6c    If the variabl
27c0: 65 20 64 6f 65 73 0d 0a 20 20 20 20 20 20 23 20  e does..      # 
27d0: 20 20 20 20 20 20 6e 6f 74 20 61 6c 72 65 61 64        not alread
27e0: 79 20 65 78 69 73 74 2c 20 63 72 65 61 74 65 20  y exist, create 
27f0: 69 74 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 69  it; otherwise, i
2800: 74 20 68 61 73 20 62 65 65 6e 20 6f 76 65 72 72  t has been overr
2810: 69 64 64 65 6e 0d 0a 20 20 20 20 20 20 23 20 20  idden..      #  
2820: 20 20 20 20 20 61 6e 64 20 74 68 65 20 65 78 69       and the exi
2830: 73 74 69 6e 67 20 76 61 6c 75 65 20 73 68 6f 75  sting value shou
2840: 6c 64 20 62 65 20 6c 65 66 74 20 69 6e 74 61 63  ld be left intac
2850: 74 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  t...      #..   
2860: 20 20 20 73 65 74 20 68 61 76 65 5f 76 65 6e 64     set have_vend
2870: 6f 72 5f 64 69 72 65 63 74 6f 72 79 20 5b 69 6e  or_directory [in
2880: 66 6f 20 65 78 69 73 74 73 20 76 65 6e 64 6f 72  fo exists vendor
2890: 5f 64 69 72 65 63 74 6f 72 79 5d 0d 0a 0d 0a 20  _directory].... 
28a0: 20 20 20 20 20 69 66 20 7b 21 24 68 61 76 65 5f       if {!$have_
28b0: 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79  vendor_directory
28c0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
28d0: 20 20 73 65 74 20 76 65 6e 64 6f 72 5f 64 69 72    set vendor_dir
28e0: 65 63 74 6f 72 79 20 22 22 0d 0a 20 20 20 20 20  ectory ""..     
28f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
2900: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69       # NOTE: Thi
2910: 73 20 70 72 6f 63 65 64 75 72 65 20 77 69 6c 6c  s procedure will
2920: 20 61 74 74 65 6d 70 74 20 74 6f 20 66 69 6e 64   attempt to find
2930: 20 74 68 65 20 76 65 6e 64 6f 72 2d 73 70 65 63   the vendor-spec
2940: 69 66 69 63 20 74 65 73 74 69 6e 67 0d 0a 20 20  ific testing..  
2950: 20 20 20 20 23 20 20 20 20 20 20 20 69 6e 66 72      #       infr
2960: 61 73 74 72 75 63 74 75 72 65 20 64 69 72 65 63  astructure direc
2970: 74 6f 72 79 20 61 6e 64 20 61 64 64 20 69 74 20  tory and add it 
2980: 74 6f 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68  to the auto-path
2990: 20 66 6f 72 20 74 68 65 0d 0a 20 20 20 20 20 20   for the..      
29a0: 23 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20  #       current 
29b0: 69 6e 74 65 72 70 72 65 74 65 72 2e 20 20 4e 6f  interpreter.  No
29c0: 72 6d 61 6c 6c 79 2c 20 74 68 69 73 20 77 69 6c  rmally, this wil
29d0: 6c 20 61 6c 73 6f 20 73 65 74 20 74 68 65 20 76  l also set the v
29e0: 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 23  ariable..      #
29f0: 20 20 20 20 20 20 20 63 72 65 61 74 65 64 20 61         created a
2a00: 62 6f 76 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f  bove to point to
2a10: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 61   the directory a
2a20: 64 64 65 64 20 74 6f 20 74 68 65 20 61 75 74 6f  dded to the auto
2a30: 2d 70 61 74 68 3b 0d 0a 20 20 20 20 20 20 23 20  -path;..      # 
2a40: 20 20 20 20 20 20 68 6f 77 65 76 65 72 2c 20 74        however, t
2a50: 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20  his will not be 
2a60: 64 6f 6e 65 20 69 66 20 74 68 65 20 76 61 72 69  done if the vari
2a70: 61 62 6c 65 20 77 61 73 20 6e 6f 74 20 63 72 65  able was not cre
2a80: 61 74 65 64 0d 0a 20 20 20 20 20 20 23 20 20 20  ated..      #   
2a90: 20 20 20 20 62 79 20 75 73 2e 0d 0a 20 20 20 20      by us...    
2aa0: 20 20 23 0d 0a 20 20 20 20 20 20 61 64 64 54 65    #..      addTe
2ab0: 73 74 53 75 69 74 65 54 6f 41 75 74 6f 50 61 74  stSuiteToAutoPat
2ac0: 68 20 73 74 64 6f 75 74 20 5b 65 78 70 72 20 7b  h stdout [expr {
2ad0: 24 68 61 76 65 5f 76 65 6e 64 6f 72 5f 64 69 72  $have_vendor_dir
2ae0: 65 63 74 6f 72 79 20 3f 20 22 22 20 3a 20 5c 0d  ectory ? "" : \.
2af0: 0a 20 20 20 20 20 20 20 20 20 20 22 76 65 6e 64  .          "vend
2b00: 6f 72 5f 64 69 72 65 63 74 6f 72 79 22 7d 5d 20  or_directory"}] 
2b10: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 65  [info exists ::e
2b20: 6e 76 28 71 75 69 65 74 41 64 64 54 65 73 74 53  nv(quietAddTestS
2b30: 75 69 74 65 54 6f 41 75 74 6f 50 61 74 68 29 5d  uiteToAutoPath)]
2b40: 0d 0a 0d 0a 20 20 20 20 20 20 75 6e 73 65 74 20  ....      unset 
2b50: 68 61 76 65 5f 76 65 6e 64 6f 72 5f 64 69 72 65  have_vendor_dire
2b60: 63 74 6f 72 79 0d 0a 0d 0a 20 20 20 20 20 20 23  ctory....      #
2b70: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
2b80: 49 66 20 77 65 20 61 63 74 75 61 6c 6c 79 20 66  If we actually f
2b90: 6f 75 6e 64 20 61 20 76 65 6e 64 6f 72 2d 73 70  ound a vendor-sp
2ba0: 65 63 69 66 69 63 20 74 65 73 74 69 6e 67 20 69  ecific testing i
2bb0: 6e 66 72 61 73 74 72 75 63 74 75 72 65 0d 0a 20  nfrastructure.. 
2bc0: 20 20 20 20 20 23 20 20 20 20 20 20 20 64 69 72       #       dir
2bd0: 65 63 74 6f 72 79 20 74 68 65 6e 20 6d 6f 64 69  ectory then modi
2be0: 66 79 20 74 68 65 20 54 65 73 74 50 61 74 68 20  fy the TestPath 
2bf0: 70 72 6f 70 65 72 74 79 20 6f 66 20 74 68 65 20  property of the 
2c00: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 23  current..      #
2c10: 20 20 20 20 20 20 20 69 6e 74 65 72 70 72 65 74         interpret
2c20: 65 72 20 74 6f 20 70 6f 69 6e 74 20 64 69 72 65  er to point dire
2c30: 63 74 6c 79 20 74 6f 20 69 74 2e 0d 0a 20 20 20  ctly to it...   
2c40: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
2c50: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
2c60: 76 65 6e 64 6f 72 5f 64 69 72 65 63 74 6f 72 79  vendor_directory
2c70: 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20  ] > 0} then {.. 
2c80: 20 20 20 20 20 20 20 73 65 74 75 70 49 6e 74 65         setupInte
2c90: 72 70 72 65 74 65 72 54 65 73 74 50 61 74 68 20  rpreterTestPath 
2ca0: 73 74 64 6f 75 74 20 24 76 65 6e 64 6f 72 5f 64  stdout $vendor_d
2cb0: 69 72 65 63 74 6f 72 79 20 5b 69 6e 66 6f 20 65  irectory [info e
2cc0: 78 69 73 74 73 20 5c 0d 0a 20 20 20 20 20 20 20  xists \..       
2cd0: 20 20 20 20 20 3a 3a 65 6e 76 28 71 75 69 65 74       ::env(quiet
2ce0: 53 65 74 75 70 49 6e 74 65 72 70 72 65 74 65 72  SetupInterpreter
2cf0: 54 65 73 74 50 61 74 68 29 5d 0d 0a 20 20 20 20  TestPath)]..    
2d00: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
2d10: 20 20 23 0d 0a 20 20 20 20 23 20 48 41 43 4b 3a    #..    # HACK:
2d20: 20 50 72 65 76 65 6e 74 20 74 68 65 20 45 61 67   Prevent the Eag
2d30: 6c 65 20 63 6f 72 65 20 74 65 73 74 20 73 75 69  le core test sui
2d40: 74 65 20 69 6e 66 72 61 73 74 72 75 63 74 75 72  te infrastructur
2d50: 65 20 66 72 6f 6d 20 63 68 65 63 6b 69 6e 67 0d  e from checking.
2d60: 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73  .    #       tes
2d70: 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 68  t constraints th
2d80: 61 74 20 61 72 65 20 74 69 6d 65 2d 63 6f 6e 73  at are time-cons
2d90: 75 6d 69 6e 67 20 61 6e 64 2f 6f 72 20 6d 6f 73  uming and/or mos
2da0: 74 20 6c 69 6b 65 6c 79 20 74 6f 0d 0a 20 20 20  t likely to..   
2db0: 20 23 20 20 20 20 20 20 20 62 65 20 73 75 70 65   #       be supe
2dc0: 72 66 6c 75 6f 75 73 20 74 6f 20 74 68 69 72 64  rfluous to third
2dd0: 2d 70 61 72 74 79 20 74 65 73 74 20 73 75 69 74  -party test suit
2de0: 65 73 20 28 69 2e 65 2e 20 74 68 6f 73 65 20 74  es (i.e. those t
2df0: 68 61 74 20 61 72 65 0d 0a 20 20 20 20 23 20 20  hat are..    #  
2e00: 20 20 20 20 20 6e 6f 74 20 74 65 73 74 69 6e 67       not testing
2e10: 20 74 68 65 20 45 61 67 6c 65 20 63 6f 72 65 20   the Eagle core 
2e20: 6c 69 62 72 61 72 79 20 69 74 73 65 6c 66 29 2e  library itself).
2e30: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74  ..    #..    set
2e40: 20 6e 6f 28 63 6f 72 65 29 20 31 0d 0a 0d 0a 20   no(core) 1.... 
2e50: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
2e60: 3a 20 4d 61 6b 65 20 74 68 65 20 70 65 72 2d 74  : Make the per-t
2e70: 65 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66  est connection f
2e80: 6c 61 67 20 6f 75 74 70 75 74 20 61 20 6c 69 74  lag output a lit
2e90: 74 6c 65 20 6c 65 73 73 20 6e 6f 69 73 79 2e 0d  tle less noisy..
2ea0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20  .    #..    set 
2eb0: 6e 6f 28 65 6d 69 74 4c 6f 63 61 6c 46 6c 61 67  no(emitLocalFlag
2ec0: 73 49 66 4e 6f 6e 65 29 20 31 0d 0a 20 20 20 20  sIfNone) 1..    
2ed0: 73 65 74 20 6e 6f 28 65 6d 69 74 53 68 61 72 65  set no(emitShare
2ee0: 64 46 6c 61 67 73 49 66 4e 6f 6e 65 29 20 31 0d  dFlagsIfNone) 1.
2ef0: 0a 20 20 20 20 73 65 74 20 6e 6f 28 65 6d 69 74  .    set no(emit
2f00: 47 6c 6f 62 61 6c 46 6c 61 67 73 49 66 4e 6f 6e  GlobalFlagsIfNon
2f10: 65 29 20 31 0d 0a 20 20 20 20 73 65 74 20 6e 6f  e) 1..    set no
2f20: 28 65 6d 69 74 43 6f 6d 62 69 6e 65 64 46 6c 61  (emitCombinedFla
2f30: 67 73 49 66 4e 6f 6e 65 29 20 31 0d 0a 20 20 7d  gsIfNone) 1..  }
2f40: 0d 0a 7d 0d 0a 0c 0d 0a 23 23 23 23 23 23 23 23  ..}.....########
2f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f90: 23 23 23 23 23 23 23 0d 0a 23 23 23 23 23 23 23  #######..#######
2fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2fb0: 23 23 23 23 23 23 23 23 20 45 4e 44 20 56 45 4e  ######## END VEN
2fc0: 44 4f 52 20 43 4f 44 45 20 23 23 23 23 23 23 23  DOR CODE #######
2fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2fe0: 23 23 23 23 23 23 23 23 0d 0a 23 23 23 23 23 23  ########..######
2ff0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3030: 23 23 23 23 23 23 23 23 23 0d 0a                 #########..