System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact c2e177704757c97e540433819421a73c1115c896:


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 70 72 6f 6c 6f 67 75 65 2e 65  .#..# prologue.e
0060: 61 67 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 45 78  agle --..#..# Ex
0070: 74 65 6e 73 69 62 6c 65 20 41 64 61 70 74 61 62  tensible Adaptab
0080: 6c 65 20 47 65 6e 65 72 61 6c 69 7a 65 64 20 4c  le Generalized L
0090: 6f 67 69 63 20 45 6e 67 69 6e 65 20 28 45 61 67  ogic Engine (Eag
00a0: 6c 65 29 0d 0a 23 20 54 65 73 74 20 50 72 6f 6c  le)..# Test Prol
00b0: 6f 67 75 65 20 46 69 6c 65 0d 0a 23 0d 0a 23 20  ogue File..#..# 
00c0: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30  Copyright (c) 20
00d0: 30 37 2d 32 30 31 32 20 62 79 20 4a 6f 65 20 4d  07-2012 by Joe M
00e0: 69 73 74 61 63 68 6b 69 6e 2e 20 20 41 6c 6c 20  istachkin.  All 
00f0: 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e  rights reserved.
0100: 0d 0a 23 0d 0a 23 20 53 65 65 20 74 68 65 20 66  ..#..# See the f
0110: 69 6c 65 20 22 6c 69 63 65 6e 73 65 2e 74 65 72  ile "license.ter
0120: 6d 73 22 20 66 6f 72 20 69 6e 66 6f 72 6d 61 74  ms" for informat
0130: 69 6f 6e 20 6f 6e 20 75 73 61 67 65 20 61 6e 64  ion on usage and
0140: 20 72 65 64 69 73 74 72 69 62 75 74 69 6f 6e 20   redistribution 
0150: 6f 66 0d 0a 23 20 74 68 69 73 20 66 69 6c 65 2c  of..# this file,
0160: 20 61 6e 64 20 66 6f 72 20 61 20 44 49 53 43 4c   and for a DISCL
0170: 41 49 4d 45 52 20 4f 46 20 41 4c 4c 20 57 41 52  AIMER OF ALL WAR
0180: 52 41 4e 54 49 45 53 2e 0d 0a 23 0d 0a 23 20 52  RANTIES...#..# R
0190: 43 53 3a 20 40 28 23 29 20 24 49 64 3a 20 24 0d  CS: @(#) $Id: $.
01a0: 0a 23 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23  .#..############
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01f0: 23 23 23 0d 0a 0d 0a 69 66 20 7b 21 5b 69 6e 66  ###....if {![inf
0200: 6f 20 65 78 69 73 74 73 20 6e 6f 28 5b 66 69 6c  o exists no([fil
0210: 65 20 74 61 69 6c 20 5b 69 6e 66 6f 20 73 63 72  e tail [info scr
0220: 69 70 74 5d 5d 29 5d 7d 20 74 68 65 6e 20 7b 0d  ipt]])]} then {.
0230: 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 6c 65 76  .  if {[info lev
0240: 65 6c 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d  el] > 0} then {.
0250: 0a 20 20 20 20 65 72 72 6f 72 20 22 63 61 6e 6e  .    error "cann
0260: 6f 74 20 72 75 6e 2c 20 63 75 72 72 65 6e 74 20  ot run, current 
0270: 6c 65 76 65 6c 20 69 73 20 6e 6f 74 20 67 6c 6f  level is not glo
0280: 62 61 6c 22 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  bal"..  }....  #
0290: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 4d 61 6b 65  ..  # NOTE: Make
02a0: 20 73 75 72 65 20 61 6c 6c 20 74 68 65 20 76 61   sure all the va
02b0: 72 69 61 62 6c 65 73 20 75 73 65 64 20 62 79 20  riables used by 
02c0: 74 68 69 73 20 70 72 6f 6c 6f 67 75 65 20 61 72  this prologue ar
02d0: 65 20 75 6e 73 65 74 2e 0d 0a 20 20 23 0d 0a 20  e unset...  #.. 
02e0: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
02f0: 69 6e 20 70 6b 67 5f 64 69 72 20 70 61 74 74 65  in pkg_dir patte
0300: 72 6e 20 65 78 65 63 20 64 75 6d 6d 79 20 64 69  rn exec dummy di
0310: 72 65 63 74 6f 72 79 20 6e 61 6d 65 20 76 61 6c  rectory name val
0320: 75 65 20 65 78 70 72 20 5c 0d 0a 20 20 20 20 20  ue expr \..     
0330: 20 70 75 62 6c 69 63 4b 65 79 54 6f 6b 65 6e 20   publicKeyToken 
0340: 65 6e 63 6f 64 69 6e 67 20 6d 65 6d 6f 72 79 20  encoding memory 
0350: 73 74 61 63 6b 20 64 72 69 76 65 20 73 65 72 76  stack drive serv
0360: 65 72 20 64 61 74 61 62 61 73 65 20 74 69 6d 65  er database time
0370: 6f 75 74 20 5c 0d 0a 20 20 20 20 20 20 75 73 65  out \..      use
0380: 72 20 70 61 73 73 77 6f 72 64 20 70 65 72 63 65  r password perce
0390: 6e 74 20 63 68 65 63 6b 6f 75 74 20 74 69 6d 65  nt checkout time
03a0: 53 74 61 6d 70 20 6c 6f 61 64 65 64 0d 0a 0d 0a  Stamp loaded....
03b0: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 49    #..  # NOTE: I
03c0: 6e 64 69 63 61 74 65 20 74 68 61 74 20 74 68 65  ndicate that the
03d0: 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20 63   test suite is c
03e0: 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67  urrently running
03f0: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
0400: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
0410: 5f 73 75 69 74 65 5f 72 75 6e 6e 69 6e 67 5d 20  _suite_running] 
0420: 7c 7c 20 21 24 74 65 73 74 5f 73 75 69 74 65 5f  || !$test_suite_
0430: 72 75 6e 6e 69 6e 67 7d 20 74 68 65 6e 20 7b 0d  running} then {.
0440: 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 73 75  .    set test_su
0450: 69 74 65 5f 72 75 6e 6e 69 6e 67 20 74 72 75 65  ite_running true
0460: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
0470: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
0480: 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  location of the 
0490: 74 65 73 74 20 73 75 69 74 65 2c 20 69 66 20 6e  test suite, if n
04a0: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
04b0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
04c0: 73 74 73 20 74 65 73 74 5f 70 61 74 68 5d 7d 20  sts test_path]} 
04d0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20  then {..    set 
04e0: 74 65 73 74 5f 70 61 74 68 20 5b 66 69 6c 65 20  test_path [file 
04f0: 6e 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20  normalize [file 
0500: 64 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63  dirname [info sc
0510: 72 69 70 74 5d 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a  ript]]]..  }....
0520: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
0530: 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20  et the location 
0540: 6f 66 20 74 68 65 20 74 65 73 74 20 73 75 69 74  of the test suit
0550: 65 20 64 61 74 61 2c 20 69 66 20 6e 65 63 65 73  e data, if neces
0560: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
0570: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
0580: 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 5d 7d  test_data_path]}
0590: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74   then {..    set
05a0: 20 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20   test_data_path 
05b0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74  [file join $test
05c0: 5f 70 61 74 68 20 64 61 74 61 5d 0d 0a 20 20 7d  _path data]..  }
05d0: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
05e0: 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74  E: Set the locat
05f0: 69 6f 6e 20 6f 66 20 74 68 65 20 62 61 73 65 20  ion of the base 
0600: 45 61 67 6c 65 20 64 69 72 65 63 74 6f 72 79 2c  Eagle directory,
0610: 20 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20 6e   if..  #       n
0620: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
0630: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
0640: 73 74 73 20 62 61 73 65 5f 70 61 74 68 5d 7d 20  sts base_path]} 
0650: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20  then {..    #.. 
0660: 20 20 20 23 20 4e 4f 54 45 3a 20 53 74 61 72 74     # NOTE: Start
0670: 20 6f 75 74 20 67 6f 69 6e 67 20 75 70 20 6f 6e   out going up on
0680: 65 20 6c 65 76 65 6c 20 61 6e 64 20 63 68 65 63  e level and chec
0690: 6b 20 66 6f 72 20 61 20 22 6c 69 62 22 0d 0a 20  k for a "lib".. 
06a0: 20 20 20 23 20 20 20 20 20 20 20 73 75 62 2d 64     #       sub-d
06b0: 69 72 65 63 74 6f 72 79 2e 20 20 49 66 20 6e 6f  irectory.  If no
06c0: 74 20 66 6f 75 6e 64 2c 20 67 6f 20 75 70 20 61  t found, go up a
06d0: 6e 6f 74 68 65 72 20 6c 65 76 65 6c 0d 0a 20 20  nother level..  
06e0: 20 20 23 20 20 20 20 20 20 20 62 65 63 61 75 73    #       becaus
06f0: 65 20 77 65 20 77 69 6c 6c 20 61 6c 77 61 79 73  e we will always
0700: 20 62 65 20 74 77 6f 20 6c 65 76 65 6c 73 20 64   be two levels d
0710: 6f 77 6e 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20  own from the..  
0720: 20 20 23 20 20 20 20 20 20 20 62 61 73 65 20 64    #       base d
0730: 69 72 65 63 74 6f 72 79 20 77 68 65 6e 20 72 75  irectory when ru
0740: 6e 6e 69 6e 67 20 69 6e 73 69 64 65 20 74 68 65  nning inside the
0750: 20 73 6f 75 72 63 65 20 74 72 65 65 2e 0d 0a 20   source tree... 
0760: 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 62 61     #..    set ba
0770: 73 65 5f 70 61 74 68 20 5b 66 69 6c 65 20 6e 6f  se_path [file no
0780: 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 64 69  rmalize [file di
0790: 72 6e 61 6d 65 20 24 74 65 73 74 5f 70 61 74 68  rname $test_path
07a0: 5d 5d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ]]....    #..   
07b0: 20 23 20 48 41 43 4b 3a 20 57 65 20 6d 75 73 74   # HACK: We must
07c0: 20 76 65 72 69 66 79 20 74 68 61 74 20 74 68 65   verify that the
07d0: 20 22 69 6e 69 74 2e 65 61 67 6c 65 22 20 66 69   "init.eagle" fi
07e0: 6c 65 20 63 61 6e 20 65 76 65 6e 74 75 61 6c 6c  le can eventuall
07f0: 79 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 62  y..    #       b
0800: 65 20 66 6f 75 6e 64 20 75 6e 64 65 72 20 74 68  e found under th
0810: 65 20 22 6c 69 62 22 20 64 69 72 65 63 74 6f 72  e "lib" director
0820: 79 20 73 69 6e 63 65 20 56 69 73 75 61 6c 20 53  y since Visual S
0830: 74 75 64 69 6f 0d 0a 20 20 20 20 23 20 20 20 20  tudio..    #    
0840: 20 20 20 69 6e 73 69 73 74 73 20 6f 6e 20 63 72     insists on cr
0850: 65 61 74 69 6e 67 20 61 20 73 75 70 65 72 66 6c  eating a superfl
0860: 75 6f 75 73 20 28 61 6e 64 20 65 6d 70 74 79 29  uous (and empty)
0870: 20 22 6c 69 62 5c 45 61 67 6c 65 31 2e 30 22 0d   "lib\Eagle1.0".
0880: 0a 20 20 20 20 23 20 20 20 20 20 20 20 73 75 62  .    #       sub
0890: 2d 64 69 72 65 63 74 6f 72 79 20 69 6e 73 69 64  -directory insid
08a0: 65 20 6f 66 20 74 68 65 20 22 4c 69 62 72 61 72  e of the "Librar
08b0: 79 22 20 70 72 6f 6a 65 63 74 20 64 69 72 65 63  y" project direc
08c0: 74 6f 72 79 0d 0a 20 20 20 20 23 20 20 20 20 20  tory..    #     
08d0: 20 20 73 69 6d 70 6c 79 20 64 75 65 20 74 6f 20    simply due to 
08e0: 74 68 65 20 6c 69 6e 6b 73 20 63 6f 6e 74 61 69  the links contai
08f0: 6e 65 64 20 69 6e 20 74 68 65 20 70 72 6f 6a 65  ned in the proje
0900: 63 74 20 66 69 6c 65 20 74 68 61 74 0d 0a 20 20  ct file that..  
0910: 20 20 23 20 20 20 20 20 20 20 61 63 74 75 61 6c    #       actual
0920: 6c 79 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  ly point to the 
0930: 22 6c 69 62 5c 45 61 67 6c 65 31 2e 30 22 20 73  "lib\Eagle1.0" s
0940: 75 62 2d 64 69 72 65 63 74 6f 72 79 20 75 6e 64  ub-directory und
0950: 65 72 20 74 68 65 0d 0a 20 20 20 20 23 20 20 20  er the..    #   
0960: 20 20 20 20 73 6f 6c 75 74 69 6f 6e 20 64 69 72      solution dir
0970: 65 63 74 6f 72 79 2e 0d 0a 20 20 20 20 23 0d 0a  ectory...    #..
0980: 20 20 20 20 23 20 57 41 52 4e 49 4e 47 3a 20 54      # WARNING: T
0990: 68 65 20 45 61 67 6c 65 20 70 61 63 6b 61 67 65  he Eagle package
09a0: 20 6e 61 6d 65 20 61 6e 64 20 76 65 72 73 69 6f   name and versio
09b0: 6e 20 61 72 65 20 68 61 72 64 2d 63 6f 64 65 64  n are hard-coded
09c0: 20 68 65 72 65 2e 0d 0a 20 20 20 20 23 0d 0a 20   here...    #.. 
09d0: 20 20 20 73 65 74 20 70 6b 67 5f 64 69 72 20 45     set pkg_dir E
09e0: 61 67 6c 65 31 2e 30 3b 20 23 20 54 4f 44 4f 3a  agle1.0; # TODO:
09f0: 20 43 68 61 6e 67 65 20 6d 65 2e 0d 0a 0d 0a 20   Change me..... 
0a00: 20 20 20 69 66 20 7b 21 5b 66 69 6c 65 20 65 78     if {![file ex
0a10: 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  ists [file join 
0a20: 24 62 61 73 65 5f 70 61 74 68 20 6c 69 62 5d 5d  $base_path lib]]
0a30: 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21   || \..        !
0a40: 5b 66 69 6c 65 20 69 73 64 69 72 65 63 74 6f 72  [file isdirector
0a50: 79 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61  y [file join $ba
0a60: 73 65 5f 70 61 74 68 20 6c 69 62 5d 5d 20 7c 7c  se_path lib]] ||
0a70: 20 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69   \..        ![fi
0a80: 6c 65 20 65 78 69 73 74 73 20 5b 66 69 6c 65 20  le exists [file 
0a90: 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20  join $base_path 
0aa0: 6c 69 62 20 24 70 6b 67 5f 64 69 72 5d 5d 20 7c  lib $pkg_dir]] |
0ab0: 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b 66  | \..        ![f
0ac0: 69 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20  ile isdirectory 
0ad0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65  [file join $base
0ae0: 5f 70 61 74 68 20 6c 69 62 20 24 70 6b 67 5f 64  _path lib $pkg_d
0af0: 69 72 5d 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20 20  ir]] || \..     
0b00: 20 20 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73     ![file exists
0b10: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73   [file join $bas
0b20: 65 5f 70 61 74 68 20 6c 69 62 20 24 70 6b 67 5f  e_path lib $pkg_
0b30: 64 69 72 20 69 6e 69 74 2e 65 61 67 6c 65 5d 5d  dir init.eagle]]
0b40: 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21   || \..        !
0b50: 5b 66 69 6c 65 20 69 73 66 69 6c 65 20 5b 66 69  [file isfile [fi
0b60: 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61  le join $base_pa
0b70: 74 68 20 6c 69 62 20 24 70 6b 67 5f 64 69 72 20  th lib $pkg_dir 
0b80: 69 6e 69 74 2e 65 61 67 6c 65 5d 5d 7d 20 74 68  init.eagle]]} th
0b90: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
0ba0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20       # NOTE: We 
0bb0: 64 6f 20 6e 6f 74 20 62 6f 74 68 65 72 20 74 6f  do not bother to
0bc0: 20 63 68 65 63 6b 20 69 66 20 74 68 65 20 22 6c   check if the "l
0bd0: 69 62 22 20 73 75 62 2d 64 69 72 65 63 74 6f 72  ib" sub-director
0be0: 79 20 61 63 74 75 61 6c 6c 79 0d 0a 20 20 20 20  y actually..    
0bf0: 20 20 23 20 20 20 20 20 20 20 65 78 69 73 74 73    #       exists
0c00: 20 61 73 20 61 20 63 68 69 6c 64 20 6f 66 20 74   as a child of t
0c10: 68 69 73 20 6f 6e 65 2e 20 20 54 68 69 73 20 69  his one.  This i
0c20: 73 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 28  s the previous (
0c30: 6c 65 67 61 63 79 29 0d 0a 20 20 20 20 20 20 23  legacy)..      #
0c40: 20 20 20 20 20 20 20 62 65 68 61 76 69 6f 72 20         behavior 
0c50: 28 69 2e 65 2e 20 77 68 65 72 65 20 77 65 20 61  (i.e. where we a
0c60: 6c 77 61 79 73 20 77 65 6e 74 20 75 70 20 74 77  lways went up tw
0c70: 6f 20 6c 65 76 65 6c 73 20 74 6f 20 74 68 65 20  o levels to the 
0c80: 62 61 73 65 0d 0a 20 20 20 20 20 20 23 20 20 20  base..      #   
0c90: 20 20 20 20 64 69 72 65 63 74 6f 72 79 29 2e 0d      directory)..
0ca0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
0cb0: 73 65 74 20 62 61 73 65 5f 70 61 74 68 20 5b 66  set base_path [f
0cc0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 62 61 73  ile dirname $bas
0cd0: 65 5f 70 61 74 68 5d 0d 0a 20 20 20 20 7d 0d 0a  e_path]..    }..
0ce0: 0d 0a 20 20 20 20 75 6e 73 65 74 20 70 6b 67 5f  ..    unset pkg_
0cf0: 64 69 72 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23  dir..  }....  ##
0d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d40: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20  ###########.... 
0d50: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65   #..  # NOTE: Se
0d60: 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f  t the location o
0d70: 66 20 74 68 65 20 45 61 67 6c 65 20 6d 61 69 6e  f the Eagle main
0d80: 20 73 74 72 6f 6e 67 20 6e 61 6d 65 20 6b 65 79   strong name key
0d90: 73 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  s directory,..  
0da0: 23 20 20 20 20 20 20 20 69 66 20 6e 65 63 65 73  #       if neces
0db0: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
0dc0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
0dd0: 6b 65 79 5f 70 61 74 68 5d 7d 20 74 68 65 6e 20  key_path]} then 
0de0: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
0df0: 4e 4f 54 45 3a 20 4e 6f 72 6d 61 6c 6c 79 2c 20  NOTE: Normally, 
0e00: 74 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20  there should be 
0e10: 61 20 22 4b 65 79 73 22 20 73 75 62 2d 64 69 72  a "Keys" sub-dir
0e20: 65 63 74 6f 72 79 20 6a 75 73 74 20 77 69 74 68  ectory just with
0e30: 69 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  in..    #       
0e40: 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f  the base directo
0e50: 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ry...    #..    
0e60: 73 65 74 20 6b 65 79 5f 70 61 74 68 20 5b 66 69  set key_path [fi
0e70: 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61  le join $base_pa
0e80: 74 68 20 4b 65 79 73 5d 0d 0a 20 20 7d 0d 0a 0d  th Keys]..  }...
0e90: 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
0ea0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0eb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ec0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ed0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ee0: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
0ef0: 45 3a 20 53 65 74 20 74 68 65 20 65 78 65 63 75  E: Set the execu
0f00: 74 61 62 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20  table file name 
0f10: 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 2c  for the process,
0f20: 20 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20 6e   if..  #       n
0f30: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
0f40: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
0f50: 73 74 73 20 62 69 6e 5f 66 69 6c 65 5d 7d 20 74  sts bin_file]} t
0f60: 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 62  hen {..    set b
0f70: 69 6e 5f 66 69 6c 65 20 5b 69 6e 66 6f 20 6e 61  in_file [info na
0f80: 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 0d  meofexecutable].
0f90: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
0fa0: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 6c   NOTE: Set the l
0fb0: 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 64  ocation of the d
0fc0: 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e  irectory contain
0fd0: 69 6e 67 20 74 68 65 0d 0a 20 20 23 20 20 20 20  ing the..  #    
0fe0: 20 20 20 65 78 65 63 75 74 61 62 6c 65 20 66 69     executable fi
0ff0: 6c 65 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65  le for the proce
1000: 73 73 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  ss, if necessary
1010: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
1020: 69 6e 66 6f 20 65 78 69 73 74 73 20 62 69 6e 5f  info exists bin_
1030: 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  path]} then {.. 
1040: 20 20 20 73 65 74 20 62 69 6e 5f 70 61 74 68 20     set bin_path 
1050: 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20  [file normalize 
1060: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 62  [file dirname $b
1070: 69 6e 5f 66 69 6c 65 5d 5d 0d 0a 20 20 7d 0d 0a  in_file]]..  }..
1080: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
1090: 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f   Set the locatio
10a0: 6e 20 6f 66 20 74 68 65 20 5b 6e 6f 6e 2d 73 63  n of the [non-sc
10b0: 72 69 70 74 5d 20 6c 69 62 72 61 72 79 20 64 69  ript] library di
10c0: 72 65 63 74 6f 72 79 0d 0a 20 20 23 20 20 20 20  rectory..  #    
10d0: 20 20 20 28 69 2e 65 2e 20 74 68 65 20 64 69 72     (i.e. the dir
10e0: 65 63 74 6f 72 79 20 77 68 65 72 65 20 74 68 65  ectory where the
10f0: 20 70 6c 75 67 69 6e 73 20 61 72 65 20 6c 6f 63   plugins are loc
1100: 61 74 65 64 29 2c 20 69 66 0d 0a 20 20 23 20 20  ated), if..  #  
1110: 20 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e 0d       necessary..
1120: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
1130: 66 6f 20 65 78 69 73 74 73 20 6c 69 62 5f 70 61  fo exists lib_pa
1140: 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  th]} then {..   
1150: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
1160: 54 68 69 73 20 73 68 6f 75 6c 64 20 67 6f 20 6f  This should go o
1170: 6e 65 20 64 69 72 65 63 74 6f 72 79 20 75 70 20  ne directory up 
1180: 66 72 6f 6d 20 74 68 65 20 64 69 72 65 63 74 6f  from the directo
1190: 72 79 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  ry..    #       
11a0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 65  containing the e
11b0: 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20 66  xecutable file f
11c0: 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 20 28  or the process (
11d0: 65 2e 67 2e 0d 0a 20 20 20 20 23 20 20 20 20 20  e.g...    #     
11e0: 20 20 74 68 65 20 73 68 65 6c 6c 29 20 61 6e 64    the shell) and
11f0: 20 74 68 65 6e 20 69 6e 74 6f 20 74 68 65 20 22   then into the "
1200: 6c 69 62 22 20 64 69 72 65 63 74 6f 72 79 20 6a  lib" directory j
1210: 75 73 74 0d 0a 20 20 20 20 23 20 20 20 20 20 20  ust..    #      
1220: 20 62 65 6e 65 61 74 68 20 74 68 61 74 2e 0d 0a   beneath that...
1230: 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6c      #..    set l
1240: 69 62 5f 70 61 74 68 20 5b 66 69 6c 65 20 6e 6f  ib_path [file no
1250: 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 6a 6f  rmalize [file jo
1260: 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  in [file dirname
1270: 20 24 62 69 6e 5f 70 61 74 68 5d 20 6c 69 62 5d   $bin_path] lib]
1280: 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  ]..  }....  #.. 
1290: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
12a0: 20 77 65 62 20 68 6f 73 74 20 74 6f 20 74 65 73   web host to tes
12b0: 74 20 61 67 61 69 6e 73 74 2c 20 69 66 20 6e 65  t against, if ne
12c0: 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20  cessary...  #.. 
12d0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
12e0: 74 73 20 74 65 73 74 5f 68 6f 73 74 5d 7d 20 74  ts test_host]} t
12f0: 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74  hen {..    set t
1300: 65 73 74 5f 68 6f 73 74 20 65 61 67 6c 65 2e 74  est_host eagle.t
1310: 6f 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  o..  }....  #.. 
1320: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
1330: 20 70 6f 72 74 20 74 6f 20 75 73 65 20 66 6f 72   port to use for
1340: 20 73 65 72 76 65 72 20 73 6f 63 6b 65 74 73 2c   server sockets,
1350: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
1360: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
1370: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 70 6f  o exists test_po
1380: 72 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  rt]} then {..   
1390: 20 73 65 74 20 74 65 73 74 5f 70 6f 72 74 20 31   set test_port 1
13a0: 32 33 34 36 3b 20 23 20 49 41 4e 41 2c 20 31 32  2346; # IANA, 12
13b0: 33 34 36 2d 31 32 37 35 32 20 55 6e 61 73 73 69  346-12752 Unassi
13c0: 67 6e 65 64 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  gned..  }....  #
13d0: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20  ..  # NOTE: Set 
13e0: 74 68 65 20 6e 65 74 77 6f 72 6b 20 74 69 6d 65  the network time
13f0: 6f 75 74 2c 20 69 66 20 6e 65 63 65 73 73 61 72  out, if necessar
1400: 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  y...  #..  if {!
1410: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
1420: 74 5f 74 69 6d 65 6f 75 74 5d 7d 20 74 68 65 6e  t_timeout]} then
1430: 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74   {..    set test
1440: 5f 74 69 6d 65 6f 75 74 20 32 30 30 30 3b 20 23  _timeout 2000; #
1450: 20 69 6e 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73   in milliseconds
1460: 2e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  ...  }....  #.. 
1470: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
1480: 20 63 68 61 6e 6e 65 6c 20 74 6f 20 75 73 65 20   channel to use 
1490: 66 6f 72 20 74 65 73 74 20 6f 75 74 70 75 74 2c  for test output,
14a0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
14b0: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
14c0: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 63 68  o exists test_ch
14d0: 61 6e 6e 65 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a  annel]} then {..
14e0: 20 20 20 20 73 65 74 20 74 65 73 74 5f 63 68 61      set test_cha
14f0: 6e 6e 65 6c 20 73 74 64 6f 75 74 0d 0a 20 20 7d  nnel stdout..  }
1500: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
1510: 45 3a 20 53 65 74 20 74 68 65 20 70 72 69 6d 61  E: Set the prima
1520: 72 79 20 70 61 63 6b 61 67 65 20 70 61 74 68 2c  ry package path,
1530: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
1540: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
1550: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 70 61  o exists test_pa
1560: 63 6b 61 67 65 5f 70 61 74 68 5d 7d 20 74 68 65  ckage_path]} the
1570: 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73  n {..    set tes
1580: 74 5f 70 61 63 6b 61 67 65 5f 70 61 74 68 20 5b  t_package_path [
1590: 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f  file join $base_
15a0: 70 61 74 68 20 6c 69 62 5d 0d 0a 20 20 7d 0d 0a  path lib]..  }..
15b0: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
15c0: 20 4d 61 6b 65 20 73 75 72 65 20 6f 75 72 20 70   Make sure our p
15d0: 72 69 6d 61 72 79 20 70 61 63 6b 61 67 65 20 70  rimary package p
15e0: 61 74 68 20 69 73 20 70 61 72 74 20 6f 66 20 74  ath is part of t
15f0: 68 65 20 61 75 74 6f 2d 70 61 74 68 2e 0d 0a 20  he auto-path... 
1600: 20 23 0d 0a 20 20 69 66 20 7b 5b 6c 73 65 61 72   #..  if {[lsear
1610: 63 68 20 2d 65 78 61 63 74 20 24 61 75 74 6f 5f  ch -exact $auto_
1620: 70 61 74 68 20 24 74 65 73 74 5f 70 61 63 6b 61  path $test_packa
1630: 67 65 5f 70 61 74 68 5d 20 3d 3d 20 2d 31 7d 20  ge_path] == -1} 
1640: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 6c 61 70 70  then {..    lapp
1650: 65 6e 64 20 61 75 74 6f 5f 70 61 74 68 20 24 74  end auto_path $t
1660: 65 73 74 5f 70 61 63 6b 61 67 65 5f 70 61 74 68  est_package_path
1670: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
1680: 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75 72  # NOTE: Make sur
1690: 65 20 6f 75 72 20 74 65 73 74 20 70 61 63 6b 61  e our test packa
16a0: 67 65 20 70 61 74 68 20 69 73 20 70 61 72 74 20  ge path is part 
16b0: 6f 66 20 74 68 65 20 61 75 74 6f 2d 70 61 74 68  of the auto-path
16c0: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 6c  ...  #..  if {[l
16d0: 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 61  search -exact $a
16e0: 75 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 70  uto_path $test_p
16f0: 61 74 68 5d 20 3d 3d 20 2d 31 7d 20 74 68 65 6e  ath] == -1} then
1700: 20 7b 0d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20   {..    lappend 
1710: 61 75 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f  auto_path $test_
1720: 70 61 74 68 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  path..  }....  #
1730: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1740: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1770: 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
1780: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43    #..  # NOTE: C
1790: 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 6c 6f 61  heck for and loa
17a0: 64 20 74 68 65 20 45 61 67 6c 65 20 6c 69 62 72  d the Eagle libr
17b0: 61 72 79 20 70 61 63 6b 61 67 65 2c 20 69 66 20  ary package, if 
17c0: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d  necessary...  #.
17d0: 0a 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 70  .  if {[catch {p
17e0: 61 63 6b 61 67 65 20 70 72 65 73 65 6e 74 20 45  ackage present E
17f0: 61 67 6c 65 2e 4c 69 62 72 61 72 79 7d 5d 7d 20  agle.Library}]} 
1800: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 70 61 63 6b  then {..    pack
1810: 61 67 65 20 72 65 71 75 69 72 65 20 45 61 67 6c  age require Eagl
1820: 65 2e 4c 69 62 72 61 72 79 0d 0a 20 20 7d 0d 0a  e.Library..  }..
1830: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
1840: 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 6c   Check for and l
1850: 6f 61 64 20 74 68 65 20 45 61 67 6c 65 20 74 65  oad the Eagle te
1860: 73 74 20 70 61 63 6b 61 67 65 2c 20 69 66 20 6e  st package, if n
1870: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
1880: 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 70 61    if {[catch {pa
1890: 63 6b 61 67 65 20 70 72 65 73 65 6e 74 20 45 61  ckage present Ea
18a0: 67 6c 65 2e 54 65 73 74 7d 5d 7d 20 74 68 65 6e  gle.Test}]} then
18b0: 20 7b 0d 0a 20 20 20 20 70 61 63 6b 61 67 65 20   {..    package 
18c0: 72 65 71 75 69 72 65 20 45 61 67 6c 65 2e 54 65  require Eagle.Te
18d0: 73 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  st..  }....  #..
18e0: 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20    # NOTE: Check 
18f0: 66 6f 72 20 61 6e 64 20 6c 6f 61 64 20 74 68 65  for and load the
1900: 20 45 61 67 6c 65 20 74 65 73 74 20 63 6f 6e 73   Eagle test cons
1910: 74 72 61 69 6e 74 73 20 70 61 63 6b 61 67 65 2c  traints package,
1920: 20 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20 6e   if..  #       n
1930: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
1940: 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 70 61    if {[catch {pa
1950: 63 6b 61 67 65 20 70 72 65 73 65 6e 74 20 45 61  ckage present Ea
1960: 67 6c 65 2e 54 65 73 74 2e 43 6f 6e 73 74 72 61  gle.Test.Constra
1970: 69 6e 74 73 7d 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ints}]} then {..
1980: 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75      package requ
1990: 69 72 65 20 45 61 67 6c 65 2e 54 65 73 74 2e 43  ire Eagle.Test.C
19a0: 6f 6e 73 74 72 61 69 6e 74 73 0d 0a 20 20 7d 0d  onstraints..  }.
19b0: 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23  ...  ###########
19c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a00: 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ##....  #..  # N
1a10: 4f 54 45 3a 20 56 65 72 69 66 79 20 74 68 61 74  OTE: Verify that
1a20: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c   the current cal
1a30: 6c 20 66 72 61 6d 65 20 69 73 20 63 6f 72 72 65  l frame is corre
1a40: 63 74 20 61 6e 64 20 74 68 61 74 20 74 68 65 0d  ct and that the.
1a50: 0a 20 20 23 20 20 20 20 20 20 20 69 6e 74 65 72  .  #       inter
1a60: 70 72 65 74 65 72 20 63 61 6c 6c 20 73 74 61 63  preter call stac
1a70: 6b 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 69  k has not been i
1a80: 6d 62 61 6c 61 6e 63 65 64 20 62 79 20 70 72 65  mbalanced by pre
1a90: 76 69 6f 75 73 0d 0a 20 20 23 20 20 20 20 20 20  vious..  #      
1aa0: 20 74 65 73 74 73 20 6f 72 20 6f 74 68 65 72 20   tests or other 
1ab0: 65 72 72 6f 72 73 2e 20 20 54 68 69 73 20 63 68  errors.  This ch
1ac0: 65 63 6b 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73  eck only applies
1ad0: 20 74 6f 20 45 61 67 6c 65 2e 0d 0a 20 20 23 20   to Eagle...  # 
1ae0: 20 20 20 20 20 20 54 68 69 73 20 62 6c 6f 63 6b        This block
1af0: 20 72 65 71 75 69 72 65 73 20 74 68 65 20 22 45   requires the "E
1b00: 61 67 6c 65 2e 4c 69 62 72 61 72 79 22 20 70 61  agle.Library" pa
1b10: 63 6b 61 67 65 2e 0d 0a 20 20 23 0d 0a 20 20 69  ckage...  #..  i
1b20: 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68  f {[isEagle]} th
1b30: 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  en {..    #..   
1b40: 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74   # NOTE: Check t
1b50: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63  he name of the c
1b60: 75 72 72 65 6e 74 20 63 61 6c 6c 20 66 72 61 6d  urrent call fram
1b70: 65 20 61 67 61 69 6e 73 74 20 74 68 65 20 6f 6e  e against the on
1b80: 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74  e..    #       t
1b90: 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73  hat should be us
1ba0: 65 64 20 66 6f 72 20 65 76 61 6c 75 61 74 69 6e  ed for evaluatin
1bb0: 67 20 74 68 69 73 20 73 63 72 69 70 74 20 66 69  g this script fi
1bc0: 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  le...    #..    
1bd0: 69 66 20 7b 5b 6f 62 6a 65 63 74 20 69 6e 76 6f  if {[object invo
1be0: 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75  ke -flags +NonPu
1bf0: 62 6c 69 63 20 5c 0d 0a 20 20 20 20 20 20 20 20  blic \..        
1c00: 20 20 20 20 49 6e 74 65 72 70 72 65 74 65 72 2e      Interpreter.
1c10: 47 65 74 41 63 74 69 76 65 2e 43 75 72 72 65 6e  GetActive.Curren
1c20: 74 46 72 61 6d 65 20 4e 61 6d 65 5d 20 6e 65 20  tFrame Name] ne 
1c30: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74  \..        [list
1c40: 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6e 6f   source [file no
1c50: 72 6d 61 6c 69 7a 65 20 5b 69 6e 66 6f 20 73 63  rmalize [info sc
1c60: 72 69 70 74 5d 5d 5d 7d 20 74 68 65 6e 20 7b 0d  ript]]]} then {.
1c70: 0a 20 20 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f  .      unset -no
1c80: 63 6f 6d 70 6c 61 69 6e 20 74 65 73 74 5f 73 75  complain test_su
1c90: 69 74 65 5f 72 75 6e 6e 69 6e 67 0d 0a 20 20 20  ite_running..   
1ca0: 20 20 20 65 72 72 6f 72 20 22 63 61 6e 6e 6f 74     error "cannot
1cb0: 20 72 75 6e 2c 20 63 75 72 72 65 6e 74 20 66 72   run, current fr
1cc0: 61 6d 65 20 69 73 20 6e 6f 74 20 66 6f 72 20 74  ame is not for t
1cd0: 68 69 73 20 73 63 72 69 70 74 22 0d 0a 20 20 20  his script"..   
1ce0: 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23   }..  }....  ###
1cf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d30: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20  ##########....  
1d40: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74  #..  # NOTE: Set
1d50: 20 74 68 65 20 6c 6f 63 61 6c 20 72 6f 6f 74 20   the local root 
1d60: 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
1d70: 20 73 6f 75 72 63 65 20 63 68 65 63 6b 6f 75 74   source checkout
1d80: 20 28 69 2e 65 2e 20 6f 66 20 45 61 67 6c 65 0d   (i.e. of Eagle.
1d90: 0a 20 20 23 20 20 20 20 20 20 20 6f 72 20 77 68  .  #       or wh
1da0: 61 74 65 76 65 72 20 70 72 6f 6a 65 63 74 20 74  atever project t
1db0: 68 65 20 45 61 67 6c 65 20 62 69 6e 61 72 69 65  he Eagle binarie
1dc0: 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65 64  s are being used
1dd0: 20 62 79 29 20 75 73 69 6e 67 20 61 0d 0a 20 20   by) using a..  
1de0: 23 20 20 20 20 20 20 20 46 6f 73 73 69 6c 20 62  #       Fossil b
1df0: 69 6e 61 72 79 20 69 6e 20 74 68 65 20 50 41 54  inary in the PAT
1e00: 48 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e  H, if available.
1e10: 20 20 54 68 69 73 20 62 6c 6f 63 6b 20 6e 6f 77    This block now
1e20: 20 72 65 71 75 69 72 65 73 0d 0a 20 20 23 20 20   requires..  #  
1e30: 20 20 20 20 20 74 68 65 20 22 45 61 67 6c 65 2e       the "Eagle.
1e40: 54 65 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74 73  Test.Constraints
1e50: 22 20 70 61 63 6b 61 67 65 2e 0d 0a 20 20 23 0d  " package...  #.
1e60: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1e70: 69 73 74 73 20 72 6f 6f 74 5f 70 61 74 68 5d 7d  ists root_path]}
1e80: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a   then {..    #..
1e90: 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 73 20 74      # NOTE: Is t
1ea0: 68 65 20 75 73 65 20 6f 66 20 46 6f 73 73 69 6c  he use of Fossil
1eb0: 20 62 79 20 74 68 65 20 74 65 73 74 20 73 75 69   by the test sui
1ec0: 74 65 20 61 6c 6c 6f 77 65 64 3f 0d 0a 20 20 20  te allowed?..   
1ed0: 20 23 0d 0a 20 20 20 20 69 66 20 7b 5b 63 61 6e   #..    if {[can
1ee0: 45 78 65 63 46 6f 73 73 69 6c 5d 7d 20 74 68 65  ExecFossil]} the
1ef0: 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 70  n {..      set p
1f00: 61 74 74 65 72 6e 20 7b 5e 6c 6f 63 61 6c 2d 72  attern {^local-r
1f10: 6f 6f 74 3a 5c 73 2b 28 2e 2a 3f 29 5c 73 2b 24  oot:\s+(.*?)\s+$
1f20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b  }....      if {[
1f30: 63 61 74 63 68 20 7b 65 78 65 63 20 2d 2d 20 66  catch {exec -- f
1f40: 6f 73 73 69 6c 20 69 6e 66 6f 7d 20 65 78 65 63  ossil info} exec
1f50: 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] || \..        
1f60: 20 20 21 5b 72 65 67 65 78 70 20 2d 6c 69 6e 65    ![regexp -line
1f70: 20 2d 2d 20 24 70 61 74 74 65 72 6e 20 24 65 78   -- $pattern $ex
1f80: 65 63 20 64 75 6d 6d 79 20 64 69 72 65 63 74 6f  ec dummy directo
1f90: 72 79 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ry]} then {..   
1fa0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1fb0: 23 20 4e 4f 54 45 3a 20 57 65 20 63 6f 75 6c 64  # NOTE: We could
1fc0: 20 6e 6f 74 20 71 75 65 72 79 20 6c 6f 63 61 6c   not query local
1fd0: 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 20   root directory 
1fe0: 6f 66 20 74 68 65 20 73 6f 75 72 63 65 0d 0a 20  of the source.. 
1ff0: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63         #       c
2000: 68 65 63 6b 6f 75 74 20 66 72 6f 6d 20 46 6f 73  heckout from Fos
2010: 73 69 6c 3b 20 74 68 65 72 65 66 6f 72 65 2c 20  sil; therefore, 
2020: 61 74 74 65 6d 70 74 20 74 6f 20 6d 61 6b 65 20  attempt to make 
2030: 61 6e 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20  an..        #   
2040: 20 20 20 20 65 64 75 63 61 74 65 64 20 67 75 65      educated gue
2050: 73 73 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ss.  This value 
2060: 77 69 6c 6c 20 70 72 6f 62 61 62 6c 79 20 62 65  will probably be
2070: 20 77 72 6f 6e 67 20 66 6f 72 0d 0a 20 20 20 20   wrong for..    
2080: 20 20 20 20 23 20 20 20 20 20 20 20 61 6e 79 20      #       any 
2090: 70 72 6f 6a 65 63 74 28 73 29 20 6f 74 68 65 72  project(s) other
20a0: 20 74 68 61 6e 20 45 61 67 6c 65 2e 20 20 49 6e   than Eagle.  In
20b0: 20 74 68 61 74 20 63 61 73 65 2c 20 74 68 69 73   that case, this
20c0: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
20d0: 20 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 62    value should b
20e0: 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20  e overridden by 
20f0: 74 68 61 74 20 70 72 6f 6a 65 63 74 20 74 6f 20  that project to 
2100: 72 65 66 6c 65 63 74 0d 0a 20 20 20 20 20 20 20  reflect..       
2110: 20 23 20 20 20 20 20 20 20 74 68 65 20 61 63 74   #       the act
2120: 75 61 6c 20 6c 6f 63 61 6c 20 72 6f 6f 74 20 64  ual local root d
2130: 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20  irectory of the 
2140: 73 6f 75 72 63 65 20 63 68 65 63 6b 6f 75 74 0d  source checkout.
2150: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
2160: 20 66 6f 72 20 74 68 61 74 20 70 72 6f 6a 65 63   for that projec
2170: 74 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  t...        #.. 
2180: 20 20 20 20 20 20 20 73 65 74 20 72 6f 6f 74 5f         set root_
2190: 70 61 74 68 20 24 62 61 73 65 5f 70 61 74 68 0d  path $base_path.
21a0: 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d  .      } else {.
21b0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
21c0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 65      # NOTE: We e
21d0: 78 74 72 61 63 74 65 64 20 74 68 65 20 6c 6f 63  xtracted the loc
21e0: 61 6c 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72  al root director
21f0: 79 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 0d  y of the source.
2200: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
2210: 20 63 68 65 63 6b 6f 75 74 20 66 72 6f 6d 20 46   checkout from F
2220: 6f 73 73 69 6c 2e 20 20 4e 6f 77 2c 20 6d 61 6b  ossil.  Now, mak
2230: 65 20 73 75 72 65 20 69 74 20 69 73 20 66 75 6c  e sure it is ful
2240: 6c 79 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20  ly..        #   
2250: 20 20 20 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 61      normalized a
2260: 6e 64 20 68 61 73 20 6e 6f 20 74 72 61 69 6c 69  nd has no traili
2270: 6e 67 20 73 6c 61 73 68 65 73 2e 0d 0a 20 20 20  ng slashes...   
2280: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
2290: 73 65 74 20 72 6f 6f 74 5f 70 61 74 68 20 5b 66  set root_path [f
22a0: 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 24 64  ile normalize $d
22b0: 69 72 65 63 74 6f 72 79 5d 0d 0a 20 20 20 20 20  irectory]..     
22c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 75 6e 73 65   }....      unse
22d0: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 64 69  t -nocomplain di
22e0: 72 65 63 74 6f 72 79 20 64 75 6d 6d 79 20 65 78  rectory dummy ex
22f0: 65 63 20 70 61 74 74 65 72 6e 0d 0a 20 20 20 20  ec pattern..    
2300: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
2310: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
2320: 20 55 73 65 20 6f 66 20 46 6f 73 73 69 6c 20 62   Use of Fossil b
2330: 79 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65  y the test suite
2340: 20 69 73 20 66 6f 72 62 69 64 64 65 6e 2e 20 20   is forbidden.  
2350: 46 61 6c 6c 62 61 63 6b 0d 0a 20 20 20 20 20 20  Fallback..      
2360: 23 20 20 20 20 20 20 20 74 6f 20 75 73 69 6e 67  #       to using
2370: 20 74 68 65 20 62 61 73 65 20 70 61 74 68 2e 0d   the base path..
2380: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
2390: 73 65 74 20 72 6f 6f 74 5f 70 61 74 68 20 24 62  set root_path $b
23a0: 61 73 65 5f 70 61 74 68 0d 0a 20 20 20 20 7d 0d  ase_path..    }.
23b0: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23  .  }....  ######
23c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
23d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
23e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
23f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2400: 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a  #######....  #..
2410: 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 63 6f 6d    # NOTE: If com
2420: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65  mand line argume
2430: 6e 74 73 20 77 65 72 65 20 73 75 70 70 6c 69 65  nts were supplie
2440: 64 2c 20 70 72 6f 63 65 73 73 20 74 68 65 6d 20  d, process them 
2450: 6e 6f 77 2e 0d 0a 20 20 23 0d 0a 20 20 73 65 74  now...  #..  set
2460: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 75 69   test_flags(-sui
2470: 74 65 29 20 22 22 3b 20 23 20 74 65 73 74 20 73  te) ""; # test s
2480: 75 69 74 65 20 6e 61 6d 65 2c 20 64 65 66 61 75  uite name, defau
2490: 6c 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20  lt to empty...  
24a0: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
24b0: 6d 61 63 68 69 6e 65 29 20 22 22 3b 20 23 20 6d  machine) ""; # m
24c0: 61 63 68 69 6e 65 20 61 72 63 68 69 74 65 63 74  achine architect
24d0: 75 72 65 2c 20 64 65 66 61 75 6c 74 20 74 6f 20  ure, default to 
24e0: 65 6d 70 74 79 2e 0d 0a 20 20 73 65 74 20 74 65  empty...  set te
24f0: 73 74 5f 66 6c 61 67 73 28 2d 70 6c 61 74 66 6f  st_flags(-platfo
2500: 72 6d 29 20 22 22 3b 20 23 20 62 75 69 6c 64 20  rm) ""; # build 
2510: 70 6c 61 74 66 6f 72 6d 2c 20 64 65 66 61 75 6c  platform, defaul
2520: 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73  t to empty...  s
2530: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63  et test_flags(-c
2540: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 20 22 22  onfiguration) ""
2550: 3b 20 23 20 62 75 69 6c 64 20 63 6f 6e 66 69 67  ; # build config
2560: 75 72 61 74 69 6f 6e 2c 20 64 65 66 61 75 6c 74  uration, default
2570: 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65   to empty...  se
2580: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 75  t test_flags(-su
2590: 66 66 69 78 29 20 22 22 3b 20 23 20 62 75 69 6c  ffix) ""; # buil
25a0: 64 20 73 75 66 66 69 78 2c 20 64 65 66 61 75 6c  d suffix, defaul
25b0: 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73  t to empty...  s
25c0: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 66  et test_flags(-f
25d0: 69 6c 65 29 20 5b 6c 69 73 74 20 2a 2e 65 61 67  ile) [list *.eag
25e0: 6c 65 5d 3b 20 23 20 64 65 66 61 75 6c 74 20 74  le]; # default t
25f0: 6f 20 72 75 6e 6e 69 6e 67 20 61 6c 6c 20 74 65  o running all te
2600: 73 74 20 66 69 6c 65 73 2e 0d 0a 20 20 73 65 74  st files...  set
2610: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6e 6f 74   test_flags(-not
2620: 46 69 6c 65 29 20 5b 6c 69 73 74 20 6c 2e 2a 2e  File) [list l.*.
2630: 65 61 67 6c 65 5d 3b 20 23 20 43 4f 4d 50 41 54  eagle]; # COMPAT
2640: 3a 20 54 63 6c 2e 0d 0a 20 20 73 65 74 20 74 65  : Tcl...  set te
2650: 73 74 5f 66 6c 61 67 73 28 2d 73 74 61 72 74 46  st_flags(-startF
2660: 69 6c 65 29 20 5b 6c 69 73 74 5d 3b 20 23 20 73  ile) [list]; # s
2670: 74 61 72 74 20 72 75 6e 6e 69 6e 67 20 61 74 20  tart running at 
2680: 74 68 65 73 65 20 74 65 73 74 20 66 69 6c 65 73  these test files
2690: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
26a0: 61 67 73 28 2d 73 74 6f 70 46 69 6c 65 29 20 5b  ags(-stopFile) [
26b0: 6c 69 73 74 5d 3b 20 23 20 73 74 6f 70 20 72 75  list]; # stop ru
26c0: 6e 6e 69 6e 67 20 61 66 74 65 72 20 74 68 65 73  nning after thes
26d0: 65 20 74 65 73 74 20 66 69 6c 65 73 2e 0d 0a 20  e test files... 
26e0: 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28   set test_flags(
26f0: 2d 6d 61 74 63 68 29 20 5b 6c 69 73 74 20 2a 5d  -match) [list *]
2700: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 72  ; # default to r
2710: 75 6e 6e 69 6e 67 20 61 6c 6c 20 74 65 73 74 73  unning all tests
2720: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
2730: 61 67 73 28 2d 73 6b 69 70 29 20 5b 6c 69 73 74  ags(-skip) [list
2740: 5d 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  ]; # default to 
2750: 73 6b 69 70 70 69 6e 67 20 6e 6f 20 74 65 73 74  skipping no test
2760: 73 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  s...  set test_f
2770: 6c 61 67 73 28 2d 63 6f 6e 73 74 72 61 69 6e 74  lags(-constraint
2780: 73 29 20 5b 6c 69 73 74 5d 3b 20 23 20 64 65 66  s) [list]; # def
2790: 61 75 6c 74 20 74 6f 20 6e 6f 20 6d 61 6e 75 61  ault to no manua
27a0: 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a  l constraints...
27b0: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
27c0: 28 2d 6c 6f 67 46 69 6c 65 29 20 22 22 3b 20 23  (-logFile) ""; #
27d0: 20 64 65 66 61 75 6c 74 20 74 6f 20 75 73 69 6e   default to usin
27e0: 67 20 73 74 61 6e 64 61 72 64 20 6c 6f 67 20 66  g standard log f
27f0: 69 6c 65 20 6e 61 6d 69 6e 67 2e 0d 0a 20 20 73  ile naming...  s
2800: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 74  et test_flags(-t
2810: 68 72 65 73 68 6f 6c 64 29 20 22 22 3b 20 23 20  hreshold) ""; # 
2820: 64 65 66 61 75 6c 74 20 74 6f 20 72 65 71 75 69  default to requi
2830: 72 69 6e 67 20 61 6c 6c 20 74 65 73 74 73 20 74  ring all tests t
2840: 6f 20 70 61 73 73 2e 0d 0a 20 20 73 65 74 20 74  o pass...  set t
2850: 65 73 74 5f 66 6c 61 67 73 28 2d 72 61 6e 64 6f  est_flags(-rando
2860: 6d 4f 72 64 65 72 29 20 22 22 3b 20 23 20 64 65  mOrder) ""; # de
2870: 66 61 75 6c 74 20 74 6f 20 64 65 74 65 72 6d 69  fault to determi
2880: 6e 69 73 74 69 63 20 6f 72 64 65 72 2e 0d 0a 20  nistic order... 
2890: 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28   set test_flags(
28a0: 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b 29 20 22 22  -breakOnLeak) ""
28b0: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 63  ; # default to c
28c0: 6f 6e 74 69 6e 75 65 20 6f 6e 20 6c 65 61 6b 2e  ontinue on leak.
28d0: 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61  ..  set test_fla
28e0: 67 73 28 2d 73 74 6f 70 4f 6e 46 61 69 6c 75 72  gs(-stopOnFailur
28f0: 65 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74  e) ""; # default
2900: 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 6f 6e 20   to continue on 
2910: 66 61 69 6c 75 72 65 2e 0d 0a 20 20 73 65 74 20  failure...  set 
2920: 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70  test_flags(-stop
2930: 4f 6e 4c 65 61 6b 29 20 22 22 3b 20 23 20 64 65  OnLeak) ""; # de
2940: 66 61 75 6c 74 20 74 6f 20 63 6f 6e 74 69 6e 75  fault to continu
2950: 65 20 6f 6e 20 6c 65 61 6b 2e 0d 0a 20 20 73 65  e on leak...  se
2960: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 65 78  t test_flags(-ex
2970: 69 74 4f 6e 43 6f 6d 70 6c 65 74 65 29 20 22 22  itOnComplete) ""
2980: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 6e  ; # default to n
2990: 6f 74 20 65 78 69 74 20 61 66 74 65 72 20 63 6f  ot exit after co
29a0: 6d 70 6c 65 74 65 2e 0d 0a 20 20 73 65 74 20 74  mplete...  set t
29b0: 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 54 65  est_flags(-preTe
29c0: 73 74 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c  st) ""; # defaul
29d0: 74 20 74 6f 20 6e 6f 74 20 65 76 61 6c 75 61 74  t to not evaluat
29e0: 69 6e 67 20 61 6e 79 74 68 69 6e 67 2e 0d 0a 20  ing anything... 
29f0: 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28   set test_flags(
2a00: 2d 70 6f 73 74 54 65 73 74 29 20 22 22 3b 20 23  -postTest) ""; #
2a10: 20 64 65 66 61 75 6c 74 20 74 6f 20 6e 6f 74 20   default to not 
2a20: 65 76 61 6c 75 61 74 69 6e 67 20 61 6e 79 74 68  evaluating anyth
2a30: 69 6e 67 2e 0d 0a 20 20 73 65 74 20 74 65 73 74  ing...  set test
2a40: 5f 66 6c 61 67 73 28 2d 74 63 6c 73 68 29 20 22  _flags(-tclsh) "
2a50: 22 3b 20 23 20 54 63 6c 20 73 68 65 6c 6c 2c 20  "; # Tcl shell, 
2a60: 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70 74 79  default to empty
2a70: 2e 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  .....  #..  # NO
2a80: 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  TE: Check for an
2a90: 64 20 70 72 6f 63 65 73 73 20 61 6e 79 20 63 6f  d process any co
2aa0: 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d  mmand line argum
2ab0: 65 6e 74 73 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  ents...  #..  if
2ac0: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 61   {[info exists a
2ad0: 72 67 76 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rgv]} then {..  
2ae0: 20 20 65 76 61 6c 20 70 72 6f 63 65 73 73 54 65    eval processTe
2af0: 73 74 41 72 67 75 6d 65 6e 74 73 20 74 65 73 74  stArguments test
2b00: 5f 66 6c 61 67 73 20 24 61 72 67 76 0d 0a 0d 0a  _flags $argv....
2b10: 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78      if {[info ex
2b20: 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28  ists test_flags(
2b30: 2d 6e 6f 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  -no)] && \..    
2b40: 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67      [string leng
2b50: 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  th $test_flags(-
2b60: 6e 6f 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  no)] > 0} then {
2b70: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
2b80: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
2b90: 20 74 65 73 74 20 72 75 6e 20 72 65 73 74 72 69   test run restri
2ba0: 63 74 69 6f 6e 73 20 62 61 73 65 64 20 6f 6e 20  ctions based on 
2bb0: 74 68 65 20 70 72 6f 76 69 64 65 64 20 63 6f 6d  the provided com
2bc0: 6d 61 6e 64 20 6c 69 6e 65 0d 0a 20 20 20 20 20  mand line..     
2bd0: 20 23 20 20 20 20 20 20 20 61 72 67 75 6d 65 6e   #       argumen
2be0: 74 20 76 61 6c 75 65 20 28 77 68 69 63 68 20 69  t value (which i
2bf0: 73 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65 20  s assumed to be 
2c00: 61 20 22 64 69 63 74 69 6f 6e 61 72 79 2d 73 74  a "dictionary-st
2c10: 79 6c 65 22 20 6c 69 73 74 0d 0a 20 20 20 20 20  yle" list..     
2c20: 20 23 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e   #       contain
2c30: 69 6e 67 20 6e 61 6d 65 2f 76 61 6c 75 65 20 70  ing name/value p
2c40: 61 69 72 73 20 74 6f 20 61 64 64 20 74 6f 20 74  airs to add to t
2c50: 68 65 20 67 6c 6f 62 61 6c 20 22 6e 6f 22 20 61  he global "no" a
2c60: 72 72 61 79 29 2e 0d 0a 20 20 20 20 20 20 23 0d  rray)...      #.
2c70: 0a 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 7b  .      foreach {
2c80: 6e 61 6d 65 20 76 61 6c 75 65 7d 20 24 74 65 73  name value} $tes
2c90: 74 5f 66 6c 61 67 73 28 2d 6e 6f 29 20 7b 0d 0a  t_flags(-no) {..
2ca0: 20 20 20 20 20 20 20 20 73 65 74 20 6e 6f 28 24          set no($
2cb0: 6e 61 6d 65 29 20 24 76 61 6c 75 65 0d 0a 20 20  name) $value..  
2cc0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 75      }....      u
2cd0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
2ce0: 20 6e 61 6d 65 20 76 61 6c 75 65 0d 0a 20 20 20   name value..   
2cf0: 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69   }....    if {[i
2d00: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
2d10: 66 6c 61 67 73 28 2d 6c 6f 67 46 69 6c 65 29 5d  flags(-logFile)]
2d20: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b   && \..        [
2d30: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74  string length $t
2d40: 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f 67 46 69  est_flags(-logFi
2d50: 6c 65 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  le)] > 0} then {
2d60: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
2d70: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
2d80: 20 6c 6f 67 20 66 69 6c 65 20 6e 61 6d 65 20 74   log file name t
2d90: 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69 64  o the one provid
2da0: 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d 61 6e  ed by the comman
2db0: 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 23  d line...      #
2dc0: 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74  ..      set test
2dd0: 5f 6c 6f 67 20 24 74 65 73 74 5f 66 6c 61 67 73  _log $test_flags
2de0: 28 2d 6c 6f 67 46 69 6c 65 29 0d 0a 20 20 20 20  (-logFile)..    
2df0: 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e  }....    if {[in
2e00: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66  fo exists test_f
2e10: 6c 61 67 73 28 2d 74 68 72 65 73 68 6f 6c 64 29  lags(-threshold)
2e20: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
2e30: 5b 73 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67  [string is integ
2e40: 65 72 20 2d 73 74 72 69 63 74 20 24 74 65 73 74  er -strict $test
2e50: 5f 66 6c 61 67 73 28 2d 74 68 72 65 73 68 6f 6c  _flags(-threshol
2e60: 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
2e70: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
2e80: 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74  TE: Set the test
2e90: 20 70 61 73 73 20 74 68 72 65 73 68 6f 6c 64 20   pass threshold 
2ea0: 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69  to the one provi
2eb0: 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d 61  ded by the comma
2ec0: 6e 64 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  nd..      #     
2ed0: 20 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 23    line...      #
2ee0: 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74  ..      set test
2ef0: 5f 74 68 72 65 73 68 6f 6c 64 20 24 74 65 73 74  _threshold $test
2f00: 5f 66 6c 61 67 73 28 2d 74 68 72 65 73 68 6f 6c  _flags(-threshol
2f10: 64 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  d)..    }....   
2f20: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
2f30: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 72 61  s test_flags(-ra
2f40: 6e 64 6f 6d 4f 72 64 65 72 29 5d 20 26 26 20 5c  ndomOrder)] && \
2f50: 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e  ..        [strin
2f60: 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74  g is boolean -st
2f70: 72 69 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73  rict $test_flags
2f80: 28 2d 72 61 6e 64 6f 6d 4f 72 64 65 72 29 5d 7d  (-randomOrder)]}
2f90: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
2fa0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
2fb0: 53 65 74 20 74 68 65 20 74 65 73 74 20 72 61 6e  Set the test ran
2fc0: 64 6f 6d 2d 6f 72 64 65 72 20 66 6c 61 67 20 74  dom-order flag t
2fd0: 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69 64  o the one provid
2fe0: 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
2ff0: 20 23 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64   #       command
3000: 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 23 0d   line...      #.
3010: 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f  .      set test_
3020: 72 61 6e 64 6f 6d 5f 6f 72 64 65 72 20 24 74 65  random_order $te
3030: 73 74 5f 66 6c 61 67 73 28 2d 72 61 6e 64 6f 6d  st_flags(-random
3040: 4f 72 64 65 72 29 0d 0a 20 20 20 20 7d 0d 0a 0d  Order)..    }...
3050: 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65  .    if {[info e
3060: 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73  xists test_flags
3070: 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b 29 5d 20  (-breakOnLeak)] 
3080: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73  && \..        [s
3090: 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e  tring is boolean
30a0: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 66   -strict $test_f
30b0: 6c 61 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61  lags(-breakOnLea
30c0: 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  k)]} then {..   
30d0: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
30e0: 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74  TE: Set the test
30f0: 20 62 72 65 61 6b 2d 6f 6e 2d 6c 65 61 6b 20 66   break-on-leak f
3100: 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e 65 20 70  lag to the one p
3110: 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a  rovided by the..
3120: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f        #       co
3130: 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20  mmand line...   
3140: 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20     #..      set 
3150: 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c 65  test_break_on_le
3160: 61 6b 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  ak $test_flags(-
3170: 62 72 65 61 6b 4f 6e 4c 65 61 6b 29 0d 0a 20 20  breakOnLeak)..  
3180: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b    }....    if {[
3190: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
31a0: 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e 46 61  _flags(-stopOnFa
31b0: 69 6c 75 72 65 29 5d 20 26 26 20 5c 0d 0a 20 20  ilure)] && \..  
31c0: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73        [string is
31d0: 20 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74   boolean -strict
31e0: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74   $test_flags(-st
31f0: 6f 70 4f 6e 46 61 69 6c 75 72 65 29 5d 7d 20 74  opOnFailure)]} t
3200: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
3210: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65        # NOTE: Se
3220: 74 20 74 68 65 20 74 65 73 74 20 73 74 6f 70 2d  t the test stop-
3230: 6f 6e 2d 66 61 69 6c 75 72 65 20 66 6c 61 67 20  on-failure flag 
3240: 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69  to the one provi
3250: 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20  ded by the..    
3260: 20 20 23 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e    #       comman
3270: 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 23  d line...      #
3280: 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74  ..      set test
3290: 5f 73 74 6f 70 5f 6f 6e 5f 66 61 69 6c 75 72 65  _stop_on_failure
32a0: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74   $test_flags(-st
32b0: 6f 70 4f 6e 46 61 69 6c 75 72 65 29 0d 0a 20 20  opOnFailure)..  
32c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b    }....    if {[
32d0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
32e0: 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e 4c 65  _flags(-stopOnLe
32f0: 61 6b 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ak)] && \..     
3300: 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 62 6f     [string is bo
3310: 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20 24 74  olean -strict $t
3320: 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f  est_flags(-stopO
3330: 6e 4c 65 61 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d  nLeak)]} then {.
3340: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
3350: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
3360: 74 65 73 74 20 73 74 6f 70 2d 6f 6e 2d 6c 65 61  test stop-on-lea
3370: 6b 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e  k flag to the on
3380: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  e provided by th
3390: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
33a0: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a   command line...
33b0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
33c0: 65 74 20 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f  et test_stop_on_
33d0: 6c 65 61 6b 20 24 74 65 73 74 5f 66 6c 61 67 73  leak $test_flags
33e0: 28 2d 73 74 6f 70 4f 6e 4c 65 61 6b 29 0d 0a 20  (-stopOnLeak).. 
33f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
3400: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
3410: 74 5f 66 6c 61 67 73 28 2d 65 78 69 74 4f 6e 43  t_flags(-exitOnC
3420: 6f 6d 70 6c 65 74 65 29 5d 20 26 26 20 5c 0d 0a  omplete)] && \..
3430: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
3440: 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69  is boolean -stri
3450: 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  ct $test_flags(-
3460: 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74 65 29 5d  exitOnComplete)]
3470: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
3480: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
3490: 20 53 65 74 20 74 68 65 20 74 65 73 74 20 65 78   Set the test ex
34a0: 69 74 2d 6f 6e 2d 63 6f 6d 70 6c 65 74 65 20 66  it-on-complete f
34b0: 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e 65 20 70  lag to the one p
34c0: 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a  rovided by the..
34d0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f        #       co
34e0: 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20  mmand line...   
34f0: 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20     #..      set 
3500: 74 65 73 74 5f 65 78 69 74 5f 6f 6e 5f 63 6f 6d  test_exit_on_com
3510: 70 6c 65 74 65 20 24 74 65 73 74 5f 66 6c 61 67  plete $test_flag
3520: 73 28 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74  s(-exitOnComplet
3530: 65 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e)..    }....   
3540: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
3550: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 72  s test_flags(-pr
3560: 65 54 65 73 74 29 5d 20 26 26 20 5c 0d 0a 20 20  eTest)] && \..  
3570: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65        [string le
3580: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
3590: 28 2d 70 72 65 54 65 73 74 29 5d 20 3e 20 30 7d  (-preTest)] > 0}
35a0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
35b0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
35c0: 53 65 74 20 74 68 65 20 70 72 65 2d 74 65 73 74  Set the pre-test
35d0: 20 73 63 72 69 70 74 20 74 6f 20 74 68 65 20 6f   script to the o
35e0: 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  ne provided by t
35f0: 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e  he command line.
3600: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
3610: 20 73 65 74 20 74 65 73 74 5f 73 63 72 69 70 74   set test_script
3620: 28 70 72 65 29 20 24 74 65 73 74 5f 66 6c 61 67  (pre) $test_flag
3630: 73 28 2d 70 72 65 54 65 73 74 29 0d 0a 20 20 20  s(-preTest)..   
3640: 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69   }....    if {[i
3650: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
3660: 66 6c 61 67 73 28 2d 70 6f 73 74 54 65 73 74 29  flags(-postTest)
3670: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
3680: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
3690: 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 6f 73 74  test_flags(-post
36a0: 54 65 73 74 29 5d 20 3e 20 30 7d 20 74 68 65 6e  Test)] > 0} then
36b0: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
36c0: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
36d0: 68 65 20 70 72 65 2d 74 65 73 74 20 73 63 72 69  he pre-test scri
36e0: 70 74 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72  pt to the one pr
36f0: 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f  ovided by the co
3700: 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20  mmand line...   
3710: 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20     #..      set 
3720: 74 65 73 74 5f 73 63 72 69 70 74 28 70 6f 73 74  test_script(post
3730: 29 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 70  ) $test_flags(-p
3740: 6f 73 74 54 65 73 74 29 0d 0a 20 20 20 20 7d 0d  ostTest)..    }.
3750: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
3760: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 64   NOTE: Set the d
3770: 65 66 61 75 6c 74 20 74 65 73 74 20 73 75 69 74  efault test suit
3780: 65 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63 65 73  e name, if neces
3790: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
37a0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
37b0: 74 65 73 74 5f 73 75 69 74 65 5d 7d 20 74 68 65  test_suite]} the
37c0: 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73  n {..    set tes
37d0: 74 5f 73 75 69 74 65 20 5b 67 65 74 54 65 73 74  t_suite [getTest
37e0: 53 75 69 74 65 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20  Suite]..  }.... 
37f0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65   #..  # NOTE: Se
3800: 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 65  t the default te
3810: 73 74 20 6d 61 63 68 69 6e 65 20 28 65 2e 67 2e  st machine (e.g.
3820: 20 61 6d 64 36 34 2c 20 69 6e 74 65 6c 2c 20 65   amd64, intel, e
3830: 74 63 29 2c 20 69 66 20 6e 65 63 65 73 73 61 72  tc), if necessar
3840: 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  y...  #..  if {!
3850: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
3860: 74 5f 6d 61 63 68 69 6e 65 5d 7d 20 74 68 65 6e  t_machine]} then
3870: 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74   {..    set test
3880: 5f 6d 61 63 68 69 6e 65 20 5b 67 65 74 54 65 73  _machine [getTes
3890: 74 4d 61 63 68 69 6e 65 5d 0d 0a 20 20 7d 0d 0a  tMachine]..  }..
38a0: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
38b0: 20 53 65 74 20 74 68 65 20 64 65 66 61 75 6c 74   Set the default
38c0: 20 74 65 73 74 20 70 6c 61 74 66 6f 72 6d 20 28   test platform (
38d0: 65 2e 67 2e 20 78 38 36 2c 20 78 36 34 2c 20 65  e.g. x86, x64, e
38e0: 74 63 29 2c 20 69 66 20 6e 65 63 65 73 73 61 72  tc), if necessar
38f0: 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  y...  #..  if {!
3900: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
3910: 74 5f 70 6c 61 74 66 6f 72 6d 5d 7d 20 74 68 65  t_platform]} the
3920: 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73  n {..    set tes
3930: 74 5f 70 6c 61 74 66 6f 72 6d 20 5b 67 65 74 54  t_platform [getT
3940: 65 73 74 50 6c 61 74 66 6f 72 6d 5d 0d 0a 20 20  estPlatform]..  
3950: 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
3960: 54 45 3a 20 53 65 74 20 74 68 65 20 64 65 66 61  TE: Set the defa
3970: 75 6c 74 20 74 65 73 74 20 63 6f 6e 66 69 67 75  ult test configu
3980: 72 61 74 69 6f 6e 20 28 69 2e 65 2e 20 44 65 62  ration (i.e. Deb
3990: 75 67 20 6f 72 20 52 65 6c 65 61 73 65 29 2c 20  ug or Release), 
39a0: 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20 6e 65  if..  #       ne
39b0: 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20  cessary...  #.. 
39c0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
39d0: 74 73 20 74 65 73 74 5f 63 6f 6e 66 69 67 75 72  ts test_configur
39e0: 61 74 69 6f 6e 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ation]} then {..
39f0: 20 20 20 20 73 65 74 20 74 65 73 74 5f 63 6f 6e      set test_con
3a00: 66 69 67 75 72 61 74 69 6f 6e 20 5b 67 65 74 50  figuration [getP
3a10: 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63 6f 6e 66  latformInfo conf
3a20: 69 67 75 72 61 74 69 6f 6e 20 52 65 6c 65 61 73  iguration Releas
3a30: 65 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  e]..  }....  #..
3a40: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 61 75    # NOTE: Has au
3a50: 74 6f 6d 61 74 69 63 20 6c 6f 67 20 66 69 6c 65  tomatic log file
3a60: 20 6e 61 6d 69 6e 67 20 62 65 65 6e 20 64 69 73   naming been dis
3a70: 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69  abled?..  #..  i
3a80: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
3a90: 20 6e 6f 28 6c 6f 67 46 69 6c 65 4e 61 6d 65 29   no(logFileName)
3aa0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23  ]} then {..    #
3ab0: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65  ..    # NOTE: Se
3ac0: 74 20 74 68 65 20 6c 6f 67 20 74 6f 20 75 73 65  t the log to use
3ad0: 20 66 6f 72 20 74 65 73 74 20 6f 75 74 70 75 74   for test output
3ae0: 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  , if necessary..
3af0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
3b00: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  ![info exists te
3b10: 73 74 5f 6c 6f 67 5d 7d 20 74 68 65 6e 20 7b 0d  st_log]} then {.
3b20: 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f  .      set test_
3b30: 6c 6f 67 20 5b 67 65 74 44 65 66 61 75 6c 74 54  log [getDefaultT
3b40: 65 73 74 4c 6f 67 5d 0d 0a 20 20 20 20 7d 0d 0a  estLog]..    }..
3b50: 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23    }....  #######
3b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3ba0: 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20  ######....  #.. 
3bb0: 20 23 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49 41   # NOTE: *SPECIA
3bc0: 4c 2a 20 54 68 69 73 20 74 65 73 74 20 63 6f 6e  L* This test con
3bd0: 73 74 72 61 69 6e 74 20 6d 75 73 74 20 62 65 20  straint must be 
3be0: 63 68 65 63 6b 65 64 20 66 69 72 73 74 20 61 73  checked first as
3bf0: 20 69 74 20 63 61 6e 0d 0a 20 20 23 20 20 20 20   it can..  #    
3c00: 20 20 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20     determine if 
3c10: 73 75 62 73 65 71 75 65 6e 74 20 6f 6e 65 73 20  subsequent ones 
3c20: 77 69 6c 6c 20 65 6d 69 74 20 77 61 72 6e 69 6e  will emit warnin
3c30: 67 73 2e 20 20 54 68 69 73 20 69 73 20 6f 6e 6c  gs.  This is onl
3c40: 79 0d 0a 20 20 23 20 20 20 20 20 20 20 61 70 70  y..  #       app
3c50: 6c 69 63 61 62 6c 65 20 74 6f 20 45 61 67 6c 65  licable to Eagle
3c60: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69  ...  #..  if {[i
3c70: 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d  sEagle]} then {.
3c80: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
3c90: 54 45 3a 20 48 61 73 20 71 75 69 65 74 20 74 65  TE: Has quiet te
3ca0: 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
3cb0: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
3cc0: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
3cd0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 72  nfo exists no(pr
3ce0: 65 51 75 69 65 74 29 5d 7d 20 74 68 65 6e 20 7b  eQuiet)]} then {
3cf0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
3d00: 20 23 20 4e 4f 54 45 3a 20 54 68 65 72 65 20 61   # NOTE: There a
3d10: 72 65 20 63 68 65 63 6b 73 20 66 6f 72 20 74 68  re checks for th
3d20: 65 20 22 71 75 69 65 74 22 20 74 65 73 74 20 63  e "quiet" test c
3d30: 6f 6e 73 74 72 61 69 6e 74 20 70 72 69 6f 72 20  onstraint prior 
3d40: 74 6f 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  to..      #     
3d50: 20 20 74 68 65 20 72 65 61 6c 20 74 65 73 74 20    the real test 
3d60: 63 6f 6e 73 74 72 61 69 6e 74 73 20 62 65 69 6e  constraints bein
3d70: 67 20 69 6e 69 74 69 61 6c 69 7a 65 64 2e 20 20  g initialized.  
3d80: 50 72 65 70 61 72 65 20 66 6f 72 0d 0a 20 20 20  Prepare for..   
3d90: 20 20 20 23 20 20 20 20 20 20 20 74 68 6f 73 65     #       those
3da0: 20 63 68 65 63 6b 73 20 6e 6f 77 2e 20 20 54 68   checks now.  Th
3db0: 69 73 20 77 69 6c 6c 20 68 61 76 65 20 74 6f 20  is will have to 
3dc0: 62 65 20 72 65 70 65 61 74 65 64 20 6c 61 74 65  be repeated late
3dd0: 72 2c 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  r,..      #     
3de0: 20 20 61 66 74 65 72 20 74 68 65 20 72 65 61 6c    after the real
3df0: 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69 6e 74   test constraint
3e00: 73 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a 65  s are initialize
3e10: 64 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d...      #..   
3e20: 20 20 20 63 68 65 63 6b 46 6f 72 51 75 69 65 74     checkForQuiet
3e30: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 74   $test_channel t
3e40: 72 75 65 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d  rue..    }..  }.
3e50: 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23  ...  ###########
3e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3e70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3e80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3e90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3ea0: 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ##....  #..  # N
3eb0: 4f 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20  OTE: Has native 
3ec0: 54 63 6c 20 73 68 65 6c 6c 20 64 65 74 65 63 74  Tcl shell detect
3ed0: 69 6f 6e 20 61 6e 64 20 75 73 65 20 62 65 65 6e  ion and use been
3ee0: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
3ef0: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
3f00: 69 73 74 73 20 6e 6f 28 74 63 6c 73 68 29 5d 7d  ists no(tclsh)]}
3f10: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a   then {..    #..
3f20: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
3f30: 74 68 65 20 54 63 6c 20 73 68 65 6c 6c 20 65 78  the Tcl shell ex
3f40: 65 63 75 74 61 62 6c 65 20 74 6f 20 75 73 65 20  ecutable to use 
3f50: 66 6f 72 20 74 68 6f 73 65 20 73 70 65 63 69 61  for those specia
3f60: 6c 69 7a 65 64 0d 0a 20 20 20 20 23 20 20 20 20  lized..    #    
3f70: 20 20 20 74 65 73 74 73 20 74 68 61 74 20 6d 61     tests that ma
3f80: 79 20 72 65 71 75 69 72 65 20 69 74 2c 20 69 66  y require it, if
3f90: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
3fa0: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
3fb0: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 74  fo exists test_t
3fc0: 63 6c 73 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  clsh]} then {.. 
3fd0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
3fe0: 4e 4f 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e 69  NOTE: When runni
3ff0: 6e 67 20 69 6e 20 45 61 67 6c 65 2c 20 6d 6f 72  ng in Eagle, mor
4000: 65 20 63 6f 6d 70 6c 65 78 20 6c 6f 67 69 63 20  e complex logic 
4010: 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 0d 0a  is required to..
4020: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 64 65        #       de
4030: 74 65 72 6d 69 6e 65 20 74 68 65 20 6e 61 74 69  termine the nati
4040: 76 65 20 54 63 6c 20 73 68 65 6c 6c 20 74 6f 20  ve Tcl shell to 
4050: 75 73 65 20 66 6f 72 20 74 68 65 20 76 61 72 69  use for the vari
4060: 6f 75 73 20 74 65 73 74 73 0d 0a 20 20 20 20 20  ous tests..     
4070: 20 23 20 20 20 20 20 20 20 74 68 61 74 20 72 65   #       that re
4080: 71 75 69 72 65 20 69 74 2e 20 20 41 6c 73 6f 2c  quire it.  Also,
4090: 20 74 68 69 73 20 73 61 6d 65 20 6c 6f 67 69 63   this same logic
40a0: 20 69 73 20 75 73 65 64 20 77 69 74 68 20 54 63   is used with Tc
40b0: 6c 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  l..      #      
40c0: 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 74 20   when it is not 
40d0: 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20 61 6e 20  running from an 
40e0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
40f0: 54 63 6c 20 73 68 65 6c 6c 0d 0a 20 20 20 20 20  Tcl shell..     
4100: 20 23 20 20 20 20 20 20 20 65 78 65 63 75 74 61   #       executa
4110: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ble...      #.. 
4120: 20 20 20 20 20 69 66 20 7b 5b 69 73 45 61 67 6c       if {[isEagl
4130: 65 5d 20 7c 7c 20 21 5b 73 74 72 69 6e 67 20 6d  e] || ![string m
4140: 61 74 63 68 20 74 63 6c 73 68 2a 20 24 62 69 6e  atch tclsh* $bin
4150: 5f 66 69 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  _file]} then {..
4160: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66          if {[inf
4170: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
4180: 61 67 73 28 2d 74 63 6c 73 68 29 5d 20 26 26 20  ags(-tclsh)] && 
4190: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  \..            [
41a0: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74  string length $t
41b0: 65 73 74 5f 66 6c 61 67 73 28 2d 74 63 6c 73 68  est_flags(-tclsh
41c0: 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  )] > 0} then {..
41d0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
41e0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 55         # NOTE: U
41f0: 73 65 20 74 68 65 20 6e 61 74 69 76 65 20 54 63  se the native Tc
4200: 6c 20 73 68 65 6c 6c 20 73 70 65 63 69 66 69 65  l shell specifie
4210: 64 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61 6e  d via the comman
4220: 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 20  d line...       
4230: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
4240: 73 65 74 20 74 65 73 74 5f 74 63 6c 73 68 20 24  set test_tclsh $
4250: 74 65 73 74 5f 66 6c 61 67 73 28 2d 74 63 6c 73  test_flags(-tcls
4260: 68 29 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  h)..        } el
4270: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
4280: 69 66 20 7b 5b 63 61 6e 45 78 65 63 54 63 6c 53  if {[canExecTclS
4290: 68 65 6c 6c 5d 20 26 26 20 5c 0d 0a 20 20 20 20  hell] && \..    
42a0: 20 20 20 20 20 20 20 20 20 20 21 5b 69 6e 66 6f            ![info
42b0: 20 65 78 69 73 74 73 20 6e 6f 28 67 65 74 54 63   exists no(getTc
42c0: 6c 53 68 65 6c 6c 46 69 6c 65 4e 61 6d 65 29 5d  lShellFileName)]
42d0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
42e0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
42f0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 74 74       # NOTE: Att
4300: 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69  empt to automati
4310: 63 61 6c 6c 79 20 73 65 6c 65 63 74 20 74 68 65  cally select the
4320: 20 6e 61 74 69 76 65 20 54 63 6c 20 73 68 65 6c   native Tcl shel
4330: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  l..            #
4340: 20 20 20 20 20 20 20 74 6f 20 75 73 65 2e 0d 0a         to use...
4350: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
4360: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 21             if {!
4370: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
4380: 77 61 72 6e 69 6e 67 46 6f 72 54 63 6c 53 68 65  warningForTclShe
4390: 6c 6c 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ll)] && \..     
43a0: 20 20 20 20 20 20 20 20 20 20 20 21 5b 68 61 76             ![hav
43b0: 65 43 6f 6e 73 74 72 61 69 6e 74 20 71 75 69 65  eConstraint quie
43c0: 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  t]} then {..    
43d0: 20 20 20 20 20 20 20 20 20 20 74 70 75 74 73 20            tputs 
43e0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d  $test_channel \.
43f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4400: 20 20 20 22 3d 3d 3d 3d 20 57 41 52 4e 49 4e 47     "==== WARNING
4410: 3a 20 61 74 74 65 6d 70 74 69 6e 67 20 61 75 74  : attempting aut
4420: 6f 6d 61 74 69 63 20 54 63 6c 20 73 68 65 6c 6c  omatic Tcl shell
4430: 20 73 65 6c 65 63 74 69 6f 6e 2e 2e 2e 5c 6e 22   selection...\n"
4440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
4450: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ...            s
4460: 65 74 20 74 65 73 74 5f 74 63 6c 73 68 20 5b 67  et test_tclsh [g
4470: 65 74 54 63 6c 53 68 65 6c 6c 46 69 6c 65 4e 61  etTclShellFileNa
4480: 6d 65 20 74 72 75 65 5d 0d 0a 20 20 20 20 20 20  me true]..      
4490: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
44a0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
44b0: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
44c0: 20 53 6b 69 70 20 64 65 74 65 63 74 69 6f 6e 20   Skip detection 
44d0: 61 6e 64 20 75 73 65 20 74 68 65 20 66 61 6c 6c  and use the fall
44e0: 62 61 63 6b 20 64 65 66 61 75 6c 74 2e 0d 0a 20  back default... 
44f0: 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20             #..  
4500: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 65            set te
4510: 73 74 5f 74 63 6c 73 68 20 74 63 6c 73 68 0d 0a  st_tclsh tclsh..
4520: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4530: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 20       }..      } 
4540: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
4550: 73 65 74 20 74 65 73 74 5f 74 63 6c 73 68 20 24  set test_tclsh $
4560: 62 69 6e 5f 66 69 6c 65 0d 0a 20 20 20 20 20 20  bin_file..      
4570: 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d  }..    }..  }...
4580: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
4590: 57 68 65 6e 20 72 75 6e 6e 69 6e 67 20 69 6e 20  When running in 
45a0: 45 61 67 6c 65 2c 20 63 68 65 63 6b 20 66 6f 72  Eagle, check for
45b0: 20 61 6e 79 20 6e 6f 6e 2d 63 6f 72 65 20 70 6c   any non-core pl
45c0: 75 67 69 6e 73 20 6c 6f 61 64 65 64 20 69 6e 74  ugins loaded int
45d0: 6f 0d 0a 20 20 23 20 20 20 20 20 20 20 74 68 65  o..  #       the
45e0: 20 69 6e 74 65 72 70 72 65 74 65 72 20 61 6e 64   interpreter and
45f0: 20 69 73 73 75 65 20 77 61 72 6e 69 6e 67 73 20   issue warnings 
4600: 69 66 20 61 6e 79 20 61 72 65 20 66 6f 75 6e 64  if any are found
4610: 2e 20 20 54 68 65 20 77 61 72 6e 69 6e 67 0d 0a  .  The warning..
4620: 20 20 23 20 20 20 20 20 20 20 6d 61 79 20 62 65    #       may be
4630: 20 75 73 65 64 20 74 6f 20 65 78 70 6c 61 69 6e   used to explain
4640: 20 73 75 62 73 65 71 75 65 6e 74 20 74 65 73 74   subsequent test
4650: 20 66 61 69 6c 75 72 65 73 20 64 75 65 20 74 6f   failures due to
4660: 20 74 68 65 20 65 78 74 72 61 0d 0a 20 20 23 20   the extra..  # 
4670: 20 20 20 20 20 20 70 6c 75 67 69 6e 73 20 62 65        plugins be
4680: 69 6e 67 20 6c 6f 61 64 65 64 20 28 69 2e 65 2e  ing loaded (i.e.
4690: 20 74 68 65 72 65 20 61 72 65 20 73 6f 6d 65 20   there are some 
46a0: 74 65 73 74 73 20 61 72 65 20 73 65 6e 73 69 74  tests are sensit
46b0: 69 76 65 20 74 6f 0d 0a 20 20 23 20 20 20 20 20  ive to..  #     
46c0: 20 20 68 61 76 69 6e 67 20 22 75 6e 65 78 70 65    having "unexpe
46d0: 63 74 65 64 22 20 70 6c 75 67 69 6e 73 20 6c 6f  cted" plugins lo
46e0: 61 64 65 64 29 2e 0d 0a 20 20 23 0d 0a 20 20 69  aded)...  #..  i
46f0: 66 20 7b 5b 69 73 45 61 67 6c 65 5d 20 26 26 20  f {[isEagle] && 
4700: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
4710: 28 77 61 72 6e 69 6e 67 46 6f 72 50 6c 75 67 69  (warningForPlugi
4720: 6e 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  n)] && \..      
4730: 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74  ![haveConstraint
4740: 20 71 75 69 65 74 5d 7d 20 74 68 65 6e 20 7b 0d   quiet]} then {.
4750: 0a 20 20 20 20 66 6f 72 65 61 63 68 20 6c 6f 61  .    foreach loa
4760: 64 65 64 20 5b 69 6e 66 6f 20 6c 6f 61 64 65 64  ded [info loaded
4770: 5d 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ] {..      #..  
4780: 20 20 20 20 23 20 48 41 43 4b 3a 20 54 68 69 73      # HACK: This
4790: 20 63 6f 64 65 20 61 73 73 75 6d 65 73 20 74 68   code assumes th
47a0: 61 74 20 61 6c 6c 20 70 6c 75 67 69 6e 73 20 69  at all plugins i
47b0: 6e 20 74 68 65 20 22 45 61 67 6c 65 2e 5f 50 6c  n the "Eagle._Pl
47c0: 75 67 69 6e 73 22 0d 0a 20 20 20 20 20 20 23 20  ugins"..      # 
47d0: 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20        namespace 
47e0: 62 65 6c 6f 6e 67 20 74 6f 20 74 68 65 20 45 61  belong to the Ea
47f0: 67 6c 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79  gle core library
4800: 20 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20   itself...      
4810: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 73  #..      if {![s
4820: 74 72 69 6e 67 20 6d 61 74 63 68 20 45 61 67 6c  tring match Eagl
4830: 65 2e 5f 50 6c 75 67 69 6e 73 2e 2a 20 5b 6c 69  e._Plugins.* [li
4840: 6e 64 65 78 20 24 6c 6f 61 64 65 64 20 31 5d 5d  ndex $loaded 1]]
4850: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
4860: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
4870: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
4880: 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s \..           
4890: 20 22 3d 3d 3d 3d 20 57 41 52 4e 49 4e 47 3a 20   "==== WARNING: 
48a0: 65 78 74 72 61 20 70 6c 75 67 69 6e 20 66 6f 75  extra plugin fou
48b0: 6e 64 3a 20 22 20 24 6c 6f 61 64 65 64 20 5c 6e  nd: " $loaded \n
48c0: 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ]..      }..    
48d0: 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 2d  }....    unset -
48e0: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 6c 6f 61 64 65  nocomplain loade
48f0: 64 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  d..  }....  #.. 
4900: 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 62 6f   # NOTE: Show bo
4910: 74 68 20 74 68 65 20 70 72 65 2d 74 65 73 74 20  th the pre-test 
4920: 61 6e 64 20 70 6f 73 74 2d 74 65 73 74 20 73 63  and post-test sc
4930: 72 69 70 74 73 20 6e 6f 77 2c 20 70 72 69 6f 72  ripts now, prior
4940: 20 74 6f 20 61 63 74 75 61 6c 6c 79 0d 0a 20 20   to actually..  
4950: 23 20 20 20 20 20 20 20 65 76 61 6c 75 61 74 69  #       evaluati
4960: 6e 67 20 65 69 74 68 65 72 20 6f 66 20 74 68 65  ng either of the
4970: 6d 20 28 65 76 65 6e 20 69 66 20 74 68 65 69 72  m (even if their
4980: 20 75 73 65 20 68 61 73 20 62 65 65 6e 20 64 69   use has been di
4990: 73 61 62 6c 65 64 29 2e 0d 0a 20 20 23 0d 0a 20  sabled)...  #.. 
49a0: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
49b0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
49c0: 20 22 2d 2d 2d 2d 20 70 72 65 2d 74 65 73 74 20   "---- pre-test 
49d0: 73 63 72 69 70 74 3a 20 22 20 5c 0d 0a 20 20 20  script: " \..   
49e0: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
49f0: 65 78 69 73 74 73 20 74 65 73 74 5f 73 63 72 69  exists test_scri
4a00: 70 74 28 70 72 65 29 5d 20 26 26 20 5c 0d 0a 20  pt(pre)] && \.. 
4a10: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e       [string len
4a20: 67 74 68 20 24 74 65 73 74 5f 73 63 72 69 70 74  gth $test_script
4a30: 28 70 72 65 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a  (pre)] > 0 ? \..
4a40: 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72 67        [appendArg
4a50: 73 20 5c 22 20 24 74 65 73 74 5f 73 63 72 69 70  s \" $test_scrip
4a60: 74 28 70 72 65 29 20 5c 22 5d 20 3a 20 22 3c 6e  t(pre) \"] : "<n
4a70: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
4a80: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
4a90: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
4aa0: 20 22 2d 2d 2d 2d 20 70 6f 73 74 2d 74 65 73 74   "---- post-test
4ab0: 20 73 63 72 69 70 74 3a 20 22 20 5c 0d 0a 20 20   script: " \..  
4ac0: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
4ad0: 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 63 72   exists test_scr
4ae0: 69 70 74 28 70 6f 73 74 29 5d 20 26 26 20 5c 0d  ipt(post)] && \.
4af0: 0a 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c  .      [string l
4b00: 65 6e 67 74 68 20 24 74 65 73 74 5f 73 63 72 69  ength $test_scri
4b10: 70 74 28 70 6f 73 74 29 5d 20 3e 20 30 20 3f 20  pt(post)] > 0 ? 
4b20: 5c 0d 0a 20 20 20 20 20 20 5b 61 70 70 65 6e 64  \..      [append
4b30: 41 72 67 73 20 5c 22 20 24 74 65 73 74 5f 73 63  Args \" $test_sc
4b40: 72 69 70 74 28 70 6f 73 74 29 20 5c 22 5d 20 3a  ript(post) \"] :
4b50: 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d   "<none>"}] \n].
4b60: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
4b70: 3a 20 41 72 65 20 77 65 20 62 65 69 6e 67 20 70  : Are we being p
4b80: 72 65 76 65 6e 74 65 64 20 66 72 6f 6d 20 65 76  revented from ev
4b90: 61 6c 75 61 74 69 6e 67 20 74 68 65 20 22 70 72  aluating the "pr
4ba0: 65 2d 74 65 73 74 22 20 73 63 72 69 70 74 3f 0d  e-test" script?.
4bb0: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
4bc0: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 72 65  fo exists no(pre
4bd0: 54 65 73 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Test)]} then {..
4be0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
4bf0: 45 3a 20 45 76 61 6c 75 61 74 65 20 74 68 65 20  E: Evaluate the 
4c00: 73 70 65 63 69 66 69 65 64 20 70 72 65 2d 74 65  specified pre-te
4c10: 73 74 20 73 63 72 69 70 74 20 6e 6f 77 2c 20 69  st script now, i
4c20: 66 20 61 6e 79 2e 0d 0a 20 20 20 20 23 0d 0a 20  f any...    #.. 
4c30: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
4c40: 73 74 73 20 74 65 73 74 5f 73 63 72 69 70 74 28  sts test_script(
4c50: 70 72 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  pre)] && \..    
4c60: 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67      [string leng
4c70: 74 68 20 24 74 65 73 74 5f 73 63 72 69 70 74 28  th $test_script(
4c80: 70 72 65 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20  pre)] > 0} then 
4c90: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
4ca0: 20 20 23 20 54 4f 44 4f 3a 20 50 65 72 68 61 70    # TODO: Perhap
4cb0: 73 20 75 73 65 20 5b 75 70 6c 65 76 65 6c 5d 20  s use [uplevel] 
4cc0: 68 65 72 65 20 69 6e 73 74 65 61 64 20 6f 66 20  here instead of 
4cd0: 5b 65 76 61 6c 5d 2e 20 20 46 6f 72 20 6e 6f 77  [eval].  For now
4ce0: 2c 20 69 74 20 64 6f 65 73 0d 0a 20 20 20 20 20  , it does..     
4cf0: 20 23 20 20 20 20 20 20 20 6e 6f 74 20 6d 61 74   #       not mat
4d00: 74 65 72 20 73 69 6e 63 65 20 77 65 20 65 6e 66  ter since we enf
4d10: 6f 72 63 65 20 74 68 69 73 20 66 69 6c 65 20 62  orce this file b
4d20: 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64 20 61  eing evaluated a
4d30: 74 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20  t the..      #  
4d40: 20 20 20 20 20 74 6f 70 2d 6c 65 76 65 6c 2e 0d       top-level..
4d50: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
4d60: 69 66 20 7b 5b 63 61 74 63 68 20 24 74 65 73 74  if {[catch $test
4d70: 5f 73 63 72 69 70 74 28 70 72 65 29 20 74 65 73  _script(pre) tes
4d80: 74 5f 73 63 72 69 70 74 28 70 72 65 2c 72 65 73  t_script(pre,res
4d90: 75 6c 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ult)]} then {.. 
4da0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
4db0: 20 20 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 31    # NOTE: Make 1
4dc0: 30 30 25 20 73 75 72 65 2c 20 65 76 65 6e 20 69  00% sure, even i
4dd0: 6e 20 22 71 75 69 65 74 22 20 6d 6f 64 65 2c 20  n "quiet" mode, 
4de0: 74 68 61 74 20 74 68 69 73 20 73 63 72 69 70 74  that this script
4df0: 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20   error..        
4e00: 23 20 20 20 20 20 20 20 67 65 74 73 20 69 6e 74  #       gets int
4e10: 6f 20 74 68 65 20 74 65 73 74 20 6c 6f 67 20 66  o the test log f
4e20: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  ile...        #.
4e30: 0a 20 20 20 20 20 20 20 20 74 70 75 74 73 20 24  .        tputs $
4e40: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
4e50: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70  pendArgs "---- p
4e60: 72 65 2d 74 65 73 74 20 73 63 72 69 70 74 20 65  re-test script e
4e70: 72 72 6f 72 3a 20 22 20 5c 0d 0a 20 20 20 20 20  rror: " \..     
4e80: 20 20 20 20 20 20 20 24 74 65 73 74 5f 73 63 72         $test_scr
4e90: 69 70 74 28 70 72 65 2c 72 65 73 75 6c 74 29 20  ipt(pre,result) 
4ea0: 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  \n]....        #
4eb0: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
4ec0: 3a 20 54 68 65 20 70 72 65 2d 74 65 73 74 20 73  : The pre-test s
4ed0: 63 72 69 70 74 20 66 61 69 6c 65 64 20 69 6e 20  cript failed in 
4ee0: 73 6f 6d 65 20 77 61 79 2e 20 20 54 68 69 73 20  some way.  This 
4ef0: 69 73 20 63 6f 6e 73 69 64 65 72 65 64 0d 0a 20  is considered.. 
4f00: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74         #       t
4f10: 6f 20 62 65 20 61 6e 20 6f 76 65 72 61 6c 6c 20  o be an overall 
4f20: 66 61 69 6c 75 72 65 20 6f 66 20 74 68 65 20 74  failure of the t
4f30: 65 73 74 20 73 75 69 74 65 3b 20 74 68 65 72 65  est suite; there
4f40: 66 6f 72 65 2c 20 72 61 69 73 65 0d 0a 20 20 20  fore, raise..   
4f50: 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65       #       the
4f60: 20 65 72 72 6f 72 20 6e 6f 77 20 74 68 61 74 20   error now that 
4f70: 77 65 20 61 72 65 20 73 75 72 65 20 69 74 20 68  we are sure it h
4f80: 61 73 20 62 65 65 6e 20 72 65 63 6f 72 64 65 64  as been recorded
4f90: 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20   in the..       
4fa0: 20 23 20 20 20 20 20 20 20 74 65 73 74 20 6c 6f   #       test lo
4fb0: 67 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20  g file...       
4fc0: 20 23 0d 0a 20 20 20 20 20 20 20 20 75 6e 73 65   #..        unse
4fd0: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 74 65  t -nocomplain te
4fe0: 73 74 5f 73 75 69 74 65 5f 72 75 6e 6e 69 6e 67  st_suite_running
4ff0: 0d 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 20  ..        error 
5000: 24 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65  $test_script(pre
5010: 2c 72 65 73 75 6c 74 29 0d 0a 20 20 20 20 20 20  ,result)..      
5020: 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d  }..    }..  }...
5030: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
5040: 43 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 70 72  Check for and pr
5050: 6f 63 65 73 73 20 61 6e 79 20 63 75 73 74 6f 6d  ocess any custom
5060: 20 74 65 73 74 20 70 72 6f 6c 6f 67 75 65 20 73   test prologue s
5070: 63 72 69 70 74 20 74 68 61 74 20 6d 61 79 20 62  cript that may b
5080: 65 20 73 65 74 0d 0a 20 20 23 20 20 20 20 20 20  e set..  #      
5090: 20 69 6e 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d   in the environm
50a0: 65 6e 74 2e 20 20 54 68 69 73 20 6d 75 73 74 20  ent.  This must 
50b0: 62 65 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68  be done after th
50c0: 65 20 45 61 67 6c 65 20 74 65 73 74 20 70 61 63  e Eagle test pac
50d0: 6b 61 67 65 0d 0a 20 20 23 20 20 20 20 20 20 20  kage..  #       
50e0: 68 61 73 20 62 65 65 6e 20 6d 61 64 65 20 61 76  has been made av
50f0: 61 69 6c 61 62 6c 65 20 61 6e 64 20 61 66 74 65  ailable and afte
5100: 72 20 74 68 65 20 6c 6f 67 20 66 69 6c 65 20 68  r the log file h
5110: 61 73 20 62 65 65 6e 20 73 65 74 75 70 2e 0d 0a  as been setup...
5120: 20 20 23 0d 0a 20 20 73 6f 75 72 63 65 49 66 56    #..  sourceIfV
5130: 61 6c 69 64 20 70 72 6f 6c 6f 67 75 65 20 5b 67  alid prologue [g
5140: 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72  etEnvironmentVar
5150: 69 61 62 6c 65 20 74 65 73 74 50 72 6f 6c 6f 67  iable testProlog
5160: 75 65 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20  ue]....  #..  # 
5170: 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 65 20 6e  NOTE: Show the n
5180: 61 6d 65 20 6f 66 20 74 68 65 20 65 78 65 63 75  ame of the execu
5190: 74 61 62 6c 65 20 61 6e 64 20 74 68 65 20 63 6f  table and the co
51a0: 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d  mmand line argum
51b0: 65 6e 74 73 2c 20 69 66 0d 0a 20 20 23 20 20 20  ents, if..  #   
51c0: 20 20 20 20 61 6e 79 2e 20 20 54 68 69 73 20 6d      any.  This m
51d0: 75 73 74 20 62 65 20 64 6f 6e 65 20 61 66 74 65  ust be done afte
51e0: 72 20 74 68 65 20 6c 6f 67 20 66 69 6c 65 20 68  r the log file h
51f0: 61 73 20 62 65 65 6e 20 73 65 74 75 70 3b 20 6f  as been setup; o
5200: 74 68 65 72 77 69 73 65 2c 0d 0a 20 20 23 20 20  therwise,..  #  
5210: 20 20 20 20 20 74 68 69 73 20 69 6e 66 6f 72 6d       this inform
5220: 61 74 69 6f 6e 20 77 69 6c 6c 20 6e 6f 74 20 62  ation will not b
5230: 65 20 76 69 73 69 62 6c 65 20 69 6e 20 74 68 65  e visible in the
5240: 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 23 0d   log file...  #.
5250: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
5260: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
5270: 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74 52 75 6e  gs "---- testRun
5280: 49 64 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  Id: " \..      [
5290: 67 65 74 54 65 73 74 52 75 6e 49 64 5d 20 5c 6e  getTestRunId] \n
52a0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
52b0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
52c0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70 72 6f  ndArgs "---- pro
52d0: 63 65 73 73 49 64 3a 20 22 20 5c 0d 0a 20 20 20  cessId: " \..   
52e0: 20 20 20 5b 70 69 64 5d 20 5c 6e 5d 0d 0a 0d 0a     [pid] \n]....
52f0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
5300: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
5310: 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 73 75 69  s "---- test sui
5320: 74 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  te: " \..      [
5330: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
5340: 74 73 20 74 65 73 74 5f 73 75 69 74 65 5d 20 3f  ts test_suite] ?
5350: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74   \..          $t
5360: 65 73 74 5f 73 75 69 74 65 20 3a 20 22 3c 6e 6f  est_suite : "<no
5370: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
5380: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
5390: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
53a0: 22 2d 2d 2d 2d 20 74 65 73 74 20 63 68 61 6e 6e  "---- test chann
53b0: 65 6c 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 24  el: " \..      $
53c0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 6e 5d  test_channel \n]
53d0: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
53e0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
53f0: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74  dArgs "---- test
5400: 20 6d 61 63 68 69 6e 65 3a 20 22 20 5c 0d 0a 20   machine: " \.. 
5410: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
5420: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6d 61  o exists test_ma
5430: 63 68 69 6e 65 5d 20 3f 20 5c 0d 0a 20 20 20 20  chine] ? \..    
5440: 20 20 20 20 20 20 24 74 65 73 74 5f 6d 61 63 68        $test_mach
5450: 69 6e 65 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d  ine : "<none>"}]
5460: 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20   \n]....  tputs 
5470: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
5480: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
5490: 74 65 73 74 20 70 6c 61 74 66 6f 72 6d 3a 20 22  test platform: "
54a0: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
54b0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
54c0: 73 74 5f 70 6c 61 74 66 6f 72 6d 5d 20 3f 20 5c  st_platform] ? \
54d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 65 73  ..          $tes
54e0: 74 5f 70 6c 61 74 66 6f 72 6d 20 3a 20 22 3c 6e  t_platform : "<n
54f0: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
5500: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
5510: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
5520: 20 22 2d 2d 2d 2d 20 74 65 73 74 20 63 6f 6e 66   "---- test conf
5530: 69 67 75 72 61 74 69 6f 6e 3a 20 22 20 5c 0d 0a  iguration: " \..
5540: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
5550: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 63  fo exists test_c
5560: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 20 3f 20  onfiguration] ? 
5570: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 65  \..          $te
5580: 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  st_configuration
5590: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
55a0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
55b0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
55c0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73  ndArgs "---- tes
55d0: 74 20 73 75 66 66 69 78 3a 20 22 20 5c 0d 0a 20  t suffix: " \.. 
55e0: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
55f0: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 75  o exists test_su
5600: 66 66 69 78 5d 20 3f 20 5c 0d 0a 20 20 20 20 20  ffix] ? \..     
5610: 20 20 20 20 20 24 74 65 73 74 5f 73 75 66 66 69       $test_suffi
5620: 78 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  x : "<none>"}] \
5630: 6e 5d 0d 0a 0d 0a 20 20 69 66 20 7b 5b 69 73 45  n]....  if {[isE
5640: 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  agle]} then {.. 
5650: 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
5660: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
5670: 67 73 20 22 2d 2d 2d 2d 20 6f 72 69 67 69 6e 61  gs "---- origina
5680: 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 3a 20  l command line: 
5690: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 69 6e  " \..        [in
56a0: 66 6f 20 63 6d 64 6c 69 6e 65 5d 20 5c 6e 5d 0d  fo cmdline] \n].
56b0: 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
56c0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
56d0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 68 72  ndArgs "---- thr
56e0: 65 61 64 49 64 3a 20 22 20 5c 0d 0a 20 20 20 20  eadId: " \..    
56f0: 20 20 20 20 5b 69 6e 66 6f 20 74 69 64 5d 20 5c      [info tid] \
5700: 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  n]....    tputs 
5710: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
5720: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
5730: 70 72 6f 63 65 73 73 6f 72 73 3a 20 22 20 5c 0d  processors: " \.
5740: 0a 20 20 20 20 20 20 20 20 5b 69 6e 66 6f 20 70  .        [info p
5750: 72 6f 63 65 73 73 6f 72 73 5d 20 5c 6e 5d 0d 0a  rocessors] \n]..
5760: 0d 0a 20 20 20 20 63 61 74 63 68 20 7b 6f 62 6a  ..    catch {obj
5770: 65 63 74 20 69 6e 76 6f 6b 65 20 43 6f 6e 73 6f  ect invoke Conso
5780: 6c 65 2e 49 6e 70 75 74 45 6e 63 6f 64 69 6e 67  le.InputEncoding
5790: 20 57 65 62 4e 61 6d 65 7d 20 65 6e 63 6f 64 69   WebName} encodi
57a0: 6e 67 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  ng....    tputs 
57b0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
57c0: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
57d0: 69 6e 70 75 74 20 65 6e 63 6f 64 69 6e 67 3a 20  input encoding: 
57e0: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 24 65 6e  " \..        $en
57f0: 63 6f 64 69 6e 67 20 5c 6e 5d 0d 0a 0d 0a 20 20  coding \n]....  
5800: 20 20 63 61 74 63 68 20 7b 6f 62 6a 65 63 74 20    catch {object 
5810: 69 6e 76 6f 6b 65 20 43 6f 6e 73 6f 6c 65 2e 4f  invoke Console.O
5820: 75 74 70 75 74 45 6e 63 6f 64 69 6e 67 20 57 65  utputEncoding We
5830: 62 4e 61 6d 65 7d 20 65 6e 63 6f 64 69 6e 67 0d  bName} encoding.
5840: 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
5850: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
5860: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6f 75 74  ndArgs "---- out
5870: 70 75 74 20 65 6e 63 6f 64 69 6e 67 3a 20 22 20  put encoding: " 
5880: 5c 0d 0a 20 20 20 20 20 20 20 20 24 65 6e 63 6f  \..        $enco
5890: 64 69 6e 67 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20  ding \n]....    
58a0: 75 6e 73 65 74 20 65 6e 63 6f 64 69 6e 67 0d 0a  unset encoding..
58b0: 20 20 20 20 63 61 74 63 68 20 7b 68 6f 73 74 20      catch {host 
58c0: 71 75 65 72 79 7d 20 68 6f 73 74 0d 0a 0d 0a 20  query} host.... 
58d0: 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
58e0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
58f0: 67 73 20 22 2d 2d 2d 2d 20 68 6f 73 74 20 71 75  gs "---- host qu
5900: 65 72 79 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ery: " \..      
5910: 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 41 73 44    [formatListAsD
5920: 69 63 74 20 24 68 6f 73 74 20 3c 6e 6f 6e 65 3e  ict $host <none>
5930: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73  ] \n]....    uns
5940: 65 74 20 68 6f 73 74 0d 0a 20 20 20 20 63 61 74  et host..    cat
5950: 63 68 20 7b 64 65 62 75 67 20 6d 65 6d 6f 72 79  ch {debug memory
5960: 7d 20 6d 65 6d 6f 72 79 0d 0a 0d 0a 20 20 20 20  } memory....    
5970: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
5980: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
5990: 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e 67 20 6d  "---- starting m
59a0: 65 6d 6f 72 79 3a 20 22 20 5c 0d 0a 20 20 20 20  emory: " \..    
59b0: 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 41      [formatListA
59c0: 73 44 69 63 74 20 24 6d 65 6d 6f 72 79 20 3c 6e  sDict $memory <n
59d0: 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20  one>] \n]....   
59e0: 20 75 6e 73 65 74 20 6d 65 6d 6f 72 79 0d 0a 20   unset memory.. 
59f0: 20 20 20 63 61 74 63 68 20 7b 64 65 62 75 67 20     catch {debug 
5a00: 73 74 61 63 6b 20 74 72 75 65 7d 20 73 74 61 63  stack true} stac
5a10: 6b 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  k....    tputs $
5a20: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
5a30: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73  pendArgs "---- s
5a40: 74 61 72 74 69 6e 67 20 73 74 61 63 6b 3a 20 22  tarting stack: "
5a50: 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66 6f 72   \..        [for
5a60: 6d 61 74 4c 69 73 74 41 73 44 69 63 74 20 24 73  matListAsDict $s
5a70: 74 61 63 6b 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d  tack <none>] \n]
5a80: 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 73 74  ....    unset st
5a90: 61 63 6b 0d 0a 20 20 20 20 63 61 74 63 68 20 7b  ack..    catch {
5aa0: 66 69 6c 65 20 64 72 69 76 65 7d 20 64 72 69 76  file drive} driv
5ab0: 65 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  e....    tputs $
5ac0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
5ad0: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73  pendArgs "---- s
5ae0: 79 73 74 65 6d 20 64 72 69 76 65 3a 20 22 20 5c  ystem drive: " \
5af0: 0d 0a 20 20 20 20 20 20 20 20 5b 66 6f 72 6d 61  ..        [forma
5b00: 74 4c 69 73 74 41 73 44 69 63 74 20 24 64 72 69  tListAsDict $dri
5b10: 76 65 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a  ve <none>] \n]..
5b20: 0d 0a 20 20 20 20 75 6e 73 65 74 20 64 72 69 76  ..    unset driv
5b30: 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 74 70 75 74  e..  }....  tput
5b40: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
5b50: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
5b60: 2d 20 65 78 65 63 75 74 61 62 6c 65 3a 20 5c 22  - executable: \"
5b70: 22 20 5c 0d 0a 20 20 20 20 20 20 24 62 69 6e 5f  " \..      $bin_
5b80: 66 69 6c 65 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20  file \"\n]....  
5b90: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
5ba0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
5bb0: 22 2d 2d 2d 2d 20 63 6f 6d 6d 61 6e 64 20 6c 69  "---- command li
5bc0: 6e 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  ne: " \..      [
5bd0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
5be0: 74 73 20 61 72 67 76 5d 20 26 26 20 5b 73 74 72  ts argv] && [str
5bf0: 69 6e 67 20 6c 65 6e 67 74 68 20 24 61 72 67 76  ing length $argv
5c00: 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20  ] > 0 ? \..     
5c10: 20 20 20 20 20 24 61 72 67 76 20 3a 20 22 3c 6e       $argv : "<n
5c20: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
5c30: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
5c40: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
5c50: 20 22 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 74   "---- logging t
5c60: 6f 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  o: " \..      [e
5c70: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
5c80: 73 20 74 65 73 74 5f 6c 6f 67 5d 20 26 26 20 5b  s test_log] && [
5c90: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74  string length $t
5ca0: 65 73 74 5f 6c 6f 67 5d 20 3e 20 30 20 3f 20 5c  est_log] > 0 ? \
5cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 61 70 70  ..          [app
5cc0: 65 6e 64 41 72 67 73 20 5c 22 20 24 74 65 73 74  endArgs \" $test
5cd0: 5f 6c 6f 67 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e  _log \"] : "<non
5ce0: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
5cf0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
5d00: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
5d10: 2d 2d 2d 2d 20 70 61 73 73 20 74 68 72 65 73 68  ---- pass thresh
5d20: 6f 6c 64 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  old: " \..      
5d30: 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
5d40: 73 74 73 20 74 65 73 74 5f 74 68 72 65 73 68 6f  sts test_thresho
5d50: 6c 64 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  ld] && \..      
5d60: 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69      [string is i
5d70: 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24  nteger -strict $
5d80: 74 65 73 74 5f 74 68 72 65 73 68 6f 6c 64 5d 20  test_threshold] 
5d90: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ? \..           
5da0: 20 20 20 5b 61 70 70 65 6e 64 41 72 67 73 20 24     [appendArgs $
5db0: 74 65 73 74 5f 74 68 72 65 73 68 6f 6c 64 20 25  test_threshold %
5dc0: 5d 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  ] : "<none>"}] \
5dd0: 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74  n]....  tputs $t
5de0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
5df0: 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 72 61  endArgs "---- ra
5e00: 6e 64 6f 6d 20 6f 72 64 65 72 3a 20 22 20 5c 0d  ndom order: " \.
5e10: 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69  .      [expr {[i
5e20: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
5e30: 72 61 6e 64 6f 6d 5f 6f 72 64 65 72 5d 20 26 26  random_order] &&
5e40: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73   \..          [s
5e50: 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e  tring is boolean
5e60: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 72   -strict $test_r
5e70: 61 6e 64 6f 6d 5f 6f 72 64 65 72 5d 20 3f 20 5c  andom_order] ? \
5e80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5e90: 24 74 65 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64  $test_random_ord
5ea0: 65 72 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  er : "<none>"}] 
5eb0: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
5ec0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
5ed0: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 62  pendArgs "---- b
5ee0: 72 65 61 6b 20 6f 6e 20 6c 65 61 6b 3a 20 22 20  reak on leak: " 
5ef0: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
5f00: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
5f10: 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c 65 61 6b 5d  t_break_on_leak]
5f20: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
5f30: 20 5b 73 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c   [string is bool
5f40: 65 61 6e 20 2d 73 74 72 69 63 74 20 24 74 65 73  ean -strict $tes
5f50: 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c 65 61 6b 5d  t_break_on_leak]
5f60: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
5f70: 20 20 20 20 24 74 65 73 74 5f 62 72 65 61 6b 5f      $test_break_
5f80: 6f 6e 5f 6c 65 61 6b 20 3a 20 22 3c 6e 6f 6e 65  on_leak : "<none
5f90: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  >"}] \n]....  tp
5fa0: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
5fb0: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
5fc0: 2d 2d 2d 20 73 74 6f 70 20 6f 6e 20 66 61 69 6c  --- stop on fail
5fd0: 75 72 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ure: " \..      
5fe0: 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
5ff0: 73 74 73 20 74 65 73 74 5f 73 74 6f 70 5f 6f 6e  sts test_stop_on
6000: 5f 66 61 69 6c 75 72 65 5d 20 26 26 20 5c 0d 0a  _failure] && \..
6010: 20 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e            [strin
6020: 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74  g is boolean -st
6030: 72 69 63 74 20 24 74 65 73 74 5f 73 74 6f 70 5f  rict $test_stop_
6040: 6f 6e 5f 66 61 69 6c 75 72 65 5d 20 3f 20 5c 0d  on_failure] ? \.
6050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24  .              $
6060: 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 66 61 69  test_stop_on_fai
6070: 6c 75 72 65 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d  lure : "<none>"}
6080: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  ] \n]....  tputs
6090: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
60a0: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
60b0: 20 73 74 6f 70 20 6f 6e 20 6c 65 61 6b 3a 20 22   stop on leak: "
60c0: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
60d0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
60e0: 73 74 5f 73 74 6f 70 5f 6f 6e 5f 6c 65 61 6b 5d  st_stop_on_leak]
60f0: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
6100: 20 5b 73 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c   [string is bool
6110: 65 61 6e 20 2d 73 74 72 69 63 74 20 24 74 65 73  ean -strict $tes
6120: 74 5f 73 74 6f 70 5f 6f 6e 5f 6c 65 61 6b 5d 20  t_stop_on_leak] 
6130: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ? \..           
6140: 20 20 20 24 74 65 73 74 5f 73 74 6f 70 5f 6f 6e     $test_stop_on
6150: 5f 6c 65 61 6b 20 3a 20 22 3c 6e 6f 6e 65 3e 22  _leak : "<none>"
6160: 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74  }] \n]....  tput
6170: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
6180: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
6190: 2d 20 65 78 69 74 20 6f 6e 20 63 6f 6d 70 6c 65  - exit on comple
61a0: 74 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  te: " \..      [
61b0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
61c0: 74 73 20 74 65 73 74 5f 65 78 69 74 5f 6f 6e 5f  ts test_exit_on_
61d0: 63 6f 6d 70 6c 65 74 65 5d 20 26 26 20 5c 0d 0a  complete] && \..
61e0: 20 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e            [strin
61f0: 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74  g is boolean -st
6200: 72 69 63 74 20 24 74 65 73 74 5f 65 78 69 74 5f  rict $test_exit_
6210: 6f 6e 5f 63 6f 6d 70 6c 65 74 65 5d 20 3f 20 5c  on_complete] ? \
6220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6230: 24 74 65 73 74 5f 65 78 69 74 5f 6f 6e 5f 63 6f  $test_exit_on_co
6240: 6d 70 6c 65 74 65 20 3a 20 22 3c 6e 6f 6e 65 3e  mplete : "<none>
6250: 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a  "}] \n]....  #..
6260: 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74    # NOTE: Show t
6270: 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  he information a
6280: 62 6f 75 74 20 77 68 69 63 68 20 74 65 73 74 73  bout which tests
6290: 20 61 6e 64 20 66 69 6c 65 73 20 61 72 65 20 62   and files are b
62a0: 65 69 6e 67 20 72 75 6e 20 61 6e 64 2f 6f 72 0d  eing run and/or.
62b0: 0a 20 20 23 20 20 20 20 20 20 20 73 6b 69 70 70  .  #       skipp
62c0: 65 64 20 28 43 4f 4d 50 41 54 3a 20 54 63 6c 29  ed (COMPAT: Tcl)
62d0: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 6c  ...  #..  if {[l
62e0: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61  length $test_fla
62f0: 67 73 28 2d 66 69 6c 65 29 5d 20 3e 20 30 7d 20  gs(-file)] > 0} 
6300: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70 75 74  then {..    tput
6310: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
6320: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
6330: 2d 20 72 75 6e 6e 69 6e 67 20 74 65 73 74 20 66  - running test f
6340: 69 6c 65 73 20 74 68 61 74 20 6d 61 74 63 68 3a  iles that match:
6350: 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 24 74   " \..        $t
6360: 65 73 74 5f 66 6c 61 67 73 28 2d 66 69 6c 65 29  est_flags(-file)
6370: 20 5c 6e 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69   \n]..  }....  i
6380: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 74 65 73  f {[llength $tes
6390: 74 5f 66 6c 61 67 73 28 2d 6e 6f 74 46 69 6c 65  t_flags(-notFile
63a0: 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  )] > 0} then {..
63b0: 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
63c0: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
63d0: 72 67 73 20 22 2d 2d 2d 2d 20 73 6b 69 70 70 69  rgs "---- skippi
63e0: 6e 67 20 74 65 73 74 20 66 69 6c 65 73 20 74 68  ng test files th
63f0: 61 74 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20  at match: " \.. 
6400: 20 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61         $test_fla
6410: 67 73 28 2d 6e 6f 74 46 69 6c 65 29 20 5c 6e 5d  gs(-notFile) \n]
6420: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 5b  ..  }....  if {[
6430: 6c 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c  llength $test_fl
6440: 61 67 73 28 2d 73 74 61 72 74 46 69 6c 65 29 5d  ags(-startFile)]
6450: 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20   > 0} then {..  
6460: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
6470: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
6480: 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d  s \..        "--
6490: 2d 2d 20 73 74 61 72 74 69 6e 67 20 77 69 74 68  -- starting with
64a0: 20 74 65 73 74 20 66 69 6c 65 73 20 74 68 61 74   test files that
64b0: 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20   match: " \..   
64c0: 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73       $test_flags
64d0: 28 2d 73 74 61 72 74 46 69 6c 65 29 20 5c 6e 5d  (-startFile) \n]
64e0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 5b  ..  }....  if {[
64f0: 6c 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c  llength $test_fl
6500: 61 67 73 28 2d 73 74 6f 70 46 69 6c 65 29 5d 20  ags(-stopFile)] 
6510: 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  > 0} then {..   
6520: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
6530: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
6540: 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
6550: 2d 20 73 74 6f 70 70 69 6e 67 20 61 66 74 65 72  - stopping after
6560: 20 74 65 73 74 20 66 69 6c 65 73 20 74 68 61 74   test files that
6570: 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20   match: " \..   
6580: 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73       $test_flags
6590: 28 2d 73 74 6f 70 46 69 6c 65 29 20 5c 6e 5d 0d  (-stopFile) \n].
65a0: 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 5b 6c  .  }....  if {[l
65b0: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61  length $test_fla
65c0: 67 73 28 2d 6d 61 74 63 68 29 5d 20 3e 20 30 7d  gs(-match)] > 0}
65d0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70 75   then {..    tpu
65e0: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
65f0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
6600: 2d 2d 20 72 75 6e 6e 69 6e 67 20 74 65 73 74 73  -- running tests
6610: 20 74 68 61 74 20 6d 61 74 63 68 3a 20 22 20 5c   that match: " \
6620: 0d 0a 20 20 20 20 20 20 20 20 24 74 65 73 74 5f  ..        $test_
6630: 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20 5c 6e  flags(-match) \n
6640: 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  ]..  }....  if {
6650: 5b 6c 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66  [llength $test_f
6660: 6c 61 67 73 28 2d 73 6b 69 70 29 5d 20 3e 20 30  lags(-skip)] > 0
6670: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70  } then {..    tp
6680: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
6690: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
66a0: 2d 2d 2d 20 73 6b 69 70 70 69 6e 67 20 74 65 73  --- skipping tes
66b0: 74 73 20 74 68 61 74 20 6d 61 74 63 68 3a 20 22  ts that match: "
66c0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 24 74 65 73   \..        $tes
66d0: 74 5f 66 6c 61 67 73 28 2d 73 6b 69 70 29 20 5c  t_flags(-skip) \
66e0: 6e 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 74 70 75  n]..  }....  tpu
66f0: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
6700: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
6710: 2d 2d 20 70 61 74 68 3a 20 22 20 5c 0d 0a 20 20  -- path: " \..  
6720: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
6730: 20 65 78 69 73 74 73 20 70 61 74 68 5d 20 26 26   exists path] &&
6740: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
6750: 24 70 61 74 68 5d 20 3e 20 30 20 3f 20 5c 0d 0a  $path] > 0 ? \..
6760: 20 20 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e            [appen
6770: 64 41 72 67 73 20 5c 22 20 24 70 61 74 68 20 5c  dArgs \" $path \
6780: 22 5d 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  "] : "<none>"}] 
6790: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
67a0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
67b0: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 62  pendArgs "---- b
67c0: 61 73 65 20 70 61 74 68 3a 20 5c 22 22 20 5c 0d  ase path: \"" \.
67d0: 0a 20 20 20 20 20 20 24 62 61 73 65 5f 70 61 74  .      $base_pat
67e0: 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75  h \"\n]....  tpu
67f0: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
6800: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
6810: 2d 2d 20 6b 65 79 20 70 61 74 68 3a 20 5c 22 22  -- key path: \""
6820: 20 5c 0d 0a 20 20 20 20 20 20 24 6b 65 79 5f 70   \..      $key_p
6830: 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74  ath \"\n]....  t
6840: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
6850: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
6860: 2d 2d 2d 2d 20 72 6f 6f 74 20 70 61 74 68 3a 20  ---- root path: 
6870: 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 24 72 6f  \"" \..      $ro
6880: 6f 74 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d  ot_path \"\n]...
6890: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
68a0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
68b0: 67 73 20 22 2d 2d 2d 2d 20 62 69 6e 61 72 79 20  gs "---- binary 
68c0: 70 61 74 68 3a 20 5c 22 22 20 5c 0d 0a 20 20 20  path: \"" \..   
68d0: 20 20 20 24 62 69 6e 5f 70 61 74 68 20 5c 22 5c     $bin_path \"\
68e0: 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74  n]....  tputs $t
68f0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
6900: 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6c 69  endArgs "---- li
6910: 62 72 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20  brary path: \"" 
6920: 5c 0d 0a 20 20 20 20 20 20 24 6c 69 62 5f 70 61  \..      $lib_pa
6930: 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  th \"\n]....  tp
6940: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
6950: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
6960: 2d 2d 2d 20 74 65 73 74 20 73 63 72 69 70 74 20  --- test script 
6970: 66 69 6c 65 73 20 6c 6f 63 61 74 65 64 20 69 6e  files located in
6980: 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 24  : \"" \..      $
6990: 74 65 73 74 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d  test_path \"\n].
69a0: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
69b0: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
69c0: 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20  Args "---- test 
69d0: 64 61 74 61 20 66 69 6c 65 73 20 6c 6f 63 61 74  data files locat
69e0: 65 64 20 69 6e 3a 20 5c 22 22 20 5c 0d 0a 20 20  ed in: \"" \..  
69f0: 20 20 20 20 24 74 65 73 74 5f 64 61 74 61 5f 70      $test_data_p
6a00: 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74  ath \"\n]....  t
6a10: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
6a20: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
6a30: 2d 2d 2d 2d 20 72 75 6e 6e 69 6e 67 20 69 6e 3a  ---- running in:
6a40: 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 5b 70   \"" \..      [p
6a50: 77 64 5d 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74  wd] \"\n]....  t
6a60: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
6a70: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
6a80: 2d 2d 2d 2d 20 74 65 6d 70 6f 72 61 72 79 20 66  ---- temporary f
6a90: 69 6c 65 73 20 73 74 6f 72 65 64 20 69 6e 3a 20  iles stored in: 
6aa0: 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 5b 67 65  \"" \..      [ge
6ab0: 74 54 65 6d 70 6f 72 61 72 79 50 61 74 68 5d 20  tTemporaryPath] 
6ac0: 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  \"\n]....  tputs
6ad0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
6ae0: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
6af0: 20 6e 61 74 69 76 65 20 54 63 6c 20 73 68 65 6c   native Tcl shel
6b00: 6c 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  l: " \..      [e
6b10: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
6b20: 73 20 74 65 73 74 5f 74 63 6c 73 68 5d 20 26 26  s test_tclsh] &&
6b30: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
6b40: 24 74 65 73 74 5f 74 63 6c 73 68 5d 20 3e 20 30  $test_tclsh] > 0
6b50: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
6b60: 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 24  [appendArgs \" $
6b70: 74 65 73 74 5f 74 63 6c 73 68 20 5c 22 5d 20 3a  test_tclsh \"] :
6b80: 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d   "<none>"}] \n].
6b90: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
6ba0: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
6bb0: 41 72 67 73 20 22 2d 2d 2d 2d 20 64 69 73 61 62  Args "---- disab
6bc0: 6c 65 64 20 6f 70 74 69 6f 6e 73 3a 20 22 20 5c  led options: " \
6bd0: 0d 0a 20 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c  ..      [formatL
6be0: 69 73 74 20 5b 6c 73 6f 72 74 20 5b 61 72 72 61  ist [lsort [arra
6bf0: 79 20 6e 61 6d 65 73 20 6e 6f 5d 5d 20 3c 6e 6f  y names no]] <no
6c00: 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d  ne>] \n]....  #.
6c10: 0a 20 20 23 20 4e 4f 54 45 3a 20 49 6e 69 74 69  .  # NOTE: Initi
6c20: 61 6c 69 7a 65 20 74 68 65 20 45 61 67 6c 65 20  alize the Eagle 
6c30: 74 65 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73  test constraints
6c40: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69  ...  #..  if {[i
6c50: 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d  sEagle]} then {.
6c60: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
6c70: 54 45 3a 20 2a 57 41 52 4e 49 4e 47 2a 20 54 68  TE: *WARNING* Th
6c80: 69 73 20 68 61 73 20 74 68 65 20 65 66 66 65 63  is has the effec
6c90: 74 20 6f 66 20 72 65 6d 6f 76 69 6e 67 20 74 65  t of removing te
6ca0: 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 0d 0a  st constraints..
6cb0: 20 20 20 20 23 20 20 20 20 20 20 20 61 64 64 65      #       adde
6cc0: 64 20 70 72 69 6f 72 20 74 6f 20 74 68 69 73 20  d prior to this 
6cd0: 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 23 0d 0a 20  point...    #.. 
6ce0: 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 54 65 73     initializeTes
6cf0: 74 73 3b 20 63 6f 6e 66 69 67 75 72 65 54 63 6c  ts; configureTcl
6d00: 74 65 73 74 20 5b 6c 69 73 74 5d 20 5b 6c 69 73  test [list] [lis
6d10: 74 5d 20 5b 6c 69 73 74 5d 20 5b 6c 69 73 74 5d  t] [list] [list]
6d20: 20 66 61 6c 73 65 0d 0a 0d 0a 20 20 20 20 23 0d   false....    #.
6d30: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 66 20  .    # NOTE: If 
6d40: 74 68 65 20 22 6e 6f 28 6d 6f 6e 6f 29 22 20 76  the "no(mono)" v
6d50: 61 72 69 61 62 6c 65 20 69 73 20 73 65 74 20 28  ariable is set (
6d60: 74 6f 20 61 6e 79 74 68 69 6e 67 29 20 74 68 65  to anything) the
6d70: 6e 20 61 6e 79 0d 0a 20 20 20 20 23 20 20 20 20  n any..    #    
6d80: 20 20 20 73 70 65 63 69 61 6c 20 74 65 73 74 20     special test 
6d90: 73 75 69 74 65 20 68 61 63 6b 73 20 66 6f 72 20  suite hacks for 
6da0: 4d 6f 6e 6f 20 77 69 6c 6c 20 62 65 20 64 69 73  Mono will be dis
6db0: 61 62 6c 65 64 2e 20 54 68 69 73 0d 0a 20 20 20  abled. This..   
6dc0: 20 23 20 20 20 20 20 20 20 64 6f 65 73 20 6e 6f   #       does no
6dd0: 74 20 63 6f 6e 74 72 6f 6c 20 6f 72 20 63 68 61  t control or cha
6de0: 6e 67 65 20 61 6e 79 20 68 61 63 6b 73 20 66 6f  nge any hacks fo
6df0: 72 20 4d 6f 6e 6f 20 74 68 61 74 20 6d 61 79 0d  r Mono that may.
6e00: 0a 20 20 20 20 23 20 20 20 20 20 20 20 62 65 20  .    #       be 
6e10: 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 6c  present in the l
6e20: 69 62 72 61 72 79 20 69 74 73 65 6c 66 2e 0d 0a  ibrary itself...
6e30: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 69 66 20      #..    # if 
6e40: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
6e50: 6f 28 6d 6f 6e 6f 29 5d 20 26 26 20 5b 69 73 4d  o(mono)] && [isM
6e60: 6f 6e 6f 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ono]} then {..  
6e70: 20 20 23 20 20 20 73 65 74 20 6e 6f 28 6d 6f 6e    #   set no(mon
6e80: 6f 29 20 74 72 75 65 0d 0a 20 20 20 20 23 20 7d  o) true..    # }
6e90: 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23  ....    ########
6ea0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6eb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6ec0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6ed0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6ee0: 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23  ###..    #######
6ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6f00: 23 23 20 42 45 47 49 4e 20 45 61 67 6c 65 20 43  ## BEGIN Eagle C
6f10: 6f 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23  onstraints #####
6f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6f30: 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23  ####..    ######
6f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6f80: 23 23 23 23 23 0d 0a 0d 0a 20 20 20 20 74 70 75  #####....    tpu
6f90: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
6fa0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
6fb0: 2d 20 73 74 61 72 74 20 6f 66 20 45 61 67 6c 65  - start of Eagle
6fc0: 20 73 70 65 63 69 66 69 63 20 74 65 73 74 20 63   specific test c
6fd0: 6f 6e 73 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22  onstraints...\n"
6fe0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
6ff0: 20 4e 4f 54 45 3a 20 2a 57 41 52 4e 49 4e 47 2a   NOTE: *WARNING*
7000: 20 48 61 73 20 71 75 69 65 74 20 74 65 73 74 69   Has quiet testi
7010: 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
7020: 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
7030: 20 20 20 20 20 20 20 50 6c 65 61 73 65 20 64 6f         Please do
7040: 20 6e 6f 74 20 6d 6f 76 65 20 74 68 69 73 20 22   not move this "
7050: 71 75 69 65 74 6e 65 73 73 22 20 74 65 73 74 20  quietness" test 
7060: 63 6f 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20  constraint..    
7070: 23 20 20 20 20 20 20 20 63 68 65 63 6b 20 61 73  #       check as
7080: 20 73 75 62 73 65 71 75 65 6e 74 20 74 65 73 74   subsequent test
7090: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 61 79   constraints may
70a0: 20 72 65 6c 79 20 6f 6e 20 69 74 0d 0a 20 20 20   rely on it..   
70b0: 20 23 20 20 20 20 20 20 20 77 68 65 6e 20 64 65   #       when de
70c0: 74 65 72 6d 69 6e 69 6e 67 20 69 66 20 61 20 77  termining if a w
70d0: 61 72 6e 69 6e 67 20 73 68 6f 75 6c 64 20 62 65  arning should be
70e0: 20 65 6d 69 74 74 65 64 2e 0d 0a 20 20 20 20 23   emitted...    #
70f0: 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
7100: 20 65 78 69 73 74 73 20 6e 6f 28 71 75 69 65 74   exists no(quiet
7110: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
7120: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
7130: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61  E: For tests "ba
7140: 73 69 63 2d 31 2e 33 36 22 2c 20 22 62 65 6e 63  sic-1.36", "benc
7150: 68 6d 61 72 6b 2d 31 2e 2a 22 2c 20 22 64 65 62  hmark-1.*", "deb
7160: 75 67 2d 31 2e 33 22 2c 0d 0a 20 20 20 20 20 20  ug-1.3",..      
7170: 23 20 20 20 20 20 20 20 22 64 65 62 75 67 2d 31  #       "debug-1
7180: 2e 34 22 2c 20 22 67 6c 6f 62 2d 39 39 2e 2a 22  .4", "glob-99.*"
7190: 2c 20 22 6f 62 6a 65 63 74 2d 31 30 2e 2a 22 2c  , "object-10.*",
71a0: 20 22 70 65 72 66 2d 32 2e 32 22 2c 0d 0a 20 20   "perf-2.2",..  
71b0: 20 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20      #       and 
71c0: 76 61 72 69 6f 75 73 20 6f 74 68 65 72 20 70 6c  various other pl
71d0: 61 63 65 73 20 77 69 74 68 69 6e 20 74 68 65 20  aces within the 
71e0: 74 65 73 74 20 73 75 69 74 65 20 63 6f 64 65 0d  test suite code.
71f0: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69  .      #       i
7200: 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 23 0d  tself...      #.
7210: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 51  .      checkForQ
7220: 75 69 65 74 20 24 74 65 73 74 5f 63 68 61 6e 6e  uiet $test_chann
7230: 65 6c 20 66 61 6c 73 65 0d 0a 20 20 20 20 7d 0d  el false..    }.
7240: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
7250: 4e 4f 54 45 3a 20 48 61 73 20 73 74 72 6f 6e 67  NOTE: Has strong
7260: 20 6e 61 6d 65 20 6b 65 79 20 64 65 74 65 63 74   name key detect
7270: 69 6f 6e 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ion been disable
7280: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
7290: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
72a0: 20 6e 6f 28 73 74 72 6f 6e 67 4e 61 6d 65 4b 65   no(strongNameKe
72b0: 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  y)]} then {..   
72c0: 20 20 20 63 61 74 63 68 20 7b 69 6e 66 6f 20 65     catch {info e
72d0: 6e 67 69 6e 65 20 50 75 62 6c 69 63 4b 65 79 54  ngine PublicKeyT
72e0: 6f 6b 65 6e 7d 20 70 75 62 6c 69 63 4b 65 79 54  oken} publicKeyT
72f0: 6f 6b 65 6e 0d 0a 0d 0a 20 20 20 20 20 20 69 66  oken....      if
7300: 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68   {[string length
7310: 20 24 70 75 62 6c 69 63 4b 65 79 54 6f 6b 65 6e   $publicKeyToken
7320: 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
7330: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
7340: 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 45     # NOTE: The E
7350: 61 67 6c 65 20 63 6f 72 65 20 6c 69 62 72 61 72  agle core librar
7360: 79 20 69 73 20 6e 6f 74 20 73 69 67 6e 65 64 20  y is not signed 
7370: 77 69 74 68 20 61 20 73 74 72 6f 6e 67 20 6e 61  with a strong na
7380: 6d 65 20 6b 65 79 2e 0d 0a 20 20 20 20 20 20 20  me key...       
7390: 20 23 20 20 20 20 20 20 20 54 68 69 73 20 69 73   #       This is
73a0: 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 2c 20 70   not an error, p
73b0: 65 72 20 73 65 3b 20 68 6f 77 65 76 65 72 2c 20  er se; however, 
73c0: 69 74 20 6d 61 79 20 63 61 75 73 65 20 73 65 6c  it may cause sel
73d0: 65 63 74 65 64 0d 0a 20 20 20 20 20 20 20 20 23  ected..        #
73e0: 20 20 20 20 20 20 20 74 65 73 74 73 20 74 6f 20         tests to 
73f0: 66 61 69 6c 20 61 6e 64 20 69 74 20 73 68 6f 75  fail and it shou
7400: 6c 64 20 62 65 20 72 65 70 6f 72 74 65 64 20 74  ld be reported t
7410: 6f 20 74 68 65 20 75 73 65 72 20 61 6e 64 20 6e  o the user and n
7420: 6f 74 65 64 0d 0a 20 20 20 20 20 20 20 20 23 20  oted..        # 
7430: 20 20 20 20 20 20 69 6e 20 74 68 65 20 74 65 73        in the tes
7440: 74 20 73 75 69 74 65 20 6c 6f 67 20 66 69 6c 65  t suite log file
7450: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
7460: 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61        addConstra
7470: 69 6e 74 20 73 74 72 6f 6e 67 4e 61 6d 65 2e 6e  int strongName.n
7480: 6f 6e 65 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  one....        i
7490: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
74a0: 20 6e 6f 28 77 61 72 6e 69 6e 67 46 6f 72 53 74   no(warningForSt
74b0: 72 6f 6e 67 4e 61 6d 65 4b 65 79 29 5d 20 26 26  rongNameKey)] &&
74c0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
74d0: 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74  ![haveConstraint
74e0: 20 71 75 69 65 74 5d 7d 20 74 68 65 6e 20 7b 0d   quiet]} then {.
74f0: 0a 20 20 20 20 20 20 20 20 20 20 74 70 75 74 73  .          tputs
7500: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c   $test_channel \
7510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7520: 22 3d 3d 3d 3d 20 57 41 52 4e 49 4e 47 3a 20 6e  "==== WARNING: n
7530: 6f 20 45 61 67 6c 65 20 73 74 72 6f 6e 67 20 6e  o Eagle strong n
7540: 61 6d 65 20 73 69 67 6e 61 74 75 72 65 20 64 65  ame signature de
7550: 74 65 63 74 65 64 2e 2e 2e 5c 6e 22 0d 0a 20 20  tected...\n"..  
7560: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
7570: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20   else {..       
7580: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
7590: 54 45 3a 20 41 64 64 20 61 20 74 65 73 74 20 63  TE: Add a test c
75a0: 6f 6e 73 74 72 61 69 6e 74 20 66 6f 72 20 74 68  onstraint for th
75b0: 69 73 20 73 70 65 63 69 66 69 63 20 73 74 72 6f  is specific stro
75c0: 6e 67 20 6e 61 6d 65 20 6b 65 79 2e 0d 0a 20 20  ng name key...  
75d0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
75e0: 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74 20 5b   addConstraint [
75f0: 61 70 70 65 6e 64 41 72 67 73 20 73 74 72 6f 6e  appendArgs stron
7600: 67 4e 61 6d 65 2e 20 24 70 75 62 6c 69 63 4b 65  gName. $publicKe
7610: 79 54 6f 6b 65 6e 5d 0d 0a 0d 0a 20 20 20 20 20  yToken]....     
7620: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
7630: 42 55 47 42 55 47 3a 20 54 63 6c 20 38 2e 34 20  BUGBUG: Tcl 8.4 
7640: 64 6f 65 73 20 6e 6f 74 20 73 65 65 6d 20 74 6f  does not seem to
7650: 20 6c 69 6b 65 20 74 68 69 73 20 65 78 70 72 65   like this expre
7660: 73 73 69 6f 6e 20 62 65 63 61 75 73 65 20 69 74  ssion because it
7670: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
7680: 20 20 20 20 63 6f 6e 74 61 69 6e 73 20 74 68 65      contains the
7690: 20 22 6e 69 22 20 6f 70 65 72 61 74 6f 72 20 61   "ni" operator a
76a0: 64 64 65 64 20 69 6e 20 54 63 6c 20 38 2e 35 20  dded in Tcl 8.5 
76b0: 28 61 6e 64 20 54 63 6c 20 38 2e 34 0d 0a 20 20  (and Tcl 8.4..  
76c0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 20 20        #         
76d0: 74 72 69 65 73 20 74 6f 20 63 6f 6d 70 69 6c 65  tries to compile
76e0: 20 69 74 20 65 76 65 6e 20 74 68 6f 75 67 68 20   it even though 
76f0: 69 74 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 20  it will only be 
7700: 65 76 61 6c 75 61 74 65 64 0d 0a 20 20 20 20 20  evaluated..     
7710: 20 20 20 23 20 20 20 20 20 20 20 20 20 69 6e 20     #         in 
7720: 45 61 67 6c 65 29 2e 0d 0a 20 20 20 20 20 20 20  Eagle)...       
7730: 20 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20   #..        set 
7740: 65 78 70 72 20 7b 24 70 75 62 6c 69 63 4b 65 79  expr {$publicKey
7750: 54 6f 6b 65 6e 20 6e 69 20 5c 0d 0a 20 20 20 20  Token ni \..    
7760: 20 20 20 20 20 20 20 20 22 32 39 63 36 32 39 37          "29c6297
7770: 36 33 30 62 65 30 35 65 62 20 31 65 32 32 65 63  630be05eb 1e22ec
7780: 36 37 38 37 39 37 33 39 61 32 20 33 35 38 30 33  67879739a2 35803
7790: 30 30 36 33 61 38 33 32 62 63 33 22 7d 0d 0a 0d  0063a832bc3"}...
77a0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 5b 65 78  .        if {[ex
77b0: 70 72 20 24 65 78 70 72 5d 7d 20 74 68 65 6e 20  pr $expr]} then 
77c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  {..          #..
77d0: 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
77e0: 3a 20 54 68 65 20 45 61 67 6c 65 20 63 6f 72 65  : The Eagle core
77f0: 20 6c 69 62 72 61 72 79 20 69 73 20 73 74 72 6f   library is stro
7800: 6e 67 20 6e 61 6d 65 20 73 69 67 6e 65 64 20 77  ng name signed w
7810: 69 74 68 20 61 20 6b 65 79 20 74 68 61 74 0d 0a  ith a key that..
7820: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
7830: 20 20 69 73 20 6e 6f 74 20 6f 66 66 69 63 69 61    is not officia
7840: 6c 2e 20 20 54 68 69 73 20 69 73 20 61 6c 73 6f  l.  This is also
7850: 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 2c 20 70   not an error, p
7860: 65 72 20 73 65 3b 20 68 6f 77 65 76 65 72 2c 0d  er se; however,.
7870: 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20  .          #    
7880: 20 20 20 69 74 20 6d 61 79 20 63 61 75 73 65 20     it may cause 
7890: 73 6f 6d 65 20 74 65 73 74 73 20 74 6f 20 66 61  some tests to fa
78a0: 69 6c 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64  il and it should
78b0: 20 62 65 20 72 65 70 6f 72 74 65 64 20 74 6f 0d   be reported to.
78c0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20  .          #    
78d0: 20 20 20 74 68 65 20 75 73 65 72 20 61 6e 64 20     the user and 
78e0: 6e 6f 74 65 64 20 69 6e 20 74 68 65 20 74 65 73  noted in the tes
78f0: 74 20 73 75 69 74 65 20 6c 6f 67 20 66 69 6c 65  t suite log file
7900: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
7910: 20 20 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e            addCon
7920: 73 74 72 61 69 6e 74 20 73 74 72 6f 6e 67 4e 61  straint strongNa
7930: 6d 65 2e 75 6e 6f 66 66 69 63 69 61 6c 0d 0a 0d  me.unofficial...
7940: 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 21  .          if {!
7950: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
7960: 77 61 72 6e 69 6e 67 46 6f 72 53 74 72 6f 6e 67  warningForStrong
7970: 4e 61 6d 65 4b 65 79 29 5d 20 26 26 20 5c 0d 0a  NameKey)] && \..
7980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 5b                ![
7990: 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 71  haveConstraint q
79a0: 75 69 65 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  uiet]} then {.. 
79b0: 20 20 20 20 20 20 20 20 20 20 20 74 70 75 74 73             tputs
79c0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
79d0: 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20  appendArgs \..  
79e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3d                "=
79f0: 3d 3d 3d 20 57 41 52 4e 49 4e 47 3a 20 75 6e 6f  === WARNING: uno
7a00: 66 66 69 63 69 61 6c 20 45 61 67 6c 65 20 73 74  fficial Eagle st
7a10: 72 6f 6e 67 20 6e 61 6d 65 20 73 69 67 6e 61 74  rong name signat
7a20: 75 72 65 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  ure " \..       
7a30: 20 20 20 20 20 20 20 20 20 22 64 65 74 65 63 74           "detect
7a40: 65 64 3a 20 22 20 24 70 75 62 6c 69 63 4b 65 79  ed: " $publicKey
7a50: 54 6f 6b 65 6e 20 5c 6e 5d 0d 0a 20 20 20 20 20  Token \n]..     
7a60: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7a70: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
7a80: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
7a90: 20 23 20 4e 4f 54 45 3a 20 53 65 76 65 72 61 6c   # NOTE: Several
7aa0: 20 74 65 73 74 73 20 72 65 71 75 69 72 65 20 6f   tests require o
7ab0: 6e 65 20 6f 66 20 74 68 65 20 6f 66 66 69 63 69  ne of the offici
7ac0: 61 6c 20 73 74 72 6f 6e 67 20 6e 61 6d 65 20 6b  al strong name k
7ad0: 65 79 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  eys to..        
7ae0: 20 20 23 20 20 20 20 20 20 20 62 65 20 75 73 65    #       be use
7af0: 64 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74  d in order for t
7b00: 68 65 6d 20 74 6f 20 70 61 73 73 2e 0d 0a 20 20  hem to pass...  
7b10: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
7b20: 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69       addConstrai
7b30: 6e 74 20 73 74 72 6f 6e 67 4e 61 6d 65 2e 6f 66  nt strongName.of
7b40: 66 69 63 69 61 6c 0d 0a 0d 0a 20 20 20 20 20 20  ficial....      
7b50: 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
7b60: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
7b70: 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  rgs \..         
7b80: 20 20 20 20 20 22 2d 2d 2d 2d 20 6f 66 66 69 63       "---- offic
7b90: 69 61 6c 20 45 61 67 6c 65 20 73 74 72 6f 6e 67  ial Eagle strong
7ba0: 20 6e 61 6d 65 20 73 69 67 6e 61 74 75 72 65 20   name signature 
7bb0: 64 65 74 65 63 74 65 64 3a 20 22 20 5c 0d 0a 20  detected: " \.. 
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 70 75               $pu
7bd0: 62 6c 69 63 4b 65 79 54 6f 6b 65 6e 20 5c 6e 5d  blicKeyToken \n]
7be0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
7bf0: 20 20 20 20 20 20 20 75 6e 73 65 74 20 65 78 70         unset exp
7c00: 72 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  r..      }....  
7c10: 20 20 20 20 75 6e 73 65 74 20 70 75 62 6c 69 63      unset public
7c20: 4b 65 79 54 6f 6b 65 6e 0d 0a 20 20 20 20 7d 0d  KeyToken..    }.
7c30: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
7c40: 4e 4f 54 45 3a 20 48 61 73 20 61 64 6d 69 6e 69  NOTE: Has admini
7c50: 73 74 72 61 74 6f 72 20 64 65 74 65 63 74 69 6f  strator detectio
7c60: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
7c70: 69 73 61 62 6c 65 64 3f 20 20 57 65 20 64 6f 0d  isabled?  We do.
7c80: 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 68 69  .    #       thi
7c90: 73 20 63 68 65 63 6b 20 5b 6e 65 61 72 6c 79 5d  s check [nearly]
7ca0: 20 66 69 72 73 74 20 61 73 20 69 74 20 6d 61 79   first as it may
7cb0: 20 5b 65 76 65 6e 74 75 61 6c 6c 79 5d 20 62 65   [eventually] be
7cc0: 20 75 73 65 64 0d 0a 20 20 20 20 23 20 20 20 20   used..    #    
7cd0: 20 20 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72     to help deter
7ce0: 6d 69 6e 65 20 69 66 20 6f 74 68 65 72 20 63 6f  mine if other co
7cf0: 6e 73 74 72 61 69 6e 74 73 20 73 68 6f 75 6c 64  nstraints should
7d00: 20 62 65 20 73 6b 69 70 70 65 64 2e 0d 0a 20 20   be skipped...  
7d10: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
7d20: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 61 64  nfo exists no(ad
7d30: 6d 69 6e 69 73 74 72 61 74 6f 72 29 5d 7d 20 74  ministrator)]} t
7d40: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
7d50: 63 6b 46 6f 72 41 64 6d 69 6e 69 73 74 72 61 74  ckForAdministrat
7d60: 6f 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  or $test_channel
7d70: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
7d80: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
7d90: 73 20 68 6f 73 74 20 64 65 74 65 63 74 69 6f 6e  s host detection
7da0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
7db0: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
7dc0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
7dd0: 78 69 73 74 73 20 6e 6f 28 68 6f 73 74 29 5d 7d  xists no(host)]}
7de0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
7df0: 68 65 63 6b 46 6f 72 48 6f 73 74 20 24 74 65 73  heckForHost $tes
7e00: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
7e10: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
7e20: 20 4e 4f 54 45 3a 20 48 61 73 20 68 6f 73 74 20   NOTE: Has host 
7e30: 74 79 70 65 20 64 65 74 65 63 74 69 6f 6e 20 73  type detection s
7e40: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
7e50: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
7e60: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
7e70: 73 74 73 20 6e 6f 28 68 6f 73 74 54 79 70 65 29  sts no(hostType)
7e80: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
7e90: 20 63 68 65 63 6b 46 6f 72 48 6f 73 74 54 79 70   checkForHostTyp
7ea0: 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  e $test_channel.
7eb0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
7ec0: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
7ed0: 20 70 72 69 6d 61 72 79 20 74 68 72 65 61 64 20   primary thread 
7ee0: 64 65 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72  detection suppor
7ef0: 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
7f00: 20 20 57 65 20 64 6f 0d 0a 20 20 20 20 23 20 20    We do..    #  
7f10: 20 20 20 20 20 74 68 69 73 20 63 68 65 63 6b 20       this check 
7f20: 5b 6e 65 61 72 6c 79 5d 20 66 69 72 73 74 20 61  [nearly] first a
7f30: 73 20 69 74 20 6d 61 79 20 5b 65 76 65 6e 74 75  s it may [eventu
7f40: 61 6c 6c 79 5d 20 62 65 20 75 73 65 64 0d 0a 20  ally] be used.. 
7f50: 20 20 20 23 20 20 20 20 20 20 20 74 6f 20 68 65     #       to he
7f60: 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  lp determine if 
7f70: 6f 74 68 65 72 20 63 6f 6e 73 74 72 61 69 6e 74  other constraint
7f80: 73 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70  s should be skip
7f90: 70 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ped...    #..   
7fa0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
7fb0: 74 73 20 6e 6f 28 70 72 69 6d 61 72 79 54 68 72  ts no(primaryThr
7fc0: 65 61 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ead)]} then {.. 
7fd0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 50 72 69       checkForPri
7fe0: 6d 61 72 79 54 68 72 65 61 64 20 24 74 65 73 74  maryThread $test
7ff0: 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
8000: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
8010: 4e 4f 54 45 3a 20 48 61 73 20 64 65 66 61 75 6c  NOTE: Has defaul
8020: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
8030: 6d 61 69 6e 20 64 65 74 65 63 74 69 6f 6e 20 73  main detection s
8040: 75 70 70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20  upport been..   
8050: 20 23 20 20 20 20 20 20 20 64 69 73 61 62 6c 65   #       disable
8060: 64 3f 20 20 57 65 20 64 6f 20 74 68 69 73 20 63  d?  We do this c
8070: 68 65 63 6b 20 5b 6e 65 61 72 6c 79 5d 20 66 69  heck [nearly] fi
8080: 72 73 74 20 61 73 20 69 74 20 6d 61 79 0d 0a 20  rst as it may.. 
8090: 20 20 20 23 20 20 20 20 20 20 20 5b 65 76 65 6e     #       [even
80a0: 74 75 61 6c 6c 79 5d 20 62 65 20 75 73 65 64 20  tually] be used 
80b0: 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e  to help determin
80c0: 65 20 69 66 20 6f 74 68 65 72 0d 0a 20 20 20 20  e if other..    
80d0: 23 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69  #       constrai
80e0: 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 73 6b  nts should be sk
80f0: 69 70 70 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20  ipped...    #.. 
8100: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
8110: 69 73 74 73 20 6e 6f 28 64 65 66 61 75 6c 74 41  ists no(defaultA
8120: 70 70 44 6f 6d 61 69 6e 29 5d 7d 20 74 68 65 6e  ppDomain)]} then
8130: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
8140: 6f 72 44 65 66 61 75 6c 74 41 70 70 44 6f 6d 61  orDefaultAppDoma
8150: 69 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  in $test_channel
8160: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
8170: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
8180: 73 20 72 75 6e 74 69 6d 65 20 64 65 74 65 63 74  s runtime detect
8190: 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
81a0: 20 64 69 73 61 62 6c 65 64 3f 20 20 57 65 20 64   disabled?  We d
81b0: 6f 20 74 68 69 73 0d 0a 20 20 20 20 23 20 20 20  o this..    #   
81c0: 20 20 20 20 63 68 65 63 6b 69 6e 67 20 5b 6e 65      checking [ne
81d0: 61 72 6c 79 5d 20 66 69 72 73 74 20 61 73 20 69  arly] first as i
81e0: 74 20 6d 61 79 20 73 6b 69 70 20 6f 74 68 65 72  t may skip other
81f0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20   constraints... 
8200: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
8210: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72  info exists no(r
8220: 75 6e 74 69 6d 65 29 5d 7d 20 74 68 65 6e 20 7b  untime)]} then {
8230: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
8240: 52 75 6e 74 69 6d 65 20 24 74 65 73 74 5f 63 68  Runtime $test_ch
8250: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
8260: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
8270: 45 3a 20 43 68 65 63 6b 20 74 68 65 20 76 61 72  E: Check the var
8280: 69 61 6e 74 20 61 6e 64 2f 6f 72 20 76 65 72 73  iant and/or vers
8290: 69 6f 6e 20 6f 66 20 74 68 65 20 43 4c 52 20 74  ion of the CLR t
82a0: 68 61 74 20 77 65 20 61 72 65 0d 0a 20 20 20 20  hat we are..    
82b0: 23 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 6c  #       currentl
82c0: 79 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e 0d 0a 20  y running on... 
82d0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
82e0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
82f0: 68 65 63 6b 46 6f 72 52 75 6e 74 69 6d 65 56 65  heckForRuntimeVe
8300: 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d  rsion)]} then {.
8310: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52  .      checkForR
8320: 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 24 74  untimeVersion $t
8330: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
8340: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
8350: 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74   # NOTE: Check t
8360: 68 65 20 66 72 61 6d 65 77 6f 72 6b 20 76 65 72  he framework ver
8370: 73 69 6f 6e 20 28 69 2e 65 2e 20 72 65 67 61 72  sion (i.e. regar
8380: 64 6c 65 73 73 20 6f 66 20 72 75 6e 74 69 6d 65  dless of runtime
8390: 29 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20  ) that..    #   
83a0: 20 20 20 20 77 65 20 61 72 65 20 63 75 72 72 65      we are curre
83b0: 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e  ntly running on.
83c0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
83d0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
83e0: 6f 28 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69  o(frameworkVersi
83f0: 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  on)]} then {..  
8400: 20 20 20 20 63 68 65 63 6b 46 6f 72 46 72 61 6d      checkForFram
8410: 65 77 6f 72 6b 56 65 72 73 69 6f 6e 20 24 74 65  eworkVersion $te
8420: 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
8430: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
8440: 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68  # NOTE: Check th
8450: 65 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20  e image runtime 
8460: 76 65 72 73 69 6f 6e 20 28 69 2e 65 2e 20 74 68  version (i.e. th
8470: 65 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f  e runtime versio
8480: 6e 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20  n that..    #   
8490: 20 20 20 20 74 68 69 73 20 61 73 73 65 6d 62 6c      this assembl
84a0: 79 20 63 6f 6d 70 69 6c 65 64 20 61 67 61 69 6e  y compiled again
84b0: 73 74 29 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  st)...    #..   
84c0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
84d0: 74 73 20 6e 6f 28 69 6d 61 67 65 52 75 6e 74 69  ts no(imageRunti
84e0: 6d 65 56 65 72 73 69 6f 6e 29 5d 7d 20 74 68 65  meVersion)]} the
84f0: 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
8500: 46 6f 72 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  ForImageRuntimeV
8510: 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ersion $test_cha
8520: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
8530: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
8540: 3a 20 48 61 73 20 70 72 6f 63 65 73 73 20 62 69  : Has process bi
8550: 74 73 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70  ts detection sup
8560: 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
8570: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
8580: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
8590: 73 20 6e 6f 28 70 72 6f 63 65 73 73 42 69 74 73  s no(processBits
85a0: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
85b0: 20 20 63 68 65 63 6b 46 6f 72 50 72 6f 63 65 73    checkForProces
85c0: 73 42 69 74 73 20 24 74 65 73 74 5f 63 68 61 6e  sBits $test_chan
85d0: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
85e0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
85f0: 20 48 61 73 20 6d 61 63 68 69 6e 65 20 64 65 74   Has machine det
8600: 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62  ection support b
8610: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
8620: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
8630: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d  info exists no(m
8640: 61 63 68 69 6e 65 29 5d 7d 20 74 68 65 6e 20 7b  achine)]} then {
8650: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
8660: 4d 61 63 68 69 6e 65 20 24 74 65 73 74 5f 63 68  Machine $test_ch
8670: 61 6e 6e 65 6c 20 33 32 20 69 6e 74 65 6c 3b 20  annel 32 intel; 
8680: 23 20 28 69 2e 65 2e 20 78 38 36 29 0d 0a 20 20  # (i.e. x86)..  
8690: 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 61 63 68      checkForMach
86a0: 69 6e 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ine $test_channe
86b0: 6c 20 33 32 20 61 72 6d 3b 20 20 20 23 20 28 69  l 32 arm;   # (i
86c0: 2e 65 2e 20 61 72 6d 29 0d 0a 20 20 20 20 20 20  .e. arm)..      
86d0: 63 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20  checkForMachine 
86e0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34  $test_channel 64
86f0: 20 69 61 36 34 3b 20 20 23 20 28 69 2e 65 2e 20   ia64;  # (i.e. 
8700: 69 74 61 6e 69 75 6d 29 0d 0a 20 20 20 20 20 20  itanium)..      
8710: 63 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20  checkForMachine 
8720: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34  $test_channel 64
8730: 20 61 6d 64 36 34 3b 20 23 20 28 69 2e 65 2e 20   amd64; # (i.e. 
8740: 78 36 34 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  x64)..    }.... 
8750: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
8760: 3a 20 48 61 73 20 63 75 6c 74 75 72 65 20 64 65  : Has culture de
8770: 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  tection support 
8780: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
8790: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
87a0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
87b0: 63 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20  culture)]} then 
87c0: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
87d0: 72 43 75 6c 74 75 72 65 20 24 74 65 73 74 5f 63  rCulture $test_c
87e0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
87f0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
8800: 54 45 3a 20 48 61 73 20 74 68 72 65 61 64 20 63  TE: Has thread c
8810: 75 6c 74 75 72 65 20 64 65 74 65 63 74 69 6f 6e  ulture detection
8820: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
8830: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
8840: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
8850: 78 69 73 74 73 20 6e 6f 28 74 68 72 65 61 64 43  xists no(threadC
8860: 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20 7b  ulture)]} then {
8870: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
8880: 54 68 72 65 61 64 43 75 6c 74 75 72 65 20 24 74  ThreadCulture $t
8890: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
88a0: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
88b0: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 6f 66   # NOTE: Has sof
88c0: 74 77 61 72 65 20 75 70 64 61 74 65 20 74 72 75  tware update tru
88d0: 73 74 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70  st detection sup
88e0: 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
88f0: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
8900: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
8910: 73 20 6e 6f 28 73 6f 66 74 77 61 72 65 55 70 64  s no(softwareUpd
8920: 61 74 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ate)]} then {.. 
8930: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 53 6f 66       checkForSof
8940: 74 77 61 72 65 55 70 64 61 74 65 54 72 75 73 74  twareUpdateTrust
8950: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
8960: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
8970: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
8980: 73 74 72 6f 6e 67 20 6e 61 6d 65 20 64 65 74 65  strong name dete
8990: 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65  ction support be
89a0: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
89b0: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
89c0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 74  nfo exists no(st
89d0: 72 6f 6e 67 4e 61 6d 65 29 5d 7d 20 74 68 65 6e  rongName)]} then
89e0: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
89f0: 6f 72 53 74 72 6f 6e 67 4e 61 6d 65 20 24 74 65  orStrongName $te
8a00: 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
8a10: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
8a20: 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 65 72 74  # NOTE: Has cert
8a30: 69 66 69 63 61 74 65 20 64 65 74 65 63 74 69 6f  ificate detectio
8a40: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
8a50: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
8a60: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
8a70: 65 78 69 73 74 73 20 6e 6f 28 63 65 72 74 69 66  exists no(certif
8a80: 69 63 61 74 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  icate)]} then {.
8a90: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43  .      checkForC
8aa0: 65 72 74 69 66 69 63 61 74 65 20 24 74 65 73 74  ertificate $test
8ab0: 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
8ac0: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
8ad0: 4e 4f 54 45 3a 20 48 61 73 20 64 61 74 61 62 61  NOTE: Has databa
8ae0: 73 65 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  se testing suppo
8af0: 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
8b00: 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ?..    #..    if
8b10: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
8b20: 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 21 5b 69  no(core)] && ![i
8b30: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 64 61  nfo exists no(da
8b40: 74 61 62 61 73 65 29 5d 7d 20 74 68 65 6e 20 7b  tabase)]} then {
8b50: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
8b60: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
8b70: 20 73 65 72 76 65 72 20 6e 61 6d 65 2c 20 69 66   server name, if
8b80: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
8b90: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
8ba0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 65  ![info exists se
8bb0: 72 76 65 72 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  rver]} then {.. 
8bc0: 20 20 20 20 20 20 20 73 65 74 20 73 65 72 76 65         set serve
8bd0: 72 20 2e 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  r ...      }....
8be0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
8bf0: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 64   NOTE: Set the d
8c00: 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 69 66  atabase name, if
8c10: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
8c20: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
8c30: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 64 61  ![info exists da
8c40: 74 61 62 61 73 65 5d 7d 20 74 68 65 6e 20 7b 0d  tabase]} then {.
8c50: 0a 20 20 20 20 20 20 20 20 73 65 74 20 64 61 74  .        set dat
8c60: 61 62 61 73 65 20 6d 61 73 74 65 72 0d 0a 20 20  abase master..  
8c70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
8c80: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
8c90: 53 65 74 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  Set the connecti
8ca0: 6f 6e 20 74 69 6d 65 6f 75 74 2c 20 69 66 20 6e  on timeout, if n
8cb0: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
8cc0: 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
8cd0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 69 6d 65  info exists time
8ce0: 6f 75 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  out]} then {..  
8cf0: 20 20 20 20 20 20 73 65 74 20 74 69 6d 65 6f 75        set timeou
8d00: 74 20 5b 65 78 70 72 20 7b 24 74 65 73 74 5f 74  t [expr {$test_t
8d10: 69 6d 65 6f 75 74 20 2f 20 31 30 30 30 7d 5d 3b  imeout / 1000}];
8d20: 20 23 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20   # milliseconds 
8d30: 74 6f 20 73 65 63 6f 6e 64 73 2e 0d 0a 20 20 20  to seconds...   
8d40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
8d50: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53  .      # NOTE: S
8d60: 65 74 20 74 68 65 20 74 65 73 74 20 75 73 65 72  et the test user
8d70: 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63 65 73 73   name, if necess
8d80: 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ary...      #.. 
8d90: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
8da0: 65 78 69 73 74 73 20 75 73 65 72 5d 7d 20 74 68  exists user]} th
8db0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65  en {..        se
8dc0: 74 20 75 73 65 72 20 5b 67 65 74 45 6e 76 69 72  t user [getEnvir
8dd0: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 20 75  onmentVariable u
8de0: 73 65 72 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ser]..      }...
8df0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
8e00: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
8e10: 74 65 73 74 20 70 61 73 73 77 6f 72 64 2c 20 69  test password, i
8e20: 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
8e30: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
8e40: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 70  {![info exists p
8e50: 61 73 73 77 6f 72 64 5d 7d 20 74 68 65 6e 20 7b  assword]} then {
8e60: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 70 61  ..        set pa
8e70: 73 73 77 6f 72 64 20 5b 67 65 74 45 6e 76 69 72  ssword [getEnvir
8e80: 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c 65 20 70  onmentVariable p
8e90: 61 73 73 77 6f 72 64 5d 0d 0a 20 20 20 20 20 20  assword]..      
8ea0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
8eb0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
8ec0: 74 68 65 20 74 65 73 74 20 64 61 74 61 62 61 73  the test databas
8ed0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 79 70  e connection typ
8ee0: 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  e, if necessary.
8ef0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
8f00: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
8f10: 74 73 20 74 65 73 74 5f 64 61 74 61 62 61 73 65  ts test_database
8f20: 5f 74 79 70 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  _type]} then {..
8f30: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
8f40: 20 20 20 23 20 4e 4f 54 45 3a 20 55 73 65 20 74     # NOTE: Use t
8f50: 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62  he default datab
8f60: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  ase connection t
8f70: 79 70 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  ype...        #.
8f80: 0a 20 20 20 20 20 20 20 20 73 65 74 20 74 65 73  .        set tes
8f90: 74 5f 64 61 74 61 62 61 73 65 5f 74 79 70 65 20  t_database_type 
8fa0: 53 71 6c 3b 20 23 20 54 4f 44 4f 3a 20 47 6f 6f  Sql; # TODO: Goo
8fb0: 64 20 74 65 73 74 20 64 65 66 61 75 6c 74 3f 0d  d test default?.
8fc0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
8fd0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
8fe0: 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20  E: Set the test 
8ff0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
9000: 69 6f 6e 20 73 74 72 69 6e 67 2c 20 69 66 20 6e  ion string, if n
9010: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20  ecessary...     
9020: 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
9030: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
9040: 5f 64 61 74 61 62 61 73 65 5d 7d 20 74 68 65 6e  _database]} then
9050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
9060: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4d         # NOTE: M
9070: 6f 6e 6f 20 64 6f 65 73 20 6e 6f 74 20 68 61 76  ono does not hav
9080: 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 22 74  e support for "t
9090: 72 75 73 74 65 64 20 63 6f 6e 6e 65 63 74 69 6f  rusted connectio
90a0: 6e 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 23 20  ns";..        # 
90b0: 20 20 20 20 20 20 74 68 65 72 65 66 6f 72 65 2c        therefore,
90c0: 20 77 65 20 6d 75 73 74 20 65 6d 69 74 20 61 20   we must emit a 
90d0: 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 6e 65 63  different connec
90e0: 74 69 6f 6e 20 73 74 72 69 6e 67 0d 0a 20 20 20  tion string..   
90f0: 20 20 20 20 20 23 20 20 20 20 20 20 20 77 68 65       #       whe
9100: 6e 20 72 75 6e 6e 69 6e 67 20 74 68 65 72 65 2e  n running there.
9110: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
9120: 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 64 61       set test_da
9130: 74 61 62 61 73 65 20 5b 73 75 62 73 74 20 5c 0d  tabase [subst \.
9140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 44 61  .            {Da
9150: 74 61 20 53 6f 75 72 63 65 3d 24 7b 73 65 72 76  ta Source=${serv
9160: 65 72 7d 3b 49 6e 69 74 69 61 6c 20 43 61 74 61  er};Initial Cata
9170: 6c 6f 67 3d 24 7b 64 61 74 61 62 61 73 65 7d 3b  log=${database};
9180: 43 6f 6e 6e 65 63 74 5c 0d 0a 20 20 20 20 20 20  Connect\..      
9190: 20 20 20 20 20 20 54 69 6d 65 6f 75 74 3d 24 7b        Timeout=${
91a0: 74 69 6d 65 6f 75 74 7d 3b 5b 65 78 70 72 20 7b  timeout};[expr {
91b0: 5b 69 73 4d 6f 6e 6f 5d 20 3f 20 5b 73 75 62 73  [isMono] ? [subs
91c0: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
91d0: 20 7b 55 73 65 72 20 49 64 3d 24 7b 75 73 65 72   {User Id=${user
91e0: 7d 3b 50 61 73 73 77 6f 72 64 3d 24 7b 70 61 73  };Password=${pas
91f0: 73 77 6f 72 64 7d 3b 7d 5d 20 3a 20 7b 49 6e 74  sword};}] : {Int
9200: 65 67 72 61 74 65 64 5c 0d 0a 20 20 20 20 20 20  egrated\..      
9210: 20 20 20 20 20 20 53 65 63 75 72 69 74 79 3d 53        Security=S
9220: 53 50 49 3b 7d 7d 5d 7d 5d 3b 20 23 20 4e 4f 54  SPI;}}]}]; # NOT
9230: 45 3a 20 4d 69 63 72 6f 73 6f 66 74 20 53 51 4c  E: Microsoft SQL
9240: 20 53 65 72 76 65 72 20 73 70 65 63 69 66 69 63   Server specific
9250: 2e 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 69  ...      } elsei
9260: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  f {[info exists 
9270: 74 65 73 74 5f 64 61 74 61 62 61 73 65 5f 73 75  test_database_su
9280: 62 73 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  bst]} then {..  
9290: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
92a0: 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 74 65 73   # NOTE: The tes
92b0: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
92c0: 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 6d 75 73  ction string mus
92d0: 74 20 62 65 20 64 79 6e 61 6d 69 63 61 6c 6c 79  t be dynamically
92e0: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
92f0: 20 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 65 64    post-processed
9300: 20 75 73 69 6e 67 20 5b 73 75 62 73 74 5d 2c 20   using [subst], 
9310: 70 65 72 20 72 65 71 75 65 73 74 2e 20 20 54 68  per request.  Th
9320: 69 73 20 61 6c 6c 6f 77 73 0d 0a 20 20 20 20 20  is allows..     
9330: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 5b     #       the [
9340: 63 75 73 74 6f 6d 5d 20 74 65 73 74 20 64 61 74  custom] test dat
9350: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
9360: 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 74 61   string to conta
9370: 69 6e 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20  in..        #   
9380: 20 20 20 20 72 65 66 65 72 65 6e 63 65 73 20 74      references t
9390: 6f 20 74 68 65 20 6f 74 68 65 72 20 74 65 73 74  o the other test
93a0: 20 64 61 74 61 62 61 73 65 20 76 61 72 69 61 62   database variab
93b0: 6c 65 73 20 73 65 74 75 70 0d 0a 20 20 20 20 20  les setup..     
93c0: 20 20 20 23 20 20 20 20 20 20 20 62 79 20 74 68     #       by th
93d0: 69 73 20 74 65 73 74 20 70 72 6f 6c 6f 67 75 65  is test prologue
93e0: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
93f0: 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 64        set test_d
9400: 61 74 61 62 61 73 65 20 5b 73 75 62 73 74 20 24  atabase [subst $
9410: 74 65 73 74 5f 64 61 74 61 62 61 73 65 5d 0d 0a  test_database]..
9420: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9430: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
9440: 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20 64  : Set the test d
9450: 61 74 61 62 61 73 65 20 74 61 62 6c 65 2c 20 69  atabase table, i
9460: 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
9470: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
9480: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
9490: 65 73 74 5f 64 61 74 61 62 61 73 65 5f 74 61 62  est_database_tab
94a0: 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  le]} then {..   
94b0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
94c0: 23 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20  # NOTE: Use the 
94d0: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
94e0: 20 74 61 62 6c 65 2e 0d 0a 20 20 20 20 20 20 20   table...       
94f0: 20 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20   #..        set 
9500: 74 65 73 74 5f 64 61 74 61 62 61 73 65 5f 74 61  test_database_ta
9510: 62 6c 65 20 65 61 67 6c 65 5f 73 71 6c 5f 74 65  ble eagle_sql_te
9520: 73 74 5f 6f 6b 5f 74 6f 5f 64 65 6c 65 74 65 0d  st_ok_to_delete.
9530: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
9540: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
9550: 45 3a 20 43 61 6e 20 77 65 20 61 63 63 65 73 73  E: Can we access
9560: 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
9570: 74 65 73 74 20 64 61 74 61 62 61 73 65 3f 0d 0a  test database?..
9580: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63        #..      c
9590: 68 65 63 6b 46 6f 72 44 61 74 61 62 61 73 65 20  heckForDatabase 
95a0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 24 74  $test_channel $t
95b0: 65 73 74 5f 64 61 74 61 62 61 73 65 5f 74 79 70  est_database_typ
95c0: 65 20 24 74 65 73 74 5f 64 61 74 61 62 61 73 65  e $test_database
95d0: 0d 0a 0d 0a 20 20 20 20 20 20 75 6e 73 65 74 20  ....      unset 
95e0: 70 61 73 73 77 6f 72 64 20 75 73 65 72 20 74 69  password user ti
95f0: 6d 65 6f 75 74 20 64 61 74 61 62 61 73 65 20 73  meout database s
9600: 65 72 76 65 72 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  erver..    }....
9610: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
9620: 45 3a 20 48 61 73 20 73 79 6d 62 6f 6c 20 74 65  E: Has symbol te
9630: 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
9640: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
9650: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
9660: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 61 73  nfo exists no(as
9670: 73 65 6d 62 6c 79 53 79 6d 62 6f 6c 73 29 5d 7d  semblySymbols)]}
9680: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
9690: 68 65 63 6b 46 6f 72 53 79 6d 62 6f 6c 73 20 24  heckForSymbols $
96a0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 6c 69  test_channel [li
96b0: 6e 64 65 78 20 5b 69 6e 66 6f 20 61 73 73 65 6d  ndex [info assem
96c0: 62 6c 79 5d 20 65 6e 64 5d 0d 0a 20 20 20 20 7d  bly] end]..    }
96d0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
96e0: 20 4e 4f 54 45 3a 20 48 61 73 20 6f 62 6a 65 63   NOTE: Has objec
96f0: 74 20 68 61 6e 64 6c 65 20 72 65 66 65 72 65 6e  t handle referen
9700: 63 65 20 63 6f 75 6e 74 20 74 72 61 63 6b 69 6e  ce count trackin
9710: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
9720: 69 73 61 62 6c 65 64 0d 0a 20 20 20 20 23 20 20  isabled..    #  
9730: 20 20 20 20 20 28 61 74 20 63 6f 6d 70 69 6c 65       (at compile
9740: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 23 0d 0a  -time)?..    #..
9750: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
9760: 78 69 73 74 73 20 6e 6f 28 72 65 66 43 6f 75 6e  xists no(refCoun
9770: 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
9780: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
9790: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 65  TE: For tests "e
97a0: 78 63 65 6c 2d 2a 22 2c 20 22 6f 62 6a 65 63 74  xcel-*", "object
97b0: 2d 32 2e 2a 22 2c 20 22 6f 62 6a 65 63 74 2d 37  -2.*", "object-7
97c0: 2e 31 22 2c 20 22 6f 62 6a 65 63 74 2d 38 2e 2a  .1", "object-8.*
97d0: 22 2c 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  ",..      #     
97e0: 20 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 39 38    and "object-98
97f0: 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .*"...      #.. 
9800: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52 65 66       checkForRef
9810: 65 72 65 6e 63 65 43 6f 75 6e 74 54 72 61 63 6b  erenceCountTrack
9820: 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ing $test_channe
9830: 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  l..    }....    
9840: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
9850: 61 73 20 74 65 73 74 69 6e 67 20 75 73 69 6e 67  as testing using
9860: 20 74 68 65 20 43 23 20 63 6f 6d 70 69 6c 65 72   the C# compiler
9870: 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
9880: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
9890: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
98a0: 28 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65  (checkForCompile
98b0: 43 53 68 61 72 70 29 5d 7d 20 74 68 65 6e 20 7b  CSharp)]} then {
98c0: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
98d0: 43 6f 6d 70 69 6c 65 43 53 68 61 72 70 20 24 74  CompileCSharp $t
98e0: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
98f0: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
9900: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 6d   # NOTE: Has com
9910: 70 69 6c 65 2f 72 75 6e 74 69 6d 65 20 6f 70 74  pile/runtime opt
9920: 69 6f 6e 20 74 65 73 74 69 6e 67 20 73 75 70 70  ion testing supp
9930: 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
9940: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
9950: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
9960: 20 6e 6f 28 63 6f 6d 70 69 6c 65 4f 70 74 69 6f   no(compileOptio
9970: 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ns)]} then {..  
9980: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
9990: 4f 54 45 3a 20 48 61 73 20 22 6b 6e 6f 77 6e 22  OTE: Has "known"
99a0: 20 63 6f 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 20   compile option 
99b0: 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
99c0: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
99d0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
99e0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
99f0: 20 6e 6f 28 6b 6e 6f 77 6e 43 6f 6d 70 69 6c 65   no(knownCompile
9a00: 4f 70 74 69 6f 6e 73 29 5d 7d 20 74 68 65 6e 20  Options)]} then 
9a10: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
9a20: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 43 68        # NOTE: Ch
9a30: 65 63 6b 20 66 6f 72 20 61 6c 6c 20 22 6b 6e 6f  eck for all "kno
9a40: 77 6e 22 20 63 6f 6d 70 69 6c 65 20 6f 70 74 69  wn" compile opti
9a50: 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  ons...        #.
9a60: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
9a70: 72 4b 6e 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74  rKnownCompileOpt
9a80: 69 6f 6e 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  ions $test_chann
9a90: 65 6c 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65  el..      } else
9aa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
9ab0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48         # NOTE: H
9ac0: 61 73 20 63 61 6c 6c 62 61 63 6b 20 71 75 65 75  as callback queu
9ad0: 65 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  e support been e
9ae0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
9af0: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
9b00: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
9b10: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
9b20: 6e 6f 28 63 6f 6d 70 69 6c 65 43 61 6c 6c 62 61  no(compileCallba
9b30: 63 6b 51 75 65 75 65 29 5d 7d 20 74 68 65 6e 20  ckQueue)]} then 
9b40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  {..          #..
9b50: 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
9b60: 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73  : For tests "bas
9b70: 69 63 2d 31 2e 35 34 22 20 61 6e 64 20 22 63 6f  ic-1.54" and "co
9b80: 6d 6d 61 6e 64 73 2d 31 2e 34 22 2e 0d 0a 20 20  mmands-1.4"...  
9b90: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
9ba0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
9bb0: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
9bc0: 5f 63 68 61 6e 6e 65 6c 20 43 41 4c 4c 42 41 43  _channel CALLBAC
9bd0: 4b 5f 51 55 45 55 45 0d 0a 20 20 20 20 20 20 20  K_QUEUE..       
9be0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
9bf0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
9c00: 20 48 61 73 20 6c 65 67 61 63 79 20 43 41 53 20   Has legacy CAS 
9c10: 70 6f 6c 69 63 79 20 73 75 70 70 6f 72 74 20 62  policy support b
9c20: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
9c30: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
9c40: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
9c50: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
9c60: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 43  ists no(compileC
9c70: 61 73 50 6f 6c 69 63 79 29 5d 7d 20 74 68 65 6e  asPolicy)]} then
9c80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
9c90: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
9ca0: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6c 6f  E: For tests "lo
9cb0: 61 64 2d 31 2e 36 22 20 61 6e 64 20 22 6c 6f 61  ad-1.6" and "loa
9cc0: 64 2d 31 2e 37 22 2e 0d 0a 20 20 20 20 20 20 20  d-1.7"...       
9cd0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
9ce0: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
9cf0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
9d00: 6e 65 6c 20 43 41 53 5f 50 4f 4c 49 43 59 0d 0a  nel CAS_POLICY..
9d10: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
9d20: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
9d30: 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 6e 73  # NOTE: Has cons
9d40: 6f 6c 65 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ole support been
9d50: 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d   enabled (at com
9d60: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
9d70: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
9d80: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
9d90: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 43 6f 6e 73  s no(compileCons
9da0: 6f 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ole)]} then {.. 
9db0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
9dc0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
9dd0: 72 20 74 65 73 74 20 22 68 6f 73 74 2d 31 2e 32  r test "host-1.2
9de0: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
9df0: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
9e00: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
9e10: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 43   $test_channel C
9e20: 4f 4e 53 4f 4c 45 0d 0a 20 20 20 20 20 20 20 20  ONSOLE..        
9e30: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
9e40: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
9e50: 48 61 73 20 64 61 74 61 62 61 73 65 20 73 75 70  Has database sup
9e60: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
9e70: 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  d (at compile-ti
9e80: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
9e90: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
9ea0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
9eb0: 6d 70 69 6c 65 44 61 74 61 29 5d 7d 20 74 68 65  mpileData)]} the
9ec0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
9ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
9ee0: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 73  TE: For tests "s
9ef0: 71 6c 2d 31 2e 31 22 20 61 6e 64 20 22 75 70 76  ql-1.1" and "upv
9f00: 61 72 2d 39 39 2e 31 22 2e 0d 0a 20 20 20 20 20  ar-99.1"...     
9f10: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
9f20: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
9f30: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
9f40: 61 6e 6e 65 6c 20 44 41 54 41 0d 0a 20 20 20 20  annel DATA..    
9f50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9f60: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
9f70: 54 45 3a 20 48 61 73 20 73 63 72 69 70 74 20 64  TE: Has script d
9f80: 65 62 75 67 67 65 72 20 73 75 70 70 6f 72 74 20  ebugger support 
9f90: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
9fa0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
9fb0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
9fc0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
9fd0: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
9fe0: 44 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e  Debugger)]} then
9ff0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
a000: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
a010: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 64 65  E: For tests "de
a020: 62 75 67 2d 31 2e 31 22 2c 20 22 64 65 62 75 67  bug-1.1", "debug
a030: 2d 32 2e 31 22 2c 20 22 64 65 62 75 67 2d 33 2e  -2.1", "debug-3.
a040: 31 22 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20  1" and..        
a050: 20 20 23 20 20 20 20 20 20 20 22 64 65 62 75 67    #       "debug
a060: 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20  -4.1"...        
a070: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
a080: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
a090: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
a0a0: 65 6c 20 44 45 42 55 47 47 45 52 0d 0a 20 20 20  el DEBUGGER..   
a0b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a0c0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
a0d0: 4f 54 45 3a 20 48 61 73 20 61 70 70 6c 69 63 61  OTE: Has applica
a0e0: 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 6d 61 6e 61  tion domain mana
a0f0: 67 65 6d 65 6e 74 20 73 75 70 70 6f 72 74 20 62  gement support b
a100: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d  een enabled (at.
a110: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
a120: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
a130: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
a140: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
a150: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
a160: 41 70 70 44 6f 6d 61 69 6e 73 29 5d 7d 20 74 68  AppDomains)]} th
a170: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
a180: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
a190: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69  OTE: For test "i
a1a0: 6e 74 65 72 70 2d 31 2e 32 37 22 2e 0d 0a 20 20  nterp-1.27"...  
a1b0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
a1c0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
a1d0: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
a1e0: 5f 63 68 61 6e 6e 65 6c 20 41 50 50 44 4f 4d 41  _channel APPDOMA
a1f0: 49 4e 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  INS..        }..
a200: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
a210: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
a220: 20 69 73 6f 6c 61 74 65 64 20 69 6e 74 65 72 70   isolated interp
a230: 72 65 74 65 72 20 73 75 70 70 6f 72 74 20 62 65  reter support be
a240: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63  en enabled (at c
a250: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
a260: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
a270: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
a280: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 49 73  sts no(compileIs
a290: 6f 6c 61 74 65 64 49 6e 74 65 72 70 72 65 74 65  olatedInterprete
a2a0: 72 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rs)]} then {..  
a2b0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
a2c0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
a2d0: 20 74 65 73 74 20 22 78 61 6d 6c 2d 31 2e 32 22   test "xaml-1.2"
a2e0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
a2f0: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
a300: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
a310: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 49 53  $test_channel IS
a320: 4f 4c 41 54 45 44 5f 49 4e 54 45 52 50 52 45 54  OLATED_INTERPRET
a330: 45 52 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ERS..        }..
a340: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
a350: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
a360: 20 65 78 70 72 65 73 73 69 6f 6e 20 66 6c 61 67   expression flag
a370: 73 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  s support been e
a380: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
a390: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
a3a0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
a3b0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
a3c0: 6e 6f 28 63 6f 6d 70 69 6c 65 45 78 70 72 65 73  no(compileExpres
a3d0: 73 69 6f 6e 46 6c 61 67 73 29 5d 7d 20 74 68 65  sionFlags)]} the
a3e0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
a3f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
a400: 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 66 75  TE: For test "fu
a410: 6e 63 74 69 6f 6e 2d 32 2e 31 36 22 2e 0d 0a 20  nction-2.16"... 
a420: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
a430: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
a440: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
a450: 74 5f 63 68 61 6e 6e 65 6c 20 45 58 50 52 45 53  t_channel EXPRES
a460: 53 49 4f 4e 5f 46 4c 41 47 53 0d 0a 20 20 20 20  SION_FLAGS..    
a470: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a480: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
a490: 54 45 3a 20 48 61 73 20 69 73 6f 6c 61 74 65 64  TE: Has isolated
a4a0: 20 70 6c 75 67 69 6e 20 73 75 70 70 6f 72 74 20   plugin support 
a4b0: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
a4c0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
a4d0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
a4e0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
a4f0: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
a500: 49 73 6f 6c 61 74 65 64 50 6c 75 67 69 6e 73 29  IsolatedPlugins)
a510: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a520: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
a530: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
a540: 73 74 20 22 6c 6f 61 64 2d 31 2e 31 2e 31 22 2e  st "load-1.1.1".
a550: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
a560: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
a570: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
a580: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 49 53 4f  test_channel ISO
a590: 4c 41 54 45 44 5f 50 4c 55 47 49 4e 53 0d 0a 20  LATED_PLUGINS.. 
a5a0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
a5b0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
a5c0: 20 4e 4f 54 45 3a 20 48 61 73 20 50 6f 77 65 72   NOTE: Has Power
a5d0: 53 68 65 6c 6c 20 61 70 70 72 6f 76 65 64 2d 76  Shell approved-v
a5e0: 65 72 62 73 20 73 75 70 70 6f 72 74 20 62 65 65  erbs support bee
a5f0: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a 20  n enabled (at.. 
a600: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63         #       c
a610: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
a620: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
a630: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
a640: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 41 70  sts no(compileAp
a650: 70 72 6f 76 65 64 56 65 72 62 73 29 5d 7d 20 74  provedVerbs)]} t
a660: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
a670: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
a680: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
a690: 6f 62 6a 65 63 74 2d 34 2e 38 22 2e 0d 0a 20 20  object-4.8"...  
a6a0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
a6b0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
a6c0: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
a6d0: 5f 63 68 61 6e 6e 65 6c 20 41 50 50 52 4f 56 45  _channel APPROVE
a6e0: 44 5f 56 45 52 42 53 0d 0a 20 20 20 20 20 20 20  D_VERBS..       
a6f0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
a700: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
a710: 20 48 61 73 20 4d 6f 6e 6f 20 73 75 70 70 6f 72   Has Mono suppor
a720: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
a730: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
a740: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
a750: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
a760: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
a770: 6c 65 4d 6f 6e 6f 29 5d 7d 20 74 68 65 6e 20 7b  leMono)]} then {
a780: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
a790: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
a7a0: 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
a7b0: 74 2d 34 2e 31 33 22 2e 0d 0a 20 20 20 20 20 20  t-4.13"...      
a7c0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
a7d0: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
a7e0: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
a7f0: 6e 6e 65 6c 20 4d 4f 4e 4f 0d 0a 20 20 20 20 20  nnel MONO..     
a800: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a810: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
a820: 45 3a 20 48 61 73 20 57 69 6e 64 6f 77 73 20 73  E: Has Windows s
a830: 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62  upport been enab
a840: 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d  led (at compile-
a850: 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20  time)?..        
a860: 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  #..        if {!
a870: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
a880: 63 6f 6d 70 69 6c 65 57 69 6e 64 6f 77 73 29 5d  compileWindows)]
a890: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
a8a0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
a8b0: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
a8c0: 74 73 20 22 67 61 72 75 64 61 2d 31 2e 31 22 20  ts "garuda-1.1" 
a8d0: 61 6e 64 20 22 67 61 72 75 64 61 2d 31 2e 32 22  and "garuda-1.2"
a8e0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
a8f0: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
a900: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
a910: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 57 49  $test_channel WI
a920: 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20 20 7d  NDOWS..        }
a930: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
a940: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48         # NOTE: H
a950: 61 73 20 57 69 6e 64 6f 77 73 20 46 6f 72 6d 73  as Windows Forms
a960: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
a970: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
a980: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
a990: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
a9a0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
a9b0: 6f 28 63 6f 6d 70 69 6c 65 57 69 6e 46 6f 72 6d  o(compileWinForm
a9c0: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
a9d0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
a9e0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
a9f0: 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 31 30  tests "object-10
aa00: 2e 32 31 22 2c 20 22 74 63 6c 4c 6f 61 64 2d 31  .21", "tclLoad-1
aa10: 2e 32 22 2c 20 22 77 69 6e 46 6f 72 6d 73 2d 2a  .2", "winForms-*
aa20: 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  .*"...          
aa30: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65  #..          che
aa40: 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69  ckForCompileOpti
aa50: 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  on $test_channel
aa60: 20 57 49 4e 46 4f 52 4d 53 0d 0a 20 20 20 20 20   WINFORMS..     
aa70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
aa80: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
aa90: 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 63 6f  E: Has native co
aaa0: 64 65 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  de support been 
aab0: 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70  enabled (at comp
aac0: 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20  ile-time)?..    
aad0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69      #..        i
aae0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
aaf0: 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e 61 74 69 76   no(compileNativ
ab00: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
ab10: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ab20: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
ab30: 74 65 73 74 73 20 22 64 65 62 75 67 2d 33 2e 32  tests "debug-3.2
ab40: 22 2c 20 22 65 78 70 72 2d 33 2e 32 22 2c 20 61  ", "expr-3.2", a
ab50: 6e 64 20 22 68 6f 73 74 2d 31 2e 31 22 2e 0d 0a  nd "host-1.1"...
ab60: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
ab70: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
ab80: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
ab90: 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 41 54 49 56  st_channel NATIV
aba0: 45 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  E..        }....
abb0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
abc0: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e     # NOTE: Has n
abd0: 61 74 69 76 65 20 70 61 63 6b 61 67 65 20 73 75  ative package su
abe0: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
abf0: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
ac00: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
ac10: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
ac20: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
ac30: 6f 6d 70 69 6c 65 4e 61 74 69 76 65 50 61 63 6b  ompileNativePack
ac40: 61 67 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  age)]} then {.. 
ac50: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
ac60: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
ac70: 72 20 74 65 73 74 73 20 22 67 61 72 75 64 61 2d  r tests "garuda-
ac80: 31 2e 31 22 20 61 6e 64 20 22 67 61 72 75 64 61  1.1" and "garuda
ac90: 2d 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20  -1.2"...        
aca0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
acb0: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
acc0: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
acd0: 65 6c 20 4e 41 54 49 56 45 5f 50 41 43 4b 41 47  el NATIVE_PACKAG
ace0: 45 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  E..        }....
acf0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ad00: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e     # NOTE: Has n
ad10: 65 74 77 6f 72 6b 20 73 75 70 70 6f 72 74 20 62  etwork support b
ad20: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
ad30: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
ad40: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ad50: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
ad60: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e  ists no(compileN
ad70: 65 74 77 6f 72 6b 29 5d 7d 20 74 68 65 6e 20 7b  etwork)]} then {
ad80: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
ad90: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
ada0: 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f 6d 6d   For tests "comm
adb0: 61 6e 64 73 2d 31 2e 34 22 2c 20 22 73 6f 63 6b  ands-1.4", "sock
adc0: 65 74 2d 31 2e 2a 22 2c 20 22 73 6f 63 6b 65 74  et-1.*", "socket
add0: 2d 32 2e 31 22 2c 20 61 6e 64 0d 0a 20 20 20 20  -2.1", and..    
ade0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 22 73        #       "s
adf0: 6f 63 6b 65 74 2d 33 2e 31 22 2e 0d 0a 20 20 20  ocket-3.1"...   
ae00: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ae10: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
ae20: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
ae30: 63 68 61 6e 6e 65 6c 20 4e 45 54 57 4f 52 4b 0d  channel NETWORK.
ae40: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
ae50: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
ae60: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74   # NOTE: Has nat
ae70: 69 76 65 20 54 63 6c 20 73 75 70 70 6f 72 74 20  ive Tcl support 
ae80: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
ae90: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
aea0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
aeb0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
aec0: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
aed0: 54 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  Tcl)]} then {.. 
aee0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
aef0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
af00: 72 20 74 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64  r tests "command
af10: 73 2d 31 2e 31 2e 2a 22 2c 20 22 65 78 63 65 6c  s-1.1.*", "excel
af20: 2d 32 2e 32 22 2c 20 22 74 63 6c 43 61 6e 63 65  -2.2", "tclCance
af30: 6c 2d 31 2e 31 22 2c 0d 0a 20 20 20 20 20 20 20  l-1.1",..       
af40: 20 20 20 23 20 20 20 20 20 20 20 22 74 63 6c 45     #       "tclE
af50: 6e 63 6f 64 69 6e 67 2d 31 2e 2a 22 2c 20 22 74  ncoding-1.*", "t
af60: 63 6c 45 72 72 6f 72 49 6e 66 6f 2d 31 2e 2a 22  clErrorInfo-1.*"
af70: 2c 20 22 74 63 6c 4c 6f 61 64 2d 31 2e 2a 22 2c  , "tclLoad-1.*",
af80: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
af90: 20 20 20 20 22 74 63 6c 52 65 73 65 74 43 61 6e      "tclResetCan
afa0: 63 65 6c 2d 31 2e 31 22 2c 20 22 74 63 6c 52 65  cel-1.1", "tclRe
afb0: 73 65 74 43 61 6e 63 65 6c 2d 32 2e 31 22 2c 0d  setCancel-2.1",.
afc0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20  .          #    
afd0: 20 20 20 22 74 63 6c 52 65 73 65 74 43 61 6e 63     "tclResetCanc
afe0: 65 6c 2d 32 2e 32 22 2c 20 22 74 63 6c 52 65 73  el-2.2", "tclRes
aff0: 65 74 43 61 6e 63 65 6c 2d 33 2e 31 22 2c 0d 0a  etCancel-3.1",..
b000: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
b010: 20 20 22 74 63 6c 52 65 73 65 74 43 61 6e 63 65    "tclResetCance
b020: 6c 2d 34 2e 31 22 2c 20 22 74 63 6c 53 65 74 2d  l-4.1", "tclSet-
b030: 31 2e 31 22 2c 20 61 6e 64 20 22 74 63 6c 53 75  1.1", and "tclSu
b040: 62 73 74 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20  bst-1.1"...     
b050: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
b060: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
b070: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
b080: 61 6e 6e 65 6c 20 54 43 4c 0d 0a 20 20 20 20 20  annel TCL..     
b090: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
b0a0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
b0b0: 45 3a 20 48 61 73 20 58 4d 4c 20 73 75 70 70 6f  E: Has XML suppo
b0c0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
b0d0: 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  (at compile-time
b0e0: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
b0f0: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
b100: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
b110: 69 6c 65 58 6d 6c 29 5d 7d 20 74 68 65 6e 20 7b  ileXml)]} then {
b120: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
b130: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
b140: 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f 6d 6d   For tests "comm
b150: 61 6e 64 73 2d 31 2e 34 22 2c 20 22 6f 62 6a 65  ands-1.4", "obje
b160: 63 74 2d 37 2e 33 22 20 61 6e 64 20 22 78 6d 6c  ct-7.3" and "xml
b170: 2d 31 2e 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  -1.1.*"...      
b180: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
b190: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
b1a0: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
b1b0: 6e 6e 65 6c 20 58 4d 4c 0d 0a 20 20 20 20 20 20  nnel XML..      
b1c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
b1d0: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
b1e0: 3a 20 48 61 73 20 73 65 72 69 61 6c 69 7a 61 74  : Has serializat
b1f0: 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
b200: 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d   enabled (at com
b210: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
b220: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
b230: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
b240: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 53 65 72 69  s no(compileSeri
b250: 61 6c 69 7a 61 74 69 6f 6e 29 5d 7d 20 74 68 65  alization)]} the
b260: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
b270: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
b280: 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69 6e  TE: For test "in
b290: 74 65 72 70 2d 31 2e 31 30 22 2e 0d 0a 20 20 20  terp-1.10"...   
b2a0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
b2b0: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
b2c0: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
b2d0: 63 68 61 6e 6e 65 6c 20 53 45 52 49 41 4c 49 5a  channel SERIALIZ
b2e0: 41 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 7d  ATION..        }
b2f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
b300: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48         # NOTE: H
b310: 61 73 20 64 65 64 69 63 61 74 65 64 20 74 65 73  as dedicated tes
b320: 74 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  t support been e
b330: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
b340: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
b350: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
b360: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
b370: 6e 6f 28 63 6f 6d 70 69 6c 65 54 65 73 74 29 5d  no(compileTest)]
b380: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
b390: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
b3a0: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
b3b0: 74 73 20 22 62 61 73 69 63 2d 31 2e 32 30 22 2c  ts "basic-1.20",
b3c0: 20 22 62 61 73 69 63 2d 31 2e 32 31 22 2c 20 22   "basic-1.21", "
b3d0: 66 75 6e 63 74 69 6f 6e 2d 31 2e 31 22 2c 0d 0a  function-1.1",..
b3e0: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
b3f0: 20 20 22 6f 62 6a 65 63 74 2d 32 2e 31 22 2c 20    "object-2.1", 
b400: 22 6f 62 6a 65 63 74 2d 33 2e 31 22 2c 20 22 6f  "object-3.1", "o
b410: 62 6a 65 63 74 2d 34 2e 31 22 2c 20 22 6f 62 6a  bject-4.1", "obj
b420: 65 63 74 2d 37 2e 31 22 2c 0d 0a 20 20 20 20 20  ect-7.1",..     
b430: 20 20 20 20 20 23 20 20 20 20 20 20 20 22 6f 62       #       "ob
b440: 6a 65 63 74 2d 37 2e 32 22 2c 20 22 6f 62 6a 65  ject-7.2", "obje
b450: 63 74 2d 37 2e 34 22 2c 20 22 6f 62 6a 65 63 74  ct-7.4", "object
b460: 2d 31 34 2e 34 22 2c 20 22 6f 62 6a 65 63 74 2d  -14.4", "object-
b470: 31 34 2e 35 22 2c 0d 0a 20 20 20 20 20 20 20 20  14.5",..        
b480: 20 20 23 20 20 20 20 20 20 20 22 6f 62 6a 65 63    #       "objec
b490: 74 2d 31 34 2e 36 22 2c 20 22 72 65 6d 6f 74 69  t-14.6", "remoti
b4a0: 6e 67 53 65 72 76 65 72 2d 31 2e 2a 22 2c 20 61  ngServer-1.*", a
b4b0: 6e 64 20 22 64 65 62 75 67 2d 35 2e 2a 22 2e 0d  nd "debug-5.*"..
b4c0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
b4d0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
b4e0: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74  CompileOption $t
b4f0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 54 45 53 54  est_channel TEST
b500: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
b510: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
b520: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 74 68    # NOTE: Has th
b530: 72 65 61 64 69 6e 67 20 73 75 70 70 6f 72 74 20  reading support 
b540: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
b550: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
b560: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
b570: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
b580: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
b590: 54 68 72 65 61 64 69 6e 67 29 5d 7d 20 74 68 65  Threading)]} the
b5a0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
b5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
b5c0: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6f  TE: For tests "o
b5d0: 62 6a 65 63 74 2d 31 30 2e 32 22 20 61 6e 64 20  bject-10.2" and 
b5e0: 22 6f 62 6a 65 63 74 2d 31 30 2e 33 22 2e 0d 0a  "object-10.3"...
b5f0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
b600: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
b610: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
b620: 73 74 5f 63 68 61 6e 6e 65 6c 20 54 48 52 45 41  st_channel THREA
b630: 44 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 7d 0d  DING..        }.
b640: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
b650: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
b660: 73 20 54 63 6c 20 74 68 72 65 61 64 69 6e 67 20  s Tcl threading 
b670: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
b680: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
b690: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
b6a0: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
b6b0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
b6c0: 28 63 6f 6d 70 69 6c 65 54 63 6c 54 68 72 65 61  (compileTclThrea
b6d0: 64 65 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ded)]} then {.. 
b6e0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
b6f0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
b700: 72 20 74 65 73 74 73 20 22 74 63 6c 4c 6f 61 64  r tests "tclLoad
b710: 2d 31 2e 35 22 20 61 6e 64 20 22 74 63 6c 4c 6f  -1.5" and "tclLo
b720: 61 64 2d 31 2e 36 22 2e 0d 0a 20 20 20 20 20 20  ad-1.6"...      
b730: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
b740: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
b750: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
b760: 6e 6e 65 6c 20 54 43 4c 5f 54 48 52 45 41 44 45  nnel TCL_THREADE
b770: 44 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  D..        }....
b780: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
b790: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 54     # NOTE: Has T
b7a0: 63 6c 20 69 73 6f 6c 61 74 65 64 20 69 6e 74 65  cl isolated inte
b7b0: 72 70 72 65 74 65 72 20 74 68 72 65 61 64 20 73  rpreter thread s
b7c0: 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62  upport been enab
b7d0: 6c 65 64 20 28 61 74 0d 0a 20 20 20 20 20 20 20  led (at..       
b7e0: 20 23 20 20 20 20 20 20 20 63 6f 6d 70 69 6c 65   #       compile
b7f0: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
b800: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
b810: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
b820: 28 63 6f 6d 70 69 6c 65 54 63 6c 54 68 72 65 61  (compileTclThrea
b830: 64 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ds)]} then {..  
b840: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
b850: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
b860: 20 74 65 73 74 73 20 22 74 63 6c 4c 6f 61 64 2d   tests "tclLoad-
b870: 31 2e 35 22 20 61 6e 64 20 22 74 63 6c 4c 6f 61  1.5" and "tclLoa
b880: 64 2d 31 2e 36 22 2e 0d 0a 20 20 20 20 20 20 20  d-1.6"...       
b890: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
b8a0: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
b8b0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
b8c0: 6e 65 6c 20 54 43 4c 5f 54 48 52 45 41 44 53 0d  nel TCL_THREADS.
b8d0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
b8e0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
b8f0: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 47 44 49   # NOTE: Has GDI
b900: 2b 20 64 72 61 77 69 6e 67 20 73 75 70 70 6f 72  + drawing suppor
b910: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
b920: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
b930: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
b940: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
b950: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
b960: 6c 65 44 72 61 77 69 6e 67 29 5d 7d 20 74 68 65  leDrawing)]} the
b970: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 63  n {..          c
b980: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
b990: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
b9a0: 65 6c 20 44 52 41 57 49 4e 47 0d 0a 20 20 20 20  el DRAWING..    
b9b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b9c0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
b9d0: 54 45 3a 20 48 61 73 20 57 69 6e 46 6f 72 6d 73  TE: Has WinForms
b9e0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
b9f0: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
ba00: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
ba10: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
ba20: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
ba30: 6f 28 63 6f 6d 70 69 6c 65 57 69 6e 46 6f 72 6d  o(compileWinForm
ba40: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
ba50: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
ba60: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
ba70: 73 74 5f 63 68 61 6e 6e 65 6c 20 57 49 4e 46 4f  st_channel WINFO
ba80: 52 4d 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  RMS..        }..
ba90: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
baa0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
bab0: 20 72 75 6e 74 69 6d 65 20 6c 69 63 65 6e 73 65   runtime license
bac0: 20 63 68 65 63 6b 69 6e 67 20 73 75 70 70 6f 72   checking suppor
bad0: 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 20  t been disabled 
bae0: 28 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20  (at..        #  
baf0: 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d       compile-tim
bb00: 65 29 2e 20 20 54 68 69 73 20 6f 6e 6c 79 20 61  e).  This only a
bb10: 70 70 6c 69 65 73 20 74 6f 20 74 68 69 72 64 2d  pplies to third-
bb20: 70 61 72 74 79 20 70 6c 75 67 69 6e 73 0d 0a 20  party plugins.. 
bb30: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 61         #       a
bb40: 6e 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  nd applications.
bb50: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
bb60: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
bb70: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
bb80: 65 4c 69 63 65 6e 73 69 6e 67 29 5d 7d 20 74 68  eLicensing)]} th
bb90: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
bba0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
bbb0: 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74  OTE: This is not
bbc0: 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20   currently used 
bbd0: 62 79 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20  by any tests... 
bbe0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
bbf0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
bc00: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
bc10: 74 5f 63 68 61 6e 6e 65 6c 20 4c 49 43 45 4e 53  t_channel LICENS
bc20: 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ING..        }..
bc30: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
bc40: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
bc50: 4f 54 45 3a 20 48 61 73 20 64 79 6e 61 6d 69 63  OTE: Has dynamic
bc60: 20 6c 6f 61 64 69 6e 67 20 74 65 73 74 69 6e 67   loading testing
bc70: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
bc80: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
bc90: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
bca0: 78 69 73 74 73 20 6e 6f 28 64 79 6e 61 6d 69 63  xists no(dynamic
bcb0: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
bcc0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
bcd0: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f  E: For tests "co
bce0: 6d 6d 61 6e 64 73 2d 31 2e 31 2e 2a 22 2c 20 22  mmands-1.1.*", "
bcf0: 6c 69 62 72 61 72 79 2d 33 2e 2a 22 2c 20 61 6e  library-3.*", an
bd00: 64 20 22 74 63 6c 2a 2d 2a 2e 2a 22 2e 0d 0a 20  d "tcl*-*.*"... 
bd10: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
bd20: 65 63 6b 46 6f 72 44 79 6e 61 6d 69 63 4c 6f 61  eckForDynamicLoa
bd30: 64 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e 6e  ding $test_chann
bd40: 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  el..    }....   
bd50: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
bd60: 48 61 73 20 54 63 6c 20 74 65 73 74 69 6e 67 20  Has Tcl testing 
bd70: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
bd80: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
bd90: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
bda0: 69 73 74 73 20 6e 6f 28 74 63 6c 29 5d 7d 20 74  ists no(tcl)]} t
bdb0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 69 66 20  hen {..      if 
bdc0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
bdd0: 6f 28 74 63 6c 49 6e 73 74 61 6c 6c 73 29 5d 7d  o(tclInstalls)]}
bde0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
bdf0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
be00: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63  TE: For tests "c
be10: 6f 6d 6d 61 6e 64 73 2d 31 2e 31 2e 2a 22 2c 20  ommands-1.1.*", 
be20: 22 6c 69 62 72 61 72 79 2d 33 2e 2a 22 2c 20 61  "library-3.*", a
be30: 6e 64 20 22 74 63 6c 2a 2d 2a 2e 2a 22 2e 0d 0a  nd "tcl*-*.*"...
be40: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
be50: 20 20 20 63 68 65 63 6b 46 6f 72 54 63 6c 49 6e     checkForTclIn
be60: 73 74 61 6c 6c 73 20 24 74 65 73 74 5f 63 68 61  stalls $test_cha
be70: 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  nnel..      }...
be80: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
be90: 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 52  o exists no(tclR
bea0: 65 61 64 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  eady)]} then {..
beb0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
bec0: 54 63 6c 52 65 61 64 79 20 24 74 65 73 74 5f 63  TclReady $test_c
bed0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d  hannel..      }.
bee0: 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  ...      if {![i
bef0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63  nfo exists no(tc
bf00: 6c 53 68 65 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b  lShell)]} then {
bf10: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
bf20: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
bf30: 20 74 65 73 74 20 22 67 61 72 75 64 61 2d 31 2e   test "garuda-1.
bf40: 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  1"...        #..
bf50: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
bf60: 54 63 6c 53 68 65 6c 6c 20 24 74 65 73 74 5f 63  TclShell $test_c
bf70: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d  hannel..      }.
bf80: 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  ...      if {![i
bf90: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 6b  nfo exists no(tk
bfa0: 50 61 63 6b 61 67 65 29 5d 7d 20 74 68 65 6e 20  Package)]} then 
bfb0: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
bfc0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
bfd0: 72 20 74 65 73 74 20 22 74 63 6c 4c 6f 61 64 2d  r test "tclLoad-
bfe0: 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  1.1"...        #
bff0: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
c000: 6f 72 54 6b 50 61 63 6b 61 67 65 20 24 74 65 73  orTkPackage $tes
c010: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 20  t_channel..     
c020: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
c030: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
c040: 48 61 73 20 63 75 73 74 6f 6d 20 74 65 73 74 20  Has custom test 
c050: 6d 65 74 68 6f 64 20 73 75 70 70 6f 72 74 20 62  method support b
c060: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
c070: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
c080: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
c090: 6f 72 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f 20  ore)] && ![info 
c0a0: 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 29 5d  exists no(test)]
c0b0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
c0c0: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
c0d0: 20 48 61 73 20 73 63 72 69 70 74 20 73 74 72 65   Has script stre
c0e0: 61 6d 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  am testing suppo
c0f0: 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
c100: 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ?..      #..    
c110: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
c120: 73 74 73 20 6e 6f 28 74 65 73 74 53 63 72 69 70  sts no(testScrip
c130: 74 53 74 72 65 61 6d 29 5d 7d 20 74 68 65 6e 20  tStream)]} then 
c140: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
c150: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
c160: 72 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31  r tests "basic-1
c170: 2e 34 36 22 20 61 6e 64 20 22 62 61 73 69 63 2d  .46" and "basic-
c180: 31 2e 34 37 22 2e 0d 0a 20 20 20 20 20 20 20 20  1.47"...        
c190: 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
c1a0: 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
c1b0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
c1c0: 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
c1d0: 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
c1e0: 20 20 2a 54 65 73 74 53 63 72 69 70 74 53 74 72    *TestScriptStr
c1f0: 65 61 6d 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  eam*..      }...
c200: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
c210: 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
c220: 4c 6f 61 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Load)]} then {..
c230: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c240: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
c250: 65 73 74 73 20 22 6c 6f 61 64 2d 31 2e 36 22 20  ests "load-1.6" 
c260: 61 6e 64 20 22 6c 6f 61 64 2d 31 2e 37 22 2e 0d  and "load-1.7"..
c270: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
c280: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
c290: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
c2a0: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
c2b0: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
c2c0: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
c2d0: 4c 6f 61 64 50 6c 75 67 69 6e 56 69 61 42 79 74  LoadPluginViaByt
c2e0: 65 73 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  es*..      }....
c2f0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
c300: 20 4e 4f 54 45 3a 20 48 61 73 20 44 61 74 65 54   NOTE: Has DateT
c310: 69 6d 65 20 74 65 73 74 69 6e 67 20 73 75 70 70  ime testing supp
c320: 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
c330: 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
c340: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
c350: 69 73 74 73 20 6e 6f 28 74 65 73 74 44 61 74 65  ists no(testDate
c360: 54 69 6d 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Time)]} then {..
c370: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c380: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
c390: 65 73 74 20 22 76 77 61 69 74 2d 31 2e 31 31 22  est "vwait-1.11"
c3a0: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
c3b0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
c3c0: 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
c3d0: 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
c3e0: 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
c3f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
c400: 73 74 53 65 74 44 61 74 65 54 69 6d 65 4e 6f 77  stSetDateTimeNow
c410: 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20 20 20  Callback*..     
c420: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
c430: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
c440: 20 72 65 6d 6f 74 69 6e 67 20 74 65 73 74 69 6e   remoting testin
c450: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
c460: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
c470: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
c480: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
c490: 73 74 52 65 6d 6f 74 69 6e 67 29 5d 7d 20 74 68  stRemoting)]} th
c4a0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
c4b0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
c4c0: 20 46 6f 72 20 74 65 73 74 73 20 22 72 65 6d 6f   For tests "remo
c4d0: 74 69 6e 67 53 65 72 76 65 72 2d 31 2e 2a 22 2e  tingServer-1.*".
c4e0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
c4f0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
c500: 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
c510: 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
c520: 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
c530: 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
c540: 74 52 65 6d 6f 74 69 6e 67 2a 0d 0a 20 20 20 20  tRemoting*..    
c550: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
c560: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
c570: 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 74  s asynchronous t
c580: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
c590: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
c5a0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
c5b0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
c5c0: 6e 6f 28 74 65 73 74 41 73 79 6e 63 68 72 6f 6e  no(testAsynchron
c5d0: 6f 75 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ous)]} then {.. 
c5e0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c5f0: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
c600: 73 74 73 20 22 62 61 73 69 63 2d 31 2e 32 30 22  sts "basic-1.20"
c610: 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 32 31   and "basic-1.21
c620: 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
c630: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
c640: 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
c650: 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
c660: 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
c670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
c680: 65 73 74 45 76 61 6c 75 61 74 65 41 73 79 6e 63  estEvaluateAsync
c690: 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  *..      }....  
c6a0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
c6b0: 4f 54 45 3a 20 48 61 73 20 63 75 73 74 6f 6d 20  OTE: Has custom 
c6c0: 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 69 6e 67  function testing
c6d0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
c6e0: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
c6f0: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
c700: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
c710: 74 46 75 6e 63 74 69 6f 6e 29 5d 7d 20 74 68 65  tFunction)]} the
c720: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
c730: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
c740: 46 6f 72 20 74 65 73 74 20 22 66 75 6e 63 74 69  For test "functi
c750: 6f 6e 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20  on-1.1"...      
c760: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
c770: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
c780: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
c790: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
c7a0: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
c7b0: 20 20 20 20 2a 54 65 73 74 41 64 64 46 75 6e 63      *TestAddFunc
c7c0: 74 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  tion*....       
c7d0: 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
c7e0: 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
c7f0: 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
c800: 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
c810: 20 20 20 20 20 20 20 20 2a 54 65 73 74 52 65 6d          *TestRem
c820: 6f 76 65 46 75 6e 63 74 69 6f 6e 2a 0d 0a 0d 0a  oveFunction*....
c830: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c840: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
c850: 65 73 74 73 20 22 66 75 6e 63 74 69 6f 6e 2d 35  ests "function-5
c860: 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .*"...        #.
c870: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
c880: 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
c890: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
c8a0: 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
c8b0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
c8c0: 2a 54 65 73 74 41 64 64 4e 61 6d 65 64 46 75 6e  *TestAddNamedFun
c8d0: 63 74 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20  ction*....      
c8e0: 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
c8f0: 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
c900: 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
c910: 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
c920: 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52 65           *TestRe
c930: 6d 6f 76 65 4e 61 6d 65 64 46 75 6e 63 74 69 6f  moveNamedFunctio
c940: 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  n*....        #.
c950: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
c960: 20 46 6f 72 20 74 65 73 74 20 22 69 6e 74 65 72   For test "inter
c970: 70 2d 31 2e 31 39 22 2e 0d 0a 20 20 20 20 20 20  p-1.19"...      
c980: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
c990: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
c9a0: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
c9b0: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
c9c0: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
c9d0: 20 20 20 20 2a 54 65 73 74 41 64 64 4e 61 6d 65      *TestAddName
c9e0: 64 46 75 6e 63 74 69 6f 6e 32 2a 0d 0a 0d 0a 20  dFunction2*.... 
c9f0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ca00: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
ca10: 73 74 73 20 22 66 75 6e 63 74 69 6f 6e 2d 35 2e  sts "function-5.
ca20: 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *"...        #..
ca30: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
ca40: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
ca50: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
ca60: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
ca70: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
ca80: 54 65 73 74 41 64 64 4e 61 6d 65 64 46 75 6e 63  TestAddNamedFunc
ca90: 74 69 6f 6e 33 2a 0d 0a 20 20 20 20 20 20 7d 0d  tion3*..      }.
caa0: 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
cab0: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 77 72    # NOTE: Has wr
cac0: 69 74 65 2d 62 6f 78 20 74 65 73 74 69 6e 67 20  ite-box testing 
cad0: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
cae0: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
caf0: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
cb00: 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
cb10: 57 72 69 74 65 42 6f 78 29 5d 7d 20 74 68 65 6e  WriteBox)]} then
cb20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
cb30: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
cb40: 6f 72 20 74 65 73 74 73 20 22 64 65 62 75 67 2d  or tests "debug-
cb50: 35 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  5.*"...        #
cb60: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
cb70: 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
cb80: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
cb90: 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
cba0: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
cbb0: 20 2a 54 65 73 74 57 72 69 74 65 42 6f 78 2a 0d   *TestWriteBox*.
cbc0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
cbd0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
cbe0: 45 3a 20 48 61 73 20 73 68 65 6c 6c 20 74 65 73  E: Has shell tes
cbf0: 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
cc00: 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
cc10: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
cc20: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
cc30: 28 74 65 73 74 53 68 65 6c 6c 29 5d 7d 20 74 68  (testShell)]} th
cc40: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
cc50: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
cc60: 20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75 67   For test "debug
cc70: 2d 31 2e 33 22 2e 0d 0a 20 20 20 20 20 20 20 20  -1.3"...        
cc80: 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
cc90: 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
cca0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
ccb0: 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
ccc0: 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
ccd0: 20 20 2a 54 65 73 74 53 68 65 6c 6c 4d 61 69 6e    *TestShellMain
cce0: 43 6f 72 65 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  Core*..      }..
ccf0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
cd00: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 71 75 69   # NOTE: Has qui
cd10: 65 74 20 70 72 6f 70 65 72 74 79 20 74 65 73 74  et property test
cd20: 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
cd30: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
cd40: 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
cd50: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
cd60: 74 65 73 74 53 65 74 51 75 69 65 74 29 5d 7d 20  testSetQuiet)]} 
cd70: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
cd80: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
cd90: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61  E: For tests "ba
cda0: 73 69 63 2d 31 2e 33 36 22 20 61 6e 64 20 22 64  sic-1.36" and "d
cdb0: 65 62 75 67 2d 31 2e 33 22 2e 0d 0a 20 20 20 20  ebug-1.3"...    
cdc0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
cdd0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
cde0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
cdf0: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
ce00: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
ce10: 20 20 20 20 20 20 2a 54 65 73 74 53 65 74 51 75        *TestSetQu
ce20: 69 65 74 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  iet*..      }...
ce30: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
ce40: 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 6d 70  # NOTE: Has comp
ce50: 6c 61 69 6e 74 20 74 65 73 74 69 6e 67 20 73 75  laint testing su
ce60: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
ce70: 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20  led?..      #.. 
ce80: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
ce90: 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 65  exists no(testSe
cea0: 74 43 6f 6d 70 6c 61 69 6e 29 5d 7d 20 74 68 65  tComplain)]} the
ceb0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
cec0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
ced0: 54 68 69 73 20 69 73 20 6e 6f 74 20 63 75 72 72  This is not curr
cee0: 65 6e 74 6c 79 20 75 73 65 64 20 62 79 20 61 6e  ently used by an
cef0: 79 20 74 65 73 74 73 2e 0d 0a 20 20 20 20 20 20  y tests...      
cf00: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
cf10: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
cf20: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
cf30: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
cf40: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
cf50: 20 20 20 20 2a 54 65 73 74 53 65 74 43 6f 6d 70      *TestSetComp
cf60: 6c 61 69 6e 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  lain*..      }..
cf70: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
cf80: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6c 69 6e   # NOTE: Has lin
cf90: 6b 65 64 20 76 61 72 69 61 62 6c 65 20 74 65 73  ked variable tes
cfa0: 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
cfb0: 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
cfc0: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
cfd0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
cfe0: 28 74 65 73 74 4c 69 6e 6b 65 64 56 61 72 69 61  (testLinkedVaria
cff0: 62 6c 65 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  bles)]} then {..
d000: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d010: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
d020: 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e 33 39  ests "basic-1.39
d030: 22 2c 20 22 62 61 73 69 63 2d 31 2e 34 30 22 2c  ", "basic-1.40",
d040: 20 22 62 61 73 69 63 2d 31 2e 34 31 22 2c 0d 0a   "basic-1.41",..
d050: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
d060: 22 62 61 73 69 63 2d 31 2e 34 32 22 2c 20 61 6e  "basic-1.42", an
d070: 64 20 22 62 61 73 69 63 2d 31 2e 34 33 22 2e 0d  d "basic-1.43"..
d080: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
d090: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
d0a0: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
d0b0: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
d0c0: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
d0d0: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
d0e0: 53 65 74 56 61 72 69 61 62 6c 65 4c 69 6e 6b 73  SetVariableLinks
d0f0: 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
d100: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
d110: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
d120: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
d130: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
d140: 20 20 20 20 2a 54 65 73 74 55 6e 73 65 74 56 61      *TestUnsetVa
d150: 72 69 61 62 6c 65 4c 69 6e 6b 73 2a 0d 0a 20 20  riableLinks*..  
d160: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
d170: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
d180: 48 61 73 20 73 79 73 74 65 6d 20 61 72 72 61 79  Has system array
d190: 20 76 61 72 69 61 62 6c 65 20 74 65 73 74 69 6e   variable testin
d1a0: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
d1b0: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
d1c0: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
d1d0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
d1e0: 73 74 53 79 73 74 65 6d 41 72 72 61 79 56 61 72  stSystemArrayVar
d1f0: 69 61 62 6c 65 73 29 5d 7d 20 74 68 65 6e 20 7b  iables)]} then {
d200: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
d210: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
d220: 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e   tests "basic-1.
d230: 36 32 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 33  62", "basic-1.63
d240: 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 34 22 2c  ", "basic-1.64",
d250: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
d260: 20 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 36    and "basic-1.6
d270: 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  5"...        #..
d280: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
d290: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
d2a0: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
d2b0: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
d2c0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
d2d0: 54 65 73 74 49 6e 74 50 74 72 43 68 61 6e 67 65  TestIntPtrChange
d2e0: 54 79 70 65 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d  TypeCallback*...
d2f0: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
d300: 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
d310: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
d320: 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
d330: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
d340: 2a 54 65 73 74 53 65 74 56 61 72 69 61 62 6c 65  *TestSetVariable
d350: 53 79 73 74 65 6d 41 72 72 61 79 2a 0d 0a 0d 0a  SystemArray*....
d360: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
d370: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
d380: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
d390: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
d3a0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
d3b0: 54 65 73 74 55 6e 73 65 74 56 61 72 69 61 62 6c  TestUnsetVariabl
d3c0: 65 53 79 73 74 65 6d 41 72 72 61 79 2a 0d 0a 20  eSystemArray*.. 
d3d0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d3e0: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
d3f0: 20 48 61 73 20 66 69 65 6c 64 20 74 65 73 74 69   Has field testi
d400: 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
d410: 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
d420: 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
d430: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
d440: 65 73 74 46 69 65 6c 64 73 29 5d 7d 20 74 68 65  estFields)]} the
d450: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
d460: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
d470: 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63  For tests "basic
d480: 2d 31 2e 33 39 22 2c 20 22 62 61 73 69 63 2d 31  -1.39", "basic-1
d490: 2e 34 30 22 2c 20 22 62 61 73 69 63 2d 31 2e 34  .40", "basic-1.4
d4a0: 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 23 20 20  1",..        #  
d4b0: 20 20 20 20 20 22 62 61 73 69 63 2d 31 2e 34 32       "basic-1.42
d4c0: 22 2c 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e  ", and "basic-1.
d4d0: 34 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  43"...        #.
d4e0: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
d4f0: 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
d500: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
d510: 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
d520: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
d530: 2a 70 72 69 76 61 74 65 46 69 65 6c 64 2a 0d 0a  *privateField*..
d540: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
d550: 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
d560: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
d570: 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
d580: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
d590: 20 2a 6f 62 6a 65 63 74 46 69 65 6c 64 2a 0d 0a   *objectField*..
d5a0: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
d5b0: 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
d5c0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
d5d0: 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
d5e0: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
d5f0: 20 2a 69 6e 74 46 69 65 6c 64 2a 0d 0a 20 20 20   *intField*..   
d600: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
d610: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
d620: 61 73 20 70 72 6f 70 65 72 74 79 20 74 65 73 74  as property test
d630: 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
d640: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
d650: 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
d660: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
d670: 74 65 73 74 50 72 6f 70 65 72 74 69 65 73 29 5d  testProperties)]
d680: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
d690: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
d6a0: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
d6b0: 62 61 73 69 63 2d 31 2e 33 39 22 2c 20 22 62 61  basic-1.39", "ba
d6c0: 73 69 63 2d 31 2e 34 30 22 2c 20 22 62 61 73 69  sic-1.40", "basi
d6d0: 63 2d 31 2e 34 31 22 2c 0d 0a 20 20 20 20 20 20  c-1.41",..      
d6e0: 20 20 23 20 20 20 20 20 20 20 22 62 61 73 69 63    #       "basic
d6f0: 2d 31 2e 34 32 22 2c 20 61 6e 64 20 22 62 61 73  -1.42", and "bas
d700: 69 63 2d 31 2e 34 33 22 2e 0d 0a 20 20 20 20 20  ic-1.43"...     
d710: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
d720: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
d730: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
d740: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
d750: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
d760: 20 20 20 20 20 2a 67 65 74 5f 53 69 6d 70 6c 65       *get_Simple
d770: 49 6e 74 50 72 6f 70 65 72 74 79 2a 0d 0a 0d 0a  IntProperty*....
d780: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d790: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
d7a0: 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 22  est "object-3.1"
d7b0: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
d7c0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
d7d0: 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
d7e0: 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
d7f0: 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
d800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 67 65  .            *ge
d810: 74 5f 49 74 65 6d 2a 0d 0a 0d 0a 20 20 20 20 20  t_Item*....     
d820: 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
d830: 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
d840: 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
d850: 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
d860: 20 20 20 20 20 20 20 20 20 20 2a 73 65 74 5f 49            *set_I
d870: 74 65 6d 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  tem*..      }...
d880: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
d890: 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 72 65  # NOTE: Has core
d8a0: 20 6d 61 72 73 68 61 6c 6c 65 72 20 74 65 73 74   marshaller test
d8b0: 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
d8c0: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
d8d0: 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
d8e0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
d8f0: 74 65 73 74 4d 61 72 73 68 61 6c 6c 65 72 29 5d  testMarshaller)]
d900: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
d910: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
d920: 4f 54 45 3a 20 54 68 65 73 65 20 61 72 65 20 6e  OTE: These are n
d930: 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65  ot currently use
d940: 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e 0d  d by any tests..
d950: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
d960: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
d970: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
d980: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
d990: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
d9a0: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
d9b0: 53 61 76 65 4f 62 6a 65 63 74 73 2a 0d 0a 0d 0a  SaveObjects*....
d9c0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
d9d0: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
d9e0: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
d9f0: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
da00: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
da10: 54 65 73 74 52 65 73 74 6f 72 65 4f 62 6a 65 63  TestRestoreObjec
da20: 74 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ts*....        #
da30: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
da40: 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
da50: 63 2d 31 2e 32 39 22 2e 0d 0a 20 20 20 20 20 20  c-1.29"...      
da60: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
da70: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
da80: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
da90: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
daa0: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
dab0: 20 20 20 20 2a 54 65 73 74 45 78 65 63 75 74 65      *TestExecute
dac0: 53 74 61 74 69 63 44 65 6c 65 67 61 74 65 73 2a  StaticDelegates*
dad0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
dae0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
daf0: 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63 2d  or tests "basic-
db00: 31 2e 33 30 22 20 61 6e 64 20 22 62 61 73 69 63  1.30" and "basic
db10: 2d 31 2e 33 31 22 2e 0d 0a 20 20 20 20 20 20 20  -1.31"...       
db20: 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
db30: 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
db40: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
db50: 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
db60: 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
db70: 20 20 20 2a 54 65 73 74 45 78 65 63 75 74 65 44     *TestExecuteD
db80: 65 6c 65 67 61 74 65 43 6f 6d 6d 61 6e 64 73 2a  elegateCommands*
db90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
dba0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
dbb0: 6f 72 20 74 65 73 74 20 22 6e 61 6d 65 73 70 61  or test "namespa
dbc0: 63 65 2d 39 37 2e 31 30 22 2e 0d 0a 20 20 20 20  ce-97.10"...    
dbd0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
dbe0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
dbf0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
dc00: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
dc10: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
dc20: 20 20 20 20 20 20 2a 54 65 73 74 52 65 6e 61 6d        *TestRenam
dc30: 65 4e 61 6d 65 73 70 61 63 65 2a 0d 0a 0d 0a 20  eNamespace*.... 
dc40: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
dc50: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
dc60: 73 74 20 22 6f 62 6a 65 63 74 2d 32 2e 31 22 2e  st "object-2.1".
dc70: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
dc80: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
dc90: 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
dca0: 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
dcb0: 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
dcc0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
dcd0: 74 43 6f 6d 70 6c 65 78 4d 65 74 68 6f 64 2a 0d  tComplexMethod*.
dce0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
dcf0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
dd00: 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 32  r test "object-2
dd10: 2e 31 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  .12"...        #
dd20: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
dd30: 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
dd40: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
dd50: 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
dd60: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
dd70: 20 2a 54 65 73 74 4d 6f 72 65 43 6f 6d 70 6c 65   *TestMoreComple
dd80: 78 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20 20 20 20  xMethod*....    
dd90: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
dda0: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
ddb0: 22 6f 62 6a 65 63 74 2d 32 2e 33 22 2e 0d 0a 20  "object-2.3"... 
ddc0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ddd0: 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
dde0: 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
ddf0: 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
de00: 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
de10: 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 54 6f           *TestTo
de20: 48 65 78 61 64 65 63 69 6d 61 6c 53 74 72 69 6e  HexadecimalStrin
de30: 67 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68  g*....        ch
de40: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
de50: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
de60: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
de70: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
de80: 20 20 20 20 20 2a 54 65 73 74 4d 75 6c 74 69 32       *TestMulti2
de90: 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20  Array*....      
dea0: 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
deb0: 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
dec0: 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
ded0: 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
dee0: 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 4d 75           *TestMu
def0: 6c 74 69 33 41 72 72 61 79 2a 0d 0a 0d 0a 20 20  lti3Array*....  
df00: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
df10: 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
df20: 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
df30: 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
df40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
df50: 73 74 4e 65 73 74 65 64 41 72 72 61 79 2a 0d 0a  stNestedArray*..
df60: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
df70: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
df80: 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 32 2e   test "object-2.
df90: 31 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  11"...        #.
dfa0: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
dfb0: 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
dfc0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
dfd0: 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
dfe0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
dff0: 2a 54 65 73 74 4f 62 6a 65 63 74 41 73 41 72 72  *TestObjectAsArr
e000: 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ay*....        #
e010: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
e020: 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6f 62 6a  : For tests "obj
e030: 65 63 74 2d 33 2e 36 22 20 61 6e 64 20 22 6f 62  ect-3.6" and "ob
e040: 6a 65 63 74 2d 33 2e 37 22 2e 0d 0a 20 20 20 20  ject-3.7"...    
e050: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
e060: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
e070: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
e080: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
e090: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
e0a0: 20 20 20 20 20 20 2a 54 65 73 74 53 74 72 69 6e        *TestStrin
e0b0: 67 49 4c 69 73 74 52 65 74 75 72 6e 56 61 6c 75  gIListReturnValu
e0c0: 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68  e*....        ch
e0d0: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
e0e0: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
e0f0: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
e100: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
e110: 20 20 20 20 20 2a 54 65 73 74 53 74 72 69 6e 67       *TestString
e120: 49 4c 69 73 74 49 4c 69 73 74 49 4c 69 73 74 52  IListIListIListR
e130: 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20  eturnValue*.... 
e140: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
e150: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
e160: 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 38 22 2e  st "object-3.8".
e170: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
e180: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
e190: 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
e1a0: 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
e1b0: 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
e1c0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
e1d0: 74 42 79 74 65 4c 69 73 74 2a 0d 0a 0d 0a 20 20  tByteList*....  
e1e0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
e1f0: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
e200: 74 20 22 6f 62 6a 65 63 74 2d 33 2e 39 22 2e 0d  t "object-3.9"..
e210: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
e220: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
e230: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
e240: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
e250: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
e260: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
e270: 49 6e 74 4c 69 73 74 2a 0d 0a 0d 0a 20 20 20 20  IntList*....    
e280: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e290: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
e2a0: 22 6f 62 6a 65 63 74 2d 33 2e 31 30 22 2e 0d 0a  "object-3.10"...
e2b0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e2c0: 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
e2d0: 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
e2e0: 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
e2f0: 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
e300: 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 4c            *TestL
e310: 6f 6e 67 4c 69 73 74 2a 0d 0a 0d 0a 20 20 20 20  ongList*....    
e320: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e330: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
e340: 22 6f 62 6a 65 63 74 2d 33 2e 31 31 22 2e 0d 0a  "object-3.11"...
e350: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e360: 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
e370: 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
e380: 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
e390: 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
e3a0: 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 44            *TestD
e3b0: 65 72 69 76 65 64 4c 69 73 74 2a 0d 0a 0d 0a 20  erivedList*.... 
e3c0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
e3d0: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
e3e0: 73 74 73 20 22 6f 62 6a 65 63 74 2d 33 2e 31 32  sts "object-3.12
e3f0: 22 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 33 2e  " and "object-3.
e400: 31 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  13"...        #.
e410: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
e420: 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
e430: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
e440: 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
e450: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
e460: 2a 54 65 73 74 53 74 72 69 6e 67 49 44 69 63 74  *TestStringIDict
e470: 69 6f 6e 61 72 79 52 65 74 75 72 6e 56 61 6c 75  ionaryReturnValu
e480: 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  e*....        #.
e490: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
e4a0: 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
e4b0: 74 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20  t-4.1"...       
e4c0: 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
e4d0: 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
e4e0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
e4f0: 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
e500: 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
e510: 20 20 20 2a 54 65 73 74 45 78 70 72 2a 0d 0a 0d     *TestExpr*...
e520: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
e530: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
e540: 74 65 73 74 20 22 61 72 72 61 79 2d 34 2e 31 22  test "array-4.1"
e550: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
e560: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
e570: 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
e580: 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
e590: 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
e5a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
e5b0: 73 74 54 77 6f 42 79 74 65 41 72 72 61 79 73 2a  stTwoByteArrays*
e5c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
e5d0: 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
e5e0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
e5f0: 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
e600: 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
e610: 20 20 20 2a 54 65 73 74 52 65 74 75 72 6e 42 79     *TestReturnBy
e620: 74 65 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20  teArray*....    
e630: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e640: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
e650: 22 6f 62 6a 65 63 74 2d 37 2e 31 22 2e 0d 0a 20  "object-7.1"... 
e660: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
e670: 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
e680: 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
e690: 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
e6a0: 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
e6b0: 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 42 79           *TestBy
e6c0: 52 65 66 56 61 6c 75 65 54 79 70 65 4d 65 74 68  RefValueTypeMeth
e6d0: 6f 64 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  od*....        c
e6e0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
e6f0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
e700: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
e710: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
e720: 20 20 20 20 20 20 2a 54 65 73 74 4e 75 6c 6c 61        *TestNulla
e730: 62 6c 65 56 61 6c 75 65 54 79 70 65 4d 65 74 68  bleValueTypeMeth
e740: 6f 64 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  od*....        c
e750: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
e760: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
e770: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
e780: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
e790: 20 20 20 20 20 20 2a 54 65 73 74 42 79 52 65 66        *TestByRef
e7a0: 4e 75 6c 6c 61 62 6c 65 56 61 6c 75 65 54 79 70  NullableValueTyp
e7b0: 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20 20 20 20  eMethod*....    
e7c0: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
e7d0: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
e7e0: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
e7f0: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
e800: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
e810: 49 6e 74 41 72 72 61 79 52 65 74 75 72 6e 56 61  IntArrayReturnVa
e820: 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue*....        
e830: 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
e840: 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
e850: 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
e860: 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
e870: 20 20 20 20 20 20 20 2a 54 65 73 74 53 74 72 69         *TestStri
e880: 6e 67 41 72 72 61 79 52 65 74 75 72 6e 56 61 6c  ngArrayReturnVal
e890: 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  ue*....        c
e8a0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
e8b0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
e8c0: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
e8d0: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
e8e0: 20 20 20 20 20 20 2a 54 65 73 74 53 74 72 69 6e        *TestStrin
e8f0: 67 4c 69 73 74 52 65 74 75 72 6e 56 61 6c 75 65  gListReturnValue
e900: 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
e910: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
e920: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
e930: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
e940: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
e950: 20 20 20 20 2a 54 65 73 74 53 74 72 69 6e 67 4c      *TestStringL
e960: 69 73 74 41 72 72 61 79 52 65 74 75 72 6e 56 61  istArrayReturnVa
e970: 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue*....        
e980: 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
e990: 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
e9a0: 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
e9b0: 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
e9c0: 20 20 20 20 20 20 20 2a 54 65 73 74 42 79 52 65         *TestByRe
e9d0: 66 53 74 72 69 6e 67 4c 69 73 74 41 72 72 61 79  fStringListArray
e9e0: 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *....        #..
e9f0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
ea00: 46 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63  For tests "objec
ea10: 74 2d 37 2e 32 22 20 61 6e 64 20 22 6f 62 6a 65  t-7.2" and "obje
ea20: 63 74 2d 37 2e 34 22 2e 0d 0a 20 20 20 20 20 20  ct-7.4"...      
ea30: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
ea40: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
ea50: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
ea60: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
ea70: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
ea80: 20 20 20 20 2a 54 65 73 74 4e 75 6c 6c 41 72 72      *TestNullArr
ea90: 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  ay*....        c
eaa0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
eab0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
eac0: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
ead0: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
eae0: 20 20 20 20 20 20 2a 54 65 73 74 4f 75 74 41 72        *TestOutAr
eaf0: 72 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ray*....        
eb00: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
eb10: 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a  E: For test "obj
eb20: 65 63 74 2d 37 2e 35 22 2e 0d 0a 20 20 20 20 20  ect-7.5"...     
eb30: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
eb40: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
eb50: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
eb60: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
eb70: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
eb80: 20 20 20 20 20 2a 54 65 73 74 45 6e 75 6d 2a 0d       *TestEnum*.
eb90: 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
eba0: 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
ebb0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
ebc0: 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
ebd0: 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
ebe0: 20 20 2a 54 65 73 74 42 79 52 65 66 45 6e 75 6d    *TestByRefEnum
ebf0: 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
ec00: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
ec10: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
ec20: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
ec30: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
ec40: 20 20 20 20 2a 54 65 73 74 4e 75 6c 6c 61 62 6c      *TestNullabl
ec50: 65 45 6e 75 6d 2a 0d 0a 0d 0a 20 20 20 20 20 20  eEnum*....      
ec60: 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
ec70: 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
ec80: 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
ec90: 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
eca0: 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 42 79           *TestBy
ecb0: 52 65 66 4e 75 6c 6c 61 62 6c 65 45 6e 75 6d 2a  RefNullableEnum*
ecc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
ecd0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
ece0: 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74  or tests "object
ecf0: 2d 31 34 2e 34 22 20 61 6e 64 20 22 6f 62 6a 65  -14.4" and "obje
ed00: 63 74 2d 31 34 2e 35 22 2e 0d 0a 20 20 20 20 20  ct-14.5"...     
ed10: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
ed20: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
ed30: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
ed40: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
ed50: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
ed60: 20 20 20 20 20 2a 53 74 61 74 69 63 4f 62 6a 65       *StaticObje
ed70: 63 74 50 72 6f 70 65 72 74 79 2a 0d 0a 0d 0a 20  ctProperty*.... 
ed80: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ed90: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
eda0: 73 74 20 22 6f 62 6a 65 63 74 2d 31 34 2e 36 22  st "object-14.6"
edb0: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
edc0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
edd0: 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
ede0: 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
edf0: 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
ee00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 79  .            *Ty
ee10: 70 65 50 72 6f 70 65 72 74 79 2a 0d 0a 20 20 20  peProperty*..   
ee20: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
ee30: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
ee40: 61 73 20 49 44 69 73 70 6f 73 61 62 6c 65 20 74  as IDisposable t
ee50: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
ee60: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
ee70: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
ee80: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
ee90: 6e 6f 28 74 65 73 74 44 69 73 70 6f 73 61 62 6c  no(testDisposabl
eea0: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
eeb0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
eec0: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
eed0: 20 22 6f 62 6a 65 63 74 2d 32 2e 38 22 2e 0d 0a   "object-2.8"...
eee0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
eef0: 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
ef00: 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
ef10: 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
ef20: 74 73 2e 44 65 66 61 75 6c 74 2b 44 69 73 70 6f  ts.Default+Dispo
ef30: 73 61 62 6c 65 20 5c 0d 0a 20 20 20 20 20 20 20  sable \..       
ef40: 20 20 20 20 20 2a 54 6f 53 74 72 69 6e 67 2a 20       *ToString* 
ef50: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
ef60: 61 75 6c 74 2e 44 69 73 70 6f 73 61 62 6c 65 2e  ault.Disposable.
ef70: 54 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  ToString..      
ef80: 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
ef90: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
efa0: 61 73 20 4d 53 42 75 69 6c 64 20 74 65 73 74 69  as MSBuild testi
efb0: 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
efc0: 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
efd0: 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
efe0: 20 65 78 69 73 74 73 20 6e 6f 28 6d 73 42 75 69   exists no(msBui
eff0: 6c 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ld)]} then {..  
f000: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
f010: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
f020: 62 6a 65 63 74 2d 34 2e 31 33 22 2e 0d 0a 20 20  bject-4.13"...  
f030: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65      #..      che
f040: 63 6b 46 6f 72 41 73 73 65 6d 62 6c 79 20 24 74  ckForAssembly $t
f050: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4d 69 63 72  est_channel Micr
f060: 6f 73 6f 66 74 2e 42 75 69 6c 64 2e 46 72 61 6d  osoft.Build.Fram
f070: 65 77 6f 72 6b 0d 0a 0d 0a 20 20 20 20 20 20 23  ework....      #
f080: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
f090: 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74  For test "object
f0a0: 2d 36 2e 31 22 2e 0d 0a 20 20 20 20 20 20 23 0d  -6.1"...      #.
f0b0: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 41  .      checkForA
f0c0: 73 73 65 6d 62 6c 79 20 24 74 65 73 74 5f 63 68  ssembly $test_ch
f0d0: 61 6e 6e 65 6c 20 4d 69 63 72 6f 73 6f 66 74 2e  annel Microsoft.
f0e0: 42 75 69 6c 64 2e 45 6e 67 69 6e 65 0d 0a 20 20  Build.Engine..  
f0f0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
f100: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 45 78    # NOTE: Has Ex
f110: 63 65 6c 20 74 65 73 74 69 6e 67 20 73 75 70 70  cel testing supp
f120: 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
f130: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
f140: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
f150: 20 6e 6f 28 65 78 63 65 6c 29 5d 7d 20 74 68 65   no(excel)]} the
f160: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
f170: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
f180: 74 65 73 74 73 20 22 65 78 63 65 6c 2d 2a 2e 2a  tests "excel-*.*
f190: 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  "...      #..   
f1a0: 20 20 20 63 68 65 63 6b 46 6f 72 41 73 73 65 6d     checkForAssem
f1b0: 62 6c 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  bly $test_channe
f1c0: 6c 20 4d 69 63 72 6f 73 6f 66 74 2e 4f 66 66 69  l Microsoft.Offi
f1d0: 63 65 2e 49 6e 74 65 72 6f 70 2e 45 78 63 65 6c  ce.Interop.Excel
f1e0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
f1f0: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
f200: 73 20 73 70 65 65 63 68 20 74 65 73 74 69 6e 67  s speech testing
f210: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
f220: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
f230: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
f240: 78 69 73 74 73 20 6e 6f 28 73 70 65 65 63 68 29  xists no(speech)
f250: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
f260: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
f270: 3a 20 53 65 74 20 74 68 65 20 61 75 64 69 6f 20  : Set the audio 
f280: 76 6f 6c 75 6d 65 2c 20 69 66 20 6e 65 63 65 73  volume, if neces
f290: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  sary...      #..
f2a0: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
f2b0: 20 65 78 69 73 74 73 20 74 65 73 74 5f 76 6f 6c   exists test_vol
f2c0: 75 6d 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ume]} then {..  
f2d0: 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 76        set test_v
f2e0: 6f 6c 75 6d 65 20 30 3b 20 23 20 69 6e 20 70 65  olume 0; # in pe
f2f0: 72 63 65 6e 74 2c 20 30 20 69 73 20 73 69 6c 65  rcent, 0 is sile
f300: 6e 74 2e 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  nt...      }....
f310: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
f320: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
f330: 22 6f 62 6a 65 63 74 2d 34 2e 35 22 2e 0d 0a 20  "object-4.5"... 
f340: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
f350: 65 63 6b 46 6f 72 41 73 73 65 6d 62 6c 79 20 24  eckForAssembly $
f360: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 53 79 73  test_channel Sys
f370: 74 65 6d 2e 53 70 65 65 63 68 0d 0a 20 20 20 20  tem.Speech..    
f380: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
f390: 23 20 4e 4f 54 45 3a 20 48 61 73 20 57 69 6e 46  # NOTE: Has WinF
f3a0: 6f 72 6d 73 20 74 65 73 74 69 6e 67 20 73 75 70  orms testing sup
f3b0: 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
f3c0: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
f3d0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
f3e0: 73 20 6e 6f 28 77 69 6e 46 6f 72 6d 73 29 5d 7d  s no(winForms)]}
f3f0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
f400: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
f410: 46 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63  For tests "objec
f420: 74 2d 31 33 2e 31 2e 2a 22 2c 20 22 6f 62 6a 65  t-13.1.*", "obje
f430: 63 74 2d 31 33 2e 32 2e 2a 22 2c 20 61 6e 64 0d  ct-13.2.*", and.
f440: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 22  .      #       "
f450: 77 69 6e 46 6f 72 6d 73 2d 2a 2e 2a 22 2e 0d 0a  winForms-*.*"...
f460: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63        #..      c
f470: 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77 73 46 6f  heckForWindowsFo
f480: 72 6d 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  rms $test_channe
f490: 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  l..    }....    
f4a0: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41  #..    # NOTE: A
f4b0: 72 65 20 77 65 20 72 75 6e 6e 69 6e 67 20 69 6e  re we running in
f4c0: 20 61 20 57 6f 57 36 34 20 70 72 6f 63 65 73 73   a WoW64 process
f4d0: 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ?..    #..    if
f4e0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
f4f0: 6e 6f 28 77 6f 77 36 34 29 5d 7d 20 74 68 65 6e  no(wow64)]} then
f500: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
f510: 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20     # NOTE: This 
f520: 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79  is not currently
f530: 20 75 73 65 64 20 62 79 20 61 6e 79 20 74 65 73   used by any tes
f540: 74 73 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ts...      #..  
f550: 20 20 20 20 63 68 65 63 6b 46 6f 72 57 6f 57 36      checkForWoW6
f560: 34 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  4 $test_channel.
f570: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
f580: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 72 65  .    # NOTE: Are
f590: 20 77 65 20 72 75 6e 6e 69 6e 67 20 69 6e 20 61   we running in a
f5a0: 6e 20 53 54 41 20 74 68 72 65 61 64 3f 0d 0a 20  n STA thread?.. 
f5b0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
f5c0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73  info exists no(s
f5d0: 74 61 54 68 72 65 61 64 29 5d 7d 20 74 68 65 6e  taThread)]} then
f5e0: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
f5f0: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
f600: 65 73 74 73 20 22 78 61 6d 6c 2d 31 2e 2a 22 2e  ests "xaml-1.*".
f610: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
f620: 20 63 68 65 63 6b 46 6f 72 53 74 61 54 68 72 65   checkForStaThre
f630: 61 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ad $test_channel
f640: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
f650: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
f660: 73 20 57 50 46 20 74 65 73 74 69 6e 67 20 73 75  s WPF testing su
f670: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
f680: 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
f690: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
f6a0: 74 73 20 6e 6f 28 77 70 66 29 5d 7d 20 74 68 65  ts no(wpf)]} the
f6b0: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
f6c0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
f6d0: 74 65 73 74 73 20 22 78 61 6d 6c 2d 31 2e 2a 22  tests "xaml-1.*"
f6e0: 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
f6f0: 20 20 63 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77    checkForWindow
f700: 73 50 72 65 73 65 6e 74 61 74 69 6f 6e 46 6f 75  sPresentationFou
f710: 6e 64 61 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  ndation $test_ch
f720: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
f730: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
f740: 45 3a 20 48 61 73 20 50 6f 77 65 72 53 68 65 6c  E: Has PowerShel
f750: 6c 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  l testing suppor
f760: 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
f770: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
f780: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
f790: 6f 28 70 6f 77 65 72 53 68 65 6c 6c 29 5d 7d 20  o(powerShell)]} 
f7a0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
f7b0: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  .      # NOTE: F
f7c0: 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74  or tests "object
f7d0: 2d 34 2e 37 22 2c 20 22 6f 62 6a 65 63 74 2d 34  -4.7", "object-4
f7e0: 2e 38 22 2c 20 61 6e 64 20 22 6f 62 6a 65 63 74  .8", and "object
f7f0: 2d 34 2e 39 22 2e 0d 0a 20 20 20 20 20 20 23 0d  -4.9"...      #.
f800: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 50  .      checkForP
f810: 6f 77 65 72 53 68 65 6c 6c 20 24 74 65 73 74 5f  owerShell $test_
f820: 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
f830: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
f840: 4f 54 45 3a 20 48 61 73 20 2e 4e 45 54 20 46 72  OTE: Has .NET Fr
f850: 61 6d 65 77 6f 72 6b 20 34 2e 35 20 74 65 73 74  amework 4.5 test
f860: 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
f870: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
f880: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
f890: 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74 46  o exists no(netF
f8a0: 78 34 35 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  x45)]} then {.. 
f8b0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
f8c0: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
f8d0: 6f 62 6a 65 63 74 2d 31 32 2e 31 2e 2a 22 2e 0d  object-12.1.*"..
f8e0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
f8f0: 63 68 65 63 6b 46 6f 72 4e 65 74 46 78 34 35 20  checkForNetFx45 
f900: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
f910: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
f920: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 74     # NOTE: Has t
f930: 61 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20  arget framework 
f940: 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
f950: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
f960: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
f970: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
f980: 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29  targetFramework)
f990: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
f9a0: 20 63 68 65 63 6b 46 6f 72 54 61 72 67 65 74 46   checkForTargetF
f9b0: 72 61 6d 65 77 6f 72 6b 20 24 74 65 73 74 5f 63  ramework $test_c
f9c0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
f9d0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
f9e0: 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 75  TE: Has native u
f9f0: 74 69 6c 69 74 79 20 74 65 73 74 69 6e 67 20 73  tility testing s
fa00: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
fa10: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
fa20: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
fa30: 73 74 73 20 6e 6f 28 6e 61 74 69 76 65 55 74 69  sts no(nativeUti
fa40: 6c 69 74 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  lity)]} then {..
fa50: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 61        checkForNa
fa60: 74 69 76 65 55 74 69 6c 69 74 79 20 24 74 65 73  tiveUtility $tes
fa70: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
fa80: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
fa90: 20 4e 4f 54 45 3a 20 48 61 73 20 56 69 73 75 61   NOTE: Has Visua
faa0: 6c 20 53 74 75 64 69 6f 20 74 65 73 74 69 6e 67  l Studio testing
fab0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
fac0: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
fad0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
fae0: 78 69 73 74 73 20 6e 6f 28 76 69 73 75 61 6c 53  xists no(visualS
faf0: 74 75 64 69 6f 29 5d 7d 20 74 68 65 6e 20 7b 0d  tudio)]} then {.
fb00: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 56  .      checkForV
fb10: 69 73 75 61 6c 53 74 75 64 69 6f 20 24 74 65 73  isualStudio $tes
fb20: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
fb30: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
fb40: 20 4e 4f 54 45 3a 20 48 61 73 20 57 69 58 20 74   NOTE: Has WiX t
fb50: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
fb60: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
fb70: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
fb80: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 77  info exists no(w
fb90: 69 78 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ix)]} then {..  
fba0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
fbb0: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
fbc0: 62 6a 65 63 74 2d 34 2e 31 30 22 2e 0d 0a 20 20  bject-4.10"...  
fbd0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65      #..      che
fbe0: 63 6b 46 6f 72 57 69 78 20 24 74 65 73 74 5f 63  ckForWix $test_c
fbf0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
fc00: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
fc10: 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 64  TE: Has native d
fc20: 65 62 75 67 67 65 72 20 74 65 73 74 69 6e 67 20  ebugger testing 
fc30: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
fc40: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
fc50: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
fc60: 69 73 74 73 20 6e 6f 28 6e 61 74 69 76 65 44 65  ists no(nativeDe
fc70: 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e 20 7b  bugger)]} then {
fc80: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
fc90: 4e 61 74 69 76 65 44 65 62 75 67 67 65 72 20 24  NativeDebugger $
fca0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
fcb0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
fcc0: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6d 61    # NOTE: Has ma
fcd0: 6e 61 67 65 64 20 64 65 62 75 67 67 65 72 20 74  naged debugger t
fce0: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
fcf0: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
fd00: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
fd10: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d  info exists no(m
fd20: 61 6e 61 67 65 64 44 65 62 75 67 67 65 72 29 5d  anagedDebugger)]
fd30: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
fd40: 63 68 65 63 6b 46 6f 72 4d 61 6e 61 67 65 64 44  checkForManagedD
fd50: 65 62 75 67 67 65 72 20 24 74 65 73 74 5f 63 68  ebugger $test_ch
fd60: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
fd70: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
fd80: 45 3a 20 48 61 73 20 6d 61 6e 61 67 65 64 20 64  E: Has managed d
fd90: 65 62 75 67 67 69 6e 67 20 61 73 73 69 73 74 61  ebugging assista
fda0: 6e 74 73 20 74 65 73 74 69 6e 67 20 73 75 70 70  nts testing supp
fdb0: 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20 20 23 20  ort been..    # 
fdc0: 20 20 20 20 20 20 64 69 73 61 62 6c 65 64 3f 0d        disabled?.
fdd0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
fde0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
fdf0: 28 6d 61 6e 61 67 65 64 44 65 62 75 67 67 69 6e  (managedDebuggin
fe00: 67 41 73 73 69 73 74 61 6e 74 73 29 5d 7d 20 74  gAssistants)]} t
fe10: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
fe20: 63 6b 46 6f 72 4d 61 6e 61 67 65 64 44 65 62 75  ckForManagedDebu
fe30: 67 67 69 6e 67 41 73 73 69 73 74 61 6e 74 73 20  ggingAssistants 
fe40: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
fe50: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
fe60: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73     # NOTE: Has s
fe70: 63 72 69 70 74 20 64 65 62 75 67 67 65 72 20 74  cript debugger t
fe80: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
fe90: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
fea0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
feb0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73  info exists no(s
fec0: 63 72 69 70 74 44 65 62 75 67 67 65 72 29 5d 7d  criptDebugger)]}
fed0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
fee0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
fef0: 46 6f 72 20 74 65 73 74 73 20 22 64 65 62 75 67  For tests "debug
ff00: 2d 31 2e 31 22 2c 20 22 64 65 62 75 67 2d 32 2e  -1.1", "debug-2.
ff10: 31 22 2c 20 22 64 65 62 75 67 2d 33 2e 31 22 2c  1", "debug-3.1",
ff20: 20 61 6e 64 0d 0a 20 20 20 20 20 20 23 20 20 20   and..      #   
ff30: 20 20 20 20 22 64 65 62 75 67 2d 34 2e 31 22 2e      "debug-4.1".
ff40: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
ff50: 20 63 68 65 63 6b 46 6f 72 53 63 72 69 70 74 44   checkForScriptD
ff60: 65 62 75 67 67 65 72 20 24 74 65 73 74 5f 63 68  ebugger $test_ch
ff70: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
ff80: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
ff90: 45 3a 20 48 61 73 20 73 63 72 69 70 74 20 64 65  E: Has script de
ffa0: 62 75 67 67 65 72 20 69 6e 74 65 72 70 72 65 74  bugger interpret
ffb0: 65 72 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  er testing suppo
ffc0: 72 74 20 62 65 65 6e 0d 0a 20 20 20 20 23 20 20  rt been..    #  
ffd0: 20 20 20 20 20 64 69 73 61 62 6c 65 64 3f 0d 0a       disabled?..
ffe0: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
fff0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
10000 73 63 72 69 70 74 44 65 62 75 67 67 65 72 49 6e  scriptDebuggerIn
10010 74 65 72 70 72 65 74 65 72 29 5d 7d 20 74 68 65  terpreter)]} the
10020 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
10030 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
10040 74 65 73 74 20 22 64 65 62 75 67 2d 32 2e 31 22  test "debug-2.1"
10050 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
10060 20 20 63 68 65 63 6b 46 6f 72 53 63 72 69 70 74    checkForScript
10070 44 65 62 75 67 67 65 72 49 6e 74 65 72 70 72 65  DebuggerInterpre
10080 74 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ter $test_channe
10090 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  l..    }....    
100a0 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41  #..    # NOTE: A
100b0 72 65 20 77 65 20 72 75 6e 6e 69 6e 67 20 75 6e  re we running un
100c0 64 65 72 20 74 68 65 20 4d 6f 6e 6f 20 64 65 62  der the Mono deb
100d0 75 67 67 65 72 3f 20 20 49 66 20 73 6f 2c 20 73  ugger?  If so, s
100e0 65 76 65 72 61 6c 0d 0a 20 20 20 20 23 20 20 20  everal..    #   
100f0 20 20 20 20 74 65 73 74 73 20 77 69 6c 6c 20 68      tests will h
10100 61 76 65 20 74 6f 20 62 65 20 64 69 73 61 62 6c  ave to be disabl
10110 65 64 20 62 65 63 61 75 73 65 20 74 68 65 79 20  ed because they 
10120 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 0d 0a 20  do not appear.. 
10130 20 20 20 23 20 20 20 20 20 20 20 74 6f 20 77 6f     #       to wo
10140 72 6b 20 74 68 65 72 65 2e 0d 0a 20 20 20 20 23  rk there...    #
10150 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
10160 20 65 78 69 73 74 73 20 6e 6f 28 6d 6f 6e 6f 44   exists no(monoD
10170 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e 20  ebugger)]} then 
10180 7b 0d 0a 20 20 20 20 20 20 74 70 75 74 73 20 24  {..      tputs $
10190 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 22 2d 2d  test_channel "--
101a0 2d 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20  -- checking for 
101b0 4d 6f 6e 6f 20 64 65 62 75 67 67 65 72 2e 2e 2e  Mono debugger...
101c0 20 22 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b   "....      if {
101d0 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20  [haveConstraint 
101e0 6d 6f 6e 6f 5d 20 26 26 20 5b 68 61 76 65 43 6f  mono] && [haveCo
101f0 6e 73 74 72 61 69 6e 74 20 6d 61 6e 61 67 65 64  nstraint managed
10200 44 65 62 75 67 67 65 72 5d 7d 20 74 68 65 6e 20  Debugger]} then 
10210 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
10220 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 64        # NOTE: Ad
10230 64 20 61 20 73 70 65 63 69 61 6c 20 74 65 73 74  d a special test
10240 20 63 6f 6e 73 74 72 61 69 6e 74 20 74 6f 20 73   constraint to s
10250 69 6d 70 6c 69 66 79 20 74 68 65 20 4d 6f 6e 6f  implify the Mono
10260 20 64 65 62 75 67 67 65 72 0d 0a 20 20 20 20 20   debugger..     
10270 20 20 20 23 20 20 20 20 20 20 20 74 65 73 74 20     #       test 
10280 63 6f 6e 73 74 72 61 69 6e 74 20 63 68 65 63 6b  constraint check
10290 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73 74  ing for the test
102a0 73 20 74 68 61 74 20 6e 65 65 64 20 69 74 2e 0d  s that need it..
102b0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
102c0 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e      addConstrain
102d0 74 20 6d 6f 6e 6f 44 65 62 75 67 67 65 72 0d 0a  t monoDebugger..
102e0 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74 73 20  ..        tputs 
102f0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 79 65  $test_channel ye
10300 73 5c 6e 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73  s\n..      } els
10310 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 70 75  e {..        tpu
10320 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
10330 20 6e 6f 5c 6e 0d 0a 20 20 20 20 20 20 7d 0d 0a   no\n..      }..
10340 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
10350 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
10360 47 61 72 75 64 61 20 74 65 73 74 69 6e 67 20 73  Garuda testing s
10370 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
10380 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
10390 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
103a0 73 74 73 20 6e 6f 28 67 61 72 75 64 61 44 6c 6c  sts no(garudaDll
103b0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
103c0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
103d0 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 67 61  E: For tests "ga
103e0 72 75 64 61 2d 31 2e 31 22 20 61 6e 64 20 22 67  ruda-1.1" and "g
103f0 61 72 75 64 61 2d 31 2e 32 22 2e 0d 0a 20 20 20  aruda-1.2"...   
10400 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
10410 6b 46 6f 72 47 61 72 75 64 61 44 6c 6c 20 24 74  kForGarudaDll $t
10420 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
10430 20 7d 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23   }....    ######
10440 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10450 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10460 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10470 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10480 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23  #####..    #####
10490 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
104a0 23 23 23 23 23 20 45 4e 44 20 45 61 67 6c 65 20  ##### END Eagle 
104b0 43 6f 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23  Constraints ####
104c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
104d0 23 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23  ######..    ####
104e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
104f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10510 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10520 23 23 23 23 23 23 23 0d 0a 20 20 7d 20 65 6c 73  #######..  } els
10530 65 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  e {..    #..    
10540 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75 72  # NOTE: Make sur
10550 65 20 74 68 61 74 20 54 63 6c 20 68 6f 6e 6f 72  e that Tcl honor
10560 73 20 74 68 65 20 45 61 67 6c 65 20 74 65 73 74  s the Eagle test
10570 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20   constraints... 
10580 20 20 20 23 0d 0a 20 20 20 20 63 6f 6e 66 69 67     #..    config
10590 75 72 65 54 63 6c 74 65 73 74 20 24 74 65 73 74  ureTcltest $test
105a0 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20 24  _flags(-match) $
105b0 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69 70  test_flags(-skip
105c0 29 20 5c 0d 0a 20 20 20 20 20 20 20 20 24 74 65  ) \..        $te
105d0 73 74 5f 66 6c 61 67 73 28 2d 63 6f 6e 73 74 72  st_flags(-constr
105e0 61 69 6e 74 73 29 20 5b 6c 69 73 74 5d 20 66 61  aints) [list] fa
105f0 6c 73 65 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20  lse....    #..  
10600 20 20 23 20 48 41 43 4b 3a 20 52 65 73 65 74 20    # HACK: Reset 
10610 74 68 65 20 74 65 73 74 20 63 6f 75 6e 74 73 20  the test counts 
10620 66 6f 72 20 74 63 6c 74 65 73 74 2e 0d 0a 20 20  for tcltest...  
10630 20 20 23 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74    #..    set ::t
10640 63 6c 74 65 73 74 3a 3a 6e 75 6d 54 65 73 74 73  cltest::numTests
10650 28 54 6f 74 61 6c 29 20 30 0d 0a 20 20 20 20 73  (Total) 0..    s
10660 65 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75  et ::tcltest::nu
10670 6d 54 65 73 74 73 28 53 6b 69 70 70 65 64 29 20  mTests(Skipped) 
10680 30 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74 63 6c  0..    set ::tcl
10690 74 65 73 74 3a 3a 6e 75 6d 54 65 73 74 73 28 50  test::numTests(P
106a0 61 73 73 65 64 29 20 30 0d 0a 20 20 20 20 73 65  assed) 0..    se
106b0 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75 6d  t ::tcltest::num
106c0 54 65 73 74 73 28 46 61 69 6c 65 64 29 20 30 0d  Tests(Failed) 0.
106d0 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
106e0 48 41 43 4b 3a 20 52 65 73 65 74 20 74 68 65 20  HACK: Reset the 
106f0 6c 69 73 74 20 6f 66 20 66 61 69 6c 65 64 20 66  list of failed f
10700 69 6c 65 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  iles...    #..  
10710 20 20 73 65 74 20 3a 3a 74 63 6c 74 65 73 74 3a    set ::tcltest:
10720 3a 66 61 69 6c 46 69 6c 65 73 20 5b 6c 69 73 74  :failFiles [list
10730 5d 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23 23  ]....    #######
10740 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10760 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10780 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23  ####..    ######
10790 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
107a0 23 23 23 23 20 42 45 47 49 4e 20 54 63 6c 20 43  #### BEGIN Tcl C
107b0 6f 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23  onstraints #####
107c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
107d0 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23  #####..    #####
107e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
107f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10810 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10820 23 23 23 23 23 23 0d 0a 0d 0a 20 20 20 20 74 70  ######....    tp
10830 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
10840 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d  l \..        "--
10850 2d 2d 20 73 74 61 72 74 20 6f 66 20 54 63 6c 20  -- start of Tcl 
10860 73 70 65 63 69 66 69 63 20 74 65 73 74 20 63 6f  specific test co
10870 6e 73 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d  nstraints...\n".
10880 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
10890 4e 4f 54 45 3a 20 48 61 73 20 63 6f 6d 70 69 6c  NOTE: Has compil
108a0 65 2f 72 75 6e 74 69 6d 65 20 6f 70 74 69 6f 6e  e/runtime option
108b0 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
108c0 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
108d0 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
108e0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
108f0 28 63 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 29  (compileOptions)
10900 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
10910 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
10920 3a 20 48 61 73 20 22 6b 6e 6f 77 6e 22 20 63 6f  : Has "known" co
10930 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 20 74 65 73  mpile option tes
10940 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
10950 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
10960 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
10970 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
10980 28 6b 6e 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74  (knownCompileOpt
10990 69 6f 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ions)]} then {..
109a0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
109b0 20 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b     # NOTE: Check
109c0 20 66 6f 72 20 61 6c 6c 20 22 6b 6e 6f 77 6e 22   for all "known"
109d0 20 63 6f 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 73   compile options
109e0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
109f0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4b 6e        checkForKn
10a00 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ownCompileOption
10a10 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  s $test_channel.
10a20 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d  .      } else {.
10a30 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
10a40 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
10a50 64 65 64 69 63 61 74 65 64 20 74 65 73 74 20 73  dedicated test s
10a60 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62  upport been enab
10a70 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d  led (at compile-
10a80 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20  time)?..        
10a90 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  #..        if {!
10aa0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
10ab0 63 6f 6d 70 69 6c 65 54 65 73 74 29 5d 7d 20 74  compileTest)]} t
10ac0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
10ad0 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
10ae0 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
10af0 22 74 63 6c 4c 6f 61 64 2d 31 2e 31 37 2e 31 22  "tclLoad-1.17.1"
10b00 20 61 6e 64 20 22 74 63 6c 4c 6f 61 64 2d 31 2e   and "tclLoad-1.
10b10 31 37 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20  17.2"...        
10b20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
10b30 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
10b40 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
10b50 65 6c 20 54 45 53 54 0d 0a 20 20 20 20 20 20 20  el TEST..       
10b60 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20   }..      }..   
10b70 20 7d 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23   }....    ######
10b80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10b90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10ba0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10bb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10bc0 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23  #####..    #####
10bd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10be0 23 23 23 23 23 23 20 45 4e 44 20 54 63 6c 20 43  ###### END Tcl C
10bf0 6f 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23  onstraints #####
10c00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10c10 23 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23  ######..    ####
10c20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10c30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10c40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10c50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10c60 23 23 23 23 23 23 23 0d 0a 20 20 7d 0d 0a 0d 0a  #######..  }....
10c70 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
10c80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10c90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10ca0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10cb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
10cc0 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
10cd0 23 23 23 23 23 23 23 23 23 23 20 42 45 47 49 4e  ########## BEGIN
10ce0 20 54 63 6c 20 26 20 45 61 67 6c 65 20 43 6f 6e   Tcl & Eagle Con
10cf0 73 74 72 61 69 6e 74 73 20 23 23 23 23 23 23 23  straints #######
10d00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d10 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23  ..  ############
10d20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d60 23 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  #....  tputs $te
10d70 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20  st_channel \..  
10d80 20 20 20 20 22 2d 2d 2d 2d 20 73 74 61 72 74 20      "---- start 
10d90 6f 66 20 63 6f 6d 6d 6f 6e 20 28 54 63 6c 20 26  of common (Tcl &
10da0 20 45 61 67 6c 65 29 20 74 65 73 74 20 63 6f 6e   Eagle) test con
10db0 73 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a  straints...\n"..
10dc0 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
10dd0 20 43 68 65 63 6b 20 66 6f 72 20 74 68 65 20 74   Check for the t
10de0 65 73 74 20 73 75 69 74 65 20 69 6e 66 72 61 73  est suite infras
10df0 74 72 75 63 74 75 72 65 20 66 69 6c 65 73 2e 2e  tructure files..
10e00 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
10e10 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
10e20 65 73 74 53 75 69 74 65 46 69 6c 65 73 29 5d 7d  estSuiteFiles)]}
10e30 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
10e40 63 6b 46 6f 72 54 65 73 74 53 75 69 74 65 46 69  ckForTestSuiteFi
10e50 6c 65 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  les $test_channe
10e60 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  l..  }....  #.. 
10e70 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 61 6c 6c   # NOTE: Has all
10e80 20 75 73 65 20 6f 66 20 5b 65 78 65 63 5d 20 66   use of [exec] f
10e90 6f 72 20 74 65 73 74 73 20 62 65 65 6e 20 64 69  or tests been di
10ea0 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  sabled?..  #..  
10eb0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
10ec0 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 54 65 73  s no(checkForTes
10ed0 74 45 78 65 63 29 5d 7d 20 74 68 65 6e 20 7b 0d  tExec)]} then {.
10ee0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73  .    checkForTes
10ef0 74 45 78 65 63 20 24 74 65 73 74 5f 63 68 61 6e  tExec $test_chan
10f00 6e 65 6c 20 5b 68 61 76 65 43 6f 6e 73 74 72 61  nel [haveConstra
10f10 69 6e 74 20 71 75 69 65 74 5d 0d 0a 20 20 7d 0d  int quiet]..  }.
10f20 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
10f30 3a 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20 66  : Has checking f
10f40 6f 72 20 74 68 65 20 74 65 73 74 20 6d 61 63 68  or the test mach
10f50 69 6e 65 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ine been disable
10f60 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  d?..  #..  if {!
10f70 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
10f80 74 65 73 74 4d 61 63 68 69 6e 65 29 5d 7d 20 74  testMachine)]} t
10f90 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
10fa0 46 6f 72 54 65 73 74 4d 61 63 68 69 6e 65 20 24  ForTestMachine $
10fb0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
10fc0 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
10fd0 54 45 3a 20 48 61 73 20 63 68 65 63 6b 69 6e 67  TE: Has checking
10fe0 20 66 6f 72 20 74 68 65 20 74 65 73 74 20 70 6c   for the test pl
10ff0 61 74 66 6f 72 6d 20 62 65 65 6e 20 64 69 73 61  atform been disa
11000 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
11010 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
11020 6e 6f 28 74 65 73 74 50 6c 61 74 66 6f 72 6d 29  no(testPlatform)
11030 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
11040 68 65 63 6b 46 6f 72 54 65 73 74 50 6c 61 74 66  heckForTestPlatf
11050 6f 72 6d 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  orm $test_channe
11060 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  l..  }....  #.. 
11070 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65   # NOTE: Has che
11080 63 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65  cking for the te
11090 73 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  st configuration
110a0 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
110b0 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
110c0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
110d0 74 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 5d  tConfiguration)]
110e0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
110f0 65 63 6b 46 6f 72 54 65 73 74 43 6f 6e 66 69 67  eckForTestConfig
11100 75 72 61 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  uration $test_ch
11110 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
11120 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  #..  # NOTE: Has
11130 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68   checking for th
11140 65 20 74 65 73 74 20 73 75 66 66 69 78 20 62 65  e test suffix be
11150 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
11160 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
11170 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 75  exists no(testSu
11180 66 66 69 78 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ffix)]} then {..
11190 20 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74      checkForTest
111a0 53 75 66 66 69 78 20 24 74 65 73 74 5f 63 68 61  Suffix $test_cha
111b0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
111c0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
111d0 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65  checking for the
111e0 20 65 78 74 72 61 20 66 69 6c 65 73 20 6e 65 65   extra files nee
111f0 64 65 64 20 62 79 20 76 61 72 69 6f 75 73 20 74  ded by various t
11200 65 73 74 73 20 69 6e 20 74 68 65 0d 0a 20 20 23  ests in the..  #
11210 20 20 20 20 20 20 20 45 61 67 6c 65 20 63 6f 72         Eagle cor
11220 65 20 74 65 73 74 20 73 75 69 74 65 20 62 65 65  e test suite bee
11230 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23  n disabled?..  #
11240 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
11250 78 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20  xists no(core)] 
11260 26 26 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  && ![info exists
11270 20 6e 6f 28 63 68 65 63 6b 46 6f 72 46 69 6c 65   no(checkForFile
11280 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
11290 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  #..    # NOTE: F
112a0 6f 72 20 74 65 73 74 73 20 22 62 65 6e 63 68 6d  or tests "benchm
112b0 61 72 6b 2d 31 2e 33 5b 38 39 5d 22 20 61 6e 64  ark-1.3[89]" and
112c0 20 22 62 65 6e 63 68 6d 61 72 6b 2d 31 2e 34 30   "benchmark-1.40
112d0 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
112e0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
112f0 20 6e 6f 28 62 65 6e 63 68 6d 61 72 6b 2e 74 78   no(benchmark.tx
11300 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
11310 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
11320 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
11330 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64  ile join $test_d
11340 61 74 61 5f 70 61 74 68 20 62 65 6e 63 68 6d 61  ata_path benchma
11350 72 6b 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a  rk.txt]..    }..
11360 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
11370 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 67  OTE: For test "g
11380 61 72 75 64 61 2d 31 2e 31 22 2e 0d 0a 20 20 20  aruda-1.1"...   
11390 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
113a0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 6b 67  fo exists no(pkg
113b0 41 6c 6c 2e 74 63 6c 29 5d 7d 20 74 68 65 6e 20  All.tcl)]} then 
113c0 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
113d0 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
113e0 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
113f0 62 61 73 65 5f 70 61 74 68 20 4e 61 74 69 76 65  base_path Native
11400 20 50 61 63 6b 61 67 65 20 5c 0d 0a 20 20 20 20   Package \..    
11410 20 20 20 20 20 20 54 65 73 74 73 20 61 6c 6c 2e        Tests all.
11420 74 63 6c 5d 20 70 6b 67 41 6c 6c 2e 74 63 6c 0d  tcl] pkgAll.tcl.
11430 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
11440 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
11450 20 74 65 73 74 73 20 22 73 75 62 73 74 2d 31 2e   tests "subst-1.
11460 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  *"...    #..    
11470 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
11480 73 20 6e 6f 28 62 61 64 5f 73 75 62 73 74 2e 74  s no(bad_subst.t
11490 78 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  xt)]} then {..  
114a0 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65      checkForFile
114b0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
114c0 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
114d0 64 61 74 61 5f 70 61 74 68 20 62 61 64 5f 73 75  data_path bad_su
114e0 62 73 74 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d  bst.txt]..    }.
114f0 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
11500 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6e 6f  NOTE: This is no
11510 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64  t currently used
11520 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a   by any tests...
11530 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
11540 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
11550 65 76 61 6c 75 61 74 65 2e 65 61 67 6c 65 29 5d  evaluate.eagle)]
11560 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
11570 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
11580 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
11590 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61   join $test_data
115a0 5f 70 61 74 68 20 65 76 61 6c 75 61 74 65 2e 65  _path evaluate.e
115b0 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  agle]..    }....
115c0 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
115d0 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63  E: This is not c
115e0 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79  urrently used by
115f0 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20   any tests...   
11600 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
11610 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 75 62  fo exists no(sub
11620 73 74 69 74 75 74 65 2e 65 61 67 6c 65 29 5d 7d  stitute.eagle)]}
11630 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
11640 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
11650 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
11660 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
11670 70 61 74 68 20 73 75 62 73 74 69 74 75 74 65 2e  path substitute.
11680 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  eagle]..    }...
11690 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
116a0 54 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20  TE: This is not 
116b0 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62  currently used b
116c0 79 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20  y any tests...  
116d0 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
116e0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e  nfo exists no(un
116f0 69 63 6f 64 65 5f 62 6f 6d 2e 74 78 74 29 5d 7d  icode_bom.txt)]}
11700 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
11710 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
11720 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
11730 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
11740 70 61 74 68 20 75 6e 69 63 6f 64 65 5f 62 6f 6d  path unicode_bom
11750 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .txt]..    }....
11760 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
11770 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63  E: This is not c
11780 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79  urrently used by
11790 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20   any tests...   
117a0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
117b0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e 69  fo exists no(uni
117c0 63 6f 64 65 5f 6e 6f 5f 62 6f 6d 2e 74 78 74 29  code_no_bom.txt)
117d0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
117e0 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
117f0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
11800 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74  e join $test_dat
11810 61 5f 70 61 74 68 20 75 6e 69 63 6f 64 65 5f 6e  a_path unicode_n
11820 6f 5f 62 6f 6d 2e 74 78 74 5d 0d 0a 20 20 20 20  o_bom.txt]..    
11830 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
11840 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20  # NOTE: This is 
11850 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73  not currently us
11860 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e  ed by any tests.
11870 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
11880 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
11890 6f 28 75 74 66 38 2e 74 78 74 29 5d 7d 20 74 68  o(utf8.txt)]} th
118a0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
118b0 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
118c0 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
118d0 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
118e0 68 20 75 74 66 38 2e 74 78 74 5d 0d 0a 20 20 20  h utf8.txt]..   
118f0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
11900 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
11910 74 73 20 22 66 69 6c 65 49 4f 2d 31 2e 2a 22 2e  ts "fileIO-1.*".
11920 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
11930 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
11940 6f 28 66 69 6c 65 2e 64 61 74 29 5d 7d 20 74 68  o(file.dat)]} th
11950 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
11960 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
11970 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
11980 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
11990 68 20 66 69 6c 65 2e 64 61 74 5d 0d 0a 20 20 20  h file.dat]..   
119a0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
119b0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
119c0 74 20 22 67 61 72 62 61 67 65 2d 31 2e 31 22 2e  t "garbage-1.1".
119d0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
119e0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
119f0 6f 28 67 61 72 62 61 67 65 2e 74 78 74 29 5d 7d  o(garbage.txt)]}
11a00 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
11a10 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
11a20 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
11a30 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
11a40 70 61 74 68 20 67 61 72 62 61 67 65 2e 74 78 74  path garbage.txt
11a50 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ]..    }....    
11a60 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  #..    # NOTE: F
11a70 6f 72 20 74 65 73 74 73 20 22 78 61 6d 6c 2d 31  or tests "xaml-1
11a80 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .*"...    #..   
11a90 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
11aa0 74 73 20 6e 6f 28 74 65 73 74 2e 70 6e 67 29 5d  ts no(test.png)]
11ab0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
11ac0 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
11ad0 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
11ae0 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61   join $test_data
11af0 5f 70 61 74 68 20 74 65 73 74 2e 70 6e 67 5d 0d  _path test.png].
11b00 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
11b10 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
11b20 20 74 65 73 74 20 22 73 6f 63 6b 65 74 2d 31 2e   test "socket-1.
11b30 32 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  2"...    #..    
11b40 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
11b50 73 20 6e 6f 28 63 6c 69 65 6e 74 2e 74 63 6c 29  s no(client.tcl)
11b60 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
11b70 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
11b80 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
11b90 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74  e join $test_dat
11ba0 61 5f 70 61 74 68 20 63 6c 69 65 6e 74 2e 74 63  a_path client.tc
11bb0 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  l]..    }....   
11bc0 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
11bd0 46 6f 72 20 74 65 73 74 20 22 74 63 6c 4c 6f 61  For test "tclLoa
11be0 64 2d 31 2e 32 22 2e 0d 0a 20 20 20 20 23 0d 0a  d-1.2"...    #..
11bf0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
11c00 78 69 73 74 73 20 6e 6f 28 74 63 6c 5f 75 6e 6c  xists no(tcl_unl
11c10 6f 61 64 2e 74 63 6c 29 5d 7d 20 74 68 65 6e 20  oad.tcl)]} then 
11c20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
11c30 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
11c40 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
11c50 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 74  test_data_path t
11c60 63 6c 5f 75 6e 6c 6f 61 64 2e 74 63 6c 5d 0d 0a  cl_unload.tcl]..
11c70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
11c80 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
11c90 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e 34 22  test "basic-1.4"
11ca0 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
11cb0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
11cc0 6e 6f 28 72 65 61 64 2e 65 61 67 6c 65 29 5d 7d  no(read.eagle)]}
11cd0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
11ce0 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
11cf0 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
11d00 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
11d10 70 61 74 68 20 72 65 61 64 2e 65 61 67 6c 65 5d  path read.eagle]
11d20 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
11d30 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f  ..    # NOTE: Fo
11d40 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e  r test "basic-1.
11d50 35 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  5"...    #..    
11d60 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
11d70 73 20 6e 6f 28 72 65 61 64 32 2e 65 61 67 6c 65  s no(read2.eagle
11d80 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
11d90 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
11da0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
11db0 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61  le join $test_da
11dc0 74 61 5f 70 61 74 68 20 72 65 61 64 32 2e 65 61  ta_path read2.ea
11dd0 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  gle]..    }.... 
11de0 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
11df0 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
11e00 63 2d 31 2e 36 22 2e 0d 0a 20 20 20 20 23 0d 0a  c-1.6"...    #..
11e10 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
11e20 78 69 73 74 73 20 6e 6f 28 72 65 61 64 33 2e 65  xists no(read3.e
11e30 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  agle)]} then {..
11e40 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69        checkForFi
11e50 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  le $test_channel
11e60 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73   [file join $tes
11e70 74 5f 64 61 74 61 5f 70 61 74 68 20 72 65 61 64  t_data_path read
11e80 33 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d  3.eagle]..    }.
11e90 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
11ea0 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
11eb0 62 61 73 69 63 2d 31 2e 37 22 2e 0d 0a 20 20 20  basic-1.7"...   
11ec0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
11ed0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65 61  fo exists no(rea
11ee0 64 34 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e  d4.eagle)]} then
11ef0 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
11f00 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
11f10 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
11f20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
11f30 72 65 61 64 34 2e 65 61 67 6c 65 5d 0d 0a 20 20  read4.eagle]..  
11f40 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
11f50 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
11f60 73 74 20 22 69 6e 66 6f 53 63 72 69 70 74 2d 31  st "infoScript-1
11f70 2e 31 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .1"...    #..   
11f80 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
11f90 74 73 20 6e 6f 28 73 63 72 69 70 74 2e 65 61 67  ts no(script.eag
11fa0 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  le)]} then {..  
11fb0 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65      checkForFile
11fc0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
11fd0 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
11fe0 64 61 74 61 5f 70 61 74 68 20 73 63 72 69 70 74  data_path script
11ff0 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a  .eagle]..    }..
12000 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
12010 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62  OTE: For test "b
12020 61 73 69 63 2d 31 2e 31 22 2e 0d 0a 20 20 20 20  asic-1.1"...    
12030 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
12040 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 6f 75 72  o exists no(sour
12050 63 65 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e  ce.eagle)]} then
12060 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
12070 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
12080 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
12090 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
120a0 73 6f 75 72 63 65 2e 65 61 67 6c 65 5d 0d 0a 20  source.eagle].. 
120b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
120c0 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
120d0 65 73 74 20 22 62 61 73 69 63 2d 31 2e 32 22 2e  est "basic-1.2".
120e0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
120f0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
12100 6f 28 75 6e 62 61 6c 61 6e 63 65 64 5f 62 72 61  o(unbalanced_bra
12110 63 65 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e  ce.eagle)]} then
12120 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
12130 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
12140 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
12150 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 65  \..          $te
12160 73 74 5f 64 61 74 61 5f 70 61 74 68 20 75 6e 62  st_data_path unb
12170 61 6c 61 6e 63 65 64 5f 62 72 61 63 65 2e 65 61  alanced_brace.ea
12180 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  gle]..    }.... 
12190 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
121a0 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
121b0 63 2d 31 2e 33 22 2e 0d 0a 20 20 20 20 23 0d 0a  c-1.3"...    #..
121c0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
121d0 78 69 73 74 73 20 6e 6f 28 75 6e 62 61 6c 61 6e  xists no(unbalan
121e0 63 65 64 5f 62 72 61 63 65 32 2e 65 61 67 6c 65  ced_brace2.eagle
121f0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
12200 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
12210 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
12220 6c 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20 20 20 20  le join \..     
12230 20 20 20 20 20 24 74 65 73 74 5f 64 61 74 61 5f       $test_data_
12240 70 61 74 68 20 75 6e 62 61 6c 61 6e 63 65 64 5f  path unbalanced_
12250 62 72 61 63 65 32 2e 65 61 67 6c 65 5d 0d 0a 20  brace2.eagle].. 
12260 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
12270 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
12280 65 73 74 73 20 22 65 78 63 65 6c 2d 32 2e 2a 22  ests "excel-2.*"
12290 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
122a0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
122b0 6e 6f 28 74 65 73 74 2e 78 6c 73 29 5d 7d 20 74  no(test.xls)]} t
122c0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
122d0 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
122e0 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
122f0 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61  in $test_data_pa
12300 74 68 20 74 65 73 74 2e 78 6c 73 5d 0d 0a 20 20  th test.xls]..  
12310 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
12320 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
12330 73 74 20 22 70 72 6f 63 2d 31 2e 39 22 2e 0d 0a  st "proc-1.9"...
12340 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
12350 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
12360 74 65 73 74 50 72 6f 63 73 2e 74 63 6c 29 5d 7d  testProcs.tcl)]}
12370 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
12380 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
12390 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
123a0 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
123b0 70 61 74 68 20 74 65 73 74 50 72 6f 63 73 2e 74  path testProcs.t
123c0 63 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  cl]..    }....  
123d0 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
123e0 20 46 6f 72 20 74 65 73 74 20 22 69 6e 74 65 72   For test "inter
123f0 70 2d 31 2e 31 30 22 2e 0d 0a 20 20 20 20 23 0d  p-1.10"...    #.
12400 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
12410 65 78 69 73 74 73 20 6e 6f 28 73 65 74 74 69 6e  exists no(settin
12420 67 73 2e 78 6d 6c 29 5d 7d 20 74 68 65 6e 20 7b  gs.xml)]} then {
12430 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
12440 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
12450 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74  el [file join $t
12460 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 73 65  est_data_path se
12470 74 74 69 6e 67 73 2e 78 6d 6c 5d 0d 0a 20 20 20  ttings.xml]..   
12480 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
12490 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
124a0 74 73 20 22 6c 6f 61 64 2d 31 2e 31 2e 2a 22 2e  ts "load-1.1.*".
124b0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
124c0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
124d0 6f 28 50 6c 75 67 69 6e 2e 64 6c 6c 29 5d 7d 20  o(Plugin.dll)]} 
124e0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68  then {..      ch
124f0 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74  eckForFile $test
12500 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a  _channel [file j
12510 6f 69 6e 20 24 6c 69 62 5f 70 61 74 68 20 50 6c  oin $lib_path Pl
12520 75 67 69 6e 31 2e 30 20 50 6c 75 67 69 6e 2e 64  ugin1.0 Plugin.d
12530 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ll]..    }....  
12540 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
12550 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
12560 74 2d 36 2e 31 22 2e 0d 0a 20 20 20 20 23 0d 0a  t-6.1"...    #..
12570 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
12580 78 69 73 74 73 20 6e 6f 28 53 61 6d 70 6c 65 2e  xists no(Sample.
12590 65 78 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  exe)]} then {.. 
125a0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
125b0 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
125c0 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 69 6e 5f  [file join $bin_
125d0 70 61 74 68 20 53 61 6d 70 6c 65 2e 65 78 65 5d  path Sample.exe]
125e0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
125f0 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f  ..    # NOTE: Fo
12600 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 34  r test "object-4
12610 2e 38 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .8"...    #..   
12620 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
12630 74 73 20 6e 6f 28 45 61 67 6c 65 43 6d 64 6c 65  ts no(EagleCmdle
12640 74 73 2e 64 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b  ts.dll)]} then {
12650 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
12660 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
12670 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62  el [file join $b
12680 69 6e 5f 70 61 74 68 20 45 61 67 6c 65 43 6d 64  in_path EagleCmd
12690 6c 65 74 73 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d  lets.dll]..    }
126a0 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
126b0 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
126c0 22 6f 62 6a 65 63 74 2d 34 2e 31 30 22 2e 0d 0a  "object-4.10"...
126d0 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
126e0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
126f0 45 61 67 6c 65 45 78 74 65 6e 73 69 6f 6e 73 2e  EagleExtensions.
12700 64 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  dll)]} then {.. 
12710 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
12720 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
12730 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 69 6e 5f  [file join $bin_
12740 70 61 74 68 20 45 61 67 6c 65 45 78 74 65 6e 73  path EagleExtens
12750 69 6f 6e 73 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d  ions.dll]..    }
12760 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
12770 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
12780 22 6f 62 6a 65 63 74 2d 34 2e 31 30 22 2e 0d 0a  "object-4.10"...
12790 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
127a0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
127b0 74 65 73 74 2e 77 78 73 29 5d 7d 20 74 68 65 6e  test.wxs)]} then
127c0 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
127d0 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
127e0 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
127f0 24 62 61 73 65 5f 70 61 74 68 20 49 6e 73 74 61  $base_path Insta
12800 6c 6c 65 72 20 54 65 73 74 73 20 74 65 73 74 2e  ller Tests test.
12810 77 78 73 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  wxs]..    }.... 
12820 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
12830 3a 20 46 6f 72 20 74 65 73 74 73 20 22 73 71 6c  : For tests "sql
12840 2d 31 2e 32 22 2c 20 22 73 71 6c 2d 31 2e 34 22  -1.2", "sql-1.4"
12850 2c 20 22 73 71 6c 2d 31 2e 35 22 2c 20 22 73 71  , "sql-1.5", "sq
12860 6c 2d 31 2e 36 22 2c 20 22 73 71 6c 2d 31 2e 37  l-1.6", "sql-1.7
12870 22 2c 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  ",..    #       
12880 22 73 71 6c 2d 31 2e 38 22 2c 20 61 6e 64 20 22  "sql-1.8", and "
12890 73 71 6c 2d 31 2e 39 22 2e 0d 0a 20 20 20 20 23  sql-1.9"...    #
128a0 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
128b0 20 65 78 69 73 74 73 20 6e 6f 28 73 71 6c 69 74   exists no(sqlit
128c0 65 33 2e 64 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b  e3.dll)]} then {
128d0 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
128e0 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
128f0 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62  el [file join $b
12900 69 6e 5f 70 61 74 68 20 73 71 6c 69 74 65 33 2e  in_path sqlite3.
12910 64 6c 6c 5d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d  dll]....      #.
12920 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 44  .      # NOTE: D
12930 69 64 20 77 65 20 6d 61 6e 61 67 65 20 74 6f 20  id we manage to 
12940 66 69 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20  find the native 
12950 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 3f 20  SQLite library? 
12960 20 49 66 20 6e 6f 74 2c 20 64 6f 20 77 65 0d 0a   If not, do we..
12970 20 20 20 20 20 20 23 20 20 20 20 20 20 20 61 74        #       at
12980 20 6c 65 61 73 74 20 6b 6e 6f 77 20 74 68 65 20   least know the 
12990 6d 61 63 68 69 6e 65 20 74 79 70 65 3f 0d 0a 20  machine type?.. 
129a0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
129b0 20 7b 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69   {![haveConstrai
129c0 6e 74 20 66 69 6c 65 5f 73 71 6c 69 74 65 33 2e  nt file_sqlite3.
129d0 64 6c 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  dll]} then {..  
129e0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
129f0 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6e 6f 77   # NOTE: Ok, now
12a00 20 74 72 79 20 74 6f 20 63 68 65 63 6b 20 66 6f   try to check fo
12a10 72 20 74 68 65 20 6d 61 63 68 69 6e 65 20 73 70  r the machine sp
12a20 65 63 69 66 69 63 20 6e 61 74 69 76 65 20 53 51  ecific native SQ
12a30 4c 69 74 65 0d 0a 20 20 20 20 20 20 20 20 23 20  Lite..        # 
12a40 20 20 20 20 20 20 6c 69 62 72 61 72 79 2e 0d 0a        library...
12a50 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
12a60 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
12a70 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
12a80 69 6c 65 20 6a 6f 69 6e 20 24 62 69 6e 5f 70 61  ile join $bin_pa
12a90 74 68 20 5b 6d 61 63 68 69 6e 65 54 6f 50 6c 61  th [machineToPla
12aa0 74 66 6f 72 6d 20 5c 0d 0a 20 20 20 20 20 20 20  tform \..       
12ab0 20 20 20 20 20 24 74 65 73 74 5f 6d 61 63 68 69       $test_machi
12ac0 6e 65 20 74 72 75 65 5d 20 73 71 6c 69 74 65 33  ne true] sqlite3
12ad0 2e 64 6c 6c 5d 0d 0a 0d 0a 20 20 20 20 20 20 20  .dll]....       
12ae0 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
12af0 54 45 3a 20 44 69 64 20 77 65 20 6d 61 6e 61 67  TE: Did we manag
12b00 65 20 74 6f 20 66 69 6e 64 20 74 68 65 20 6e 61  e to find the na
12b10 74 69 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72  tive SQLite libr
12b20 61 72 79 20 79 65 74 3f 0d 0a 20 20 20 20 20 20  ary yet?..      
12b30 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
12b40 7b 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e  {![haveConstrain
12b50 74 20 66 69 6c 65 5f 73 71 6c 69 74 65 33 2e 64  t file_sqlite3.d
12b60 6c 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ll]} then {..   
12b70 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
12b80 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20      # NOTE: Ok, 
12b90 6e 6f 77 20 74 72 79 20 74 6f 20 63 68 65 63 6b  now try to check
12ba0 20 66 6f 72 20 74 68 65 20 70 6c 61 74 66 6f 72   for the platfor
12bb0 6d 20 73 70 65 63 69 66 69 63 20 6e 61 74 69 76  m specific nativ
12bc0 65 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20  e SQLite..      
12bd0 20 20 20 20 23 20 20 20 20 20 20 20 6c 69 62 72      #       libr
12be0 61 72 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ary...          
12bf0 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65  #..          che
12c00 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
12c10 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
12c20 69 6e 20 24 62 69 6e 5f 70 61 74 68 20 5b 6d 61  in $bin_path [ma
12c30 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f 72 6d 20  chineToPlatform 
12c40 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
12c50 20 24 74 65 73 74 5f 6d 61 63 68 69 6e 65 20 66   $test_machine f
12c60 61 6c 73 65 5d 20 73 71 6c 69 74 65 33 2e 64 6c  alse] sqlite3.dl
12c70 6c 5d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  l]..        }.. 
12c80 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
12c90 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
12ca0 65 78 69 73 74 73 20 6e 6f 28 53 79 73 74 65 6d  exists no(System
12cb0 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
12cc0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
12cd0 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
12ce0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
12cf0 6c 65 20 6a 6f 69 6e 20 24 62 69 6e 5f 70 61 74  le join $bin_pat
12d00 68 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  h System.Data.SQ
12d10 4c 69 74 65 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d  Lite.dll]..    }
12d20 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e  ....    if {![in
12d30 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
12d40 74 2e 73 71 6c 69 74 65 33 29 5d 7d 20 74 68 65  t.sqlite3)]} the
12d50 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
12d60 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
12d70 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
12d80 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
12d90 20 74 65 73 74 2e 73 71 6c 69 74 65 33 5d 0d 0a   test.sqlite3]..
12da0 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20      }..  }....  
12db0 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68 65  #..  # NOTE: Che
12dc0 63 6b 20 74 68 65 20 63 6f 72 65 20 74 65 73 74  ck the core test
12dd0 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 75 6e 6c   constraints unl
12de0 65 73 73 20 74 68 65 79 20 68 61 76 65 20 62 65  ess they have be
12df0 65 6e 0d 0a 20 20 23 20 20 20 20 20 20 20 65 78  en..  #       ex
12e00 70 6c 69 63 69 74 6c 79 20 64 69 73 61 62 6c 65  plicitly disable
12e10 64 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  d...  #..  if {!
12e20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
12e30 70 6c 61 74 66 6f 72 6d 29 5d 7d 20 74 68 65 6e  platform)]} then
12e40 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
12e50 50 6c 61 74 66 6f 72 6d 20 24 74 65 73 74 5f 63  Platform $test_c
12e60 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
12e70 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
12e80 74 73 20 6e 6f 28 77 69 6e 64 6f 77 73 56 65 72  ts no(windowsVer
12e90 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  sion)]} then {..
12ea0 20 20 20 20 63 68 65 63 6b 46 6f 72 57 69 6e 64      checkForWind
12eb0 6f 77 73 56 65 72 73 69 6f 6e 20 24 74 65 73 74  owsVersion $test
12ec0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
12ed0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
12ee0 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74 4c 69  ists no(scriptLi
12ef0 62 72 61 72 79 29 5d 7d 20 74 68 65 6e 20 7b 0d  brary)]} then {.
12f00 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 53 63 72  .    checkForScr
12f10 69 70 74 4c 69 62 72 61 72 79 20 24 74 65 73 74  iptLibrary $test
12f20 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
12f30 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
12f40 69 73 74 73 20 6e 6f 28 74 63 6c 4f 70 74 69 6f  ists no(tclOptio
12f50 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ns)]} then {..  
12f60 20 20 63 68 65 63 6b 46 6f 72 54 63 6c 4f 70 74    checkForTclOpt
12f70 69 6f 6e 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  ions $test_chann
12f80 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
12f90 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
12fa0 6f 28 63 68 65 63 6b 46 6f 72 42 69 67 4c 69 73  o(checkForBigLis
12fb0 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ts)]} then {..  
12fc0 20 20 63 68 65 63 6b 46 6f 72 42 69 67 4c 69 73    checkForBigLis
12fd0 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
12fe0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
12ff0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
13000 63 68 65 63 6b 46 6f 72 4d 65 6d 6f 72 79 49 6e  checkForMemoryIn
13010 74 65 6e 73 69 76 65 29 5d 7d 20 74 68 65 6e 20  tensive)]} then 
13020 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4d  {..    checkForM
13030 65 6d 6f 72 79 49 6e 74 65 6e 73 69 76 65 20 24  emoryIntensive $
13040 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
13050 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
13060 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63  o exists no(chec
13070 6b 46 6f 72 53 74 61 63 6b 49 6e 74 65 6e 73 69  kForStackIntensi
13080 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ve)]} then {..  
13090 20 20 63 68 65 63 6b 46 6f 72 53 74 61 63 6b 49    checkForStackI
130a0 6e 74 65 6e 73 69 76 65 20 24 74 65 73 74 5f 63  ntensive $test_c
130b0 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
130c0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
130d0 74 73 20 6e 6f 28 77 69 6e 64 6f 77 73 43 6f 6d  ts no(windowsCom
130e0 6d 61 6e 64 50 72 6f 63 65 73 73 6f 72 29 5d 7d  mandProcessor)]}
130f0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
13100 63 6b 46 6f 72 57 69 6e 64 6f 77 73 43 6f 6d 6d  ckForWindowsComm
13110 61 6e 64 50 72 6f 63 65 73 73 6f 72 20 24 74 65  andProcessor $te
13120 73 74 5f 63 68 61 6e 6e 65 6c 20 63 6d 64 2e 65  st_channel cmd.e
13130 78 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  xe..  }....  if 
13140 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
13150 6f 28 66 6f 73 73 69 6c 29 5d 7d 20 74 68 65 6e  o(fossil)]} then
13160 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
13170 46 6f 73 73 69 6c 20 24 74 65 73 74 5f 63 68 61  Fossil $test_cha
13180 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
13190 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
131a0 20 6e 6f 28 74 65 73 74 52 65 70 6f 73 69 74 6f   no(testReposito
131b0 72 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ry)]} then {..  
131c0 20 20 63 68 65 63 6b 46 6f 72 56 61 72 69 61 62    checkForVariab
131d0 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  le $test_channel
131e0 20 74 65 73 74 5f 72 65 70 6f 73 69 74 6f 72 79   test_repository
131f0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
13200 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
13210 76 65 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20  version)]} then 
13220 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 56  {..    checkForV
13230 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ersion $test_cha
13240 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
13250 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
13260 20 6e 6f 28 65 61 67 6c 65 29 5d 7d 20 74 68 65   no(eagle)]} the
13270 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
13280 72 45 61 67 6c 65 20 24 74 65 73 74 5f 63 68 61  rEagle $test_cha
13290 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
132a0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
132b0 20 6e 6f 28 6e 6f 4c 6f 67 46 69 6c 65 29 5d 7d   no(noLogFile)]}
132c0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
132d0 63 6b 46 6f 72 4c 6f 67 46 69 6c 65 20 24 74 65  ckForLogFile $te
132e0 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
132f0 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
13300 65 78 69 73 74 73 20 6e 6f 28 73 79 6d 62 6f 6c  exists no(symbol
13310 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
13320 20 63 68 65 63 6b 46 6f 72 53 79 6d 62 6f 6c 73   checkForSymbols
13330 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
13340 69 6e 66 6f 20 6e 61 6d 65 6f 66 65 78 65 63 75  info nameofexecu
13350 74 61 62 6c 65 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20  table]..  }.... 
13360 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
13370 74 73 20 6e 6f 28 67 61 72 75 64 61 29 5d 7d 20  ts no(garuda)]} 
13380 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
13390 6b 46 6f 72 47 61 72 75 64 61 20 24 74 65 73 74  kForGaruda $test
133a0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
133b0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
133c0 69 73 74 73 20 6e 6f 28 73 68 65 6c 6c 29 5d 7d  ists no(shell)]}
133d0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
133e0 63 6b 46 6f 72 53 68 65 6c 6c 20 24 74 65 73 74  ckForShell $test
133f0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
13400 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
13410 69 73 74 73 20 6e 6f 28 64 65 62 75 67 29 5d 7d  ists no(debug)]}
13420 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
13430 63 6b 46 6f 72 44 65 62 75 67 20 24 74 65 73 74  ckForDebug $test
13440 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
13450 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
13460 48 61 73 20 54 6b 20 74 65 73 74 69 6e 67 20 73  Has Tk testing s
13470 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
13480 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
13490 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
134a0 6e 6f 28 74 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d  no(tk)]} then {.
134b0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 6b 20  .    checkForTk 
134c0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
134d0 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
134e0 4f 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20  OTE: Has native 
134f0 63 6f 64 65 20 64 65 74 65 63 74 69 6f 6e 20 73  code detection s
13500 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
13510 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
13520 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
13530 6e 6f 28 6e 61 74 69 76 65 29 5d 7d 20 74 68 65  no(native)]} the
13540 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
13550 72 4e 61 74 69 76 65 43 6f 64 65 20 24 74 65 73  rNativeCode $tes
13560 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
13570 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
13580 20 43 68 65 63 6b 20 66 6f 72 20 76 61 72 69 6f   Check for vario
13590 75 73 20 65 78 74 72 61 20 63 6f 6d 6d 61 6e 64  us extra command
135a0 73 20 74 68 61 74 20 6d 61 79 20 62 65 20 70 72  s that may be pr
135b0 65 73 65 6e 74 2e 0d 0a 20 20 23 0d 0a 20 20 69  esent...  #..  i
135c0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
135d0 20 6e 6f 28 63 61 6c 6c 62 61 63 6b 43 6f 6d 6d   no(callbackComm
135e0 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
135f0 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
13600 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
13610 20 63 61 6c 6c 62 61 63 6b 0d 0a 20 20 7d 0d 0a   callback..  }..
13620 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
13630 78 69 73 74 73 20 6e 6f 28 6c 69 62 72 61 72 79  xists no(library
13640 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
13650 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
13660 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
13670 6e 6e 65 6c 20 6c 69 62 72 61 72 79 0d 0a 20 20  nnel library..  
13680 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
13690 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 6f 63 6b  o exists no(sock
136a0 65 74 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65  etCommand)]} the
136b0 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
136c0 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63  rCommand $test_c
136d0 68 61 6e 6e 65 6c 20 73 6f 63 6b 65 74 0d 0a 20  hannel socket.. 
136e0 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
136f0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 71 6c  fo exists no(sql
13700 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
13710 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
13720 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
13730 6e 6e 65 6c 20 73 71 6c 0d 0a 20 20 7d 0d 0a 0d  nnel sql..  }...
13740 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
13750 69 73 74 73 20 6e 6f 28 74 63 6c 43 6f 6d 6d 61  ists no(tclComma
13760 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
13770 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
13780 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
13790 74 63 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  tcl..  }....  if
137a0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
137b0 6e 6f 28 78 6d 6c 43 6f 6d 6d 61 6e 64 29 5d 7d  no(xmlCommand)]}
137c0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
137d0 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65  ckForCommand $te
137e0 73 74 5f 63 68 61 6e 6e 65 6c 20 78 6d 6c 0d 0a  st_channel xml..
137f0 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
13800 4e 4f 54 45 3a 20 48 61 73 20 6e 61 6d 65 73 70  NOTE: Has namesp
13810 61 63 65 20 64 65 74 65 63 74 69 6f 6e 20 73 75  ace detection su
13820 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
13830 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20  led?..  #..  if 
13840 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
13850 6f 28 6e 61 6d 65 73 70 61 63 65 73 29 5d 7d 20  o(namespaces)]} 
13860 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
13870 6b 46 6f 72 4e 61 6d 65 73 70 61 63 65 73 20 24  kForNamespaces $
13880 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 68 61  test_channel [ha
13890 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 71 75 69  veConstraint qui
138a0 65 74 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d  et]..  }....  #.
138b0 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b  .  # NOTE: Check
138c0 20 66 6f 72 20 76 61 72 69 6f 75 73 20 66 65 61   for various fea
138d0 74 75 72 65 73 20 74 68 61 74 20 77 65 72 65 20  tures that were 
138e0 61 64 64 65 64 20 74 68 72 6f 75 67 68 0d 0a 20  added through.. 
138f0 20 23 20 20 20 20 20 20 20 74 68 65 20 54 49 50   #       the TIP
13900 20 70 72 6f 63 65 73 73 2e 0d 0a 20 20 23 0d 0a   process...  #..
13910 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
13920 73 74 73 20 6e 6f 28 74 69 70 31 32 37 29 5d 7d  sts no(tip127)]}
13930 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
13940 63 6b 46 6f 72 54 69 70 31 32 37 20 24 74 65 73  ckForTip127 $tes
13950 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
13960 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
13970 78 69 73 74 73 20 6e 6f 28 74 69 70 31 39 34 29  xists no(tip194)
13980 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
13990 68 65 63 6b 46 6f 72 54 69 70 31 39 34 20 24 74  heckForTip194 $t
139a0 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
139b0 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
139c0 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70 32 30   exists no(tip20
139d0 37 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  7)]} then {..   
139e0 20 63 68 65 63 6b 46 6f 72 54 69 70 32 30 37 20   checkForTip207 
139f0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
13a00 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
13a10 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70  fo exists no(tip
13a20 32 34 31 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  241)]} then {.. 
13a30 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70 32 34     checkForTip24
13a40 31 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  1 $test_channel.
13a50 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
13a60 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
13a70 69 70 32 38 35 29 5d 7d 20 74 68 65 6e 20 7b 0d  ip285)]} then {.
13a80 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70  .    checkForTip
13a90 32 38 35 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  285 $test_channe
13aa0 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  l..  }....  if {
13ab0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
13ac0 28 74 69 70 34 30 35 29 5d 7d 20 74 68 65 6e 20  (tip405)]} then 
13ad0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54  {..    checkForT
13ae0 69 70 34 30 35 20 24 74 65 73 74 5f 63 68 61 6e  ip405 $test_chan
13af0 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  nel..  }....  if
13b00 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
13b10 6e 6f 28 74 69 70 34 32 36 29 5d 7d 20 74 68 65  no(tip426)]} the
13b20 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
13b30 72 54 69 70 34 32 36 20 24 74 65 73 74 5f 63 68  rTip426 $test_ch
13b40 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
13b50 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
13b60 73 20 6e 6f 28 74 69 70 34 32 39 29 5d 7d 20 74  s no(tip429)]} t
13b70 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
13b80 46 6f 72 54 69 70 34 32 39 20 24 74 65 73 74 5f  ForTip429 $test_
13b90 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
13ba0 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
13bb0 61 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 74  as performance t
13bc0 65 73 74 69 6e 67 20 62 65 65 6e 20 64 69 73 61  esting been disa
13bd0 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
13be0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
13bf0 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 5c 0d 0a  no(core)] && \..
13c00 20 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69        ![info exi
13c10 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 50  sts no(checkForP
13c20 65 72 66 6f 72 6d 61 6e 63 65 29 5d 7d 20 74 68  erformance)]} th
13c30 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
13c40 6f 72 50 65 72 66 6f 72 6d 61 6e 63 65 20 24 74  orPerformance $t
13c50 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
13c60 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
13c70 45 3a 20 48 61 76 65 20 61 6e 79 20 74 69 6d 69  E: Have any timi
13c80 6e 67 20 72 65 6c 61 74 65 64 20 63 6f 6e 73 74  ng related const
13c90 72 61 69 6e 74 73 20 62 65 65 6e 20 64 69 73 61  raints been disa
13ca0 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 23 20  bled?..  #..  # 
13cb0 42 55 47 42 55 47 3a 20 49 6e 20 45 61 67 6c 65  BUGBUG: In Eagle
13cc0 2c 20 74 68 65 73 65 20 63 68 65 63 6b 73 20 66  , these checks f
13cd0 6f 72 20 22 70 72 65 63 69 73 69 6f 6e 22 20 74  or "precision" t
13ce0 69 6d 69 6e 67 20 61 72 65 20 6e 6f 74 20 6f 76  iming are not ov
13cf0 65 72 6c 79 0d 0a 20 20 23 20 20 20 20 20 20 20  erly..  #       
13d00 20 20 72 65 6c 69 61 62 6c 65 2e 20 20 54 68 69    reliable.  Thi
13d10 73 20 6d 61 79 20 62 65 20 64 75 65 20 74 6f 20  s may be due to 
13d20 74 68 65 20 73 65 6d 69 2d 72 61 6e 64 6f 6d 20  the semi-random 
13d30 6e 61 74 75 72 65 20 6f 66 20 74 68 65 0d 0a 20  nature of the.. 
13d40 20 23 20 20 20 20 20 20 20 20 20 67 61 72 62 61   #         garba
13d50 67 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 20 20  ge collection.  
13d60 4d 6f 72 65 20 72 65 73 65 61 72 63 68 20 69 6e  More research in
13d70 74 6f 20 74 68 65 20 70 72 65 63 69 73 65 20 63  to the precise c
13d80 61 75 73 65 20 6f 66 0d 0a 20 20 23 20 20 20 20  ause of..  #    
13d90 20 20 20 20 20 74 69 6d 69 6e 67 20 69 73 73 75       timing issu
13da0 65 73 20 69 73 20 63 65 72 74 61 69 6e 6c 79 20  es is certainly 
13db0 77 61 72 72 61 6e 74 65 64 2e 0d 0a 20 20 23 0d  warranted...  #.
13dc0 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
13dd0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72  fo exists no(cor
13de0 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
13df0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
13e00 28 74 69 6d 69 6e 67 29 5d 7d 20 74 68 65 6e 20  (timing)]} then 
13e10 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54  {..    checkForT
13e20 69 6d 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e  iming $test_chan
13e30 6e 65 6c 20 35 30 3b 20 23 20 31 2f 32 30 74 68  nel 50; # 1/20th
13e40 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 7d 0d 0a 0d   second...  }...
13e50 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
13e60 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26  ists no(core)] &
13e70 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66  & \..      ![inf
13e80 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 72 65 63  o exists no(prec
13e90 69 73 65 54 69 6d 69 6e 67 29 5d 7d 20 74 68 65  iseTiming)]} the
13ea0 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  n {..    #..    
13eb0 23 20 4e 4f 54 45 3a 20 4e 6f 72 6d 61 6c 6c 79  # NOTE: Normally
13ec0 2c 20 74 68 65 20 22 70 72 65 63 69 73 65 54 69  , the "preciseTi
13ed0 6d 69 6e 67 22 20 63 6f 6e 73 74 72 61 69 6e 74  ming" constraint
13ee0 20 69 6d 70 6c 69 63 69 74 6c 79 20 72 65 71 75   implicitly requ
13ef0 69 72 65 73 20 74 68 61 74 0d 0a 20 20 20 20 23  ires that..    #
13f00 20 20 20 20 20 20 20 74 68 65 20 22 74 69 6d 69         the "timi
13f10 6e 67 22 20 63 6f 6e 73 74 72 61 69 6e 74 20 62  ng" constraint b
13f20 65 20 70 72 65 73 65 6e 74 20 61 73 20 77 65 6c  e present as wel
13f30 6c 3b 20 68 6f 77 65 76 65 72 2c 20 74 68 61 74  l; however, that
13f40 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 23 20 20   can be..    #  
13f50 20 20 20 20 20 6f 76 65 72 72 69 64 64 65 6e 2e       overridden.
13f60 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
13f70 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  {[info exists no
13f80 28 72 65 71 75 69 72 65 54 69 6d 69 6e 67 29 5d  (requireTiming)]
13f90 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b   || \..        [
13fa0 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 74  haveConstraint t
13fb0 69 6d 69 6e 67 5d 7d 20 74 68 65 6e 20 7b 0d 0a  iming]} then {..
13fc0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69        checkForTi
13fd0 6d 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e 6e  ming $test_chann
13fe0 65 6c 20 32 35 20 70 72 65 63 69 73 65 54 69 6d  el 25 preciseTim
13ff0 69 6e 67 3b 20 23 20 31 2f 34 30 74 68 20 73 65  ing; # 1/40th se
14000 63 6f 6e 64 2e 0d 0a 20 20 20 20 7d 0d 0a 20 20  cond...    }..  
14010 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
14020 54 45 3a 20 48 61 73 20 69 6e 74 65 72 61 63 74  TE: Has interact
14030 69 76 65 20 74 65 73 74 69 6e 67 20 62 65 65 6e  ive testing been
14040 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
14050 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
14060 69 73 74 73 20 6e 6f 28 69 6e 74 65 72 61 63 74  ists no(interact
14070 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ive)]} then {.. 
14080 20 20 20 63 68 65 63 6b 46 6f 72 49 6e 74 65 72     checkForInter
14090 61 63 74 69 76 65 20 24 74 65 73 74 5f 63 68 61  active $test_cha
140a0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
140b0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
140c0 69 6e 74 65 72 61 63 74 69 76 65 20 63 6f 6d 6d  interactive comm
140d0 61 6e 64 20 74 65 73 74 69 6e 67 20 62 65 65 6e  and testing been
140e0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
140f0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
14100 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26  ists no(core)] &
14110 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66  & \..      ![inf
14120 6f 20 65 78 69 73 74 73 20 6e 6f 28 69 6e 74 65  o exists no(inte
14130 72 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64 29 5d  ractiveCommand)]
14140 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d  } then {..    #.
14150 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
14160 20 74 65 73 74 20 22 64 65 62 75 67 2d 31 2e 38   test "debug-1.8
14170 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 63  "...    #..    c
14180 68 65 63 6b 46 6f 72 49 6e 74 65 72 61 63 74 69  heckForInteracti
14190 76 65 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  veCommand $test_
141a0 63 68 61 6e 6e 65 6c 20 67 6f 0d 0a 0d 0a 20 20  channel go....  
141b0 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
141c0 20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75 67   For test "debug
141d0 2d 31 2e 39 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.9"...    #.. 
141e0 20 20 20 63 68 65 63 6b 46 6f 72 49 6e 74 65 72     checkForInter
141f0 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64 20 24 74  activeCommand $t
14200 65 73 74 5f 63 68 61 6e 6e 65 6c 20 64 6f 6e 65  est_channel done
14210 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
14220 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
14230 22 6f 62 6a 65 63 74 2d 31 35 2e 39 22 2e 0d 0a  "object-15.9"...
14240 20 20 20 20 23 0d 0a 20 20 20 20 63 68 65 63 6b      #..    check
14250 46 6f 72 49 6e 74 65 72 61 63 74 69 76 65 43 6f  ForInteractiveCo
14260 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e  mmand $test_chan
14270 6e 65 6c 20 61 72 67 73 0d 0a 20 20 7d 0d 0a 0d  nel args..  }...
14280 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
14290 69 73 74 73 20 6e 6f 28 75 73 65 72 49 6e 74 65  ists no(userInte
142a0 72 61 63 74 69 6f 6e 29 5d 7d 20 74 68 65 6e 20  raction)]} then 
142b0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 55  {..    checkForU
142c0 73 65 72 49 6e 74 65 72 61 63 74 69 6f 6e 20 24  serInteraction $
142d0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
142e0 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
142f0 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 6e 65  TE: Check for ne
14300 74 77 6f 72 6b 20 63 6f 6e 6e 65 63 74 69 76 69  twork connectivi
14310 74 79 20 74 6f 20 6f 75 72 20 74 65 73 74 20 68  ty to our test h
14320 6f 73 74 20 28 69 2e 65 2e 0d 0a 20 20 23 20 20  ost (i.e...  #  
14330 20 20 20 20 20 74 68 65 20 45 61 67 6c 65 20 64       the Eagle d
14340 69 73 74 72 69 62 75 74 69 6f 6e 20 73 69 74 65  istribution site
14350 29 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  )...  #..  if {!
14360 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
14370 63 6f 72 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f  core)] && ![info
14380 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74 77 6f   exists no(netwo
14390 72 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rk)]} then {..  
143a0 20 20 63 68 65 63 6b 46 6f 72 4e 65 74 77 6f 72    checkForNetwor
143b0 6b 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  k $test_channel 
143c0 24 74 65 73 74 5f 68 6f 73 74 20 24 74 65 73 74  $test_host $test
143d0 5f 74 69 6d 65 6f 75 74 0d 0a 20 20 7d 0d 0a 0d  _timeout..  }...
143e0 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
143f0 46 69 67 75 72 65 20 6f 75 74 20 74 68 65 20 61  Figure out the a
14400 70 70 72 6f 78 69 6d 61 74 65 20 72 65 6c 61 74  pproximate relat
14410 69 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ive performance 
14420 6f 66 20 74 68 69 73 20 6d 61 63 68 69 6e 65 2e  of this machine.
14430 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
14440 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 62 6f  nfo exists no(bo
14450 67 6f 43 6f 70 73 29 5d 20 26 26 20 5b 68 61 76  goCops)] && [hav
14460 65 43 6f 6e 73 74 72 61 69 6e 74 20 70 65 72 66  eConstraint perf
14470 6f 72 6d 61 6e 63 65 5d 7d 20 74 68 65 6e 20 7b  ormance]} then {
14480 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73  ..    tputs $tes
14490 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20  t_channel \..   
144a0 20 20 20 20 20 22 2d 2d 2d 2d 20 63 68 65 63 6b       "---- check
144b0 69 6e 67 20 66 6f 72 20 62 61 73 65 6c 69 6e 65  ing for baseline
144c0 20 42 6f 67 6f 43 6f 70 73 20 28 63 6f 6d 6d 61   BogoCops (comma
144d0 6e 64 73 2d 70 65 72 2d 73 65 63 6f 6e 64 29 2e  nds-per-second).
144e0 2e 2e 20 22 0d 0a 0d 0a 20 20 20 20 69 66 20 7b  .. "....    if {
144f0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  ![info exists te
14500 73 74 5f 62 61 73 65 5f 63 6f 70 73 5d 7d 20 74  st_base_cops]} t
14510 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
14520 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68        # NOTE: Th
14530 65 20 65 78 70 65 63 74 65 64 20 70 65 72 66 6f  e expected perfo
14540 72 6d 61 6e 63 65 20 6e 75 6d 62 65 72 73 20 66  rmance numbers f
14550 6f 72 20 61 6c 6c 20 74 68 65 0d 0a 20 20 20 20  or all the..    
14560 20 20 23 20 20 20 20 20 20 20 70 65 72 66 6f 72    #       perfor
14570 6d 61 6e 63 65 20 74 65 73 74 73 20 77 69 6c 6c  mance tests will
14580 20 62 65 20 63 61 6c 69 62 72 61 74 65 64 20 62   be calibrated b
14590 61 73 65 64 20 6f 6e 0d 0a 20 20 20 20 20 20 23  ased on..      #
145a0 20 20 20 20 20 20 20 74 68 69 73 20 6e 75 6d 62         this numb
145b0 65 72 20 28 77 68 69 63 68 20 69 73 20 62 61 73  er (which is bas
145c0 65 64 20 6f 6e 20 74 68 65 20 6d 65 61 73 75 72  ed on the measur
145d0 65 64 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  ed..      #     
145e0 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f 66    performance of
145f0 20 74 68 65 20 61 63 74 75 61 6c 20 6d 61 63 68   the actual mach
14600 69 6e 65 20 74 68 61 74 20 77 61 73 0d 0a 20 20  ine that was..  
14610 20 20 20 20 23 20 20 20 20 20 20 20 75 73 65 64      #       used
14620 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68   to determine th
14630 6f 73 65 20 65 78 70 65 63 74 65 64 20 70 65 72  ose expected per
14640 66 6f 72 6d 61 6e 63 65 0d 0a 20 20 20 20 20 20  formance..      
14650 23 20 20 20 20 20 20 20 6e 75 6d 62 65 72 73 29  #       numbers)
14660 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
14670 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d    if {[isEagle]}
14680 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
14690 20 73 65 74 20 74 65 73 74 5f 62 61 73 65 5f 63   set test_base_c
146a0 6f 70 73 20 33 36 30 30 30 2e 30 3b 20 23 20 4e  ops 36000.0; # N
146b0 4f 54 45 3a 20 45 61 67 6c 65 20 31 2e 30 20 57  OTE: Eagle 1.0 W
146c0 69 6e 33 32 0d 0a 20 20 20 20 20 20 7d 20 65 6c  in32..      } el
146d0 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65  se {..        se
146e0 74 20 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73  t test_base_cops
146f0 20 31 35 37 30 30 30 30 2e 30 3b 20 23 20 4e 4f   1570000.0; # NO
14700 54 45 3a 20 54 63 6c 20 38 2e 34 2e 31 39 20 57  TE: Tcl 8.4.19 W
14710 69 6e 33 32 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  in32..      }.. 
14720 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75 74     }....    tput
14730 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
14740 5b 61 70 70 65 6e 64 41 72 67 73 20 24 74 65 73  [appendArgs $tes
14750 74 5f 62 61 73 65 5f 63 6f 70 73 20 5c 6e 5d 0d  t_base_cops \n].
14760 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74  .    tputs $test
14770 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20  _channel \..    
14780 20 20 20 20 22 2d 2d 2d 2d 20 63 68 65 63 6b 69      "---- checki
14790 6e 67 20 66 6f 72 20 62 61 73 65 6c 69 6e 65 20  ng for baseline 
147a0 42 6f 67 6f 43 6f 70 73 20 6d 75 6c 74 69 70 6c  BogoCops multipl
147b0 69 65 72 73 2e 2e 2e 20 22 0d 0a 0d 0a 20 20 20  iers... "....   
147c0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
147d0 74 73 20 74 65 73 74 5f 62 61 73 65 5f 63 6f 70  ts test_base_cop
147e0 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73 5d 7d 20  s_multipliers]} 
147f0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65  then {..      se
14800 74 20 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73  t test_base_cops
14810 5f 6d 75 6c 74 69 70 6c 69 65 72 73 20 5b 6c 69  _multipliers [li
14820 73 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  st \..          
14830 32 20 34 20 38 20 31 30 20 31 36 20 32 30 20 33  2 4 8 10 16 20 3
14840 32 20 35 30 20 36 34 20 31 30 30 20 31 30 30 30  2 50 64 100 1000
14850 20 31 30 30 30 30 20 31 30 30 30 30 30 20 31 30   10000 100000 10
14860 30 30 30 30 30 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  00000]..    }...
14870 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74  .    tputs $test
14880 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
14890 41 72 67 73 20 24 74 65 73 74 5f 62 61 73 65 5f  Args $test_base_
148a0 63 6f 70 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73  cops_multipliers
148b0 20 5c 6e 5d 0d 0a 20 20 20 20 74 70 75 74 73 20   \n]..    tputs 
148c0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d  $test_channel \.
148d0 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63  .        "---- c
148e0 68 65 63 6b 69 6e 67 20 66 6f 72 20 63 75 72 72  hecking for curr
148f0 65 6e 74 20 42 6f 67 6f 43 6f 70 73 20 28 63 6f  ent BogoCops (co
14900 6d 6d 61 6e 64 73 2d 70 65 72 2d 73 65 63 6f 6e  mmands-per-secon
14910 64 29 2e 2e 2e 20 22 0d 0a 0d 0a 20 20 20 20 69  d)... "....    i
14920 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
14930 20 74 65 73 74 5f 63 6f 70 73 5d 7d 20 74 68 65   test_cops]} the
14940 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 74  n {..      set t
14950 65 73 74 5f 63 6f 70 73 20 5b 63 61 6c 63 75 6c  est_cops [calcul
14960 61 74 65 42 6f 67 6f 43 6f 70 73 5d 0d 0a 20 20  ateBogoCops]..  
14970 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73    }....    tputs
14980 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
14990 61 70 70 65 6e 64 41 72 67 73 20 5b 66 6f 72 6d  appendArgs [form
149a0 61 74 44 65 63 69 6d 61 6c 20 24 74 65 73 74 5f  atDecimal $test_
149b0 63 6f 70 73 5d 20 5c 6e 5d 0d 0a 20 20 20 20 74  cops] \n]..    t
149c0 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
149d0 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d  el \..        "-
149e0 2d 2d 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72  --- checking for
149f0 20 63 75 72 72 65 6e 74 20 42 6f 67 6f 43 6f 70   current BogoCop
14a00 73 20 61 67 61 69 6e 73 74 20 62 61 73 65 6c 69  s against baseli
14a10 6e 65 20 42 6f 67 6f 43 6f 70 73 2e 2e 2e 20 22  ne BogoCops... "
14a20 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 24 74 65 73  ....    if {$tes
14a30 74 5f 63 6f 70 73 20 3e 20 24 74 65 73 74 5f 62  t_cops > $test_b
14a40 61 73 65 5f 63 6f 70 73 7d 20 74 68 65 6e 20 7b  ase_cops} then {
14a50 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
14a60 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 66 61 73  fo exists no(fas
14a70 74 65 72 42 6f 67 6f 43 6f 70 73 29 5d 7d 20 74  terBogoCops)]} t
14a80 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 61  hen {..        a
14a90 64 64 43 6f 6e 73 74 72 61 69 6e 74 20 73 61 6d  ddConstraint sam
14aa0 65 4f 72 46 61 73 74 65 72 42 6f 67 6f 43 6f 70  eOrFasterBogoCop
14ab0 73 0d 0a 20 20 20 20 20 20 20 20 61 64 64 43 6f  s..        addCo
14ac0 6e 73 74 72 61 69 6e 74 20 66 61 73 74 65 72 42  nstraint fasterB
14ad0 6f 67 6f 43 6f 70 73 0d 0a 0d 0a 20 20 20 20 20  ogoCops....     
14ae0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
14af0 69 73 74 73 20 6e 6f 28 62 6f 67 6f 43 6f 70 73  ists no(bogoCops
14b00 4d 75 6c 74 69 70 6c 69 65 72 73 29 5d 7d 20 74  Multipliers)]} t
14b10 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
14b20 20 66 6f 72 65 61 63 68 20 6d 75 6c 74 69 70 6c   foreach multipl
14b30 69 65 72 20 24 74 65 73 74 5f 62 61 73 65 5f 63  ier $test_base_c
14b40 6f 70 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73 20  ops_multipliers 
14b50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
14b60 66 20 7b 24 74 65 73 74 5f 63 6f 70 73 20 3e 3d  f {$test_cops >=
14b70 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73   $test_base_cops
14b80 20 2a 20 24 6d 75 6c 74 69 70 6c 69 65 72 7d 20   * $multiplier} 
14b90 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
14ba0 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61        addConstra
14bb0 69 6e 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20  int [appendArgs 
14bc0 66 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 42 79  fasterBogoCopsBy
14bd0 20 24 6d 75 6c 74 69 70 6c 69 65 72 20 58 5d 0d   $multiplier X].
14be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
14bf0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
14c00 20 20 20 20 20 20 20 20 20 75 6e 73 65 74 20 6d           unset m
14c10 75 6c 74 69 70 6c 69 65 72 0d 0a 20 20 20 20 20  ultiplier..     
14c20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d     }..      }...
14c30 0a 20 20 20 20 20 20 74 70 75 74 73 20 24 74 65  .      tputs $te
14c40 73 74 5f 63 68 61 6e 6e 65 6c 20 66 61 73 74 65  st_channel faste
14c50 72 5c 6e 0d 0a 20 20 20 20 7d 20 65 6c 73 65 69  r\n..    } elsei
14c60 66 20 7b 24 74 65 73 74 5f 63 6f 70 73 20 3c 20  f {$test_cops < 
14c70 24 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73 7d  $test_base_cops}
14c80 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 69   then {..      i
14c90 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
14ca0 20 6e 6f 28 73 6c 6f 77 65 72 42 6f 67 6f 43 6f   no(slowerBogoCo
14cb0 70 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ps)]} then {..  
14cc0 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61        addConstra
14cd0 69 6e 74 20 73 61 6d 65 4f 72 53 6c 6f 77 65 72  int sameOrSlower
14ce0 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20 20 20  BogoCops..      
14cf0 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74 20    addConstraint 
14d00 73 6c 6f 77 65 72 42 6f 67 6f 43 6f 70 73 0d 0a  slowerBogoCops..
14d10 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
14d20 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 62  info exists no(b
14d30 6f 67 6f 43 6f 70 73 4d 75 6c 74 69 70 6c 69 65  ogoCopsMultiplie
14d40 72 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rs)]} then {..  
14d50 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
14d60 6d 75 6c 74 69 70 6c 69 65 72 20 24 74 65 73 74  multiplier $test
14d70 5f 62 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69  _base_cops_multi
14d80 70 6c 69 65 72 73 20 7b 0d 0a 20 20 20 20 20 20  pliers {..      
14d90 20 20 20 20 20 20 69 66 20 7b 24 74 65 73 74 5f        if {$test_
14da0 63 6f 70 73 20 3c 3d 20 24 74 65 73 74 5f 62 61  cops <= $test_ba
14db0 73 65 5f 63 6f 70 73 20 2a 20 28 31 2e 30 20 2f  se_cops * (1.0 /
14dc0 20 24 6d 75 6c 74 69 70 6c 69 65 72 29 7d 20 74   $multiplier)} t
14dd0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
14de0 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69       addConstrai
14df0 6e 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20 73  nt [appendArgs s
14e00 6c 6f 77 65 72 42 6f 67 6f 43 6f 70 73 42 79 20  lowerBogoCopsBy 
14e10 24 6d 75 6c 74 69 70 6c 69 65 72 20 58 5d 0d 0a  $multiplier X]..
14e20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14e30 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
14e40 20 20 20 20 20 20 20 20 75 6e 73 65 74 20 6d 75          unset mu
14e50 6c 74 69 70 6c 69 65 72 0d 0a 20 20 20 20 20 20  ltiplier..      
14e60 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a    }..      }....
14e70 20 20 20 20 20 20 74 70 75 74 73 20 24 74 65 73        tputs $tes
14e80 74 5f 63 68 61 6e 6e 65 6c 20 73 6c 6f 77 65 72  t_channel slower
14e90 5c 6e 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  \n..    } else {
14ea0 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
14eb0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 61 6d  fo exists no(sam
14ec0 65 42 6f 67 6f 43 6f 70 73 29 5d 7d 20 74 68 65  eBogoCops)]} the
14ed0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 61 64 64  n {..        add
14ee0 43 6f 6e 73 74 72 61 69 6e 74 20 73 61 6d 65 4f  Constraint sameO
14ef0 72 46 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 0d  rFasterBogoCops.
14f00 0a 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73  .        addCons
14f10 74 72 61 69 6e 74 20 73 61 6d 65 4f 72 53 6c 6f  traint sameOrSlo
14f20 77 65 72 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20  werBogoCops..   
14f30 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69       addConstrai
14f40 6e 74 20 73 61 6d 65 42 6f 67 6f 43 6f 70 73 0d  nt sameBogoCops.
14f50 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
14f60 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
14f70 61 6e 6e 65 6c 20 73 61 6d 65 5c 6e 0d 0a 20 20  annel same\n..  
14f80 20 20 7d 0d 0a 0d 0a 20 20 20 20 73 65 74 20 70    }....    set p
14f90 65 72 63 65 6e 74 20 5b 65 78 70 72 20 7b 5b 63  ercent [expr {[c
14fa0 61 6c 63 75 6c 61 74 65 52 65 6c 61 74 69 76 65  alculateRelative
14fb0 50 65 72 66 6f 72 6d 61 6e 63 65 20 69 74 65 72  Performance iter
14fc0 61 74 69 6f 6e 73 20 31 5d 20 2a 20 31 30 30 7d  ations 1] * 100}
14fd0 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  ]....    tputs $
14fe0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
14ff0 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20  pendArgs \..    
15000 20 20 20 20 22 2d 2d 2d 2d 20 63 75 72 72 65 6e      "---- curren
15010 74 20 42 6f 67 6f 43 6f 70 73 20 28 63 6f 6d 6d  t BogoCops (comm
15020 61 6e 64 73 2d 70 65 72 2d 73 65 63 6f 6e 64 29  ands-per-second)
15030 20 69 73 20 22 20 5b 66 6f 72 6d 61 74 44 65 63   is " [formatDec
15040 69 6d 61 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20  imal \..        
15050 5b 65 78 70 72 20 7b 24 70 65 72 63 65 6e 74 20  [expr {$percent 
15060 3e 20 31 30 30 20 3f 20 24 70 65 72 63 65 6e 74  > 100 ? $percent
15070 20 2d 20 31 30 30 20 3a 20 24 70 65 72 63 65 6e   - 100 : $percen
15080 74 7d 5d 20 32 5d 20 22 25 20 22 20 5c 0d 0a 20  t}] 2] "% " \.. 
15090 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 70         [expr {$p
150a0 65 72 63 65 6e 74 20 3e 20 31 30 30 20 3f 20 22  ercent > 100 ? "
150b0 66 61 73 74 65 72 20 74 68 61 6e 22 20 3a 20 22  faster than" : "
150c0 61 73 20 66 61 73 74 20 61 73 22 7d 5d 20 5c 0d  as fast as"}] \.
150d0 0a 20 20 20 20 20 20 20 20 22 20 74 68 65 20 62  .        " the b
150e0 61 73 65 6c 69 6e 65 5c 6e 22 5d 0d 0a 0d 0a 20  aseline\n"].... 
150f0 20 20 20 75 6e 73 65 74 20 70 65 72 63 65 6e 74     unset percent
15100 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23  ..  }....  #####
15110 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15120 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15130 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15150 23 23 23 23 23 23 23 23 0d 0a 20 20 23 23 23 23  ########..  ####
15160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15170 23 23 23 23 20 45 4e 44 20 45 61 67 6c 65 20 26  #### END Eagle &
15180 20 54 63 6c 20 43 6f 6e 73 74 72 61 69 6e 74 73   Tcl Constraints
15190 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
151a0 23 23 23 23 23 23 23 23 23 0d 0a 20 20 23 23 23  #########..  ###
151b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
151c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
151d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
151e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
151f0 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20  ##########....  
15200 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  #..  # NOTE: For
15210 20 45 61 67 6c 65 2c 20 64 75 6d 70 20 74 68 65   Eagle, dump the
15220 20 70 6c 61 74 66 6f 72 6d 20 69 6e 66 6f 72 6d   platform inform
15230 61 74 69 6f 6e 2c 20 69 6e 63 6c 75 64 69 6e 67  ation, including
15240 0d 0a 20 20 23 20 20 20 20 20 20 20 74 68 65 20  ..  #       the 
15250 63 6f 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 73 2e  compile options.
15260 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 73  ..  #..  if {[is
15270 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Eagle]} then {..
15280 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
15290 45 3a 20 49 73 20 74 68 65 20 75 73 65 20 6f 66  E: Is the use of
152a0 20 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20 74   Fossil by the t
152b0 65 73 74 20 73 75 69 74 65 20 61 6c 6c 6f 77 65  est suite allowe
152c0 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
152d0 66 20 7b 5b 63 61 6e 45 78 65 63 46 6f 73 73 69  f {[canExecFossi
152e0 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  l]} then {..    
152f0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
15300 45 3a 20 47 65 74 20 74 68 65 20 73 6f 75 72 63  E: Get the sourc
15310 65 20 63 68 65 63 6b 6f 75 74 20 61 6e 64 20 74  e checkout and t
15320 61 67 73 20 28 69 2e 65 2e 20 6f 66 20 45 61 67  ags (i.e. of Eag
15330 6c 65 20 6f 72 20 77 68 61 74 65 76 65 72 0d 0a  le or whatever..
15340 20 20 20 20 20 20 23 20 20 20 20 20 20 20 70 72        #       pr
15350 6f 6a 65 63 74 20 74 68 65 20 45 61 67 6c 65 20  oject the Eagle 
15360 62 69 6e 61 72 69 65 73 20 61 72 65 20 62 65 69  binaries are bei
15370 6e 67 20 75 73 65 64 20 62 79 29 20 75 73 69 6e  ng used by) usin
15380 67 20 61 20 46 6f 73 73 69 6c 0d 0a 20 20 20 20  g a Fossil..    
15390 20 20 23 20 20 20 20 20 20 20 62 69 6e 61 72 79    #       binary
153a0 20 69 6e 20 74 68 65 20 50 41 54 48 2c 20 69 66   in the PATH, if
153b0 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20   available...   
153c0 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
153d0 5b 63 61 74 63 68 20 7b 65 78 65 63 20 2d 2d 20  [catch {exec -- 
153e0 66 6f 73 73 69 6c 20 69 6e 66 6f 7d 20 65 78 65  fossil info} exe
153f0 63 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d  c] == 0} then {.
15400 0a 20 20 20 20 20 20 20 20 73 65 74 20 70 61 74  .        set pat
15410 74 65 72 6e 20 7b 5e 63 68 65 63 6b 6f 75 74 3a  tern {^checkout:
15420 5c 73 2b 28 2e 2a 3f 29 5c 73 2b 24 7d 0d 0a 0d  \s+(.*?)\s+$}...
15430 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 72  .        if {![r
15440 65 67 65 78 70 20 2d 6c 69 6e 65 20 2d 2d 20 24  egexp -line -- $
15450 70 61 74 74 65 72 6e 20 24 65 78 65 63 20 64 75  pattern $exec du
15460 6d 6d 79 20 63 68 65 63 6b 6f 75 74 5d 7d 20 74  mmy checkout]} t
15470 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
15480 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
15490 4e 4f 54 45 3a 20 57 65 20 63 6f 75 6c 64 20 6e  NOTE: We could n
154a0 6f 74 20 71 75 65 72 79 20 74 68 65 20 73 6f 75  ot query the sou
154b0 72 63 65 20 63 68 65 63 6b 6f 75 74 20 66 72 6f  rce checkout fro
154c0 6d 20 46 6f 73 73 69 6c 2e 0d 0a 20 20 20 20 20  m Fossil...     
154d0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
154e0 20 20 73 65 74 20 63 68 65 63 6b 6f 75 74 20 3c    set checkout <
154f0 6e 6f 6e 65 3e 0d 0a 20 20 20 20 20 20 20 20 7d  none>..        }
15500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20  ....        set 
15510 70 61 74 74 65 72 6e 20 7b 5e 74 61 67 73 3a 5c  pattern {^tags:\
15520 73 2b 28 2e 2a 3f 29 5c 73 2b 24 7d 0d 0a 0d 0a  s+(.*?)\s+$}....
15530 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 72 65          if {![re
15540 67 65 78 70 20 2d 6c 69 6e 65 20 2d 2d 20 24 70  gexp -line -- $p
15550 61 74 74 65 72 6e 20 24 65 78 65 63 20 64 75 6d  attern $exec dum
15560 6d 79 20 74 61 67 73 5d 7d 20 74 68 65 6e 20 7b  my tags]} then {
15570 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
15580 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
15590 20 57 65 20 63 6f 75 6c 64 20 6e 6f 74 20 71 75   We could not qu
155a0 65 72 79 20 74 68 65 20 74 61 67 73 20 66 72 6f  ery the tags fro
155b0 6d 20 46 6f 73 73 69 6c 2e 0d 0a 20 20 20 20 20  m Fossil...     
155c0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
155d0 20 20 73 65 74 20 74 61 67 73 20 3c 6e 6f 6e 65    set tags <none
155e0 3e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  >..        }..  
155f0 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
15600 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
15610 20 23 20 4e 4f 54 45 3a 20 57 65 20 63 6f 75 6c   # NOTE: We coul
15620 64 20 6e 6f 74 20 71 75 65 72 79 20 69 6e 66 6f  d not query info
15630 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 46 6f 73  rmation from Fos
15640 73 69 6c 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  sil...        #.
15650 0a 20 20 20 20 20 20 20 20 73 65 74 20 63 68 65  .        set che
15660 63 6b 6f 75 74 20 3c 6e 6f 6e 65 3e 0d 0a 20 20  ckout <none>..  
15670 20 20 20 20 20 20 73 65 74 20 74 61 67 73 20 3c        set tags <
15680 6e 6f 6e 65 3e 0d 0a 20 20 20 20 20 20 7d 0d 0a  none>..      }..
15690 0d 0a 20 20 20 20 20 20 75 6e 73 65 74 20 2d 6e  ..      unset -n
156a0 6f 63 6f 6d 70 6c 61 69 6e 20 64 75 6d 6d 79 20  ocomplain dummy 
156b0 65 78 65 63 20 70 61 74 74 65 72 6e 0d 0a 20 20  exec pattern..  
156c0 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
156d0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
156e0 45 3a 20 55 73 65 20 6f 66 20 46 6f 73 73 69 6c  E: Use of Fossil
156f0 20 62 79 20 74 68 65 20 74 65 73 74 20 73 75 69   by the test sui
15700 74 65 20 69 73 20 66 6f 72 62 69 64 64 65 6e 2e  te is forbidden.
15710 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
15720 20 73 65 74 20 63 68 65 63 6b 6f 75 74 20 3c 6e   set checkout <n
15730 6f 6e 65 3e 0d 0a 20 20 20 20 20 20 73 65 74 20  one>..      set 
15740 74 61 67 73 20 3c 6e 6f 6e 65 3e 0d 0a 20 20 20  tags <none>..   
15750 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20   }....    tputs 
15760 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
15770 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
15780 63 68 65 63 6b 6f 75 74 3a 20 22 20 5c 0d 0a 20  checkout: " \.. 
15790 20 20 20 20 20 20 20 24 63 68 65 63 6b 6f 75 74         $checkout
157a0 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74   \n]....    tput
157b0 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
157c0 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
157d0 2d 20 74 61 67 73 3a 20 22 20 5c 0d 0a 20 20 20  - tags: " \..   
157e0 20 20 20 20 20 24 74 61 67 73 20 5c 6e 5d 0d 0a       $tags \n]..
157f0 0d 0a 20 20 20 20 75 6e 73 65 74 20 74 61 67 73  ..    unset tags
15800 20 63 68 65 63 6b 6f 75 74 0d 0a 0d 0a 20 20 20   checkout....   
15810 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
15820 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15830 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15850 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
15860 20 20 20 20 73 65 74 20 74 69 6d 65 53 74 61 6d      set timeStam
15870 70 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e  p [getPlatformIn
15880 66 6f 20 74 69 6d 65 53 74 61 6d 70 20 22 22 5d  fo timeStamp ""]
15890 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 73 74 72  ....    if {[str
158a0 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 69 6d 65  ing length $time
158b0 53 74 61 6d 70 5d 20 3e 20 30 7d 20 74 68 65 6e  Stamp] > 0} then
158c0 20 7b 0d 0a 20 20 20 20 20 20 23 23 23 23 23 23   {..      ######
158d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
158e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
158f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15900 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15910 23 23 23 0d 0a 20 20 20 20 20 20 23 20 4d 4f 4e  ###..      # MON
15920 4f 3a 20 42 75 67 2c 20 73 65 65 3a 20 68 74 74  O: Bug, see: htt
15930 70 73 3a 2f 2f 62 75 67 7a 69 6c 6c 61 2e 6e 6f  ps://bugzilla.no
15940 76 65 6c 6c 2e 63 6f 6d 2f 73 68 6f 77 5f 62 75  vell.com/show_bu
15950 67 2e 63 67 69 3f 69 64 3d 34 37 39 30 36 31 0d  g.cgi?id=479061.
15960 0a 20 20 20 20 20 20 23 23 23 23 23 23 23 23 23  .      #########
15970 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15980 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15990 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
159a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
159b0 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69  ....      if {[i
159c0 73 4d 6f 6e 6f 5d 7d 20 74 68 65 6e 20 7b 0d 0a  sMono]} then {..
159d0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
159e0 20 20 20 23 20 48 41 43 4b 3a 20 57 65 20 6e 65     # HACK: We ne
159f0 65 64 20 73 6f 6d 65 74 68 69 6e 67 20 74 6f 20  ed something to 
15a00 67 6f 20 69 6e 74 6f 20 74 68 65 20 6c 6f 67 20  go into the log 
15a10 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 23  file...        #
15a20 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 74 69  ..        set ti
15a30 6d 65 53 74 61 6d 70 20 5b 6c 69 6e 64 65 78 20  meStamp [lindex 
15a40 24 74 69 6d 65 53 74 61 6d 70 20 30 5d 0d 0a 20  $timeStamp 0].. 
15a50 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
15a60 20 20 20 20 20 20 20 73 65 74 20 74 69 6d 65 53         set timeS
15a70 74 61 6d 70 20 5b 66 6f 72 6d 61 74 54 69 6d 65  tamp [formatTime
15a80 53 74 61 6d 70 20 5b 63 6c 6f 63 6b 20 73 63 61  Stamp [clock sca
15a90 6e 20 24 74 69 6d 65 53 74 61 6d 70 5d 5d 0d 0a  n $timeStamp]]..
15aa0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 20 65        }..    } e
15ab0 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 73 65 74  lse {..      set
15ac0 20 74 69 6d 65 53 74 61 6d 70 20 3c 6e 6f 6e 65   timeStamp <none
15ad0 3e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  >..    }....    
15ae0 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
15af0 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
15b00 22 2d 2d 2d 2d 20 62 75 69 6c 64 3a 20 22 20 5c  "---- build: " \
15b10 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20  ..        [list 
15b20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f  [getPlatformInfo
15b30 20 65 6e 67 69 6e 65 20 3c 6e 6f 6e 65 3e 5d 5d   engine <none>]]
15b40 20 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20   " " \..        
15b50 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f  [list [getPlatfo
15b60 72 6d 49 6e 66 6f 20 70 61 74 63 68 4c 65 76 65  rmInfo patchLeve
15b70 6c 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c  l <none>]] " " \
15b80 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20  ..        [list 
15b90 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f  [getPlatformInfo
15ba0 20 74 61 67 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20   tag <none>]] " 
15bb0 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69  " \..        [li
15bc0 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49  st [getPlatformI
15bd0 6e 66 6f 20 72 65 6c 65 61 73 65 20 3c 6e 6f 6e  nfo release <non
15be0 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20  e>]] " " \..    
15bf0 20 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c      [list [getPl
15c00 61 74 66 6f 72 6d 49 6e 66 6f 20 74 65 78 74 20  atformInfo text 
15c10 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a  <none>]] " " \..
15c20 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67          [list [g
15c30 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63  etPlatformInfo c
15c40 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3c 6e 6f  onfiguration <no
15c50 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20  ne>]] " " \..   
15c60 20 20 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50       [list [getP
15c70 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 73 75 66 66  latformInfo suff
15c80 69 78 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20  ix <none>]] " " 
15c90 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74  \..        [list
15ca0 20 24 74 69 6d 65 53 74 61 6d 70 5d 20 22 20 22   $timeStamp] " "
15cb0 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73   \..        [lis
15cc0 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e  t [getPlatformIn
15cd0 66 6f 20 73 6f 75 72 63 65 49 64 20 3c 6e 6f 6e  fo sourceId <non
15ce0 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20  e>]] " " \..    
15cf0 20 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c      [list [getPl
15d00 61 74 66 6f 72 6d 49 6e 66 6f 20 73 6f 75 72 63  atformInfo sourc
15d10 65 54 69 6d 65 53 74 61 6d 70 20 3c 6e 6f 6e 65  eTimeStamp <none
15d20 3e 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75  >]] \n]....    u
15d30 6e 73 65 74 20 74 69 6d 65 53 74 61 6d 70 0d 0a  nset timeStamp..
15d40 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73  ..    tputs $tes
15d50 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
15d60 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6f 73 3a 20  dArgs "---- os: 
15d70 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65  " \..        [ge
15d80 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 6f 73  tPlatformInfo os
15d90 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a   <none>] \n]....
15da0 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
15db0 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
15dc0 72 67 73 20 22 2d 2d 2d 2d 20 67 6c 6f 62 61 6c  rgs "---- global
15dd0 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3a 20 22  AssemblyCache: "
15de0 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65 74   \..        [get
15df0 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 67 6c 6f  PlatformInfo glo
15e00 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65  balAssemblyCache
15e10 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a   <none>] \n]....
15e20 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
15e30 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
15e40 72 67 73 20 22 2d 2d 2d 2d 20 6d 6f 64 75 6c 65  rgs "---- module
15e50 56 65 72 73 69 6f 6e 49 64 3a 20 22 20 5c 0d 0a  VersionId: " \..
15e60 20 20 20 20 20 20 20 20 5b 67 65 74 50 6c 61 74          [getPlat
15e70 66 6f 72 6d 49 6e 66 6f 20 6d 6f 64 75 6c 65 56  formInfo moduleV
15e80 65 72 73 69 6f 6e 49 64 20 3c 6e 6f 6e 65 3e 5d  ersionId <none>]
15e90 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74   \n]....    tput
15ea0 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
15eb0 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
15ec0 2d 20 63 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73  - compileOptions
15ed0 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  : " \..        [
15ee0 66 6f 72 6d 61 74 4c 69 73 74 20 5b 67 65 74 50  formatList [getP
15ef0 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63 6f 6d 70  latformInfo comp
15f00 69 6c 65 4f 70 74 69 6f 6e 73 20 3c 6e 6f 6e 65  ileOptions <none
15f10 3e 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74  >]] \n]....    t
15f20 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
15f30 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
15f40 2d 2d 2d 2d 20 73 74 72 6f 6e 67 4e 61 6d 65 3a  ---- strongName:
15f50 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67   " \..        [g
15f60 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 73  etPlatformInfo s
15f70 74 72 6f 6e 67 4e 61 6d 65 20 3c 6e 6f 6e 65 3e  trongName <none>
15f80 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75  ] \n]....    tpu
15f90 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
15fa0 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
15fb0 2d 2d 20 63 65 72 74 69 66 69 63 61 74 65 3a 20  -- certificate: 
15fc0 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65  " \..        [ge
15fd0 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63 65  tPlatformInfo ce
15fe0 72 74 69 66 69 63 61 74 65 20 3c 6e 6f 6e 65 3e  rtificate <none>
15ff0 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75  ] \n]....    tpu
16000 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
16010 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
16020 2d 2d 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f  -- targetFramewo
16030 72 6b 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  rk: " \..       
16040 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
16050 6f 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  o targetFramewor
16060 6b 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 20  k <none>] \n].. 
16070 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
16080 4f 54 45 3a 20 53 68 6f 77 20 74 68 65 20 63 75  OTE: Show the cu
16090 72 72 65 6e 74 20 74 65 73 74 20 66 69 6c 65 20  rrent test file 
160a0 6e 61 6d 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20  name, if any... 
160b0 20 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73   #..  tputs $tes
160c0 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
160d0 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74  dArgs "---- test
160e0 20 66 69 6c 65 3a 20 22 20 5c 0d 0a 20 20 20 20   file: " \..    
160f0 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
16100 78 69 73 74 73 20 74 65 73 74 5f 66 69 6c 65 5d  xists test_file]
16110 20 26 26 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67   && [string leng
16120 74 68 20 24 74 65 73 74 5f 66 69 6c 65 5d 20 3e  th $test_file] >
16130 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 24 74   0 ? \..      $t
16140 65 73 74 5f 66 69 6c 65 20 3a 20 22 3c 6e 6f 6e  est_file : "<non
16150 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23  e>"}] \n]....  #
16160 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77  ..  # NOTE: Show
16170 20 74 68 65 20 61 63 74 69 76 65 20 74 65 73 74   the active test
16180 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20   constraints... 
16190 20 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73   #..  tputs $tes
161a0 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
161b0 64 41 72 67 73 20 22 2d 2d 2d 2d 20 63 6f 6e 73  dArgs "---- cons
161c0 74 72 61 69 6e 74 73 3a 20 22 20 5c 0d 0a 20 20  traints: " \..  
161d0 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 20      [formatList 
161e0 5b 6c 73 6f 72 74 20 5b 67 65 74 43 6f 6e 73 74  [lsort [getConst
161f0 72 61 69 6e 74 73 5d 5d 20 3c 6e 6f 6e 65 3e 5d  raints]] <none>]
16200 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23   \n]....  #..  #
16210 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 65 20   NOTE: Show the 
16220 73 74 61 72 74 69 6e 67 20 63 6f 6d 6d 61 6e 64  starting command
16230 20 63 6f 75 6e 74 20 28 66 6f 72 20 62 6f 74 68   count (for both
16240 20 54 63 6c 20 61 6e 64 20 45 61 67 6c 65 29 2e   Tcl and Eagle).
16250 0d 0a 20 20 23 0d 0a 20 20 74 70 75 74 73 20 24  ..  #..  tputs $
16260 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
16270 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73  pendArgs "---- s
16280 74 61 72 74 69 6e 67 20 63 6f 6d 6d 61 6e 64 20  tarting command 
16290 63 6f 75 6e 74 3a 20 22 20 5c 0d 0a 20 20 20 20  count: " \..    
162a0 20 20 5b 69 6e 66 6f 20 63 6d 64 63 6f 75 6e 74    [info cmdcount
162b0 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 69 66 20 7b 5b  ] \n]....  if {[
162c0 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b  isEagle]} then {
162d0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
162e0 4f 54 45 3a 20 53 68 6f 77 20 74 68 65 20 73 74  OTE: Show the st
162f0 61 72 74 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e  arting operation
16300 20 63 6f 75 6e 74 20 28 66 6f 72 20 45 61 67 6c   count (for Eagl
16310 65 20 6f 6e 6c 79 29 2e 0d 0a 20 20 20 20 23 0d  e only)...    #.
16320 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74  .    tputs $test
16330 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
16340 41 72 67 73 20 22 2d 2d 2d 2d 20 73 74 61 72 74  Args "---- start
16350 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 20 63 6f  ing operation co
16360 75 6e 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  unt: " \..      
16370 20 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65    [object invoke
16380 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75 62 6c   -flags +NonPubl
16390 69 63 20 49 6e 74 65 72 70 72 65 74 65 72 2e 47  ic Interpreter.G
163a0 65 74 41 63 74 69 76 65 20 5c 0d 0a 20 20 20 20  etActive \..    
163b0 20 20 20 20 20 20 20 20 4f 70 65 72 61 74 69 6f          Operatio
163c0 6e 43 6f 75 6e 74 5d 20 5c 6e 5d 0d 0a 0d 0a 20  nCount] \n].... 
163d0 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
163e0 3a 20 52 65 63 6f 72 64 20 74 68 65 20 72 61 77  : Record the raw
163f0 20 73 74 61 72 74 69 6e 67 20 70 65 72 66 6f 72   starting perfor
16400 6d 61 6e 63 65 20 63 6f 75 6e 74 2c 20 66 6f 72  mance count, for
16410 20 6c 61 74 65 72 20 75 73 65 20 69 6e 0d 0a 20   later use in.. 
16420 20 20 20 23 20 20 20 20 20 20 20 63 61 6c 63 75     #       calcu
16430 6c 61 74 69 6e 67 20 74 68 65 20 61 70 70 72 6f  lating the appro
16440 78 69 6d 61 74 65 20 6e 75 6d 62 65 72 20 6f 66  ximate number of
16450 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 20 65 6c   microseconds el
16460 61 70 73 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20  apsed...    #.. 
16470 20 20 20 63 61 74 63 68 20 7b 73 65 74 20 74 65     catch {set te
16480 73 74 5f 74 69 6d 65 73 74 61 6d 70 28 73 74 61  st_timestamp(sta
16490 72 74 43 6f 75 6e 74 29 20 5b 63 6c 6f 63 6b 20  rtCount) [clock 
164a0 73 74 61 72 74 5d 7d 0d 0a 20 20 7d 0d 0a 0d 0a  start]}..  }....
164b0 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
164c0 68 6f 77 20 77 68 65 6e 20 74 68 65 20 74 65 73  how when the tes
164d0 74 73 20 61 63 74 75 61 6c 6c 79 20 62 65 67 61  ts actually bega
164e0 6e 20 28 6e 6f 77 29 2e 0d 0a 20 20 23 0d 0a 20  n (now)...  #.. 
164f0 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
16500 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
16510 20 22 2d 2d 2d 2d 20 74 65 73 74 73 20 73 74 61   "---- tests sta
16520 72 74 65 64 20 61 74 20 22 20 5c 0d 0a 20 20 20  rted at " \..   
16530 20 20 20 5b 66 6f 72 6d 61 74 54 69 6d 65 53 74     [formatTimeSt
16540 61 6d 70 20 5b 73 65 74 20 74 65 73 74 5f 74 69  amp [set test_ti
16550 6d 65 73 74 61 6d 70 28 73 74 61 72 74 53 65 63  mestamp(startSec
16560 6f 6e 64 73 29 20 5c 0d 0a 20 20 20 20 20 20 5b  onds) \..      [
16570 63 6c 6f 63 6b 20 73 65 63 6f 6e 64 73 5d 5d 5d  clock seconds]]]
16580 20 5c 6e 5d 0d 0a 7d 0d 0a                        \n]..}..