System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact c71d0d2cbb98d315d1e35de556c7202f08025ccb:


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 65 78 70 72 20 70 6b 67 5f 64 69 72 20  in expr pkg_dir 
0300: 70 61 74 74 65 72 6e 20 64 75 6d 6d 79 20 64 69  pattern 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 5c 0d 0a 20 20 20 20 20 20 65 78 65 63  ue \..      exec
0330: 20 65 6e 63 6f 64 69 6e 67 20 68 6f 73 74 20 6d   encoding host m
0340: 65 6d 6f 72 79 20 73 74 61 63 6b 20 64 72 69 76  emory stack driv
0350: 65 20 73 65 72 76 65 72 20 64 61 74 61 62 61 73  e server databas
0360: 65 20 74 69 6d 65 6f 75 74 20 5c 0d 0a 20 20 20  e timeout \..   
0370: 20 20 20 75 73 65 72 20 70 61 73 73 77 6f 72 64     user password
0380: 20 70 65 72 63 65 6e 74 20 63 68 65 63 6b 6f 75   percent checkou
0390: 74 20 74 69 6d 65 53 74 61 6d 70 20 6c 6f 61 64  t timeStamp load
03a0: 65 64 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ed....  #..  # N
03b0: 4f 54 45 3a 20 52 65 6d 6f 76 65 20 61 6e 79 20  OTE: Remove any 
03c0: 73 74 61 6c 65 20 74 65 73 74 20 73 75 69 74 65  stale test suite
03d0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 20   error messages 
03e0: 66 72 6f 6d 20 70 72 69 6f 72 20 72 75 6e 73 2e  from prior runs.
03f0: 0d 0a 20 20 23 0d 0a 20 20 75 6e 73 65 74 20 2d  ..  #..  unset -
0400: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 74 65 73 74 5f  nocomplain test_
0410: 73 75 69 74 65 5f 65 72 72 6f 72 73 0d 0a 0d 0a  suite_errors....
0420: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 49    #..  # NOTE: I
0430: 6e 64 69 63 61 74 65 20 74 68 61 74 20 74 68 65  ndicate that the
0440: 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20 63   test suite is c
0450: 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67  urrently running
0460: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
0470: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
0480: 5f 73 75 69 74 65 5f 72 75 6e 6e 69 6e 67 5d 20  _suite_running] 
0490: 7c 7c 20 21 24 74 65 73 74 5f 73 75 69 74 65 5f  || !$test_suite_
04a0: 72 75 6e 6e 69 6e 67 7d 20 74 68 65 6e 20 7b 0d  running} then {.
04b0: 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 73 75  .    set test_su
04c0: 69 74 65 5f 72 75 6e 6e 69 6e 67 20 74 72 75 65  ite_running true
04d0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
04e0: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
04f0: 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  location of the 
0500: 74 65 73 74 20 73 75 69 74 65 20 70 61 63 6b 61  test suite packa
0510: 67 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  ge, if necessary
0520: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
0530: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
0540: 5f 61 6c 6c 5f 70 61 74 68 5d 7d 20 74 68 65 6e  _all_path]} then
0550: 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74   {..    set test
0560: 5f 61 6c 6c 5f 70 61 74 68 20 5b 66 69 6c 65 20  _all_path [file 
0570: 6e 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20  normalize [file 
0580: 64 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20 73 63  dirname [info sc
0590: 72 69 70 74 5d 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a  ript]]]..  }....
05a0: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
05b0: 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20  et the location 
05c0: 6f 66 20 74 68 65 20 74 65 73 74 20 73 75 69 74  of the test suit
05d0: 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  e, if necessary.
05e0: 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
05f0: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
0600: 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  path]} then {.. 
0610: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
0620: 3a 20 42 75 69 6c 64 20 61 20 72 65 75 73 61 62  : Build a reusab
0630: 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 20 74 68  le expression th
0640: 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  at can be used t
0650: 6f 20 76 65 72 69 66 79 20 74 68 65 0d 0a 20 20  o verify the..  
0660: 20 20 23 20 20 20 20 20 20 20 63 61 6e 64 69 64    #       candid
0670: 61 74 65 20 70 61 74 68 73 2e 20 20 54 68 69 73  ate paths.  This
0680: 20 69 73 20 64 6f 6e 65 20 74 6f 20 61 76 6f 69   is done to avoi
0690: 64 20 64 75 70 6c 69 63 61 74 69 6f 6e 20 6f 66  d duplication of
06a0: 20 74 68 69 73 0d 0a 20 20 20 20 23 20 20 20 20   this..    #    
06b0: 20 20 20 28 71 75 69 74 65 20 63 6f 6d 70 6c 65     (quite comple
06c0: 78 29 20 65 78 70 72 65 73 73 69 6f 6e 20 73 65  x) expression se
06d0: 76 65 72 61 6c 20 74 69 6d 65 73 20 28 6a 75 73  veral times (jus
06e0: 74 20 62 65 6c 6f 77 29 2e 0d 0a 20 20 20 20 23  t below)...    #
06f0: 0d 0a 20 20 20 20 73 65 74 20 65 78 70 72 20 7b  ..    set expr {
0700: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  ![info exists te
0710: 73 74 5f 70 61 74 68 5d 20 7c 7c 20 21 5b 66 69  st_path] || ![fi
0720: 6c 65 20 65 78 69 73 74 73 20 24 74 65 73 74 5f  le exists $test_
0730: 70 61 74 68 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20  path] || \..    
0740: 20 20 20 20 21 5b 66 69 6c 65 20 69 73 64 69 72      ![file isdir
0750: 65 63 74 6f 72 79 20 24 74 65 73 74 5f 70 61 74  ectory $test_pat
0760: 68 5d 20 7c 7c 20 28 5b 6c 6c 65 6e 67 74 68 20  h] || ([llength 
0770: 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 5c  [info commands \
0780: 0d 0a 20 20 20 20 20 20 20 20 67 6c 6f 62 5d 5d  ..        glob]]
0790: 20 3e 20 30 20 26 26 20 5b 6c 6c 65 6e 67 74 68   > 0 && [llength
07a0: 20 5b 67 6c 6f 62 20 2d 64 69 72 65 63 74 6f 72   [glob -director
07b0: 79 20 24 74 65 73 74 5f 70 61 74 68 20 2d 74 79  y $test_path -ty
07c0: 70 65 73 20 7b 66 20 72 7d 20 5c 0d 0a 20 20 20  pes {f r} \..   
07d0: 20 20 20 20 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e       -nocomplain
07e0: 20 2d 2d 20 2a 5d 5d 20 3d 3d 20 30 29 7d 0d 0a   -- *]] == 0)}..
07f0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
0800: 4f 54 45 3a 20 53 65 61 72 63 68 20 66 6f 72 20  OTE: Search for 
0810: 74 68 65 20 22 4c 69 62 72 61 72 79 2f 54 65 73  the "Library/Tes
0820: 74 73 22 20 2d 4f 52 2d 20 22 54 65 73 74 73 22  ts" -OR- "Tests"
0830: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65 73   sub-directories
0840: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 77 69  ..    #       wi
0850: 74 68 69 6e 20 74 68 65 20 73 75 62 2d 64 69 72  thin the sub-dir
0860: 65 63 74 6f 72 79 20 6f 6e 65 20 6c 65 76 65 6c  ectory one level
0870: 20 75 70 20 61 6e 64 20 74 68 65 6e 20 74 77 6f   up and then two
0880: 20 6c 65 76 65 6c 73 20 75 70 0d 0a 20 20 20 20   levels up..    
0890: 23 20 20 20 20 20 20 20 66 72 6f 6d 20 74 68 65  #       from the
08a0: 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20 63   sub-directory c
08b0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 22 61  ontaining the "a
08c0: 6c 6c 2e 65 61 67 6c 65 22 20 66 69 6c 65 20 66  ll.eagle" file f
08d0: 72 6f 6d 0d 0a 20 20 20 20 23 20 20 20 20 20 20  rom..    #      
08e0: 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 20   the test suite 
08f0: 70 61 63 6b 61 67 65 2e 0d 0a 20 20 20 20 23 0d  package...    #.
0900: 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 70 61  .    set test_pa
0910: 74 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69  th [file normali
0920: 7a 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66  ze \..        [f
0930: 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64  ile join [file d
0940: 69 72 6e 61 6d 65 20 24 74 65 73 74 5f 61 6c 6c  irname $test_all
0950: 5f 70 61 74 68 5d 20 4c 69 62 72 61 72 79 20 54  _path] Library T
0960: 65 73 74 73 5d 5d 0d 0a 0d 0a 20 20 20 20 69 66  ests]]....    if
0970: 20 7b 5b 65 78 70 72 20 24 65 78 70 72 5d 7d 20   {[expr $expr]} 
0980: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65  then {..      se
0990: 74 20 74 65 73 74 5f 70 61 74 68 20 5b 66 69 6c  t test_path [fil
09a0: 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5c 0d 0a 20  e normalize \.. 
09b0: 20 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20 6a           [file j
09c0: 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  oin [file dirnam
09d0: 65 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  e [file dirname 
09e0: 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 5d 5d  $test_all_path]]
09f0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 4c 69   \..          Li
0a00: 62 72 61 72 79 20 54 65 73 74 73 5d 5d 0d 0a 20  brary Tests]].. 
0a10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
0a20: 5b 65 78 70 72 20 24 65 78 70 72 5d 7d 20 74 68  [expr $expr]} th
0a30: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20  en {..      set 
0a40: 74 65 73 74 5f 70 61 74 68 20 5b 66 69 6c 65 20  test_path [file 
0a50: 6e 6f 72 6d 61 6c 69 7a 65 20 5c 0d 0a 20 20 20  normalize \..   
0a60: 20 20 20 20 20 20 20 5b 66 69 6c 65 20 6a 6f 69         [file joi
0a70: 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  n [file dirname 
0a80: 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 5d 20  $test_all_path] 
0a90: 54 65 73 74 73 5d 5d 0d 0a 20 20 20 20 7d 0d 0a  Tests]]..    }..
0aa0: 0d 0a 20 20 20 20 69 66 20 7b 5b 65 78 70 72 20  ..    if {[expr 
0ab0: 24 65 78 70 72 5d 7d 20 74 68 65 6e 20 7b 0d 0a  $expr]} then {..
0ac0: 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 70        set test_p
0ad0: 61 74 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c  ath [file normal
0ae0: 69 7a 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ize \..         
0af0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c   [file join [fil
0b00: 65 20 64 69 72 6e 61 6d 65 20 5b 66 69 6c 65 20  e dirname [file 
0b10: 64 69 72 6e 61 6d 65 20 24 74 65 73 74 5f 61 6c  dirname $test_al
0b20: 6c 5f 70 61 74 68 5d 5d 20 5c 0d 0a 20 20 20 20  l_path]] \..    
0b30: 20 20 20 20 20 20 54 65 73 74 73 5d 5d 0d 0a 20        Tests]].. 
0b40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65     }....    unse
0b50: 74 20 65 78 70 72 0d 0a 20 20 7d 0d 0a 0d 0a 20  t expr..  }.... 
0b60: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65   #..  # NOTE: Se
0b70: 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f  t the location o
0b80: 66 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65  f the test suite
0b90: 20 64 61 74 61 2c 20 69 66 20 6e 65 63 65 73 73   data, if necess
0ba0: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
0bb0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
0bc0: 65 73 74 5f 64 61 74 61 5f 70 61 74 68 5d 7d 20  est_data_path]} 
0bd0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20  then {..    set 
0be0: 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 5b  test_data_path [
0bf0: 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
0c00: 70 61 74 68 20 64 61 74 61 5d 0d 0a 20 20 7d 0d  path data]..  }.
0c10: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
0c20: 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69  : Set the locati
0c30: 6f 6e 20 6f 66 20 74 68 65 20 62 61 73 65 20 45  on of the base E
0c40: 61 67 6c 65 20 64 69 72 65 63 74 6f 72 79 2c 20  agle directory, 
0c50: 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20 6e 65  if..  #       ne
0c60: 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20  cessary...  #.. 
0c70: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
0c80: 74 73 20 62 61 73 65 5f 70 61 74 68 5d 7d 20 74  ts base_path]} t
0c90: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
0ca0: 20 20 23 20 4e 4f 54 45 3a 20 53 74 61 72 74 20    # NOTE: Start 
0cb0: 6f 75 74 20 67 6f 69 6e 67 20 75 70 20 6f 6e 65  out going up one
0cc0: 20 6c 65 76 65 6c 20 61 6e 64 20 63 68 65 63 6b   level and check
0cd0: 20 66 6f 72 20 61 20 22 6c 69 62 22 0d 0a 20 20   for a "lib"..  
0ce0: 20 20 23 20 20 20 20 20 20 20 73 75 62 2d 64 69    #       sub-di
0cf0: 72 65 63 74 6f 72 79 2e 20 20 49 66 20 6e 6f 74  rectory.  If not
0d00: 20 66 6f 75 6e 64 2c 20 67 6f 20 75 70 20 61 6e   found, go up an
0d10: 6f 74 68 65 72 20 6c 65 76 65 6c 0d 0a 20 20 20  other level..   
0d20: 20 23 20 20 20 20 20 20 20 62 65 63 61 75 73 65   #       because
0d30: 20 77 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20   we will always 
0d40: 62 65 20 74 77 6f 20 6c 65 76 65 6c 73 20 64 6f  be two levels do
0d50: 77 6e 20 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20  wn from the..   
0d60: 20 23 20 20 20 20 20 20 20 62 61 73 65 20 64 69   #       base di
0d70: 72 65 63 74 6f 72 79 20 77 68 65 6e 20 72 75 6e  rectory when run
0d80: 6e 69 6e 67 20 69 6e 73 69 64 65 20 74 68 65 20  ning inside the 
0d90: 73 6f 75 72 63 65 20 74 72 65 65 2e 0d 0a 20 20  source tree...  
0da0: 20 20 23 0d 0a 20 20 20 20 73 65 74 20 62 61 73    #..    set bas
0db0: 65 5f 70 61 74 68 20 5b 66 69 6c 65 20 6e 6f 72  e_path [file nor
0dc0: 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 64 69 72  malize [file dir
0dd0: 6e 61 6d 65 20 24 74 65 73 74 5f 70 61 74 68 5d  name $test_path]
0de0: 5d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ]....    #..    
0df0: 23 20 48 41 43 4b 3a 20 57 65 20 6d 75 73 74 20  # HACK: We must 
0e00: 76 65 72 69 66 79 20 74 68 61 74 20 74 68 65 20  verify that the 
0e10: 22 69 6e 69 74 2e 65 61 67 6c 65 22 20 66 69 6c  "init.eagle" fil
0e20: 65 20 63 61 6e 20 65 76 65 6e 74 75 61 6c 6c 79  e can eventually
0e30: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 62 65  ..    #       be
0e40: 20 66 6f 75 6e 64 20 75 6e 64 65 72 20 74 68 65   found under the
0e50: 20 22 6c 69 62 22 20 64 69 72 65 63 74 6f 72 79   "lib" directory
0e60: 20 73 69 6e 63 65 20 56 69 73 75 61 6c 20 53 74   since Visual St
0e70: 75 64 69 6f 0d 0a 20 20 20 20 23 20 20 20 20 20  udio..    #     
0e80: 20 20 69 6e 73 69 73 74 73 20 6f 6e 20 63 72 65    insists on cre
0e90: 61 74 69 6e 67 20 61 20 73 75 70 65 72 66 6c 75  ating a superflu
0ea0: 6f 75 73 20 28 61 6e 64 20 65 6d 70 74 79 29 20  ous (and empty) 
0eb0: 22 6c 69 62 5c 45 61 67 6c 65 31 2e 30 22 0d 0a  "lib\Eagle1.0"..
0ec0: 20 20 20 20 23 20 20 20 20 20 20 20 73 75 62 2d      #       sub-
0ed0: 64 69 72 65 63 74 6f 72 79 20 69 6e 73 69 64 65  directory inside
0ee0: 20 6f 66 20 74 68 65 20 22 4c 69 62 72 61 72 79   of the "Library
0ef0: 22 20 70 72 6f 6a 65 63 74 20 64 69 72 65 63 74  " project direct
0f00: 6f 72 79 0d 0a 20 20 20 20 23 20 20 20 20 20 20  ory..    #      
0f10: 20 73 69 6d 70 6c 79 20 64 75 65 20 74 6f 20 74   simply due to t
0f20: 68 65 20 6c 69 6e 6b 73 20 63 6f 6e 74 61 69 6e  he links contain
0f30: 65 64 20 69 6e 20 74 68 65 20 70 72 6f 6a 65 63  ed in the projec
0f40: 74 20 66 69 6c 65 20 74 68 61 74 0d 0a 20 20 20  t file that..   
0f50: 20 23 20 20 20 20 20 20 20 61 63 74 75 61 6c 6c   #       actuall
0f60: 79 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 22  y point to the "
0f70: 6c 69 62 5c 45 61 67 6c 65 31 2e 30 22 20 73 75  lib\Eagle1.0" su
0f80: 62 2d 64 69 72 65 63 74 6f 72 79 20 75 6e 64 65  b-directory unde
0f90: 72 20 74 68 65 0d 0a 20 20 20 20 23 20 20 20 20  r the..    #    
0fa0: 20 20 20 73 6f 6c 75 74 69 6f 6e 20 64 69 72 65     solution dire
0fb0: 63 74 6f 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20  ctory...    #.. 
0fc0: 20 20 20 23 20 57 41 52 4e 49 4e 47 3a 20 54 68     # WARNING: Th
0fd0: 65 20 45 61 67 6c 65 20 70 61 63 6b 61 67 65 20  e Eagle package 
0fe0: 6e 61 6d 65 20 61 6e 64 20 76 65 72 73 69 6f 6e  name and version
0ff0: 20 61 72 65 20 68 61 72 64 2d 63 6f 64 65 64 20   are hard-coded 
1000: 68 65 72 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  here...    #..  
1010: 20 20 73 65 74 20 70 6b 67 5f 64 69 72 20 45 61    set pkg_dir Ea
1020: 67 6c 65 31 2e 30 3b 20 23 20 54 4f 44 4f 3a 20  gle1.0; # TODO: 
1030: 43 68 61 6e 67 65 20 6d 65 2e 0d 0a 0d 0a 20 20  Change me.....  
1040: 20 20 69 66 20 7b 21 5b 66 69 6c 65 20 65 78 69    if {![file exi
1050: 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  sts [file join $
1060: 62 61 73 65 5f 70 61 74 68 20 6c 69 62 5d 5d 20  base_path lib]] 
1070: 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b  || \..        ![
1080: 66 69 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79  file isdirectory
1090: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73   [file join $bas
10a0: 65 5f 70 61 74 68 20 6c 69 62 5d 5d 20 7c 7c 20  e_path lib]] || 
10b0: 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69 6c  \..        ![fil
10c0: 65 20 65 78 69 73 74 73 20 5b 66 69 6c 65 20 6a  e exists [file j
10d0: 6f 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 6c  oin $base_path l
10e0: 69 62 20 24 70 6b 67 5f 64 69 72 5d 5d 20 7c 7c  ib $pkg_dir]] ||
10f0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69   \..        ![fi
1100: 6c 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b  le isdirectory [
1110: 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f  file join $base_
1120: 70 61 74 68 20 6c 69 62 20 24 70 6b 67 5f 64 69  path lib $pkg_di
1130: 72 5d 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20  r]] || \..      
1140: 20 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73 20    ![file exists 
1150: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65  [file join $base
1160: 5f 70 61 74 68 20 6c 69 62 20 24 70 6b 67 5f 64  _path lib $pkg_d
1170: 69 72 20 69 6e 69 74 2e 65 61 67 6c 65 5d 5d 20  ir init.eagle]] 
1180: 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b  || \..        ![
1190: 66 69 6c 65 20 69 73 66 69 6c 65 20 5b 66 69 6c  file isfile [fil
11a0: 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61 74  e join $base_pat
11b0: 68 20 6c 69 62 20 24 70 6b 67 5f 64 69 72 20 69  h lib $pkg_dir i
11c0: 6e 69 74 2e 65 61 67 6c 65 5d 5d 7d 20 74 68 65  nit.eagle]]} the
11d0: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
11e0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 64      # NOTE: We d
11f0: 6f 20 6e 6f 74 20 62 6f 74 68 65 72 20 74 6f 20  o not bother to 
1200: 63 68 65 63 6b 20 69 66 20 74 68 65 20 22 6c 69  check if the "li
1210: 62 22 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79  b" sub-directory
1220: 20 61 63 74 75 61 6c 6c 79 0d 0a 20 20 20 20 20   actually..     
1230: 20 23 20 20 20 20 20 20 20 65 78 69 73 74 73 20   #       exists 
1240: 61 73 20 61 20 63 68 69 6c 64 20 6f 66 20 74 68  as a child of th
1250: 69 73 20 6f 6e 65 2e 20 20 54 68 69 73 20 69 73  is one.  This is
1260: 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 28 6c   the previous (l
1270: 65 67 61 63 79 29 0d 0a 20 20 20 20 20 20 23 20  egacy)..      # 
1280: 20 20 20 20 20 20 62 65 68 61 76 69 6f 72 20 28        behavior (
1290: 69 2e 65 2e 20 77 68 65 72 65 20 77 65 20 61 6c  i.e. where we al
12a0: 77 61 79 73 20 77 65 6e 74 20 75 70 20 74 77 6f  ways went up two
12b0: 20 6c 65 76 65 6c 73 20 74 6f 20 74 68 65 20 62   levels to the b
12c0: 61 73 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20  ase..      #    
12d0: 20 20 20 64 69 72 65 63 74 6f 72 79 29 2e 0d 0a     directory)...
12e0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
12f0: 65 74 20 62 61 73 65 5f 70 61 74 68 20 5b 66 69  et base_path [fi
1300: 6c 65 20 64 69 72 6e 61 6d 65 20 24 62 61 73 65  le dirname $base
1310: 5f 70 61 74 68 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  _path]..    }...
1320: 0a 20 20 20 20 75 6e 73 65 74 20 70 6b 67 5f 64  .    unset pkg_d
1330: 69 72 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23  ir..  }....  ###
1340: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1350: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1380: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20  ##########....  
1390: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74  #..  # NOTE: Set
13a0: 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66   the location of
13b0: 20 74 68 65 20 45 61 67 6c 65 20 6d 61 69 6e 20   the Eagle main 
13c0: 73 74 72 6f 6e 67 20 6e 61 6d 65 20 6b 65 79 73  strong name keys
13d0: 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 23   directory,..  #
13e0: 20 20 20 20 20 20 20 69 66 20 6e 65 63 65 73 73         if necess
13f0: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
1400: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6b  {![info exists k
1410: 65 79 5f 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b  ey_path]} then {
1420: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1430: 4f 54 45 3a 20 4e 6f 72 6d 61 6c 6c 79 2c 20 74  OTE: Normally, t
1440: 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20 61  here should be a
1450: 20 22 4b 65 79 73 22 20 73 75 62 2d 64 69 72 65   "Keys" sub-dire
1460: 63 74 6f 72 79 20 6a 75 73 74 20 77 69 74 68 69  ctory just withi
1470: 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74  n..    #       t
1480: 68 65 20 62 61 73 65 20 64 69 72 65 63 74 6f 72  he base director
1490: 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73  y...    #..    s
14a0: 65 74 20 6b 65 79 5f 70 61 74 68 20 5b 66 69 6c  et key_path [fil
14b0: 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61 74  e join $base_pat
14c0: 68 20 4b 65 79 73 5d 0d 0a 20 20 7d 0d 0a 0d 0a  h Keys]..  }....
14d0: 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
14e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
1520: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
1530: 3a 20 53 65 74 20 74 68 65 20 65 78 65 63 75 74  : Set the execut
1540: 61 62 6c 65 20 66 69 6c 65 20 6e 61 6d 65 20 66  able file name f
1550: 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 2c 20  or the process, 
1560: 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20 6e 65  if..  #       ne
1570: 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20  cessary...  #.. 
1580: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1590: 74 73 20 62 69 6e 5f 66 69 6c 65 5d 7d 20 74 68  ts bin_file]} th
15a0: 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 62 69  en {..    set bi
15b0: 6e 5f 66 69 6c 65 20 5b 69 6e 66 6f 20 6e 61 6d  n_file [info nam
15c0: 65 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 0d 0a  eofexecutable]..
15d0: 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
15e0: 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 6c 6f  NOTE: Set the lo
15f0: 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 64 69  cation of the di
1600: 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69  rectory containi
1610: 6e 67 20 74 68 65 0d 0a 20 20 23 20 20 20 20 20  ng the..  #     
1620: 20 20 65 78 65 63 75 74 61 62 6c 65 20 66 69 6c    executable fil
1630: 65 20 66 6f 72 20 74 68 65 20 70 72 6f 63 65 73  e for the proces
1640: 73 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  s, if necessary.
1650: 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
1660: 6e 66 6f 20 65 78 69 73 74 73 20 62 69 6e 5f 70  nfo exists bin_p
1670: 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ath]} then {..  
1680: 20 20 73 65 74 20 62 69 6e 5f 70 61 74 68 20 5b    set bin_path [
1690: 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b  file normalize [
16a0: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 62 69  file dirname $bi
16b0: 6e 5f 66 69 6c 65 5d 5d 0d 0a 20 20 7d 0d 0a 0d  n_file]]..  }...
16c0: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
16d0: 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e  Set the location
16e0: 20 6f 66 20 74 68 65 20 5b 6e 6f 6e 2d 73 63 72   of the [non-scr
16f0: 69 70 74 5d 20 6c 69 62 72 61 72 79 20 64 69 72  ipt] library dir
1700: 65 63 74 6f 72 79 0d 0a 20 20 23 20 20 20 20 20  ectory..  #     
1710: 20 20 28 69 2e 65 2e 20 74 68 65 20 64 69 72 65    (i.e. the dire
1720: 63 74 6f 72 79 20 77 68 65 72 65 20 74 68 65 20  ctory where the 
1730: 70 6c 75 67 69 6e 73 20 61 72 65 20 6c 6f 63 61  plugins are loca
1740: 74 65 64 29 2c 20 69 66 0d 0a 20 20 23 20 20 20  ted), if..  #   
1750: 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a      necessary...
1760: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
1770: 6f 20 65 78 69 73 74 73 20 6c 69 62 5f 70 61 74  o exists lib_pat
1780: 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  h]} then {..    
1790: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54  #..    # NOTE: T
17a0: 68 69 73 20 73 68 6f 75 6c 64 20 67 6f 20 6f 6e  his should go on
17b0: 65 20 64 69 72 65 63 74 6f 72 79 20 75 70 20 66  e directory up f
17c0: 72 6f 6d 20 74 68 65 20 64 69 72 65 63 74 6f 72  rom the director
17d0: 79 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 63  y..    #       c
17e0: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 65 78  ontaining the ex
17f0: 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20 66 6f  ecutable file fo
1800: 72 20 74 68 65 20 70 72 6f 63 65 73 73 20 28 65  r the process (e
1810: 2e 67 2e 0d 0a 20 20 20 20 23 20 20 20 20 20 20  .g...    #      
1820: 20 74 68 65 20 73 68 65 6c 6c 29 20 61 6e 64 20   the shell) and 
1830: 74 68 65 6e 20 69 6e 74 6f 20 74 68 65 20 22 6c  then into the "l
1840: 69 62 22 20 64 69 72 65 63 74 6f 72 79 20 6a 75  ib" directory ju
1850: 73 74 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  st..    #       
1860: 62 65 6e 65 61 74 68 20 74 68 61 74 2e 0d 0a 20  beneath that... 
1870: 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6c 69     #..    set li
1880: 62 5f 70 61 74 68 20 5b 66 69 6c 65 20 6e 6f 72  b_path [file nor
1890: 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 6a 6f 69  malize [file joi
18a0: 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  n [file dirname 
18b0: 24 62 69 6e 5f 70 61 74 68 5d 20 6c 69 62 5d 5d  $bin_path] lib]]
18c0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
18d0: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
18e0: 77 65 62 20 68 6f 73 74 20 74 6f 20 74 65 73 74  web host to test
18f0: 20 61 67 61 69 6e 73 74 2c 20 69 66 20 6e 65 63   against, if nec
1900: 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20  essary...  #..  
1910: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1920: 73 20 74 65 73 74 5f 68 6f 73 74 5d 7d 20 74 68  s test_host]} th
1930: 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65  en {..    set te
1940: 73 74 5f 68 6f 73 74 20 65 61 67 6c 65 2e 74 6f  st_host eagle.to
1950: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
1960: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
1970: 70 6f 72 74 20 74 6f 20 75 73 65 20 66 6f 72 20  port to use for 
1980: 73 65 72 76 65 72 20 73 6f 63 6b 65 74 73 2c 20  server sockets, 
1990: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
19a0: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
19b0: 20 65 78 69 73 74 73 20 74 65 73 74 5f 70 6f 72   exists test_por
19c0: 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  t]} then {..    
19d0: 73 65 74 20 74 65 73 74 5f 70 6f 72 74 20 31 32  set test_port 12
19e0: 33 34 36 3b 20 23 20 49 41 4e 41 2c 20 31 32 33  346; # IANA, 123
19f0: 34 36 2d 31 32 37 35 32 20 55 6e 61 73 73 69 67  46-12752 Unassig
1a00: 6e 65 64 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d  ned..  }....  #.
1a10: 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74  .  # NOTE: Set t
1a20: 68 65 20 6e 65 74 77 6f 72 6b 20 74 69 6d 65 6f  he network timeo
1a30: 75 74 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  ut, if necessary
1a40: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
1a50: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
1a60: 5f 74 69 6d 65 6f 75 74 5d 7d 20 74 68 65 6e 20  _timeout]} then 
1a70: 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f  {..    set test_
1a80: 74 69 6d 65 6f 75 74 20 32 30 30 30 3b 20 23 20  timeout 2000; # 
1a90: 69 6e 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 2e  in milliseconds.
1aa0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
1ab0: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
1ac0: 63 68 61 6e 6e 65 6c 20 74 6f 20 75 73 65 20 66  channel to use f
1ad0: 6f 72 20 74 65 73 74 20 6f 75 74 70 75 74 2c 20  or test output, 
1ae0: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
1af0: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
1b00: 20 65 78 69 73 74 73 20 74 65 73 74 5f 63 68 61   exists test_cha
1b10: 6e 6e 65 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  nnel]} then {.. 
1b20: 20 20 20 73 65 74 20 74 65 73 74 5f 63 68 61 6e     set test_chan
1b30: 6e 65 6c 20 73 74 64 6f 75 74 0d 0a 20 20 7d 0d  nel stdout..  }.
1b40: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
1b50: 3a 20 53 65 74 20 74 68 65 20 70 72 69 6d 61 72  : Set the primar
1b60: 79 20 70 61 63 6b 61 67 65 20 70 61 74 68 2c 20  y package path, 
1b70: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
1b80: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
1b90: 20 65 78 69 73 74 73 20 74 65 73 74 5f 70 61 63   exists test_pac
1ba0: 6b 61 67 65 5f 70 61 74 68 5d 7d 20 74 68 65 6e  kage_path]} then
1bb0: 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74   {..    set test
1bc0: 5f 70 61 63 6b 61 67 65 5f 70 61 74 68 20 5b 66  _package_path [f
1bd0: 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70  ile join $base_p
1be0: 61 74 68 20 6c 69 62 5d 0d 0a 20 20 7d 0d 0a 0d  ath lib]..  }...
1bf0: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
1c00: 4d 61 6b 65 20 73 75 72 65 20 6f 75 72 20 70 72  Make sure our pr
1c10: 69 6d 61 72 79 20 70 61 63 6b 61 67 65 20 70 61  imary package pa
1c20: 74 68 20 69 73 20 70 61 72 74 20 6f 66 20 74 68  th is part of th
1c30: 65 20 61 75 74 6f 2d 70 61 74 68 2e 0d 0a 20 20  e auto-path...  
1c40: 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65  #..  if {[info e
1c50: 78 69 73 74 73 20 61 75 74 6f 5f 70 61 74 68 5d  xists auto_path]
1c60: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 73   && \..      [ls
1c70: 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 61 75  earch -exact $au
1c80: 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 70 61  to_path $test_pa
1c90: 63 6b 61 67 65 5f 70 61 74 68 5d 20 3d 3d 20 2d  ckage_path] == -
1ca0: 31 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 6c  1} then {..    l
1cb0: 61 70 70 65 6e 64 20 61 75 74 6f 5f 70 61 74 68  append auto_path
1cc0: 20 24 74 65 73 74 5f 70 61 63 6b 61 67 65 5f 70   $test_package_p
1cd0: 61 74 68 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d  ath..  }....  #.
1ce0: 0a 20 20 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20  .  # NOTE: Make 
1cf0: 73 75 72 65 20 74 68 65 20 74 65 73 74 20 73 75  sure the test su
1d00: 69 74 65 20 70 61 63 6b 61 67 65 20 69 73 20 70  ite package is p
1d10: 61 72 74 20 6f 66 20 74 68 65 20 61 75 74 6f 2d  art of the auto-
1d20: 70 61 74 68 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  path...  #..  if
1d30: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 61   {[info exists a
1d40: 75 74 6f 5f 70 61 74 68 5d 20 26 26 20 5c 0d 0a  uto_path] && \..
1d50: 20 20 20 20 20 20 5b 6c 73 65 61 72 63 68 20 2d        [lsearch -
1d60: 65 78 61 63 74 20 24 61 75 74 6f 5f 70 61 74 68  exact $auto_path
1d70: 20 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 5d   $test_all_path]
1d80: 20 3d 3d 20 2d 31 7d 20 74 68 65 6e 20 7b 0d 0a   == -1} then {..
1d90: 20 20 20 20 6c 61 70 70 65 6e 64 20 61 75 74 6f      lappend auto
1da0: 5f 70 61 74 68 20 24 74 65 73 74 5f 61 6c 6c 5f  _path $test_all_
1db0: 70 61 74 68 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  path..  }....  #
1dc0: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 4d 61 6b 65  ..  # NOTE: Make
1dd0: 20 73 75 72 65 20 74 68 65 20 74 65 73 74 20 73   sure the test s
1de0: 75 69 74 65 20 69 73 20 70 61 72 74 20 6f 66 20  uite is part of 
1df0: 74 68 65 20 61 75 74 6f 2d 70 61 74 68 2e 20 20  the auto-path.  
1e00: 54 68 69 73 20 69 73 0d 0a 20 20 23 20 20 20 20  This is..  #    
1e10: 20 20 20 6e 6f 77 20 64 6f 6e 65 20 66 6f 72 20     now done for 
1e20: 6c 65 67 61 63 79 20 63 6f 6d 70 61 74 69 62 69  legacy compatibi
1e30: 6c 69 74 79 20 6f 6e 6c 79 2e 0d 0a 20 20 23 0d  lity only...  #.
1e40: 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69  .  if {[info exi
1e50: 73 74 73 20 61 75 74 6f 5f 70 61 74 68 5d 20 26  sts auto_path] &
1e60: 26 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 73 65 61  & \..      [lsea
1e70: 72 63 68 20 2d 65 78 61 63 74 20 24 61 75 74 6f  rch -exact $auto
1e80: 5f 70 61 74 68 20 24 74 65 73 74 5f 70 61 74 68  _path $test_path
1e90: 5d 20 3d 3d 20 2d 31 7d 20 74 68 65 6e 20 7b 0d  ] == -1} then {.
1ea0: 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 61 75 74  .    lappend aut
1eb0: 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 70 61 74  o_path $test_pat
1ec0: 68 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23  h..  }....  ####
1ed0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ee0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f10: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23  #########....  #
1f20: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63  ..  # NOTE: Chec
1f30: 6b 20 66 6f 72 20 61 6e 64 20 6c 6f 61 64 20 74  k for and load t
1f40: 68 65 20 45 61 67 6c 65 20 6c 69 62 72 61 72 79  he Eagle library
1f50: 20 70 61 63 6b 61 67 65 2c 20 69 66 20 6e 65 63   package, if nec
1f60: 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20  essary...  #..  
1f70: 69 66 20 7b 5b 63 61 74 63 68 20 7b 70 61 63 6b  if {[catch {pack
1f80: 61 67 65 20 70 72 65 73 65 6e 74 20 45 61 67 6c  age present Eagl
1f90: 65 2e 4c 69 62 72 61 72 79 7d 5d 7d 20 74 68 65  e.Library}]} the
1fa0: 6e 20 7b 0d 0a 20 20 20 20 70 61 63 6b 61 67 65  n {..    package
1fb0: 20 72 65 71 75 69 72 65 20 45 61 67 6c 65 2e 4c   require Eagle.L
1fc0: 69 62 72 61 72 79 0d 0a 20 20 7d 0d 0a 0d 0a 20  ibrary..  }.... 
1fd0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68   #..  # NOTE: Ch
1fe0: 65 63 6b 20 66 6f 72 20 61 6e 64 20 6c 6f 61 64  eck for and load
1ff0: 20 74 68 65 20 45 61 67 6c 65 20 74 65 73 74 20   the Eagle test 
2000: 70 61 63 6b 61 67 65 2c 20 69 66 20 6e 65 63 65  package, if nece
2010: 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69  ssary...  #..  i
2020: 66 20 7b 5b 63 61 74 63 68 20 7b 70 61 63 6b 61  f {[catch {packa
2030: 67 65 20 70 72 65 73 65 6e 74 20 45 61 67 6c 65  ge present Eagle
2040: 2e 54 65 73 74 7d 5d 7d 20 74 68 65 6e 20 7b 0d  .Test}]} then {.
2050: 0a 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71  .    package req
2060: 75 69 72 65 20 45 61 67 6c 65 2e 54 65 73 74 0d  uire Eagle.Test.
2070: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
2080: 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72   NOTE: Check for
2090: 20 61 6e 64 20 6c 6f 61 64 20 74 68 65 20 45 61   and load the Ea
20a0: 67 6c 65 20 74 65 73 74 20 63 6f 6e 73 74 72 61  gle test constra
20b0: 69 6e 74 73 20 70 61 63 6b 61 67 65 2c 20 69 66  ints package, if
20c0: 0d 0a 20 20 23 20 20 20 20 20 20 20 6e 65 63 65  ..  #       nece
20d0: 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69  ssary...  #..  i
20e0: 66 20 7b 5b 63 61 74 63 68 20 7b 70 61 63 6b 61  f {[catch {packa
20f0: 67 65 20 70 72 65 73 65 6e 74 20 45 61 67 6c 65  ge present Eagle
2100: 2e 54 65 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74  .Test.Constraint
2110: 73 7d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s}]} then {..   
2120: 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65   package require
2130: 20 45 61 67 6c 65 2e 54 65 73 74 2e 43 6f 6e 73   Eagle.Test.Cons
2140: 74 72 61 69 6e 74 73 0d 0a 20 20 7d 0d 0a 0d 0a  traints..  }....
2150: 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
2160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
21a0: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
21b0: 3a 20 2a 53 50 45 43 49 41 4c 2a 20 54 68 69 73  : *SPECIAL* This
21c0: 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69 6e 74   test constraint
21d0: 20 6d 75 73 74 20 62 65 20 63 68 65 63 6b 65 64   must be checked
21e0: 20 66 69 72 73 74 20 61 73 20 69 74 20 63 61 6e   first as it can
21f0: 0d 0a 20 20 23 20 20 20 20 20 20 20 64 65 74 65  ..  #       dete
2200: 72 6d 69 6e 65 20 69 66 20 73 75 62 73 65 71 75  rmine if subsequ
2210: 65 6e 74 20 6f 6e 65 73 20 77 69 6c 6c 20 65 6d  ent ones will em
2220: 69 74 20 77 61 72 6e 69 6e 67 73 2e 20 20 54 68  it warnings.  Th
2230: 69 73 20 69 73 20 6f 6e 6c 79 0d 0a 20 20 23 20  is is only..  # 
2240: 20 20 20 20 20 20 61 70 70 6c 69 63 61 62 6c 65        applicable
2250: 20 74 6f 20 45 61 67 6c 65 2e 20 20 54 68 69 73   to Eagle.  This
2260: 20 62 6c 6f 63 6b 20 72 65 71 75 69 72 65 73 20   block requires 
2270: 74 68 65 20 22 45 61 67 6c 65 2e 54 65 73 74 22  the "Eagle.Test"
2280: 20 61 6e 64 0d 0a 20 20 23 20 20 20 20 20 20 20   and..  #       
2290: 22 45 61 67 6c 65 2e 54 65 73 74 2e 43 6f 6e 73  "Eagle.Test.Cons
22a0: 74 72 61 69 6e 74 73 22 20 70 61 63 6b 61 67 65  traints" package
22b0: 73 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b  s...  #..  if {[
22c0: 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b  isEagle]} then {
22d0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
22e0: 4f 54 45 3a 20 48 61 73 20 71 75 69 65 74 20 74  OTE: Has quiet t
22f0: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
2300: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
2310: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
2320: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 70  info exists no(p
2330: 72 65 51 75 69 65 74 29 5d 7d 20 74 68 65 6e 20  reQuiet)]} then 
2340: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
2350: 20 20 23 20 4e 4f 54 45 3a 20 54 68 65 72 65 20    # NOTE: There 
2360: 61 72 65 20 63 68 65 63 6b 73 20 66 6f 72 20 74  are checks for t
2370: 68 65 20 22 71 75 69 65 74 22 20 74 65 73 74 20  he "quiet" test 
2380: 63 6f 6e 73 74 72 61 69 6e 74 20 70 72 69 6f 72  constraint prior
2390: 20 74 6f 0d 0a 20 20 20 20 20 20 23 20 20 20 20   to..      #    
23a0: 20 20 20 74 68 65 20 72 65 61 6c 20 74 65 73 74     the real test
23b0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 62 65 69   constraints bei
23c0: 6e 67 20 69 6e 69 74 69 61 6c 69 7a 65 64 2e 20  ng initialized. 
23d0: 20 50 72 65 70 61 72 65 20 66 6f 72 0d 0a 20 20   Prepare for..  
23e0: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 6f 73      #       thos
23f0: 65 20 63 68 65 63 6b 73 20 6e 6f 77 2e 20 20 54  e checks now.  T
2400: 68 69 73 20 77 69 6c 6c 20 68 61 76 65 20 74 6f  his will have to
2410: 20 62 65 20 72 65 70 65 61 74 65 64 20 6c 61 74   be repeated lat
2420: 65 72 2c 0d 0a 20 20 20 20 20 20 23 20 20 20 20  er,..      #    
2430: 20 20 20 61 66 74 65 72 20 74 68 65 20 72 65 61     after the rea
2440: 6c 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69 6e  l test constrain
2450: 74 73 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a  ts are initializ
2460: 65 64 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ed...      #..  
2470: 20 20 20 20 63 68 65 63 6b 46 6f 72 51 75 69 65      checkForQuie
2480: 74 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  t $test_channel 
2490: 74 72 75 65 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d  true..    }..  }
24a0: 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23  ....  ##########
24b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24f0: 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20  ###....  #..  # 
2500: 4e 4f 54 45 3a 20 56 65 72 69 66 79 20 74 68 61  NOTE: Verify tha
2510: 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61  t the current ca
2520: 6c 6c 20 66 72 61 6d 65 20 69 73 20 63 6f 72 72  ll frame is corr
2530: 65 63 74 20 61 6e 64 20 74 68 61 74 20 74 68 65  ect and that the
2540: 0d 0a 20 20 23 20 20 20 20 20 20 20 69 6e 74 65  ..  #       inte
2550: 72 70 72 65 74 65 72 20 63 61 6c 6c 20 73 74 61  rpreter call sta
2560: 63 6b 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ck has not been 
2570: 69 6d 62 61 6c 61 6e 63 65 64 20 62 79 20 70 72  imbalanced by pr
2580: 65 76 69 6f 75 73 0d 0a 20 20 23 20 20 20 20 20  evious..  #     
2590: 20 20 74 65 73 74 73 20 6f 72 20 6f 74 68 65 72    tests or other
25a0: 20 65 72 72 6f 72 73 2e 20 20 54 68 69 73 20 63   errors.  This c
25b0: 68 65 63 6b 20 6f 6e 6c 79 20 61 70 70 6c 69 65  heck only applie
25c0: 73 20 74 6f 20 45 61 67 6c 65 2e 0d 0a 20 20 23  s to Eagle...  #
25d0: 20 20 20 20 20 20 20 54 68 69 73 20 62 6c 6f 63         This bloc
25e0: 6b 20 72 65 71 75 69 72 65 73 20 74 68 65 20 22  k requires the "
25f0: 45 61 67 6c 65 2e 4c 69 62 72 61 72 79 22 20 70  Eagle.Library" p
2600: 61 63 6b 61 67 65 2e 0d 0a 20 20 23 0d 0a 20 20  ackage...  #..  
2610: 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 20 26 26  if {[isEagle] &&
2620: 20 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20   [llength [info 
2630: 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74 5d  commands object]
2640: 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20  ] > 0} then {.. 
2650: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
2660: 3a 20 43 68 65 63 6b 20 74 68 65 20 6e 61 6d 65  : Check the name
2670: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
2680: 63 61 6c 6c 20 66 72 61 6d 65 20 61 67 61 69 6e  call frame again
2690: 73 74 20 74 68 65 20 6f 6e 65 0d 0a 20 20 20 20  st the one..    
26a0: 23 20 20 20 20 20 20 20 74 68 61 74 20 73 68 6f  #       that sho
26b0: 75 6c 64 20 62 65 20 75 73 65 64 20 66 6f 72 20  uld be used for 
26c0: 65 76 61 6c 75 61 74 69 6e 67 20 74 68 69 73 20  evaluating this 
26d0: 73 63 72 69 70 74 20 66 69 6c 65 2e 0d 0a 20 20  script file...  
26e0: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 5b 6f 62    #..    if {[ob
26f0: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61  ject invoke -fla
2700: 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 5c 0d  gs +NonPublic \.
2710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
2720: 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69  erpreter.GetActi
2730: 76 65 2e 43 75 72 72 65 6e 74 46 72 61 6d 65 20  ve.CurrentFrame 
2740: 4e 61 6d 65 5d 20 6e 65 20 5c 0d 0a 20 20 20 20  Name] ne \..    
2750: 20 20 20 20 5b 6c 69 73 74 20 73 6f 75 72 63 65      [list source
2760: 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65   [file normalize
2770: 20 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 5d   [info script]]]
2780: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
2790: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
27a0: 6e 20 74 65 73 74 5f 73 75 69 74 65 5f 72 75 6e  n test_suite_run
27b0: 6e 69 6e 67 0d 0a 20 20 20 20 20 20 65 72 72 6f  ning..      erro
27c0: 72 20 22 63 61 6e 6e 6f 74 20 72 75 6e 20 70 72  r "cannot run pr
27d0: 6f 6c 6f 67 75 65 2c 20 63 75 72 72 65 6e 74 20  ologue, current 
27e0: 66 72 61 6d 65 20 6e 6f 74 20 66 6f 72 20 74 68  frame not for th
27f0: 69 73 20 73 63 72 69 70 74 22 0d 0a 20 20 20 20  is script"..    
2800: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
2810: 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  # NOTE: Attempt 
2820: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
2830: 74 68 65 20 74 68 69 73 20 73 63 72 69 70 74 20  the this script 
2840: 66 69 6c 65 20 62 65 69 6e 67 20 72 75 6e 20 61  file being run a
2850: 73 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 70  s..    #       p
2860: 61 72 74 20 6f 66 20 74 68 65 20 6f 76 65 72 61  art of the overa
2870: 6c 6c 20 74 65 73 74 20 73 75 69 74 65 20 73 63  ll test suite sc
2880: 72 69 70 74 20 66 69 6c 65 20 69 74 73 65 6c 66  ript file itself
2890: 2e 20 20 49 66 20 6e 6f 74 2c 0d 0a 20 20 20 20  .  If not,..    
28a0: 23 20 20 20 20 20 20 20 69 73 73 75 65 20 61 20  #       issue a 
28b0: 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20 74 68  warning about th
28c0: 65 20 69 6e 61 62 69 6c 69 74 79 20 74 6f 20 64  e inability to d
28d0: 65 74 65 63 74 20 22 6c 65 61 6b 73 22 20 66 72  etect "leaks" fr
28e0: 6f 6d 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  om..    #       
28f0: 74 68 65 20 74 65 73 74 73 2e 0d 0a 20 20 20 20  the tests...    
2900: 23 0d 0a 20 20 20 20 69 66 20 7b 5b 6c 73 65 61  #..    if {[lsea
2910: 72 63 68 20 2d 67 6c 6f 62 20 2d 69 6e 64 65 78  rch -glob -index
2920: 20 30 20 2d 2d 20 5b 6f 62 6a 65 63 74 20 69 6e   0 -- [object in
2930: 76 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e  voke -flags +Non
2940: 50 75 62 6c 69 63 20 5c 0d 0a 20 20 20 20 20 20  Public \..      
2950: 20 20 20 20 20 20 49 6e 74 65 72 70 72 65 74 65        Interprete
2960: 72 2e 47 65 74 41 63 74 69 76 65 20 53 63 72 69  r.GetActive Scri
2970: 70 74 4c 6f 63 61 74 69 6f 6e 73 2e 54 6f 53 74  ptLocations.ToSt
2980: 72 69 6e 67 5d 20 5c 0d 0a 20 20 20 20 20 20 20  ring] \..       
2990: 20 20 20 20 20 7b 2a 5b 2f 5c 5d 61 6c 6c 2e 65       {*[/\]all.e
29a0: 61 67 6c 65 7d 5d 20 3d 3d 20 2d 31 7d 20 74 68  agle}] == -1} th
29b0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
29c0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 43 68 65       # NOTE: Che
29d0: 63 6b 20 69 66 20 74 68 65 20 77 61 72 6e 69 6e  ck if the warnin
29e0: 67 20 73 68 6f 75 6c 64 20 61 63 74 75 61 6c 6c  g should actuall
29f0: 79 20 62 65 20 65 6d 69 74 74 65 64 2e 20 20 49  y be emitted.  I
2a00: 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20 23 20  f this..      # 
2a10: 20 20 20 20 20 20 77 61 72 6e 69 6e 67 20 68 61        warning ha
2a20: 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 62  s specifically b
2a30: 65 65 6e 20 64 69 73 61 62 6c 65 64 20 6f 72 20  een disabled or 
2a40: 77 65 20 61 72 65 20 69 6e 20 71 75 69 65 74 0d  we are in quiet.
2a50: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6d  .      #       m
2a60: 6f 64 65 2c 20 64 6f 20 6e 6f 74 68 69 6e 67 2e  ode, do nothing.
2a70: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
2a80: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
2a90: 74 73 20 6e 6f 28 77 61 72 6e 69 6e 67 46 6f 72  ts no(warningFor
2aa0: 41 6c 6c 45 61 67 6c 65 29 5d 20 26 26 20 5c 0d  AllEagle)] && \.
2ab0: 0a 20 20 20 20 20 20 20 20 20 20 21 5b 68 61 76  .          ![hav
2ac0: 65 43 6f 6e 73 74 72 61 69 6e 74 20 71 75 69 65  eConstraint quie
2ad0: 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  t]} then {..    
2ae0: 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
2af0: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
2b00: 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  rgs \..         
2b10: 20 20 20 22 3d 3d 3d 3d 20 57 41 52 4e 49 4e 47     "==== WARNING
2b20: 3a 20 74 65 73 74 73 20 61 72 65 20 6e 6f 74 20  : tests are not 
2b30: 62 65 69 6e 67 20 72 75 6e 20 76 69 61 20 73 75  being run via su
2b40: 69 74 65 20 73 63 72 69 70 74 20 66 69 6c 65 20  ite script file 
2b50: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " \..           
2b60: 20 22 5c 22 61 6c 6c 2e 65 61 67 6c 65 5c 22 2c   "\"all.eagle\",
2b70: 20 72 65 73 6f 75 72 63 65 20 6c 65 61 6b 73 20   resource leaks 
2b80: 77 69 6c 6c 20 70 72 6f 62 61 62 6c 79 20 6e 6f  will probably no
2b90: 74 20 62 65 20 72 65 70 6f 72 74 65 64 2e 5c 6e  t be reported.\n
2ba0: 22 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  "]..      }..   
2bb0: 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23   }..  }....  ###
2bc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2c00: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20  ##########....  
2c10: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74  #..  # NOTE: Set
2c20: 20 74 68 65 20 6c 6f 63 61 6c 20 72 6f 6f 74 20   the local root 
2c30: 64 69 72 65 63 74 6f 72 79 20 6f 66 20 74 68 65  directory of the
2c40: 20 73 6f 75 72 63 65 20 63 68 65 63 6b 6f 75 74   source checkout
2c50: 20 28 69 2e 65 2e 20 6f 66 20 45 61 67 6c 65 0d   (i.e. of Eagle.
2c60: 0a 20 20 23 20 20 20 20 20 20 20 6f 72 20 77 68  .  #       or wh
2c70: 61 74 65 76 65 72 20 70 72 6f 6a 65 63 74 20 74  atever project t
2c80: 68 65 20 45 61 67 6c 65 20 62 69 6e 61 72 69 65  he Eagle binarie
2c90: 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65 64  s are being used
2ca0: 20 62 79 29 20 75 73 69 6e 67 20 61 0d 0a 20 20   by) using a..  
2cb0: 23 20 20 20 20 20 20 20 46 6f 73 73 69 6c 20 62  #       Fossil b
2cc0: 69 6e 61 72 79 20 69 6e 20 74 68 65 20 50 41 54  inary in the PAT
2cd0: 48 2c 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e  H, if available.
2ce0: 20 20 54 68 69 73 20 62 6c 6f 63 6b 20 6e 6f 77    This block now
2cf0: 20 72 65 71 75 69 72 65 73 0d 0a 20 20 23 20 20   requires..  #  
2d00: 20 20 20 20 20 74 68 65 20 22 45 61 67 6c 65 2e       the "Eagle.
2d10: 54 65 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74 73  Test.Constraints
2d20: 22 20 70 61 63 6b 61 67 65 2e 0d 0a 20 20 23 0d  " package...  #.
2d30: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
2d40: 69 73 74 73 20 72 6f 6f 74 5f 70 61 74 68 5d 7d  ists root_path]}
2d50: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a   then {..    #..
2d60: 20 20 20 20 23 20 4e 4f 54 45 3a 20 49 73 20 74      # NOTE: Is t
2d70: 68 65 20 75 73 65 20 6f 66 20 46 6f 73 73 69 6c  he use of Fossil
2d80: 20 62 79 20 74 68 65 20 74 65 73 74 20 73 75 69   by the test sui
2d90: 74 65 20 61 6c 6c 6f 77 65 64 3f 0d 0a 20 20 20  te allowed?..   
2da0: 20 23 0d 0a 20 20 20 20 69 66 20 7b 5b 63 61 6e   #..    if {[can
2db0: 45 78 65 63 46 6f 73 73 69 6c 5d 7d 20 74 68 65  ExecFossil]} the
2dc0: 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 70  n {..      set p
2dd0: 61 74 74 65 72 6e 20 7b 5e 6c 6f 63 61 6c 2d 72  attern {^local-r
2de0: 6f 6f 74 3a 5c 73 2b 28 2e 2a 3f 29 24 7d 0d 0a  oot:\s+(.*?)$}..
2df0: 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 63 61 74  ..      if {[cat
2e00: 63 68 20 7b 65 78 65 63 20 2d 2d 20 66 6f 73 73  ch {exec -- foss
2e10: 69 6c 20 69 6e 66 6f 7d 20 65 78 65 63 5d 20 7c  il info} exec] |
2e20: 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 21  | \..          !
2e30: 5b 72 65 67 65 78 70 20 2d 6c 69 6e 65 20 2d 2d  [regexp -line --
2e40: 20 24 70 61 74 74 65 72 6e 20 24 65 78 65 63 20   $pattern $exec 
2e50: 64 75 6d 6d 79 20 64 69 72 65 63 74 6f 72 79 5d  dummy directory]
2e60: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
2e70: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
2e80: 4f 54 45 3a 20 57 65 20 63 6f 75 6c 64 20 6e 6f  OTE: We could no
2e90: 74 20 71 75 65 72 79 20 6c 6f 63 61 6c 20 72 6f  t query local ro
2ea0: 6f 74 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  ot directory of 
2eb0: 74 68 65 20 73 6f 75 72 63 65 0d 0a 20 20 20 20  the source..    
2ec0: 20 20 20 20 23 20 20 20 20 20 20 20 63 68 65 63      #       chec
2ed0: 6b 6f 75 74 20 66 72 6f 6d 20 46 6f 73 73 69 6c  kout from Fossil
2ee0: 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 61 74 74  ; therefore, att
2ef0: 65 6d 70 74 20 74 6f 20 6d 61 6b 65 20 61 6e 0d  empt to make an.
2f00: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
2f10: 20 65 64 75 63 61 74 65 64 20 67 75 65 73 73 2e   educated guess.
2f20: 20 20 54 68 69 73 20 76 61 6c 75 65 20 77 69 6c    This value wil
2f30: 6c 20 70 72 6f 62 61 62 6c 79 20 62 65 20 77 72  l probably be wr
2f40: 6f 6e 67 20 66 6f 72 0d 0a 20 20 20 20 20 20 20  ong for..       
2f50: 20 23 20 20 20 20 20 20 20 61 6e 79 20 70 72 6f   #       any pro
2f60: 6a 65 63 74 28 73 29 20 6f 74 68 65 72 20 74 68  ject(s) other th
2f70: 61 6e 20 45 61 67 6c 65 2e 20 20 49 6e 20 74 68  an Eagle.  In th
2f80: 61 74 20 63 61 73 65 2c 20 74 68 69 73 0d 0a 20  at case, this.. 
2f90: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 76         #       v
2fa0: 61 6c 75 65 20 73 68 6f 75 6c 64 20 62 65 20 6f  alue should be o
2fb0: 76 65 72 72 69 64 64 65 6e 20 62 79 20 74 68 61  verridden by tha
2fc0: 74 20 70 72 6f 6a 65 63 74 20 74 6f 20 72 65 66  t project to ref
2fd0: 6c 65 63 74 0d 0a 20 20 20 20 20 20 20 20 23 20  lect..        # 
2fe0: 20 20 20 20 20 20 74 68 65 20 61 63 74 75 61 6c        the actual
2ff0: 20 6c 6f 63 61 6c 20 72 6f 6f 74 20 64 69 72 65   local root dire
3000: 63 74 6f 72 79 20 6f 66 20 74 68 65 20 73 6f 75  ctory of the sou
3010: 72 63 65 20 63 68 65 63 6b 6f 75 74 0d 0a 20 20  rce checkout..  
3020: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 66 6f        #       fo
3030: 72 20 74 68 61 74 20 70 72 6f 6a 65 63 74 2e 0d  r that project..
3040: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
3050: 20 20 20 20 73 65 74 20 72 6f 6f 74 5f 70 61 74      set root_pat
3060: 68 20 24 62 61 73 65 5f 70 61 74 68 0d 0a 20 20  h $base_path..  
3070: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
3080: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
3090: 20 23 20 4e 4f 54 45 3a 20 57 65 20 65 78 74 72   # NOTE: We extr
30a0: 61 63 74 65 64 20 74 68 65 20 6c 6f 63 61 6c 20  acted the local 
30b0: 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 20 6f  root directory o
30c0: 66 20 74 68 65 20 73 6f 75 72 63 65 0d 0a 20 20  f the source..  
30d0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63 68        #       ch
30e0: 65 63 6b 6f 75 74 20 66 72 6f 6d 20 46 6f 73 73  eckout from Foss
30f0: 69 6c 2e 20 20 4e 6f 77 2c 20 6d 61 6b 65 20 73  il.  Now, make s
3100: 75 72 65 20 69 74 20 69 73 20 66 75 6c 6c 79 0d  ure it is fully.
3110: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
3120: 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 61 6e 64 20   normalized and 
3130: 68 61 73 20 6e 6f 20 74 72 61 69 6c 69 6e 67 20  has no trailing 
3140: 73 6c 61 73 68 65 73 2e 20 20 41 6c 73 6f 2c 20  slashes.  Also, 
3150: 6d 61 6b 65 0d 0a 20 20 20 20 20 20 20 20 23 20  make..        # 
3160: 20 20 20 20 20 20 73 75 72 65 20 61 6e 64 20 72        sure and r
3170: 65 6d 6f 76 65 20 61 6e 79 20 74 72 61 69 6c 69  emove any traili
3180: 6e 67 20 6e 65 77 6c 69 6e 65 20 22 6a 75 73 74  ng newline "just
3190: 20 69 6e 20 63 61 73 65 22 0d 0a 20 20 20 20 20   in case"..     
31a0: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 72     #       the r
31b0: 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f  egular expressio
31c0: 6e 20 65 6e 67 69 6e 65 20 69 6e 63 6c 75 64 65  n engine include
31d0: 64 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 23  d it...        #
31e0: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 72 6f  ..        set ro
31f0: 6f 74 5f 70 61 74 68 20 5b 66 69 6c 65 20 6e 6f  ot_path [file no
3200: 72 6d 61 6c 69 7a 65 20 5b 73 74 72 69 6e 67 20  rmalize [string 
3210: 74 72 69 6d 20 24 64 69 72 65 63 74 6f 72 79 5d  trim $directory]
3220: 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ]..      }....  
3230: 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d      unset -nocom
3240: 70 6c 61 69 6e 20 64 69 72 65 63 74 6f 72 79 20  plain directory 
3250: 64 75 6d 6d 79 20 65 78 65 63 20 70 61 74 74 65  dummy exec patte
3260: 72 6e 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  rn..    } else {
3270: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
3280: 20 23 20 4e 4f 54 45 3a 20 55 73 65 20 6f 66 20   # NOTE: Use of 
3290: 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20 74 65  Fossil by the te
32a0: 73 74 20 73 75 69 74 65 20 69 73 20 66 6f 72 62  st suite is forb
32b0: 69 64 64 65 6e 2e 20 20 46 61 6c 6c 62 61 63 6b  idden.  Fallback
32c0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
32d0: 74 6f 20 75 73 69 6e 67 20 74 68 65 20 62 61 73  to using the bas
32e0: 65 20 70 61 74 68 2e 0d 0a 20 20 20 20 20 20 23  e path...      #
32f0: 0d 0a 20 20 20 20 20 20 73 65 74 20 72 6f 6f 74  ..      set root
3300: 5f 70 61 74 68 20 24 62 61 73 65 5f 70 61 74 68  _path $base_path
3310: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a  ..    }..  }....
3320: 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
3330: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3340: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3350: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
3370: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
3380: 3a 20 49 66 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  : If command lin
3390: 65 20 61 72 67 75 6d 65 6e 74 73 20 77 65 72 65  e arguments were
33a0: 20 73 75 70 70 6c 69 65 64 2c 20 70 72 6f 63 65   supplied, proce
33b0: 73 73 20 74 68 65 6d 20 6e 6f 77 2e 0d 0a 20 20  ss them now...  
33c0: 23 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  #..  set test_fl
33d0: 61 67 73 28 2d 73 75 69 74 65 29 20 22 22 3b 20  ags(-suite) ""; 
33e0: 23 20 74 65 73 74 20 73 75 69 74 65 20 6e 61 6d  # test suite nam
33f0: 65 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d  e, default to em
3400: 70 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74  pty...  set test
3410: 5f 66 6c 61 67 73 28 2d 6d 61 63 68 69 6e 65 29  _flags(-machine)
3420: 20 22 22 3b 20 23 20 6d 61 63 68 69 6e 65 20 61   ""; # machine a
3430: 72 63 68 69 74 65 63 74 75 72 65 2c 20 64 65 66  rchitecture, def
3440: 61 75 6c 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a  ault to empty...
3450: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
3460: 28 2d 70 6c 61 74 66 6f 72 6d 29 20 22 22 3b 20  (-platform) ""; 
3470: 23 20 62 75 69 6c 64 20 70 6c 61 74 66 6f 72 6d  # build platform
3480: 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70  , default to emp
3490: 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  ty...  set test_
34a0: 66 6c 61 67 73 28 2d 63 6f 6e 66 69 67 75 72 61  flags(-configura
34b0: 74 69 6f 6e 29 20 22 22 3b 20 23 20 62 75 69 6c  tion) ""; # buil
34c0: 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c  d configuration,
34d0: 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70 74   default to empt
34e0: 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  y...  set test_f
34f0: 6c 61 67 73 28 2d 73 75 66 66 69 78 29 20 22 22  lags(-suffix) ""
3500: 3b 20 23 20 62 75 69 6c 64 20 73 75 66 66 69 78  ; # build suffix
3510: 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70  , default to emp
3520: 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  ty...  set test_
3530: 66 6c 61 67 73 28 2d 66 69 6c 65 29 20 5b 6c 69  flags(-file) [li
3540: 73 74 20 2a 2e 65 61 67 6c 65 5d 3b 20 23 20 64  st *.eagle]; # d
3550: 65 66 61 75 6c 74 20 74 6f 20 72 75 6e 6e 69 6e  efault to runnin
3560: 67 20 61 6c 6c 20 74 65 73 74 20 66 69 6c 65 73  g all test files
3570: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
3580: 61 67 73 28 2d 6e 6f 74 46 69 6c 65 29 20 5b 6c  ags(-notFile) [l
3590: 69 73 74 20 6c 2e 2a 2e 65 61 67 6c 65 5d 3b 20  ist l.*.eagle]; 
35a0: 23 20 43 4f 4d 50 41 54 3a 20 54 63 6c 2e 0d 0a  # COMPAT: Tcl...
35b0: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
35c0: 28 2d 73 74 61 72 74 46 69 6c 65 29 20 5b 6c 69  (-startFile) [li
35d0: 73 74 5d 3b 20 23 20 73 74 61 72 74 20 72 75 6e  st]; # start run
35e0: 6e 69 6e 67 20 61 74 20 74 68 65 73 65 20 74 65  ning at these te
35f0: 73 74 20 66 69 6c 65 73 2e 0d 0a 20 20 73 65 74  st files...  set
3600: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f   test_flags(-sto
3610: 70 46 69 6c 65 29 20 5b 6c 69 73 74 5d 3b 20 23  pFile) [list]; #
3620: 20 73 74 6f 70 20 72 75 6e 6e 69 6e 67 20 61 66   stop running af
3630: 74 65 72 20 74 68 65 73 65 20 74 65 73 74 20 66  ter these test f
3640: 69 6c 65 73 2e 0d 0a 20 20 73 65 74 20 74 65 73  iles...  set tes
3650: 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20  t_flags(-match) 
3660: 5b 6c 69 73 74 20 2a 5d 3b 20 23 20 64 65 66 61  [list *]; # defa
3670: 75 6c 74 20 74 6f 20 72 75 6e 6e 69 6e 67 20 61  ult to running a
3680: 6c 6c 20 74 65 73 74 73 2e 0d 0a 20 20 73 65 74  ll tests...  set
3690: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69   test_flags(-ski
36a0: 70 29 20 5b 6c 69 73 74 5d 3b 20 23 20 64 65 66  p) [list]; # def
36b0: 61 75 6c 74 20 74 6f 20 73 6b 69 70 70 69 6e 67  ault to skipping
36c0: 20 6e 6f 20 74 65 73 74 73 2e 0d 0a 20 20 73 65   no tests...  se
36d0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63 6f  t test_flags(-co
36e0: 6e 73 74 72 61 69 6e 74 73 29 20 5b 6c 69 73 74  nstraints) [list
36f0: 5d 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  ]; # default to 
3700: 6e 6f 20 6d 61 6e 75 61 6c 20 63 6f 6e 73 74 72  no manual constr
3710: 61 69 6e 74 73 2e 0d 0a 20 20 73 65 74 20 74 65  aints...  set te
3720: 73 74 5f 66 6c 61 67 73 28 2d 76 65 72 62 6f 73  st_flags(-verbos
3730: 65 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74  e) ""; # default
3740: 20 74 6f 20 70 61 73 73 2c 20 62 6f 64 79 2c 20   to pass, body, 
3750: 73 6b 69 70 2c 20 73 74 61 72 74 2c 20 65 72 72  skip, start, err
3760: 6f 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  or...  set test_
3770: 66 6c 61 67 73 28 2d 6c 6f 67 46 69 6c 65 29 20  flags(-logFile) 
3780: 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f  ""; # default to
3790: 20 75 73 69 6e 67 20 73 74 61 6e 64 61 72 64 20   using standard 
37a0: 6c 6f 67 20 66 69 6c 65 20 6e 61 6d 69 6e 67 2e  log file naming.
37b0: 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61  ..  set test_fla
37c0: 67 73 28 2d 74 68 72 65 73 68 6f 6c 64 29 20 22  gs(-threshold) "
37d0: 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  "; # default to 
37e0: 72 65 71 75 69 72 69 6e 67 20 61 6c 6c 20 74 65  requiring all te
37f0: 73 74 73 20 74 6f 20 70 61 73 73 2e 0d 0a 20 20  sts to pass...  
3800: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
3810: 72 61 6e 64 6f 6d 4f 72 64 65 72 29 20 22 22 3b  randomOrder) "";
3820: 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 64 65   # default to de
3830: 74 65 72 6d 69 6e 69 73 74 69 63 20 6f 72 64 65  terministic orde
3840: 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  r...  set test_f
3850: 6c 61 67 73 28 2d 75 6e 63 6f 75 6e 74 65 64 4c  lags(-uncountedL
3860: 65 61 6b 73 29 20 22 22 3b 20 23 20 75 73 65 20  eaks) ""; # use 
3870: 64 65 66 61 75 6c 74 73 20 66 6f 72 20 75 6e 63  defaults for unc
3880: 6f 75 6e 74 65 64 20 72 65 73 6f 75 72 63 65 73  ounted resources
3890: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
38a0: 61 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b  ags(-breakOnLeak
38b0: 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20  ) ""; # default 
38c0: 74 6f 20 63 6f 6e 74 69 6e 75 65 20 6f 6e 20 6c  to continue on l
38d0: 65 61 6b 2e 0d 0a 20 20 73 65 74 20 74 65 73 74  eak...  set test
38e0: 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e 46 61  _flags(-stopOnFa
38f0: 69 6c 75 72 65 29 20 22 22 3b 20 23 20 64 65 66  ilure) ""; # def
3900: 61 75 6c 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65  ault to continue
3910: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
3920: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
3930: 73 74 6f 70 4f 6e 4c 65 61 6b 29 20 22 22 3b 20  stopOnLeak) ""; 
3940: 23 20 64 65 66 61 75 6c 74 20 74 6f 20 63 6f 6e  # default to con
3950: 74 69 6e 75 65 20 6f 6e 20 6c 65 61 6b 2e 0d 0a  tinue on leak...
3960: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
3970: 28 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74 65  (-exitOnComplete
3980: 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20  ) ""; # default 
3990: 74 6f 20 6e 6f 74 20 65 78 69 74 20 61 66 74 65  to not exit afte
39a0: 72 20 63 6f 6d 70 6c 65 74 65 2e 0d 0a 20 20 73  r complete...  s
39b0: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 70  et test_flags(-p
39c0: 72 65 54 65 73 74 29 20 22 22 3b 20 23 20 64 65  reTest) ""; # de
39d0: 66 61 75 6c 74 20 74 6f 20 6e 6f 74 20 65 76 61  fault to not eva
39e0: 6c 75 61 74 69 6e 67 20 61 6e 79 74 68 69 6e 67  luating anything
39f0: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
3a00: 61 67 73 28 2d 70 6f 73 74 54 65 73 74 29 20 22  ags(-postTest) "
3a10: 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  "; # default to 
3a20: 6e 6f 74 20 65 76 61 6c 75 61 74 69 6e 67 20 61  not evaluating a
3a30: 6e 79 74 68 69 6e 67 2e 0d 0a 20 20 73 65 74 20  nything...  set 
3a40: 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57  test_flags(-preW
3a50: 61 69 74 29 20 22 22 3b 20 23 20 64 65 66 61 75  ait) ""; # defau
3a60: 6c 74 20 74 6f 20 6e 6f 74 20 77 61 69 74 69 6e  lt to not waitin
3a70: 67 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  g...  set test_f
3a80: 6c 61 67 73 28 2d 70 6f 73 74 57 61 69 74 29 20  lags(-postWait) 
3a90: 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f  ""; # default to
3aa0: 20 6e 6f 74 20 77 61 69 74 69 6e 67 2e 0d 0a 20   not waiting... 
3ab0: 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28   set test_flags(
3ac0: 2d 74 63 6c 73 68 29 20 22 22 3b 20 23 20 54 63  -tclsh) ""; # Tc
3ad0: 6c 20 73 68 65 6c 6c 2c 20 64 65 66 61 75 6c 74  l shell, default
3ae0: 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65   to empty...  se
3af0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 61  t test_flags(-ba
3b00: 64 29 20 5b 6c 69 73 74 5d 3b 20 23 20 74 68 65  d) [list]; # the
3b10: 73 65 20 61 72 65 20 74 68 65 20 75 6e 72 65 63  se are the unrec
3b20: 6f 67 6e 69 7a 65 64 20 61 72 67 75 6d 65 6e 74  ognized argument
3b30: 73 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  s...  set test_f
3b40: 6c 61 67 73 28 2d 6e 6f 29 20 5b 6c 69 73 74 5d  lags(-no) [list]
3b50: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 6e  ; # default to n
3b60: 6f 74 20 68 61 76 69 6e 67 20 61 6e 79 20 72 65  ot having any re
3b70: 73 74 72 69 63 74 69 6f 6e 73 2e 0d 0a 0d 0a 20  strictions..... 
3b80: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68   #..  # NOTE: Ch
3b90: 65 63 6b 20 66 6f 72 20 61 6e 64 20 70 72 6f 63  eck for and proc
3ba0: 65 73 73 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 20  ess any command 
3bb0: 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 2e 0d  line arguments..
3bc0: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66  .  #..  if {[inf
3bd0: 6f 20 65 78 69 73 74 73 20 61 72 67 76 5d 7d 20  o exists argv]} 
3be0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20  then {..    set 
3bf0: 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 61 64 29  test_flags(-bad)
3c00: 20 5b 65 76 61 6c 20 70 72 6f 63 65 73 73 54 65   [eval processTe
3c10: 73 74 41 72 67 75 6d 65 6e 74 73 20 74 65 73 74  stArguments test
3c20: 5f 66 6c 61 67 73 20 66 61 6c 73 65 20 24 61 72  _flags false $ar
3c30: 67 76 5d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b  gv]....    if {[
3c40: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
3c50: 5f 66 6c 61 67 73 28 2d 6e 6f 29 5d 20 26 26 20  _flags(-no)] && 
3c60: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69  \..        [stri
3c70: 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f  ng length $test_
3c80: 66 6c 61 67 73 28 2d 6e 6f 29 5d 20 3e 20 30 7d  flags(-no)] > 0}
3c90: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
3ca0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
3cb0: 53 65 74 20 74 68 65 20 74 65 73 74 20 72 75 6e  Set the test run
3cc0: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 62 61   restrictions ba
3cd0: 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 76 69  sed on the provi
3ce0: 64 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  ded command line
3cf0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
3d00: 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 20 28  argument value (
3d10: 77 68 69 63 68 20 69 73 20 61 73 73 75 6d 65 64  which is assumed
3d20: 20 74 6f 20 62 65 20 61 20 22 64 69 63 74 69 6f   to be a "dictio
3d30: 6e 61 72 79 2d 73 74 79 6c 65 22 20 6c 69 73 74  nary-style" list
3d40: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
3d50: 63 6f 6e 74 61 69 6e 69 6e 67 20 6e 61 6d 65 2f  containing name/
3d60: 76 61 6c 75 65 20 70 61 69 72 73 20 74 6f 20 61  value pairs to a
3d70: 64 64 20 74 6f 20 74 68 65 20 67 6c 6f 62 61 6c  dd to the global
3d80: 20 22 6e 6f 22 20 61 72 72 61 79 29 2e 0d 0a 20   "no" array)... 
3d90: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 66 6f       #..      fo
3da0: 72 65 61 63 68 20 7b 6e 61 6d 65 20 76 61 6c 75  reach {name valu
3db0: 65 7d 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  e} $test_flags(-
3dc0: 6e 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 73  no) {..        s
3dd0: 65 74 20 6e 6f 28 24 6e 61 6d 65 29 20 24 76 61  et no($name) $va
3de0: 6c 75 65 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  lue..      }....
3df0: 20 20 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63        unset -noc
3e00: 6f 6d 70 6c 61 69 6e 20 6e 61 6d 65 20 76 61 6c  omplain name val
3e10: 75 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ue..    }....   
3e20: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
3e30: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f  s test_flags(-lo
3e40: 67 46 69 6c 65 29 5d 20 26 26 20 5c 0d 0a 20 20  gFile)] && \..  
3e50: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65        [string le
3e60: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
3e70: 28 2d 6c 6f 67 46 69 6c 65 29 5d 20 3e 20 30 7d  (-logFile)] > 0}
3e80: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
3e90: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
3ea0: 53 65 74 20 74 68 65 20 6c 6f 67 20 66 69 6c 65  Set the log file
3eb0: 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6f 6e 65   name to the one
3ec0: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
3ed0: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a   command line...
3ee0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
3ef0: 65 74 20 74 65 73 74 5f 6c 6f 67 20 24 74 65 73  et test_log $tes
3f00: 74 5f 66 6c 61 67 73 28 2d 6c 6f 67 46 69 6c 65  t_flags(-logFile
3f10: 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  )..    }....    
3f20: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
3f30: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 74 68 72   test_flags(-thr
3f40: 65 73 68 6f 6c 64 29 5d 20 26 26 20 5c 0d 0a 20  eshold)] && \.. 
3f50: 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69         [string i
3f60: 73 20 69 6e 74 65 67 65 72 20 2d 73 74 72 69 63  s integer -stric
3f70: 74 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 74  t $test_flags(-t
3f80: 68 72 65 73 68 6f 6c 64 29 5d 7d 20 74 68 65 6e  hreshold)]} then
3f90: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
3fa0: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
3fb0: 68 65 20 74 65 73 74 20 70 61 73 73 20 74 68 72  he test pass thr
3fc0: 65 73 68 6f 6c 64 20 74 6f 20 74 68 65 20 6f 6e  eshold to the on
3fd0: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  e provided by th
3fe0: 65 20 63 6f 6d 6d 61 6e 64 0d 0a 20 20 20 20 20  e command..     
3ff0: 20 23 20 20 20 20 20 20 20 6c 69 6e 65 2e 0d 0a   #       line...
4000: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
4010: 65 74 20 74 65 73 74 5f 74 68 72 65 73 68 6f 6c  et test_threshol
4020: 64 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 74  d $test_flags(-t
4030: 68 72 65 73 68 6f 6c 64 29 0d 0a 20 20 20 20 7d  hreshold)..    }
4040: 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66  ....    if {[inf
4050: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
4060: 61 67 73 28 2d 72 61 6e 64 6f 6d 4f 72 64 65 72  ags(-randomOrder
4070: 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  )] && \..       
4080: 20 5b 73 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c   [string is bool
4090: 65 61 6e 20 2d 73 74 72 69 63 74 20 24 74 65 73  ean -strict $tes
40a0: 74 5f 66 6c 61 67 73 28 2d 72 61 6e 64 6f 6d 4f  t_flags(-randomO
40b0: 72 64 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  rder)]} then {..
40c0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
40d0: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74   NOTE: Set the t
40e0: 65 73 74 20 72 61 6e 64 6f 6d 2d 6f 72 64 65 72  est random-order
40f0: 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e 65   flag to the one
4100: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
4110: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
4120: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20  command line... 
4130: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
4140: 74 20 74 65 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72  t test_random_or
4150: 64 65 72 20 24 74 65 73 74 5f 66 6c 61 67 73 28  der $test_flags(
4160: 2d 72 61 6e 64 6f 6d 4f 72 64 65 72 29 0d 0a 20  -randomOrder).. 
4170: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
4180: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
4190: 74 5f 66 6c 61 67 73 28 2d 75 6e 63 6f 75 6e 74  t_flags(-uncount
41a0: 65 64 4c 65 61 6b 73 29 5d 20 26 26 20 5c 0d 0a  edLeaks)] && \..
41b0: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
41c0: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61  length $test_fla
41d0: 67 73 28 2d 75 6e 63 6f 75 6e 74 65 64 4c 65 61  gs(-uncountedLea
41e0: 6b 73 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  ks)] > 0} then {
41f0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
4200: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
4210: 20 74 65 73 74 20 75 6e 63 6f 75 6e 74 65 64 20   test uncounted 
4220: 6c 65 61 6b 73 20 22 6c 69 73 74 22 20 74 6f 20  leaks "list" to 
4230: 74 68 65 20 6f 6e 65 20 70 72 6f 76 69 64 65 64  the one provided
4240: 20 62 79 0d 0a 20 20 20 20 20 20 23 20 20 20 20   by..      #    
4250: 20 20 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c     the command l
4260: 69 6e 65 2e 20 20 57 65 20 73 68 6f 75 6c 64 20  ine.  We should 
4270: 70 72 6f 62 61 62 6c 79 20 75 73 65 20 5b 73 74  probably use [st
4280: 72 69 6e 67 20 69 73 20 6c 69 73 74 5d 0d 0a 20  ring is list].. 
4290: 20 20 20 20 20 23 20 20 20 20 20 20 20 68 65 72       #       her
42a0: 65 3b 20 68 6f 77 65 76 65 72 2c 20 74 68 61 74  e; however, that
42b0: 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c   is not availabl
42c0: 65 20 75 6e 74 69 6c 20 6e 61 74 69 76 65 20 54  e until native T
42d0: 63 6c 20 38 2e 35 2e 0d 0a 20 20 20 20 20 20 23  cl 8.5...      #
42e0: 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74  ..      set test
42f0: 5f 75 6e 63 6f 75 6e 74 65 64 5f 6c 65 61 6b 73  _uncounted_leaks
4300: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 75 6e   $test_flags(-un
4310: 63 6f 75 6e 74 65 64 4c 65 61 6b 73 29 0d 0a 20  countedLeaks).. 
4320: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
4330: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
4340: 74 5f 66 6c 61 67 73 28 2d 62 72 65 61 6b 4f 6e  t_flags(-breakOn
4350: 4c 65 61 6b 29 5d 20 26 26 20 5c 0d 0a 20 20 20  Leak)] && \..   
4360: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20       [string is 
4370: 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20  boolean -strict 
4380: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 72 65  $test_flags(-bre
4390: 61 6b 4f 6e 4c 65 61 6b 29 5d 7d 20 74 68 65 6e  akOnLeak)]} then
43a0: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
43b0: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
43c0: 68 65 20 74 65 73 74 20 62 72 65 61 6b 2d 6f 6e  he test break-on
43d0: 2d 6c 65 61 6b 20 66 6c 61 67 20 74 6f 20 74 68  -leak flag to th
43e0: 65 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62  e one provided b
43f0: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20  y the..      #  
4400: 20 20 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e       command lin
4410: 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  e...      #..   
4420: 20 20 20 73 65 74 20 74 65 73 74 5f 62 72 65 61     set test_brea
4430: 6b 5f 6f 6e 5f 6c 65 61 6b 20 24 74 65 73 74 5f  k_on_leak $test_
4440: 66 6c 61 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65  flags(-breakOnLe
4450: 61 6b 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ak)..    }....  
4460: 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73    if {[info exis
4470: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73  ts test_flags(-s
4480: 74 6f 70 4f 6e 46 61 69 6c 75 72 65 29 5d 20 26  topOnFailure)] &
4490: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74  & \..        [st
44a0: 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20  ring is boolean 
44b0: 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 66 6c  -strict $test_fl
44c0: 61 67 73 28 2d 73 74 6f 70 4f 6e 46 61 69 6c 75  ags(-stopOnFailu
44d0: 72 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  re)]} then {..  
44e0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
44f0: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73  OTE: Set the tes
4500: 74 20 73 74 6f 70 2d 6f 6e 2d 66 61 69 6c 75 72  t stop-on-failur
4510: 65 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e  e flag to the on
4520: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  e provided by th
4530: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
4540: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a   command line...
4550: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
4560: 65 74 20 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f  et test_stop_on_
4570: 66 61 69 6c 75 72 65 20 24 74 65 73 74 5f 66 6c  failure $test_fl
4580: 61 67 73 28 2d 73 74 6f 70 4f 6e 46 61 69 6c 75  ags(-stopOnFailu
4590: 72 65 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  re)..    }....  
45a0: 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73    if {[info exis
45b0: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73  ts test_flags(-s
45c0: 74 6f 70 4f 6e 4c 65 61 6b 29 5d 20 26 26 20 5c  topOnLeak)] && \
45d0: 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e  ..        [strin
45e0: 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74  g is boolean -st
45f0: 72 69 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73  rict $test_flags
4600: 28 2d 73 74 6f 70 4f 6e 4c 65 61 6b 29 5d 7d 20  (-stopOnLeak)]} 
4610: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
4620: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53  .      # NOTE: S
4630: 65 74 20 74 68 65 20 74 65 73 74 20 73 74 6f 70  et the test stop
4640: 2d 6f 6e 2d 6c 65 61 6b 20 66 6c 61 67 20 74 6f  -on-leak flag to
4650: 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69 64 65   the one provide
4660: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
4670: 23 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 20  #       command 
4680: 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  line...      #..
4690: 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 73        set test_s
46a0: 74 6f 70 5f 6f 6e 5f 6c 65 61 6b 20 24 74 65 73  top_on_leak $tes
46b0: 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e 4c  t_flags(-stopOnL
46c0: 65 61 6b 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  eak)..    }.... 
46d0: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
46e0: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
46f0: 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74 65 29 5d  exitOnComplete)]
4700: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b   && \..        [
4710: 73 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61  string is boolea
4720: 6e 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f  n -strict $test_
4730: 66 6c 61 67 73 28 2d 65 78 69 74 4f 6e 43 6f 6d  flags(-exitOnCom
4740: 70 6c 65 74 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  plete)]} then {.
4750: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
4760: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
4770: 74 65 73 74 20 65 78 69 74 2d 6f 6e 2d 63 6f 6d  test exit-on-com
4780: 70 6c 65 74 65 20 66 6c 61 67 20 74 6f 20 74 68  plete flag to th
4790: 65 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62  e one provided b
47a0: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20  y the..      #  
47b0: 20 20 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e       command lin
47c0: 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  e...      #..   
47d0: 20 20 20 73 65 74 20 74 65 73 74 5f 65 78 69 74     set test_exit
47e0: 5f 6f 6e 5f 63 6f 6d 70 6c 65 74 65 20 24 74 65  _on_complete $te
47f0: 73 74 5f 66 6c 61 67 73 28 2d 65 78 69 74 4f 6e  st_flags(-exitOn
4800: 43 6f 6d 70 6c 65 74 65 29 0d 0a 20 20 20 20 7d  Complete)..    }
4810: 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66  ....    if {[inf
4820: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
4830: 61 67 73 28 2d 70 72 65 54 65 73 74 29 5d 20 26  ags(-preTest)] &
4840: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74  & \..        [st
4850: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73  ring length $tes
4860: 74 5f 66 6c 61 67 73 28 2d 70 72 65 54 65 73 74  t_flags(-preTest
4870: 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  )] > 0} then {..
4880: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
4890: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 70   NOTE: Set the p
48a0: 72 65 2d 74 65 73 74 20 73 63 72 69 70 74 20 74  re-test script t
48b0: 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69 64  o the one provid
48c0: 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d 61 6e  ed by the comman
48d0: 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 23  d line...      #
48e0: 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74  ..      set test
48f0: 5f 73 63 72 69 70 74 28 70 72 65 29 20 24 74 65  _script(pre) $te
4900: 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 54 65 73  st_flags(-preTes
4910: 74 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t)..    }....   
4920: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
4930: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 6f  s test_flags(-po
4940: 73 74 54 65 73 74 29 5d 20 26 26 20 5c 0d 0a 20  stTest)] && \.. 
4950: 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c         [string l
4960: 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67  ength $test_flag
4970: 73 28 2d 70 6f 73 74 54 65 73 74 29 5d 20 3e 20  s(-postTest)] > 
4980: 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
4990: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
49a0: 3a 20 53 65 74 20 74 68 65 20 70 72 65 2d 74 65  : Set the pre-te
49b0: 73 74 20 73 63 72 69 70 74 20 74 6f 20 74 68 65  st script to the
49c0: 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79   one provided by
49d0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e   the command lin
49e0: 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  e...      #..   
49f0: 20 20 20 73 65 74 20 74 65 73 74 5f 73 63 72 69     set test_scri
4a00: 70 74 28 70 6f 73 74 29 20 24 74 65 73 74 5f 66  pt(post) $test_f
4a10: 6c 61 67 73 28 2d 70 6f 73 74 54 65 73 74 29 0d  lags(-postTest).
4a20: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66  .    }....    if
4a30: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
4a40: 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57 61  est_flags(-preWa
4a50: 69 74 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  it)] && \..     
4a60: 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69 6e     [string is in
4a70: 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 74  teger -strict $t
4a80: 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57 61  est_flags(-preWa
4a90: 69 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  it)]} then {..  
4aa0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
4ab0: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 73 70 65  OTE: Set the spe
4ac0: 63 69 66 69 65 64 20 77 61 69 74 20 28 69 6e 20  cified wait (in 
4ad0: 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 29 20 62 65  milliseconds) be
4ae0: 66 6f 72 65 20 65 61 63 68 20 66 69 6c 65 2e 0d  fore each file..
4af0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
4b00: 73 65 74 20 74 65 73 74 5f 77 61 69 74 28 70 72  set test_wait(pr
4b10: 65 29 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  e) $test_flags(-
4b20: 70 72 65 57 61 69 74 29 0d 0a 20 20 20 20 7d 0d  preWait)..    }.
4b30: 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f  ...    if {[info
4b40: 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61   exists test_fla
4b50: 67 73 28 2d 70 6f 73 74 57 61 69 74 29 5d 20 26  gs(-postWait)] &
4b60: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74  & \..        [st
4b70: 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72 20  ring is integer 
4b80: 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 66 6c  -strict $test_fl
4b90: 61 67 73 28 2d 70 6f 73 74 57 61 69 74 29 5d 7d  ags(-postWait)]}
4ba0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
4bb0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
4bc0: 53 65 74 20 74 68 65 20 73 70 65 63 69 66 69 65  Set the specifie
4bd0: 64 20 77 61 69 74 20 28 69 6e 20 6d 69 6c 6c 69  d wait (in milli
4be0: 73 65 63 6f 6e 64 73 29 20 61 66 74 65 72 20 65  seconds) after e
4bf0: 61 63 68 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  ach file...     
4c00: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
4c10: 73 74 5f 77 61 69 74 28 70 6f 73 74 29 20 24 74  st_wait(post) $t
4c20: 65 73 74 5f 66 6c 61 67 73 28 2d 70 6f 73 74 57  est_flags(-postW
4c30: 61 69 74 29 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d  ait)..    }..  }
4c40: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
4c50: 45 3a 20 53 65 74 20 74 68 65 20 64 65 66 61 75  E: Set the defau
4c60: 6c 74 20 74 65 73 74 20 73 75 69 74 65 20 6e 61  lt test suite na
4c70: 6d 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  me, if necessary
4c80: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
4c90: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
4ca0: 5f 73 75 69 74 65 5d 7d 20 74 68 65 6e 20 7b 0d  _suite]} then {.
4cb0: 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 73 75  .    set test_su
4cc0: 69 74 65 20 5b 67 65 74 54 65 73 74 53 75 69 74  ite [getTestSuit
4cd0: 65 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  e]..  }....  #..
4ce0: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
4cf0: 65 20 64 65 66 61 75 6c 74 20 74 65 73 74 20 6d  e default test m
4d00: 61 63 68 69 6e 65 20 28 65 2e 67 2e 20 61 6d 64  achine (e.g. amd
4d10: 36 34 2c 20 69 6e 74 65 6c 2c 20 65 74 63 29 2c  64, intel, etc),
4d20: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
4d30: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
4d40: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6d 61  o exists test_ma
4d50: 63 68 69 6e 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  chine]} then {..
4d60: 20 20 20 20 73 65 74 20 74 65 73 74 5f 6d 61 63      set test_mac
4d70: 68 69 6e 65 20 5b 67 65 74 54 65 73 74 4d 61 63  hine [getTestMac
4d80: 68 69 6e 65 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  hine]..  }....  
4d90: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74  #..  # NOTE: Set
4da0: 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 65 73   the default tes
4db0: 74 20 70 6c 61 74 66 6f 72 6d 20 28 65 2e 67 2e  t platform (e.g.
4dc0: 20 78 38 36 2c 20 78 36 34 2c 20 65 74 63 29 2c   x86, x64, etc),
4dd0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
4de0: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
4df0: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 70 6c  o exists test_pl
4e00: 61 74 66 6f 72 6d 5d 7d 20 74 68 65 6e 20 7b 0d  atform]} then {.
4e10: 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 70 6c  .    set test_pl
4e20: 61 74 66 6f 72 6d 20 5b 67 65 74 54 65 73 74 50  atform [getTestP
4e30: 6c 61 74 66 6f 72 6d 5d 0d 0a 20 20 7d 0d 0a 0d  latform]..  }...
4e40: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
4e50: 53 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 20  Set the default 
4e60: 74 65 73 74 20 63 6f 6e 66 69 67 75 72 61 74 69  test configurati
4e70: 6f 6e 20 28 69 2e 65 2e 20 44 65 62 75 67 20 6f  on (i.e. Debug o
4e80: 72 20 52 65 6c 65 61 73 65 29 2c 20 69 66 0d 0a  r Release), if..
4e90: 20 20 23 20 20 20 20 20 20 20 6e 65 63 65 73 73    #       necess
4ea0: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
4eb0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
4ec0: 65 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f  est_configuratio
4ed0: 6e 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  n]} then {..    
4ee0: 73 65 74 20 74 65 73 74 5f 63 6f 6e 66 69 67 75  set test_configu
4ef0: 72 61 74 69 6f 6e 20 5b 67 65 74 50 6c 61 74 66  ration [getPlatf
4f00: 6f 72 6d 49 6e 66 6f 20 63 6f 6e 66 69 67 75 72  ormInfo configur
4f10: 61 74 69 6f 6e 20 52 65 6c 65 61 73 65 5d 0d 0a  ation Release]..
4f20: 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
4f30: 4e 4f 54 45 3a 20 48 61 73 20 61 75 74 6f 6d 61  NOTE: Has automa
4f40: 74 69 63 20 6c 6f 67 20 66 69 6c 65 20 6e 61 6d  tic log file nam
4f50: 69 6e 67 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ing been disable
4f60: 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  d?..  #..  if {!
4f70: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
4f80: 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 5d 7d 20 74  logFileName)]} t
4f90: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
4fa0: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
4fb0: 65 20 6c 6f 67 20 74 6f 20 75 73 65 20 66 6f 72  e log to use for
4fc0: 20 74 65 73 74 20 6f 75 74 70 75 74 2c 20 69 66   test output, if
4fd0: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
4fe0: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
4ff0: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6c  fo exists test_l
5000: 6f 67 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  og]} then {..   
5010: 20 20 20 73 65 74 20 74 65 73 74 5f 6c 6f 67 20     set test_log 
5020: 5b 67 65 74 44 65 66 61 75 6c 74 54 65 73 74 4c  [getDefaultTestL
5030: 6f 67 5d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d  og]..    }..  }.
5040: 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23  ...  ###########
5050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5090: 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ##....  #..  # N
50a0: 4f 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20  OTE: Has native 
50b0: 54 63 6c 20 73 68 65 6c 6c 20 64 65 74 65 63 74  Tcl shell detect
50c0: 69 6f 6e 20 61 6e 64 20 75 73 65 20 62 65 65 6e  ion and use been
50d0: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
50e0: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
50f0: 69 73 74 73 20 6e 6f 28 74 63 6c 73 68 29 5d 7d  ists no(tclsh)]}
5100: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a   then {..    #..
5110: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
5120: 74 68 65 20 54 63 6c 20 73 68 65 6c 6c 20 65 78  the Tcl shell ex
5130: 65 63 75 74 61 62 6c 65 20 74 6f 20 75 73 65 20  ecutable to use 
5140: 66 6f 72 20 74 68 6f 73 65 20 73 70 65 63 69 61  for those specia
5150: 6c 69 7a 65 64 0d 0a 20 20 20 20 23 20 20 20 20  lized..    #    
5160: 20 20 20 74 65 73 74 73 20 74 68 61 74 20 6d 61     tests that ma
5170: 79 20 72 65 71 75 69 72 65 20 69 74 2c 20 69 66  y require it, if
5180: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
5190: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
51a0: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 74  fo exists test_t
51b0: 63 6c 73 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  clsh]} then {.. 
51c0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
51d0: 4e 4f 54 45 3a 20 57 68 65 6e 20 72 75 6e 6e 69  NOTE: When runni
51e0: 6e 67 20 69 6e 20 45 61 67 6c 65 2c 20 6d 6f 72  ng in Eagle, mor
51f0: 65 20 63 6f 6d 70 6c 65 78 20 6c 6f 67 69 63 20  e complex logic 
5200: 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 0d 0a  is required to..
5210: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 64 65        #       de
5220: 74 65 72 6d 69 6e 65 20 74 68 65 20 6e 61 74 69  termine the nati
5230: 76 65 20 54 63 6c 20 73 68 65 6c 6c 20 74 6f 20  ve Tcl shell to 
5240: 75 73 65 20 66 6f 72 20 74 68 65 20 76 61 72 69  use for the vari
5250: 6f 75 73 20 74 65 73 74 73 0d 0a 20 20 20 20 20  ous tests..     
5260: 20 23 20 20 20 20 20 20 20 74 68 61 74 20 72 65   #       that re
5270: 71 75 69 72 65 20 69 74 2e 20 20 41 6c 73 6f 2c  quire it.  Also,
5280: 20 74 68 69 73 20 73 61 6d 65 20 6c 6f 67 69 63   this same logic
5290: 20 69 73 20 75 73 65 64 20 77 69 74 68 20 54 63   is used with Tc
52a0: 6c 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  l..      #      
52b0: 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 74 20   when it is not 
52c0: 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20 61 6e 20  running from an 
52d0: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
52e0: 54 63 6c 20 73 68 65 6c 6c 0d 0a 20 20 20 20 20  Tcl shell..     
52f0: 20 23 20 20 20 20 20 20 20 65 78 65 63 75 74 61   #       executa
5300: 62 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ble...      #.. 
5310: 20 20 20 20 20 69 66 20 7b 5b 69 73 45 61 67 6c       if {[isEagl
5320: 65 5d 20 7c 7c 20 21 5b 73 74 72 69 6e 67 20 6d  e] || ![string m
5330: 61 74 63 68 20 74 63 6c 73 68 2a 20 24 62 69 6e  atch tclsh* $bin
5340: 5f 66 69 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  _file]} then {..
5350: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66          if {[inf
5360: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
5370: 61 67 73 28 2d 74 63 6c 73 68 29 5d 20 26 26 20  ags(-tclsh)] && 
5380: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  \..            [
5390: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74  string length $t
53a0: 65 73 74 5f 66 6c 61 67 73 28 2d 74 63 6c 73 68  est_flags(-tclsh
53b0: 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  )] > 0} then {..
53c0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
53d0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 55         # NOTE: U
53e0: 73 65 20 74 68 65 20 6e 61 74 69 76 65 20 54 63  se the native Tc
53f0: 6c 20 73 68 65 6c 6c 20 73 70 65 63 69 66 69 65  l shell specifie
5400: 64 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61 6e  d via the comman
5410: 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 20  d line...       
5420: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
5430: 73 65 74 20 74 65 73 74 5f 74 63 6c 73 68 20 24  set test_tclsh $
5440: 74 65 73 74 5f 66 6c 61 67 73 28 2d 74 63 6c 73  test_flags(-tcls
5450: 68 29 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c  h)..        } el
5460: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  se {..          
5470: 69 66 20 7b 5b 63 61 6e 45 78 65 63 54 63 6c 53  if {[canExecTclS
5480: 68 65 6c 6c 5d 20 26 26 20 5c 0d 0a 20 20 20 20  hell] && \..    
5490: 20 20 20 20 20 20 20 20 20 20 21 5b 69 6e 66 6f            ![info
54a0: 20 65 78 69 73 74 73 20 6e 6f 28 67 65 74 54 63   exists no(getTc
54b0: 6c 53 68 65 6c 6c 46 69 6c 65 4e 61 6d 65 29 5d  lShellFileName)]
54c0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
54d0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
54e0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 74 74       # NOTE: Att
54f0: 65 6d 70 74 20 74 6f 20 61 75 74 6f 6d 61 74 69  empt to automati
5500: 63 61 6c 6c 79 20 73 65 6c 65 63 74 20 74 68 65  cally select the
5510: 20 6e 61 74 69 76 65 20 54 63 6c 20 73 68 65 6c   native Tcl shel
5520: 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  l..            #
5530: 20 20 20 20 20 20 20 74 6f 20 75 73 65 2e 0d 0a         to use...
5540: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
5550: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 21             if {!
5560: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
5570: 77 61 72 6e 69 6e 67 46 6f 72 54 63 6c 53 68 65  warningForTclShe
5580: 6c 6c 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ll)] && \..     
5590: 20 20 20 20 20 20 20 20 20 20 20 21 5b 69 6e 66             ![inf
55a0: 6f 20 65 78 69 73 74 73 20 6e 6f 28 61 75 74 6f  o exists no(auto
55b0: 6d 61 74 69 63 54 63 6c 53 68 65 6c 6c 29 5d 20  maticTclShell)] 
55c0: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  && \..          
55d0: 20 20 20 20 20 20 21 5b 68 61 76 65 43 6f 6e 73        ![haveCons
55e0: 74 72 61 69 6e 74 20 71 75 69 65 74 5d 7d 20 74  traint quiet]} t
55f0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
5600: 20 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74       tputs $test
5610: 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20  _channel \..    
5620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3d                "=
5630: 3d 3d 3d 20 57 41 52 4e 49 4e 47 3a 20 61 74 74  === WARNING: att
5640: 65 6d 70 74 69 6e 67 20 61 75 74 6f 6d 61 74 69  empting automati
5650: 63 20 54 63 6c 20 73 68 65 6c 6c 20 73 65 6c 65  c Tcl shell sele
5660: 63 74 69 6f 6e 2e 2e 2e 5c 6e 22 0d 0a 20 20 20  ction...\n"..   
5670: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
5680: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 65            set te
5690: 73 74 5f 74 63 6c 73 68 20 5b 67 65 74 54 63 6c  st_tclsh [getTcl
56a0: 53 68 65 6c 6c 46 69 6c 65 4e 61 6d 65 20 5c 0d  ShellFileName \.
56b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
56c0: 20 5b 65 78 70 72 20 7b 21 5b 69 6e 66 6f 20 65   [expr {![info e
56d0: 78 69 73 74 73 20 6e 6f 28 61 75 74 6f 6d 61 74  xists no(automat
56e0: 69 63 54 63 6c 53 68 65 6c 6c 29 5d 7d 5d 20 5c  icTclShell)]}] \
56f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5700: 20 20 5b 65 78 70 72 20 7b 21 5b 69 6e 66 6f 20    [expr {![info 
5710: 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 4b 69 74  exists no(tclKit
5720: 29 5d 7d 5d 5d 0d 0a 20 20 20 20 20 20 20 20 20  )]}]]..         
5730: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
5740: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
5750: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 6b        # NOTE: Sk
5760: 69 70 20 64 65 74 65 63 74 69 6f 6e 20 61 6e 64  ip detection and
5770: 20 75 73 65 20 74 68 65 20 66 61 6c 6c 62 61 63   use the fallbac
5780: 6b 20 64 65 66 61 75 6c 74 2e 0d 0a 20 20 20 20  k default...    
5790: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
57a0: 20 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f         set test_
57b0: 74 63 6c 73 68 20 74 63 6c 73 68 0d 0a 20 20 20  tclsh tclsh..   
57c0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
57d0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73    }..      } els
57e0: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65 74  e {..        set
57f0: 20 74 65 73 74 5f 74 63 6c 73 68 20 24 62 69 6e   test_tclsh $bin
5800: 5f 66 69 6c 65 0d 0a 20 20 20 20 20 20 7d 0d 0a  _file..      }..
5810: 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20      }..  }....  
5820: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 57 68 65  #..  # NOTE: Whe
5830: 6e 20 72 75 6e 6e 69 6e 67 20 69 6e 20 45 61 67  n running in Eag
5840: 6c 65 2c 20 63 68 65 63 6b 20 66 6f 72 20 61 6e  le, check for an
5850: 79 20 6e 6f 6e 2d 63 6f 72 65 20 70 6c 75 67 69  y non-core plugi
5860: 6e 73 20 6c 6f 61 64 65 64 20 69 6e 74 6f 0d 0a  ns loaded into..
5870: 20 20 23 20 20 20 20 20 20 20 74 68 65 20 69 6e    #       the in
5880: 74 65 72 70 72 65 74 65 72 20 61 6e 64 20 69 73  terpreter and is
5890: 73 75 65 20 77 61 72 6e 69 6e 67 73 20 69 66 20  sue warnings if 
58a0: 61 6e 79 20 61 72 65 20 66 6f 75 6e 64 2e 20 20  any are found.  
58b0: 54 68 65 20 77 61 72 6e 69 6e 67 0d 0a 20 20 23  The warning..  #
58c0: 20 20 20 20 20 20 20 6d 61 79 20 62 65 20 75 73         may be us
58d0: 65 64 20 74 6f 20 65 78 70 6c 61 69 6e 20 73 75  ed to explain su
58e0: 62 73 65 71 75 65 6e 74 20 74 65 73 74 20 66 61  bsequent test fa
58f0: 69 6c 75 72 65 73 20 64 75 65 20 74 6f 20 74 68  ilures due to th
5900: 65 20 65 78 74 72 61 0d 0a 20 20 23 20 20 20 20  e extra..  #    
5910: 20 20 20 70 6c 75 67 69 6e 73 20 62 65 69 6e 67     plugins being
5920: 20 6c 6f 61 64 65 64 20 28 69 2e 65 2e 20 74 68   loaded (i.e. th
5930: 65 72 65 20 61 72 65 20 73 6f 6d 65 20 74 65 73  ere are some tes
5940: 74 73 20 61 72 65 20 73 65 6e 73 69 74 69 76 65  ts are sensitive
5950: 20 74 6f 0d 0a 20 20 23 20 20 20 20 20 20 20 68   to..  #       h
5960: 61 76 69 6e 67 20 22 75 6e 65 78 70 65 63 74 65  aving "unexpecte
5970: 64 22 20 70 6c 75 67 69 6e 73 20 6c 6f 61 64 65  d" plugins loade
5980: 64 29 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  d)...  #..  if {
5990: 5b 69 73 45 61 67 6c 65 5d 20 26 26 20 5c 0d 0a  [isEagle] && \..
59a0: 20 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69        ![info exi
59b0: 73 74 73 20 6e 6f 28 77 61 72 6e 69 6e 67 46 6f  sts no(warningFo
59c0: 72 50 6c 75 67 69 6e 29 5d 20 26 26 20 5c 0d 0a  rPlugin)] && \..
59d0: 20 20 20 20 20 20 21 5b 68 61 76 65 43 6f 6e 73        ![haveCons
59e0: 74 72 61 69 6e 74 20 71 75 69 65 74 5d 7d 20 74  traint quiet]} t
59f0: 68 65 6e 20 7b 0d 0a 20 20 20 20 66 6f 72 65 61  hen {..    forea
5a00: 63 68 20 6c 6f 61 64 65 64 20 5b 69 6e 66 6f 20  ch loaded [info 
5a10: 6c 6f 61 64 65 64 5d 20 7b 0d 0a 20 20 20 20 20  loaded] {..     
5a20: 20 23 0d 0a 20 20 20 20 20 20 23 20 48 41 43 4b   #..      # HACK
5a30: 3a 20 54 68 69 73 20 63 6f 64 65 20 61 73 73 75  : This code assu
5a40: 6d 65 73 20 74 68 61 74 20 61 6c 6c 20 70 6c 75  mes that all plu
5a50: 67 69 6e 73 20 69 6e 20 74 68 65 20 22 45 61 67  gins in the "Eag
5a60: 6c 65 2e 5f 50 6c 75 67 69 6e 73 22 0d 0a 20 20  le._Plugins"..  
5a70: 20 20 20 20 23 20 20 20 20 20 20 20 6e 61 6d 65      #       name
5a80: 73 70 61 63 65 20 62 65 6c 6f 6e 67 20 74 6f 20  space belong to 
5a90: 74 68 65 20 45 61 67 6c 65 20 63 6f 72 65 20 6c  the Eagle core l
5aa0: 69 62 72 61 72 79 20 69 74 73 65 6c 66 2e 0d 0a  ibrary itself...
5ab0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
5ac0: 66 20 7b 21 5b 73 74 72 69 6e 67 20 6d 61 74 63  f {![string matc
5ad0: 68 20 45 61 67 6c 65 2e 5f 50 6c 75 67 69 6e 73  h Eagle._Plugins
5ae0: 2e 2a 20 5b 6c 69 6e 64 65 78 20 24 6c 6f 61 64  .* [lindex $load
5af0: 65 64 20 31 5d 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ed 1]]} then {..
5b00: 20 20 20 20 20 20 20 20 74 70 75 74 73 20 24 74          tputs $t
5b10: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
5b20: 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20  endArgs \..     
5b30: 20 20 20 20 20 20 20 22 3d 3d 3d 3d 20 57 41 52         "==== WAR
5b40: 4e 49 4e 47 3a 20 65 78 74 72 61 20 70 6c 75 67  NING: extra plug
5b50: 69 6e 20 66 6f 75 6e 64 3a 20 22 20 24 6c 6f 61  in found: " $loa
5b60: 64 65 64 20 5c 6e 5d 0d 0a 20 20 20 20 20 20 7d  ded \n]..      }
5b70: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75  ..    }....    u
5b80: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
5b90: 20 6c 6f 61 64 65 64 0d 0a 20 20 7d 0d 0a 0d 0a   loaded..  }....
5ba0: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
5bb0: 68 6f 77 20 62 6f 74 68 20 74 68 65 20 70 72 65  how both the pre
5bc0: 2d 74 65 73 74 20 61 6e 64 20 70 6f 73 74 2d 74  -test and post-t
5bd0: 65 73 74 20 73 63 72 69 70 74 73 20 6e 6f 77 2c  est scripts now,
5be0: 20 70 72 69 6f 72 20 74 6f 20 61 63 74 75 61 6c   prior to actual
5bf0: 6c 79 0d 0a 20 20 23 20 20 20 20 20 20 20 65 76  ly..  #       ev
5c00: 61 6c 75 61 74 69 6e 67 20 65 69 74 68 65 72 20  aluating either 
5c10: 6f 66 20 74 68 65 6d 20 28 65 76 65 6e 20 69 66  of them (even if
5c20: 20 74 68 65 69 72 20 75 73 65 20 68 61 73 20 62   their use has b
5c30: 65 65 6e 20 64 69 73 61 62 6c 65 64 29 2e 0d 0a  een disabled)...
5c40: 20 20 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65    #..  tputs $te
5c50: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
5c60: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70 72 65  ndArgs "---- pre
5c70: 2d 74 65 73 74 20 73 63 72 69 70 74 3a 20 22 20  -test script: " 
5c80: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
5c90: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
5ca0: 74 5f 73 63 72 69 70 74 28 70 72 65 29 5d 20 26  t_script(pre)] &
5cb0: 26 20 5c 0d 0a 20 20 20 20 20 20 5b 73 74 72 69  & \..      [stri
5cc0: 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f  ng length $test_
5cd0: 73 63 72 69 70 74 28 70 72 65 29 5d 20 3e 20 30  script(pre)] > 0
5ce0: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 5b 61 70 70   ? \..      [app
5cf0: 65 6e 64 41 72 67 73 20 5c 22 20 24 74 65 73 74  endArgs \" $test
5d00: 5f 73 63 72 69 70 74 28 70 72 65 29 20 5c 22 5d  _script(pre) \"]
5d10: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
5d20: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
5d30: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
5d40: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70 6f 73  ndArgs "---- pos
5d50: 74 2d 74 65 73 74 20 73 63 72 69 70 74 3a 20 22  t-test script: "
5d60: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
5d70: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
5d80: 73 74 5f 73 63 72 69 70 74 28 70 6f 73 74 29 5d  st_script(post)]
5d90: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b 73 74   && \..      [st
5da0: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73  ring length $tes
5db0: 74 5f 73 63 72 69 70 74 28 70 6f 73 74 29 5d 20  t_script(post)] 
5dc0: 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 5b  > 0 ? \..      [
5dd0: 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 24 74  appendArgs \" $t
5de0: 65 73 74 5f 73 63 72 69 70 74 28 70 6f 73 74 29  est_script(post)
5df0: 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d   \"] : "<none>"}
5e00: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ] \n]....  #..  
5e10: 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 62 6f 74  # NOTE: Show bot
5e20: 68 20 74 68 65 20 70 72 65 2d 74 65 73 74 20 61  h the pre-test a
5e30: 6e 64 20 70 6f 73 74 2d 74 65 73 74 20 77 61 69  nd post-test wai
5e40: 74 73 20 6e 6f 77 2c 20 70 72 69 6f 72 20 74 6f  ts now, prior to
5e50: 20 61 63 74 75 61 6c 6c 79 0d 0a 20 20 23 20 20   actually..  #  
5e60: 20 20 20 20 20 75 73 69 6e 67 20 65 69 74 68 65       using eithe
5e70: 72 20 6f 66 20 74 68 65 6d 20 28 65 76 65 6e 20  r of them (even 
5e80: 69 66 20 74 68 65 69 72 20 75 73 65 20 68 61 73  if their use has
5e90: 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 29 2e   been disabled).
5ea0: 0d 0a 20 20 23 0d 0a 20 20 74 70 75 74 73 20 24  ..  #..  tputs $
5eb0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
5ec0: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70  pendArgs "---- p
5ed0: 72 65 2d 74 65 73 74 20 77 61 69 74 3a 20 22 20  re-test wait: " 
5ee0: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
5ef0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
5f00: 74 5f 77 61 69 74 28 70 72 65 29 5d 20 26 26 20  t_wait(pre)] && 
5f10: 5c 0d 0a 20 20 20 20 20 20 5b 73 74 72 69 6e 67  \..      [string
5f20: 20 69 73 20 69 6e 74 65 67 65 72 20 2d 73 74 72   is integer -str
5f30: 69 63 74 20 24 74 65 73 74 5f 77 61 69 74 28 70  ict $test_wait(p
5f40: 72 65 29 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20  re)] ? \..      
5f50: 5b 61 70 70 65 6e 64 41 72 67 73 20 24 74 65 73  [appendArgs $tes
5f60: 74 5f 77 61 69 74 28 70 72 65 29 20 22 20 6d 69  t_wait(pre) " mi
5f70: 6c 6c 69 73 65 63 6f 6e 64 73 22 5d 20 3a 20 5c  lliseconds"] : \
5f80: 0d 0a 20 20 20 20 20 20 22 3c 6e 6f 6e 65 3e 22  ..      "<none>"
5f90: 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74  }] \n]....  tput
5fa0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
5fb0: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
5fc0: 2d 20 70 6f 73 74 2d 74 65 73 74 20 77 61 69 74  - post-test wait
5fd0: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
5fe0: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
5ff0: 20 74 65 73 74 5f 77 61 69 74 28 70 6f 73 74 29   test_wait(post)
6000: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b 73  ] && \..      [s
6010: 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
6020: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 77   -strict $test_w
6030: 61 69 74 28 70 6f 73 74 29 5d 20 3f 20 5c 0d 0a  ait(post)] ? \..
6040: 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72 67        [appendArg
6050: 73 20 24 74 65 73 74 5f 77 61 69 74 28 70 6f 73  s $test_wait(pos
6060: 74 29 20 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  t) " millisecond
6070: 73 22 5d 20 3a 20 5c 0d 0a 20 20 20 20 20 20 22  s"] : \..      "
6080: 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d  <none>"}] \n]...
6090: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
60a0: 41 72 65 20 77 65 20 62 65 69 6e 67 20 70 72 65  Are we being pre
60b0: 76 65 6e 74 65 64 20 66 72 6f 6d 20 65 76 61 6c  vented from eval
60c0: 75 61 74 69 6e 67 20 74 68 65 20 22 70 72 65 2d  uating the "pre-
60d0: 74 65 73 74 22 20 73 63 72 69 70 74 3f 0d 0a 20  test" script?.. 
60e0: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
60f0: 20 65 78 69 73 74 73 20 6e 6f 28 70 72 65 54 65   exists no(preTe
6100: 73 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  st)]} then {..  
6110: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
6120: 20 45 76 61 6c 75 61 74 65 20 74 68 65 20 73 70   Evaluate the sp
6130: 65 63 69 66 69 65 64 20 70 72 65 2d 74 65 73 74  ecified pre-test
6140: 20 73 63 72 69 70 74 20 6e 6f 77 2c 20 69 66 20   script now, if 
6150: 61 6e 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  any...    #..   
6160: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
6170: 73 20 74 65 73 74 5f 73 63 72 69 70 74 28 70 72  s test_script(pr
6180: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
6190: 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68    [string length
61a0: 20 24 74 65 73 74 5f 73 63 72 69 70 74 28 70 72   $test_script(pr
61b0: 65 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d  e)] > 0} then {.
61c0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
61d0: 23 20 54 4f 44 4f 3a 20 50 65 72 68 61 70 73 20  # TODO: Perhaps 
61e0: 75 73 65 20 5b 75 70 6c 65 76 65 6c 5d 20 68 65  use [uplevel] he
61f0: 72 65 20 69 6e 73 74 65 61 64 20 6f 66 20 5b 65  re instead of [e
6200: 76 61 6c 5d 2e 20 20 46 6f 72 20 6e 6f 77 2c 20  val].  For now, 
6210: 69 74 20 64 6f 65 73 0d 0a 20 20 20 20 20 20 23  it does..      #
6220: 20 20 20 20 20 20 20 6e 6f 74 20 6d 61 74 74 65         not matte
6230: 72 20 73 69 6e 63 65 20 77 65 20 65 6e 66 6f 72  r since we enfor
6240: 63 65 20 74 68 69 73 20 66 69 6c 65 20 62 65 69  ce this file bei
6250: 6e 67 20 65 76 61 6c 75 61 74 65 64 20 61 74 20  ng evaluated at 
6260: 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20  the..      #    
6270: 20 20 20 74 6f 70 2d 6c 65 76 65 6c 2e 0d 0a 20     top-level... 
6280: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
6290: 20 7b 5b 63 61 74 63 68 20 24 74 65 73 74 5f 73   {[catch $test_s
62a0: 63 72 69 70 74 28 70 72 65 29 20 74 65 73 74 5f  cript(pre) test_
62b0: 73 63 72 69 70 74 28 70 72 65 2c 72 65 73 75 6c  script(pre,resul
62c0: 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
62d0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
62e0: 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 31 30 30  # NOTE: Make 100
62f0: 25 20 73 75 72 65 2c 20 65 76 65 6e 20 69 6e 20  % sure, even in 
6300: 22 71 75 69 65 74 22 20 6d 6f 64 65 2c 20 74 68  "quiet" mode, th
6310: 61 74 20 74 68 69 73 20 73 63 72 69 70 74 20 65  at this script e
6320: 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 23 20  rror..        # 
6330: 20 20 20 20 20 20 67 65 74 73 20 69 6e 74 6f 20        gets into 
6340: 74 68 65 20 74 65 73 74 20 6c 6f 67 20 66 69 6c  the test log fil
6350: 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  e...        #.. 
6360: 20 20 20 20 20 20 20 74 70 75 74 73 20 24 74 65         tputs $te
6370: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
6380: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70 72 65  ndArgs "---- pre
6390: 2d 74 65 73 74 20 73 63 72 69 70 74 20 65 72 72  -test script err
63a0: 6f 72 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  or: " \..       
63b0: 20 20 20 20 20 24 74 65 73 74 5f 73 63 72 69 70       $test_scrip
63c0: 74 28 70 72 65 2c 72 65 73 75 6c 74 29 20 5c 6e  t(pre,result) \n
63d0: 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  ]....        #..
63e0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
63f0: 54 68 65 20 70 72 65 2d 74 65 73 74 20 73 63 72  The pre-test scr
6400: 69 70 74 20 66 61 69 6c 65 64 20 69 6e 20 73 6f  ipt failed in so
6410: 6d 65 20 77 61 79 2e 20 20 54 68 69 73 20 69 73  me way.  This is
6420: 20 63 6f 6e 73 69 64 65 72 65 64 0d 0a 20 20 20   considered..   
6430: 20 20 20 20 20 23 20 20 20 20 20 20 20 74 6f 20       #       to 
6440: 62 65 20 61 6e 20 6f 76 65 72 61 6c 6c 20 66 61  be an overall fa
6450: 69 6c 75 72 65 20 6f 66 20 74 68 65 20 74 65 73  ilure of the tes
6460: 74 20 73 75 69 74 65 3b 20 74 68 65 72 65 66 6f  t suite; therefo
6470: 72 65 2c 20 72 61 69 73 65 0d 0a 20 20 20 20 20  re, raise..     
6480: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 65     #       the e
6490: 72 72 6f 72 20 6e 6f 77 20 74 68 61 74 20 77 65  rror now that we
64a0: 20 61 72 65 20 73 75 72 65 20 69 74 20 68 61 73   are sure it has
64b0: 20 62 65 65 6e 20 72 65 63 6f 72 64 65 64 20 69   been recorded i
64c0: 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 23  n the..        #
64d0: 20 20 20 20 20 20 20 74 65 73 74 20 6c 6f 67 20         test log 
64e0: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 23  file...        #
64f0: 0d 0a 20 20 20 20 20 20 20 20 75 6e 73 65 74 20  ..        unset 
6500: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 74 65 73 74  -nocomplain test
6510: 5f 73 75 69 74 65 5f 72 75 6e 6e 69 6e 67 0d 0a  _suite_running..
6520: 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 24 74          error $t
6530: 65 73 74 5f 73 63 72 69 70 74 28 70 72 65 2c 72  est_script(pre,r
6540: 65 73 75 6c 74 29 0d 0a 20 20 20 20 20 20 7d 0d  esult)..      }.
6550: 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20  .    }..  }.... 
6560: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68   #..  # NOTE: Ch
6570: 65 63 6b 20 66 6f 72 20 61 6e 64 20 70 72 6f 63  eck for and proc
6580: 65 73 73 20 61 6e 79 20 63 75 73 74 6f 6d 20 74  ess any custom t
6590: 65 73 74 20 70 72 6f 6c 6f 67 75 65 20 73 63 72  est prologue scr
65a0: 69 70 74 20 74 68 61 74 20 6d 61 79 20 62 65 20  ipt that may be 
65b0: 73 65 74 0d 0a 20 20 23 20 20 20 20 20 20 20 69  set..  #       i
65c0: 6e 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e  n the environmen
65d0: 74 2e 20 20 54 68 69 73 20 6d 75 73 74 20 62 65  t.  This must be
65e0: 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20   done after the 
65f0: 45 61 67 6c 65 20 74 65 73 74 20 70 61 63 6b 61  Eagle test packa
6600: 67 65 0d 0a 20 20 23 20 20 20 20 20 20 20 68 61  ge..  #       ha
6610: 73 20 62 65 65 6e 20 6d 61 64 65 20 61 76 61 69  s been made avai
6620: 6c 61 62 6c 65 20 61 6e 64 20 61 66 74 65 72 20  lable and after 
6630: 74 68 65 20 6c 6f 67 20 66 69 6c 65 20 68 61 73  the log file has
6640: 20 62 65 65 6e 20 73 65 74 75 70 2e 0d 0a 20 20   been setup...  
6650: 23 0d 0a 20 20 73 6f 75 72 63 65 49 66 56 61 6c  #..  sourceIfVal
6660: 69 64 20 70 72 6f 6c 6f 67 75 65 20 5b 67 65 74  id prologue [get
6670: 45 6e 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61  EnvironmentVaria
6680: 62 6c 65 20 74 65 73 74 50 72 6f 6c 6f 67 75 65  ble testPrologue
6690: 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  ]....  #..  # NO
66a0: 54 45 3a 20 53 68 6f 77 20 74 68 65 20 6e 61 6d  TE: Show the nam
66b0: 65 20 6f 66 20 74 68 65 20 65 78 65 63 75 74 61  e of the executa
66c0: 62 6c 65 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d  ble and the comm
66d0: 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e  and line argumen
66e0: 74 73 2c 20 69 66 0d 0a 20 20 23 20 20 20 20 20  ts, if..  #     
66f0: 20 20 61 6e 79 2e 20 20 54 68 69 73 20 6d 75 73    any.  This mus
6700: 74 20 62 65 20 64 6f 6e 65 20 61 66 74 65 72 20  t be done after 
6710: 74 68 65 20 6c 6f 67 20 66 69 6c 65 20 68 61 73  the log file has
6720: 20 62 65 65 6e 20 73 65 74 75 70 3b 20 6f 74 68   been setup; oth
6730: 65 72 77 69 73 65 2c 0d 0a 20 20 23 20 20 20 20  erwise,..  #    
6740: 20 20 20 74 68 69 73 20 69 6e 66 6f 72 6d 61 74     this informat
6750: 69 6f 6e 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20  ion will not be 
6760: 76 69 73 69 62 6c 65 20 69 6e 20 74 68 65 20 6c  visible in the l
6770: 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 23 0d 0a 20  og file...  #.. 
6780: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
6790: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
67a0: 20 22 2d 2d 2d 2d 20 74 65 73 74 52 75 6e 49 64   "---- testRunId
67b0: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 67 65  : " \..      [ge
67c0: 74 54 65 73 74 52 75 6e 49 64 5d 20 5c 6e 5d 0d  tTestRunId] \n].
67d0: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
67e0: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
67f0: 41 72 67 73 20 22 2d 2d 2d 2d 20 70 72 6f 63 65  Args "---- proce
6800: 73 73 49 64 3a 20 22 20 5c 0d 0a 20 20 20 20 20  ssId: " \..     
6810: 20 5b 70 69 64 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20   [pid] \n]....  
6820: 73 65 74 20 70 70 69 64 28 30 29 20 5b 63 61 74  set ppid(0) [cat
6830: 63 68 20 7b 69 6e 66 6f 20 70 70 69 64 7d 20 70  ch {info ppid} p
6840: 70 69 64 28 31 29 5d 0d 0a 0d 0a 20 20 74 70 75  pid(1)]....  tpu
6850: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
6860: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
6870: 2d 2d 20 70 61 72 65 6e 74 50 72 6f 63 65 73 73  -- parentProcess
6880: 49 64 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  Id: " \..      [
6890: 65 78 70 72 20 7b 24 70 70 69 64 28 30 29 20 3d  expr {$ppid(0) =
68a0: 3d 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  = 0 ? \..       
68b0: 20 20 20 24 70 70 69 64 28 31 29 20 3a 20 22 3c     $ppid(1) : "<
68c0: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
68d0: 20 20 75 6e 73 65 74 20 70 70 69 64 0d 0a 0d 0a    unset ppid....
68e0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
68f0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
6900: 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 73 75 69  s "---- test sui
6910: 74 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  te: " \..      [
6920: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
6930: 74 73 20 74 65 73 74 5f 73 75 69 74 65 5d 20 3f  ts test_suite] ?
6940: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74   \..          $t
6950: 65 73 74 5f 73 75 69 74 65 20 3a 20 22 3c 6e 6f  est_suite : "<no
6960: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
6970: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
6980: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
6990: 22 2d 2d 2d 2d 20 74 65 73 74 20 63 68 61 6e 6e  "---- test chann
69a0: 65 6c 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 24  el: " \..      $
69b0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 6e 5d  test_channel \n]
69c0: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
69d0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
69e0: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74  dArgs "---- test
69f0: 20 6d 61 63 68 69 6e 65 3a 20 22 20 5c 0d 0a 20   machine: " \.. 
6a00: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
6a10: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6d 61  o exists test_ma
6a20: 63 68 69 6e 65 5d 20 3f 20 5c 0d 0a 20 20 20 20  chine] ? \..    
6a30: 20 20 20 20 20 20 24 74 65 73 74 5f 6d 61 63 68        $test_mach
6a40: 69 6e 65 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d  ine : "<none>"}]
6a50: 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20   \n]....  tputs 
6a60: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
6a70: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
6a80: 74 65 73 74 20 70 6c 61 74 66 6f 72 6d 3a 20 22  test platform: "
6a90: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
6aa0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
6ab0: 73 74 5f 70 6c 61 74 66 6f 72 6d 5d 20 3f 20 5c  st_platform] ? \
6ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 65 73  ..          $tes
6ad0: 74 5f 70 6c 61 74 66 6f 72 6d 20 3a 20 22 3c 6e  t_platform : "<n
6ae0: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
6af0: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
6b00: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
6b10: 20 22 2d 2d 2d 2d 20 74 65 73 74 20 63 6f 6e 66   "---- test conf
6b20: 69 67 75 72 61 74 69 6f 6e 3a 20 22 20 5c 0d 0a  iguration: " \..
6b30: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
6b40: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 63  fo exists test_c
6b50: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 20 3f 20  onfiguration] ? 
6b60: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 65  \..          $te
6b70: 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  st_configuration
6b80: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
6b90: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
6ba0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
6bb0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73  ndArgs "---- tes
6bc0: 74 20 73 75 66 66 69 78 3a 20 22 20 5c 0d 0a 20  t suffix: " \.. 
6bd0: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
6be0: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 75  o exists test_su
6bf0: 66 66 69 78 5d 20 3f 20 5c 0d 0a 20 20 20 20 20  ffix] ? \..     
6c00: 20 20 20 20 20 24 74 65 73 74 5f 73 75 66 66 69       $test_suffi
6c10: 78 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  x : "<none>"}] \
6c20: 6e 5d 0d 0a 0d 0a 20 20 69 66 20 7b 5b 69 73 45  n]....  if {[isE
6c30: 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  agle]} then {.. 
6c40: 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
6c50: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
6c60: 67 73 20 22 2d 2d 2d 2d 20 6f 72 69 67 69 6e 61  gs "---- origina
6c70: 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 3a 20  l command line: 
6c80: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 69 6e  " \..        [in
6c90: 66 6f 20 63 6d 64 6c 69 6e 65 5d 20 5c 6e 5d 0d  fo cmdline] \n].
6ca0: 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
6cb0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
6cc0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 68 72  ndArgs "---- thr
6cd0: 65 61 64 49 64 3a 20 22 20 5c 0d 0a 20 20 20 20  eadId: " \..    
6ce0: 20 20 20 20 5b 69 6e 66 6f 20 74 69 64 5d 20 5c      [info tid] \
6cf0: 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  n]....    tputs 
6d00: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
6d10: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
6d20: 70 72 6f 63 65 73 73 6f 72 73 3a 20 22 20 5c 0d  processors: " \.
6d30: 0a 20 20 20 20 20 20 20 20 5b 69 6e 66 6f 20 70  .        [info p
6d40: 72 6f 63 65 73 73 6f 72 73 5d 20 5c 6e 5d 0d 0a  rocessors] \n]..
6d50: 0d 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67  ..    if {[lleng
6d60: 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64  th [info command
6d70: 73 20 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 7d 20  s object]] > 0} 
6d80: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65  then {..      se
6d90: 74 20 65 6e 63 6f 64 69 6e 67 28 30 29 20 5b 63  t encoding(0) [c
6da0: 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
6db0: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 43 6f  object invoke Co
6dc0: 6e 73 6f 6c 65 2e 49 6e 70 75 74 45 6e 63 6f 64  nsole.InputEncod
6dd0: 69 6e 67 20 57 65 62 4e 61 6d 65 0d 0a 20 20 20  ing WebName..   
6de0: 20 20 20 7d 20 65 6e 63 6f 64 69 6e 67 28 31 29     } encoding(1)
6df0: 5d 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d  ]..    } else {.
6e00: 0a 20 20 20 20 20 20 73 65 74 20 65 6e 63 6f 64  .      set encod
6e10: 69 6e 67 28 30 29 20 30 3b 20 73 65 74 20 65 6e  ing(0) 0; set en
6e20: 63 6f 64 69 6e 67 28 31 29 20 75 6e 61 76 61 69  coding(1) unavai
6e30: 6c 61 62 6c 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lable..    }....
6e40: 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
6e50: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
6e60: 72 67 73 20 22 2d 2d 2d 2d 20 69 6e 70 75 74 20  rgs "---- input 
6e70: 65 6e 63 6f 64 69 6e 67 3a 20 22 20 5c 0d 0a 20  encoding: " \.. 
6e80: 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 65         [expr {$e
6e90: 6e 63 6f 64 69 6e 67 28 30 29 20 3d 3d 20 30 20  ncoding(0) == 0 
6ea0: 3f 20 24 65 6e 63 6f 64 69 6e 67 28 31 29 20 3a  ? $encoding(1) :
6eb0: 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d   "<none>"}] \n].
6ec0: 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e  ...    if {[llen
6ed0: 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e  gth [info comman
6ee0: 64 73 20 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 7d  ds object]] > 0}
6ef0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73   then {..      s
6f00: 65 74 20 65 6e 63 6f 64 69 6e 67 28 30 29 20 5b  et encoding(0) [
6f10: 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20  catch {..       
6f20: 20 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 43   object invoke C
6f30: 6f 6e 73 6f 6c 65 2e 4f 75 74 70 75 74 45 6e 63  onsole.OutputEnc
6f40: 6f 64 69 6e 67 20 57 65 62 4e 61 6d 65 0d 0a 20  oding WebName.. 
6f50: 20 20 20 20 20 7d 20 65 6e 63 6f 64 69 6e 67 28       } encoding(
6f60: 31 29 5d 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20  1)]..    } else 
6f70: 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 65 6e 63  {..      set enc
6f80: 6f 64 69 6e 67 28 30 29 20 30 3b 20 73 65 74 20  oding(0) 0; set 
6f90: 65 6e 63 6f 64 69 6e 67 28 31 29 20 75 6e 61 76  encoding(1) unav
6fa0: 61 69 6c 61 62 6c 65 0d 0a 20 20 20 20 7d 0d 0a  ailable..    }..
6fb0: 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73  ..    tputs $tes
6fc0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
6fd0: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6f 75 74 70  dArgs "---- outp
6fe0: 75 74 20 65 6e 63 6f 64 69 6e 67 3a 20 22 20 5c  ut encoding: " \
6ff0: 0d 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72 20  ..        [expr 
7000: 7b 24 65 6e 63 6f 64 69 6e 67 28 30 29 20 3d 3d  {$encoding(0) ==
7010: 20 30 20 3f 20 24 65 6e 63 6f 64 69 6e 67 28 31   0 ? $encoding(1
7020: 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  ) : "<none>"}] \
7030: 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20  n]....    unset 
7040: 65 6e 63 6f 64 69 6e 67 0d 0a 20 20 20 20 73 65  encoding..    se
7050: 74 20 68 6f 73 74 28 30 29 20 5b 63 61 74 63 68  t host(0) [catch
7060: 20 7b 68 6f 73 74 20 71 75 65 72 79 7d 20 68 6f   {host query} ho
7070: 73 74 28 31 29 5d 0d 0a 0d 0a 20 20 20 20 74 70  st(1)]....    tp
7080: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
7090: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
70a0: 2d 2d 2d 20 68 6f 73 74 20 71 75 65 72 79 3a 20  --- host query: 
70b0: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66 6f  " \..        [fo
70c0: 72 6d 61 74 4c 69 73 74 41 73 44 69 63 74 20 5b  rmatListAsDict [
70d0: 65 78 70 72 20 7b 24 68 6f 73 74 28 30 29 20 3d  expr {$host(0) =
70e0: 3d 20 30 20 3f 20 24 68 6f 73 74 28 31 29 20 3a  = 0 ? $host(1) :
70f0: 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 20   ""}] \..       
7100: 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a   <none>] \n]....
7110: 20 20 20 20 75 6e 73 65 74 20 68 6f 73 74 0d 0a      unset host..
7120: 20 20 20 20 73 65 74 20 6d 65 6d 6f 72 79 28 30      set memory(0
7130: 29 20 5b 63 61 74 63 68 20 7b 64 65 62 75 67 20  ) [catch {debug 
7140: 6d 65 6d 6f 72 79 7d 20 6d 65 6d 6f 72 79 28 31  memory} memory(1
7150: 29 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  )]....    tputs 
7160: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
7170: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
7180: 73 74 61 72 74 69 6e 67 20 6d 65 6d 6f 72 79 3a  starting memory:
7190: 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66   " \..        [f
71a0: 6f 72 6d 61 74 4c 69 73 74 41 73 44 69 63 74 20  ormatListAsDict 
71b0: 5b 65 78 70 72 20 7b 24 6d 65 6d 6f 72 79 28 30  [expr {$memory(0
71c0: 29 20 3d 3d 20 30 20 3f 20 24 6d 65 6d 6f 72 79  ) == 0 ? $memory
71d0: 28 31 29 20 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20  (1) : ""}] \..  
71e0: 20 20 20 20 20 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e        <none>] \n
71f0: 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 6d  ]....    unset m
7200: 65 6d 6f 72 79 0d 0a 20 20 20 20 73 65 74 20 73  emory..    set s
7210: 74 61 63 6b 28 30 29 20 5b 63 61 74 63 68 20 7b  tack(0) [catch {
7220: 64 65 62 75 67 20 73 74 61 63 6b 20 74 72 75 65  debug stack true
7230: 7d 20 73 74 61 63 6b 28 31 29 5d 0d 0a 0d 0a 20  } stack(1)].... 
7240: 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
7250: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
7260: 67 73 20 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e  gs "---- startin
7270: 67 20 73 74 61 63 6b 3a 20 22 20 5c 0d 0a 20 20  g stack: " \..  
7280: 20 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73        [formatLis
7290: 74 41 73 44 69 63 74 20 5b 65 78 70 72 20 7b 24  tAsDict [expr {$
72a0: 73 74 61 63 6b 28 30 29 20 3d 3d 20 30 20 3f 20  stack(0) == 0 ? 
72b0: 24 73 74 61 63 6b 28 31 29 20 3a 20 22 22 7d 5d  $stack(1) : ""}]
72c0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 3c 6e 6f 6e   \..        <non
72d0: 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75  e>] \n]....    u
72e0: 6e 73 65 74 20 73 74 61 63 6b 0d 0a 20 20 20 20  nset stack..    
72f0: 73 65 74 20 64 72 69 76 65 28 30 29 20 5b 63 61  set drive(0) [ca
7300: 74 63 68 20 7b 66 69 6c 65 20 64 72 69 76 65 7d  tch {file drive}
7310: 20 64 72 69 76 65 28 31 29 5d 0d 0a 0d 0a 20 20   drive(1)]....  
7320: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
7330: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
7340: 73 20 22 2d 2d 2d 2d 20 73 79 73 74 65 6d 20 64  s "---- system d
7350: 72 69 76 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20  rive: " \..     
7360: 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 41 73     [formatListAs
7370: 44 69 63 74 20 5b 65 78 70 72 20 7b 24 64 72 69  Dict [expr {$dri
7380: 76 65 28 30 29 20 3d 3d 20 30 20 3f 20 24 64 72  ve(0) == 0 ? $dr
7390: 69 76 65 28 31 29 20 3a 20 22 22 7d 5d 20 5c 0d  ive(1) : ""}] \.
73a0: 0a 20 20 20 20 20 20 20 20 3c 6e 6f 6e 65 3e 5d  .        <none>]
73b0: 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65   \n]....    unse
73c0: 74 20 64 72 69 76 65 0d 0a 20 20 7d 0d 0a 0d 0a  t drive..  }....
73d0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
73e0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
73f0: 73 20 22 2d 2d 2d 2d 20 65 78 65 63 75 74 61 62  s "---- executab
7400: 6c 65 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20  le: \"" \..     
7410: 20 24 62 69 6e 5f 66 69 6c 65 20 5c 22 5c 6e 5d   $bin_file \"\n]
7420: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
7430: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
7440: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 63 6f 6d 6d  dArgs "---- comm
7450: 61 6e 64 20 6c 69 6e 65 3a 20 22 20 5c 0d 0a 20  and line: " \.. 
7460: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
7470: 6f 20 65 78 69 73 74 73 20 61 72 67 76 5d 20 26  o exists argv] &
7480: 26 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68  & [string length
7490: 20 24 61 72 67 76 5d 20 3e 20 30 20 3f 20 5c 0d   $argv] > 0 ? \.
74a0: 0a 20 20 20 20 20 20 20 20 20 20 24 61 72 67 76  .          $argv
74b0: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
74c0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
74d0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
74e0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 75 6e 72  ndArgs "---- unr
74f0: 65 63 6f 67 6e 69 7a 65 64 20 61 72 67 75 6d 65  ecognized argume
7500: 6e 74 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  nts: " \..      
7510: 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
7520: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
7530: 62 61 64 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  bad)] && \..    
7540: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65        [string le
7550: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
7560: 28 2d 62 61 64 29 5d 20 3e 20 30 20 3f 20 5c 0d  (-bad)] > 0 ? \.
7570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24  .              $
7580: 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 61 64 29  test_flags(-bad)
7590: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
75a0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
75b0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
75c0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6c 6f 67  ndArgs "---- log
75d0: 67 69 6e 67 20 74 6f 3a 20 22 20 5c 0d 0a 20 20  ging to: " \..  
75e0: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
75f0: 20 65 78 69 73 74 73 20 74 65 73 74 5f 6c 6f 67   exists test_log
7600: 5d 20 26 26 20 5b 73 74 72 69 6e 67 20 6c 65 6e  ] && [string len
7610: 67 74 68 20 24 74 65 73 74 5f 6c 6f 67 5d 20 3e  gth $test_log] >
7620: 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20   0 ? \..        
7630: 20 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22    [appendArgs \"
7640: 20 24 74 65 73 74 5f 6c 6f 67 20 5c 22 5d 20 3a   $test_log \"] :
7650: 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d   "<none>"}] \n].
7660: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
7670: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
7680: 41 72 67 73 20 22 2d 2d 2d 2d 20 70 61 73 73 20  Args "---- pass 
7690: 74 68 72 65 73 68 6f 6c 64 3a 20 22 20 5c 0d 0a  threshold: " \..
76a0: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
76b0: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 74  fo exists test_t
76c0: 68 72 65 73 68 6f 6c 64 5d 20 26 26 20 5c 0d 0a  hreshold] && \..
76d0: 20 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e            [strin
76e0: 67 20 69 73 20 69 6e 74 65 67 65 72 20 2d 73 74  g is integer -st
76f0: 72 69 63 74 20 24 74 65 73 74 5f 74 68 72 65 73  rict $test_thres
7700: 68 6f 6c 64 5d 20 3f 20 5c 0d 0a 20 20 20 20 20  hold] ? \..     
7710: 20 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64           [append
7720: 41 72 67 73 20 24 74 65 73 74 5f 74 68 72 65 73  Args $test_thres
7730: 68 6f 6c 64 20 25 5d 20 3a 20 22 3c 6e 6f 6e 65  hold %] : "<none
7740: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  >"}] \n]....  tp
7750: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
7760: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
7770: 2d 2d 2d 20 72 61 6e 64 6f 6d 20 6f 72 64 65 72  --- random order
7780: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
7790: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
77a0: 20 74 65 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64   test_random_ord
77b0: 65 72 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  er] && \..      
77c0: 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 62      [string is b
77d0: 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20 24  oolean -strict $
77e0: 74 65 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64 65  test_random_orde
77f0: 72 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20  r] ? \..        
7800: 20 20 20 20 20 20 24 74 65 73 74 5f 72 61 6e 64        $test_rand
7810: 6f 6d 5f 6f 72 64 65 72 20 3a 20 22 3c 6e 6f 6e  om_order : "<non
7820: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
7830: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
7840: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7850: 2d 2d 2d 2d 20 75 6e 63 6f 75 6e 74 65 64 20 6c  ---- uncounted l
7860: 65 61 6b 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20  eaks: " \..     
7870: 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
7880: 69 73 74 73 20 74 65 73 74 5f 75 6e 63 6f 75 6e  ists test_uncoun
7890: 74 65 64 5f 6c 65 61 6b 73 5d 20 26 26 20 5c 0d  ted_leaks] && \.
78a0: 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74 72 69  .          [stri
78b0: 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f  ng length $test_
78c0: 75 6e 63 6f 75 6e 74 65 64 5f 6c 65 61 6b 73 5d  uncounted_leaks]
78d0: 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20   > 0 ? \..      
78e0: 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 75 6e          $test_un
78f0: 63 6f 75 6e 74 65 64 5f 6c 65 61 6b 73 20 3a 20  counted_leaks : 
7900: 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a  "<none>"}] \n]..
7910: 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
7920: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
7930: 72 67 73 20 22 2d 2d 2d 2d 20 62 72 65 61 6b 20  rgs "---- break 
7940: 6f 6e 20 6c 65 61 6b 3a 20 22 20 5c 0d 0a 20 20  on leak: " \..  
7950: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
7960: 20 65 78 69 73 74 73 20 74 65 73 74 5f 62 72 65   exists test_bre
7970: 61 6b 5f 6f 6e 5f 6c 65 61 6b 5d 20 26 26 20 5c  ak_on_leak] && \
7980: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74 72  ..          [str
7990: 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d  ing is boolean -
79a0: 73 74 72 69 63 74 20 24 74 65 73 74 5f 62 72 65  strict $test_bre
79b0: 61 6b 5f 6f 6e 5f 6c 65 61 6b 5d 20 3f 20 5c 0d  ak_on_leak] ? \.
79c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24  .              $
79d0: 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c 65  test_break_on_le
79e0: 61 6b 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  ak : "<none>"}] 
79f0: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
7a00: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
7a10: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73  pendArgs "---- s
7a20: 74 6f 70 20 6f 6e 20 66 61 69 6c 75 72 65 3a 20  top on failure: 
7a30: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72  " \..      [expr
7a40: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
7a50: 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 66 61 69 6c  est_stop_on_fail
7a60: 75 72 65 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ure] && \..     
7a70: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20       [string is 
7a80: 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20  boolean -strict 
7a90: 24 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 66 61  $test_stop_on_fa
7aa0: 69 6c 75 72 65 5d 20 3f 20 5c 0d 0a 20 20 20 20  ilure] ? \..    
7ab0: 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f            $test_
7ac0: 73 74 6f 70 5f 6f 6e 5f 66 61 69 6c 75 72 65 20  stop_on_failure 
7ad0: 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d  : "<none>"}] \n]
7ae0: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
7af0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
7b00: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73 74 6f 70  dArgs "---- stop
7b10: 20 6f 6e 20 6c 65 61 6b 3a 20 22 20 5c 0d 0a 20   on leak: " \.. 
7b20: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
7b30: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 74  o exists test_st
7b40: 6f 70 5f 6f 6e 5f 6c 65 61 6b 5d 20 26 26 20 5c  op_on_leak] && \
7b50: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74 72  ..          [str
7b60: 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d  ing is boolean -
7b70: 73 74 72 69 63 74 20 24 74 65 73 74 5f 73 74 6f  strict $test_sto
7b80: 70 5f 6f 6e 5f 6c 65 61 6b 5d 20 3f 20 5c 0d 0a  p_on_leak] ? \..
7b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74                $t
7ba0: 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 6c 65 61 6b  est_stop_on_leak
7bb0: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
7bc0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
7bd0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
7be0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 65 78 69  ndArgs "---- exi
7bf0: 74 20 6f 6e 20 63 6f 6d 70 6c 65 74 65 3a 20 22  t on complete: "
7c00: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
7c10: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
7c20: 73 74 5f 65 78 69 74 5f 6f 6e 5f 63 6f 6d 70 6c  st_exit_on_compl
7c30: 65 74 65 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ete] && \..     
7c40: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20       [string is 
7c50: 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20  boolean -strict 
7c60: 24 74 65 73 74 5f 65 78 69 74 5f 6f 6e 5f 63 6f  $test_exit_on_co
7c70: 6d 70 6c 65 74 65 5d 20 3f 20 5c 0d 0a 20 20 20  mplete] ? \..   
7c80: 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
7c90: 5f 65 78 69 74 5f 6f 6e 5f 63 6f 6d 70 6c 65 74  _exit_on_complet
7ca0: 65 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  e : "<none>"}] \
7cb0: 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  n]....  #..  # N
7cc0: 4f 54 45 3a 20 53 68 6f 77 20 74 68 65 20 69 6e  OTE: Show the in
7cd0: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
7ce0: 77 68 69 63 68 20 74 65 73 74 73 20 61 6e 64 20  which tests and 
7cf0: 66 69 6c 65 73 20 61 72 65 20 62 65 69 6e 67 20  files are being 
7d00: 72 75 6e 0d 0a 20 20 23 20 20 20 20 20 20 20 61  run..  #       a
7d10: 6e 64 2f 6f 72 20 73 6b 69 70 70 65 64 20 28 43  nd/or skipped (C
7d20: 4f 4d 50 41 54 3a 20 54 63 6c 29 2e 0d 0a 20 20  OMPAT: Tcl)...  
7d30: 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  #..  tputs $test
7d40: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
7d50: 41 72 67 73 20 22 2d 2d 2d 2d 20 72 75 6e 6e 69  Args "---- runni
7d60: 6e 67 20 74 65 73 74 20 66 69 6c 65 73 20 74 68  ng test files th
7d70: 61 74 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20  at match: " \.. 
7d80: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
7d90: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
7da0: 61 67 73 28 2d 66 69 6c 65 29 5d 20 26 26 20 5c  ags(-file)] && \
7db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65  ..          [lle
7dc0: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
7dd0: 28 2d 66 69 6c 65 29 5d 20 3e 20 30 20 3f 20 5c  (-file)] > 0 ? \
7de0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7df0: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 66 69 6c  $test_flags(-fil
7e00: 65 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  e) : "<none>"}] 
7e10: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
7e20: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
7e30: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73  pendArgs "---- s
7e40: 6b 69 70 70 69 6e 67 20 74 65 73 74 20 66 69 6c  kipping test fil
7e50: 65 73 20 74 68 61 74 20 6d 61 74 63 68 3a 20 22  es that match: "
7e60: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
7e70: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
7e80: 73 74 5f 66 6c 61 67 73 28 2d 6e 6f 74 46 69 6c  st_flags(-notFil
7e90: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
7ea0: 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74 65      [llength $te
7eb0: 73 74 5f 66 6c 61 67 73 28 2d 6e 6f 74 46 69 6c  st_flags(-notFil
7ec0: 65 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20  e)] > 0 ? \..   
7ed0: 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
7ee0: 5f 66 6c 61 67 73 28 2d 6e 6f 74 46 69 6c 65 29  _flags(-notFile)
7ef0: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
7f00: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
7f10: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
7f20: 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20  ndArgs \..      
7f30: 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e 67 20 77  "---- starting w
7f40: 69 74 68 20 74 65 73 74 20 66 69 6c 65 73 20 74  ith test files t
7f50: 68 61 74 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a  hat match: " \..
7f60: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
7f70: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66  fo exists test_f
7f80: 6c 61 67 73 28 2d 73 74 61 72 74 46 69 6c 65 29  lags(-startFile)
7f90: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
7fa0: 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74 65 73 74    [llength $test
7fb0: 5f 66 6c 61 67 73 28 2d 73 74 61 72 74 46 69 6c  _flags(-startFil
7fc0: 65 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20  e)] > 0 ? \..   
7fd0: 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
7fe0: 5f 66 6c 61 67 73 28 2d 73 74 61 72 74 46 69 6c  _flags(-startFil
7ff0: 65 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  e) : "<none>"}] 
8000: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
8010: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
8020: 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20  pendArgs \..    
8030: 20 20 22 2d 2d 2d 2d 20 73 74 6f 70 70 69 6e 67    "---- stopping
8040: 20 61 66 74 65 72 20 74 65 73 74 20 66 69 6c 65   after test file
8050: 73 20 74 68 61 74 20 6d 61 74 63 68 3a 20 22 20  s that match: " 
8060: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
8070: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
8080: 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 46 69 6c  t_flags(-stopFil
8090: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
80a0: 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74 65      [llength $te
80b0: 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 46 69  st_flags(-stopFi
80c0: 6c 65 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20  le)] > 0 ? \..  
80d0: 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73              $tes
80e0: 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 46 69 6c  t_flags(-stopFil
80f0: 65 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  e) : "<none>"}] 
8100: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
8110: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
8120: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 72  pendArgs "---- r
8130: 75 6e 6e 69 6e 67 20 74 65 73 74 73 20 74 68 61  unning tests tha
8140: 74 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20  t match: " \..  
8150: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
8160: 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61   exists test_fla
8170: 67 73 28 2d 6d 61 74 63 68 29 5d 20 26 26 20 5c  gs(-match)] && \
8180: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65  ..          [lle
8190: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
81a0: 28 2d 6d 61 74 63 68 29 5d 20 3e 20 30 20 3f 20  (-match)] > 0 ? 
81b0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
81c0: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 6d 61   $test_flags(-ma
81d0: 74 63 68 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d  tch) : "<none>"}
81e0: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  ] \n]....  tputs
81f0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
8200: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
8210: 20 73 6b 69 70 70 69 6e 67 20 74 65 73 74 73 20   skipping tests 
8220: 74 68 61 74 20 6d 61 74 63 68 3a 20 22 20 5c 0d  that match: " \.
8230: 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69  .      [expr {[i
8240: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
8250: 66 6c 61 67 73 28 2d 73 6b 69 70 29 5d 20 26 26  flags(-skip)] &&
8260: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c   \..          [l
8270: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61  length $test_fla
8280: 67 73 28 2d 73 6b 69 70 29 5d 20 3e 20 30 20 3f  gs(-skip)] > 0 ?
8290: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
82a0: 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 73    $test_flags(-s
82b0: 6b 69 70 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d  kip) : "<none>"}
82c0: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  ] \n]....  tputs
82d0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
82e0: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
82f0: 20 76 65 72 62 6f 73 69 74 79 20 6c 65 76 65 6c   verbosity level
8300: 20 66 6f 72 20 74 65 73 74 73 3a 20 22 20 5c 0d   for tests: " \.
8310: 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69  .      [expr {[i
8320: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
8330: 66 6c 61 67 73 28 2d 76 65 72 62 6f 73 65 29 5d  flags(-verbose)]
8340: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
8350: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
8360: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 76 65 72  $test_flags(-ver
8370: 62 6f 73 65 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a  bose)] > 0 ? \..
8380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74                $t
8390: 65 73 74 5f 66 6c 61 67 73 28 2d 76 65 72 62 6f  est_flags(-verbo
83a0: 73 65 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d  se) : "<none>"}]
83b0: 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20   \n]....  tputs 
83c0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
83d0: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
83e0: 70 61 74 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20  path: " \..     
83f0: 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
8400: 69 73 74 73 20 70 61 74 68 5d 20 26 26 20 5b 73  ists path] && [s
8410: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 70 61  tring length $pa
8420: 74 68 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20  th] > 0 ? \..   
8430: 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72         [appendAr
8440: 67 73 20 5c 22 20 24 70 61 74 68 20 5c 22 5d 20  gs \" $path \"] 
8450: 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d  : "<none>"}] \n]
8460: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
8470: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
8480: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 62 61 73 65  dArgs "---- base
8490: 20 70 61 74 68 3a 20 5c 22 22 20 5c 0d 0a 20 20   path: \"" \..  
84a0: 20 20 20 20 24 62 61 73 65 5f 70 61 74 68 20 5c      $base_path \
84b0: 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20  "\n]....  tputs 
84c0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
84d0: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
84e0: 6b 65 79 20 70 61 74 68 3a 20 5c 22 22 20 5c 0d  key path: \"" \.
84f0: 0a 20 20 20 20 20 20 24 6b 65 79 5f 70 61 74 68  .      $key_path
8500: 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74   \"\n]....  tput
8510: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
8520: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
8530: 2d 20 72 6f 6f 74 20 70 61 74 68 3a 20 5c 22 22  - root path: \""
8540: 20 5c 0d 0a 20 20 20 20 20 20 24 72 6f 6f 74 5f   \..      $root_
8550: 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20  path \"\n]....  
8560: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
8570: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
8580: 22 2d 2d 2d 2d 20 62 69 6e 61 72 79 20 70 61 74  "---- binary pat
8590: 68 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20  h: \"" \..      
85a0: 24 62 69 6e 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d  $bin_path \"\n].
85b0: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
85c0: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
85d0: 41 72 67 73 20 22 2d 2d 2d 2d 20 6c 69 62 72 61  Args "---- libra
85e0: 72 79 20 70 61 74 68 3a 20 5c 22 22 20 5c 0d 0a  ry path: \"" \..
85f0: 20 20 20 20 20 20 24 6c 69 62 5f 70 61 74 68 20        $lib_path 
8600: 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  \"\n]....  tputs
8610: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
8620: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
8630: 20 74 65 73 74 20 73 75 69 74 65 20 66 69 6c 65   test suite file
8640: 73 20 6c 6f 63 61 74 65 64 20 69 6e 3a 20 5c 22  s located in: \"
8650: 22 20 5c 0d 0a 20 20 20 20 20 20 24 74 65 73 74  " \..      $test
8660: 5f 61 6c 6c 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d  _all_path \"\n].
8670: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
8680: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
8690: 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20  Args "---- test 
86a0: 73 63 72 69 70 74 20 66 69 6c 65 73 20 6c 6f 63  script files loc
86b0: 61 74 65 64 20 69 6e 3a 20 5c 22 22 20 5c 0d 0a  ated in: \"" \..
86c0: 20 20 20 20 20 20 24 74 65 73 74 5f 70 61 74 68        $test_path
86d0: 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74   \"\n]....  tput
86e0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
86f0: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
8700: 2d 20 74 65 73 74 20 64 61 74 61 20 66 69 6c 65  - test data file
8710: 73 20 6c 6f 63 61 74 65 64 20 69 6e 3a 20 5c 22  s located in: \"
8720: 22 20 5c 0d 0a 20 20 20 20 20 20 24 74 65 73 74  " \..      $test
8730: 5f 64 61 74 61 5f 70 61 74 68 20 5c 22 5c 6e 5d  _data_path \"\n]
8740: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
8750: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
8760: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 72 75 6e 6e  dArgs "---- runn
8770: 69 6e 67 20 69 6e 3a 20 5c 22 22 20 5c 0d 0a 20  ing in: \"" \.. 
8780: 20 20 20 20 20 5b 70 77 64 5d 20 5c 22 5c 6e 5d       [pwd] \"\n]
8790: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
87a0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
87b0: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 6d 70  dArgs "---- temp
87c0: 6f 72 61 72 79 20 66 69 6c 65 73 20 73 74 6f 72  orary files stor
87d0: 65 64 20 69 6e 3a 20 5c 22 22 20 5c 0d 0a 20 20  ed in: \"" \..  
87e0: 20 20 20 20 5b 67 65 74 54 65 6d 70 6f 72 61 72      [getTemporar
87f0: 79 50 61 74 68 5d 20 5c 22 5c 6e 5d 0d 0a 0d 0a  yPath] \"\n]....
8800: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
8810: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
8820: 73 20 22 2d 2d 2d 2d 20 6e 61 74 69 76 65 20 54  s "---- native T
8830: 63 6c 20 73 68 65 6c 6c 3a 20 22 20 5c 0d 0a 20  cl shell: " \.. 
8840: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
8850: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 74 63  o exists test_tc
8860: 6c 73 68 5d 20 26 26 20 5b 73 74 72 69 6e 67 20  lsh] && [string 
8870: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 74 63 6c  length $test_tcl
8880: 73 68 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20  sh] > 0 ? \..   
8890: 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72         [appendAr
88a0: 67 73 20 5c 22 20 24 74 65 73 74 5f 74 63 6c 73  gs \" $test_tcls
88b0: 68 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65 3e 22  h \"] : "<none>"
88c0: 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74  }] \n]....  tput
88d0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
88e0: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
88f0: 2d 20 64 69 73 61 62 6c 65 64 20 6f 70 74 69 6f  - disabled optio
8900: 6e 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  ns: " \..      [
8910: 66 6f 72 6d 61 74 4c 69 73 74 20 5b 6c 73 6f 72  formatList [lsor
8920: 74 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 6e  t [array names n
8930: 6f 5d 5d 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d  o]] <none>] \n].
8940: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
8950: 3a 20 49 73 20 74 68 65 20 75 73 65 20 6f 66 20  : Is the use of 
8960: 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20 74 65  Fossil by the te
8970: 73 74 20 73 75 69 74 65 20 61 6c 6c 6f 77 65 64  st suite allowed
8980: 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 63  ?..  #..  if {[c
8990: 61 6e 45 78 65 63 46 6f 73 73 69 6c 5d 7d 20 74  anExecFossil]} t
89a0: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
89b0: 20 20 23 20 4e 4f 54 45 3a 20 47 65 74 20 74 68    # NOTE: Get th
89c0: 65 20 73 6f 75 72 63 65 20 63 68 65 63 6b 6f 75  e source checkou
89d0: 74 20 61 6e 64 20 74 61 67 73 20 28 69 2e 65 2e  t and tags (i.e.
89e0: 20 6f 66 20 45 61 67 6c 65 20 6f 72 20 77 68 61   of Eagle or wha
89f0: 74 65 76 65 72 0d 0a 20 20 20 20 23 20 20 20 20  tever..    #    
8a00: 20 20 20 70 72 6f 6a 65 63 74 20 74 68 65 20 45     project the E
8a10: 61 67 6c 65 20 62 69 6e 61 72 69 65 73 20 61 72  agle binaries ar
8a20: 65 20 62 65 69 6e 67 20 75 73 65 64 20 62 79 29  e being used by)
8a30: 20 75 73 69 6e 67 20 61 20 46 6f 73 73 69 6c 0d   using a Fossil.
8a40: 0a 20 20 20 20 23 20 20 20 20 20 20 20 62 69 6e  .    #       bin
8a50: 61 72 79 20 69 6e 20 74 68 65 20 50 41 54 48 2c  ary in the PATH,
8a60: 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a   if available...
8a70: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 5b      #..    if {[
8a80: 63 61 74 63 68 20 7b 65 78 65 63 20 2d 2d 20 66  catch {exec -- f
8a90: 6f 73 73 69 6c 20 69 6e 66 6f 7d 20 65 78 65 63  ossil info} exec
8aa0: 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
8ab0: 20 20 20 20 20 20 73 65 74 20 70 61 74 74 65 72        set patter
8ac0: 6e 20 7b 5e 63 68 65 63 6b 6f 75 74 3a 5c 73 2b  n {^checkout:\s+
8ad0: 28 2e 2a 3f 29 24 7d 0d 0a 0d 0a 20 20 20 20 20  (.*?)$}....     
8ae0: 20 69 66 20 7b 5b 72 65 67 65 78 70 20 2d 6c 69   if {[regexp -li
8af0: 6e 65 20 2d 2d 20 24 70 61 74 74 65 72 6e 20 24  ne -- $pattern $
8b00: 65 78 65 63 20 64 75 6d 6d 79 20 63 68 65 63 6b  exec dummy check
8b10: 6f 75 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  out]} then {..  
8b20: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
8b30: 20 23 20 4e 4f 54 45 3a 20 52 65 6d 6f 76 65 20   # NOTE: Remove 
8b40: 61 6e 79 20 74 72 61 69 6c 69 6e 67 20 6e 65 77  any trailing new
8b50: 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20 23  line...        #
8b60: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 63 68  ..        set ch
8b70: 65 63 6b 6f 75 74 20 5b 73 74 72 69 6e 67 20 74  eckout [string t
8b80: 72 69 6d 20 24 63 68 65 63 6b 6f 75 74 5d 0d 0a  rim $checkout]..
8b90: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
8ba0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
8bb0: 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 63 6f     # NOTE: We co
8bc0: 75 6c 64 20 6e 6f 74 20 71 75 65 72 79 20 74 68  uld not query th
8bd0: 65 20 73 6f 75 72 63 65 20 63 68 65 63 6b 6f 75  e source checkou
8be0: 74 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2e 0d 0a  t from Fossil...
8bf0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
8c00: 20 20 20 73 65 74 20 63 68 65 63 6b 6f 75 74 20     set checkout 
8c10: 3c 6e 6f 6e 65 3e 0d 0a 20 20 20 20 20 20 7d 0d  <none>..      }.
8c20: 0a 0d 0a 20 20 20 20 20 20 73 65 74 20 70 61 74  ...      set pat
8c30: 74 65 72 6e 20 7b 5e 74 61 67 73 3a 5c 73 2b 28  tern {^tags:\s+(
8c40: 2e 2a 3f 29 24 7d 0d 0a 0d 0a 20 20 20 20 20 20  .*?)$}....      
8c50: 69 66 20 7b 5b 72 65 67 65 78 70 20 2d 6c 69 6e  if {[regexp -lin
8c60: 65 20 2d 2d 20 24 70 61 74 74 65 72 6e 20 24 65  e -- $pattern $e
8c70: 78 65 63 20 64 75 6d 6d 79 20 74 61 67 73 5d 7d  xec dummy tags]}
8c80: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
8c90: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
8ca0: 54 45 3a 20 52 65 6d 6f 76 65 20 61 6e 79 20 74  TE: Remove any t
8cb0: 72 61 69 6c 69 6e 67 20 6e 65 77 6c 69 6e 65 2e  railing newline.
8cc0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
8cd0: 20 20 20 20 20 73 65 74 20 74 61 67 73 20 5b 73       set tags [s
8ce0: 74 72 69 6e 67 20 74 72 69 6d 20 24 74 61 67 73  tring trim $tags
8cf0: 5d 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  ]..      } else 
8d00: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
8d10: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65        # NOTE: We
8d20: 20 63 6f 75 6c 64 20 6e 6f 74 20 71 75 65 72 79   could not query
8d30: 20 74 68 65 20 74 61 67 73 20 66 72 6f 6d 20 46   the tags from F
8d40: 6f 73 73 69 6c 2e 0d 0a 20 20 20 20 20 20 20 20  ossil...        
8d50: 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 74  #..        set t
8d60: 61 67 73 20 3c 6e 6f 6e 65 3e 0d 0a 20 20 20 20  ags <none>..    
8d70: 20 20 7d 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20    }..    } else 
8d80: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
8d90: 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 63 6f 75    # NOTE: We cou
8da0: 6c 64 20 6e 6f 74 20 71 75 65 72 79 20 69 6e 66  ld not query inf
8db0: 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 46 6f  ormation from Fo
8dc0: 73 73 69 6c 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  ssil...      #..
8dd0: 20 20 20 20 20 20 73 65 74 20 63 68 65 63 6b 6f        set checko
8de0: 75 74 20 3c 6e 6f 6e 65 3e 0d 0a 20 20 20 20 20  ut <none>..     
8df0: 20 73 65 74 20 74 61 67 73 20 3c 6e 6f 6e 65 3e   set tags <none>
8e00: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75  ..    }....    u
8e10: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
8e20: 20 64 75 6d 6d 79 20 65 78 65 63 20 70 61 74 74   dummy exec patt
8e30: 65 72 6e 0d 0a 20 20 7d 20 65 6c 73 65 20 7b 0d  ern..  } else {.
8e40: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
8e50: 54 45 3a 20 55 73 65 20 6f 66 20 46 6f 73 73 69  TE: Use of Fossi
8e60: 6c 20 62 79 20 74 68 65 20 74 65 73 74 20 73 75  l by the test su
8e70: 69 74 65 20 69 73 20 66 6f 72 62 69 64 64 65 6e  ite is forbidden
8e80: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65  ...    #..    se
8e90: 74 20 63 68 65 63 6b 6f 75 74 20 3c 6e 6f 6e 65  t checkout <none
8ea0: 3e 0d 0a 20 20 20 20 73 65 74 20 74 61 67 73 20  >..    set tags 
8eb0: 3c 6e 6f 6e 65 3e 0d 0a 20 20 7d 0d 0a 0d 0a 20  <none>..  }.... 
8ec0: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
8ed0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
8ee0: 20 22 2d 2d 2d 2d 20 63 68 65 63 6b 6f 75 74 3a   "---- checkout:
8ef0: 20 22 20 5c 0d 0a 20 20 20 20 20 20 24 63 68 65   " \..      $che
8f00: 63 6b 6f 75 74 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  ckout \n]....  t
8f10: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8f20: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
8f30: 2d 2d 2d 2d 20 74 61 67 73 3a 20 22 20 5c 0d 0a  ---- tags: " \..
8f40: 20 20 20 20 20 20 24 74 61 67 73 20 5c 6e 5d 0d        $tags \n].
8f50: 0a 0d 0a 20 20 75 6e 73 65 74 20 74 61 67 73 20  ...  unset tags 
8f60: 63 68 65 63 6b 6f 75 74 0d 0a 0d 0a 20 20 23 0d  checkout....  #.
8f70: 0a 20 20 23 20 4e 4f 54 45 3a 20 49 6e 69 74 69  .  # NOTE: Initi
8f80: 61 6c 69 7a 65 20 74 68 65 20 45 61 67 6c 65 20  alize the Eagle 
8f90: 74 65 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73  test constraints
8fa0: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69  ...  #..  if {[i
8fb0: 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d  sEagle]} then {.
8fc0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
8fd0: 54 45 3a 20 2a 57 41 52 4e 49 4e 47 2a 20 54 68  TE: *WARNING* Th
8fe0: 69 73 20 68 61 73 20 74 68 65 20 65 66 66 65 63  is has the effec
8ff0: 74 20 6f 66 20 72 65 6d 6f 76 69 6e 67 20 74 65  t of removing te
9000: 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 0d 0a  st constraints..
9010: 20 20 20 20 23 20 20 20 20 20 20 20 61 64 64 65      #       adde
9020: 64 20 70 72 69 6f 72 20 74 6f 20 74 68 69 73 20  d prior to this 
9030: 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 23 0d 0a 20  point...    #.. 
9040: 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 54 65 73     initializeTes
9050: 74 73 3b 20 63 6f 6e 66 69 67 75 72 65 54 63 6c  ts; configureTcl
9060: 74 65 73 74 20 22 22 20 5b 6c 69 73 74 5d 20 5b  test "" [list] [
9070: 6c 69 73 74 5d 20 5b 6c 69 73 74 5d 20 5b 6c 69  list] [list] [li
9080: 73 74 5d 20 66 61 6c 73 65 0d 0a 0d 0a 20 20 20  st] false....   
9090: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
90a0: 49 66 20 74 68 65 20 22 6e 6f 28 6d 6f 6e 6f 29  If the "no(mono)
90b0: 22 20 76 61 72 69 61 62 6c 65 20 69 73 20 73 65  " variable is se
90c0: 74 20 28 74 6f 20 61 6e 79 74 68 69 6e 67 29 20  t (to anything) 
90d0: 74 68 65 6e 20 61 6e 79 0d 0a 20 20 20 20 23 20  then any..    # 
90e0: 20 20 20 20 20 20 73 70 65 63 69 61 6c 20 74 65        special te
90f0: 73 74 20 73 75 69 74 65 20 68 61 63 6b 73 20 66  st suite hacks f
9100: 6f 72 20 4d 6f 6e 6f 20 77 69 6c 6c 20 62 65 20  or Mono will be 
9110: 64 69 73 61 62 6c 65 64 2e 20 54 68 69 73 0d 0a  disabled. This..
9120: 20 20 20 20 23 20 20 20 20 20 20 20 64 6f 65 73      #       does
9130: 20 6e 6f 74 20 63 6f 6e 74 72 6f 6c 20 6f 72 20   not control or 
9140: 63 68 61 6e 67 65 20 61 6e 79 20 68 61 63 6b 73  change any hacks
9150: 20 66 6f 72 20 4d 6f 6e 6f 20 74 68 61 74 20 6d   for Mono that m
9160: 61 79 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  ay..    #       
9170: 62 65 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  be present in th
9180: 65 20 6c 69 62 72 61 72 79 20 69 74 73 65 6c 66  e library itself
9190: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
91a0: 69 66 20 7b 5b 69 73 54 65 73 74 4d 6f 6e 6f 5d  if {[isTestMono]
91b0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 20  } then {..    # 
91c0: 20 20 73 65 74 20 6e 6f 28 6d 6f 6e 6f 29 20 74    set no(mono) t
91d0: 72 75 65 0d 0a 20 20 20 20 23 20 7d 0d 0a 0d 0a  rue..    # }....
91e0: 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
91f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
9230: 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
9240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 20 42  ############## B
9250: 45 47 49 4e 20 45 61 67 6c 65 20 43 6f 6e 73 74  EGIN Eagle Const
9260: 72 61 69 6e 74 73 20 23 23 23 23 23 23 23 23 23  raints #########
9270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9280: 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
9290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
92a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
92b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
92c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
92d0: 23 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  #....    tputs $
92e0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a  test_channel \..
92f0: 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73 74          "---- st
9300: 61 72 74 20 6f 66 20 45 61 67 6c 65 20 73 70 65  art of Eagle spe
9310: 63 69 66 69 63 20 74 65 73 74 20 63 6f 6e 73 74  cific test const
9320: 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a 0d 0a  raints...\n"....
9330: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
9340: 45 3a 20 2a 57 41 52 4e 49 4e 47 2a 20 48 61 73  E: *WARNING* Has
9350: 20 71 75 69 65 74 20 74 65 73 74 69 6e 67 20 73   quiet testing s
9360: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
9370: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 20 20 20 20  bled?..    #    
9380: 20 20 20 50 6c 65 61 73 65 20 64 6f 20 6e 6f 74     Please do not
9390: 20 6d 6f 76 65 20 74 68 69 73 20 22 71 75 69 65   move this "quie
93a0: 74 6e 65 73 73 22 20 74 65 73 74 20 63 6f 6e 73  tness" test cons
93b0: 74 72 61 69 6e 74 0d 0a 20 20 20 20 23 20 20 20  traint..    #   
93c0: 20 20 20 20 63 68 65 63 6b 20 61 73 20 73 75 62      check as sub
93d0: 73 65 71 75 65 6e 74 20 74 65 73 74 20 63 6f 6e  sequent test con
93e0: 73 74 72 61 69 6e 74 73 20 6d 61 79 20 72 65 6c  straints may rel
93f0: 79 20 6f 6e 20 69 74 0d 0a 20 20 20 20 23 20 20  y on it..    #  
9400: 20 20 20 20 20 77 68 65 6e 20 64 65 74 65 72 6d       when determ
9410: 69 6e 69 6e 67 20 69 66 20 61 20 77 61 72 6e 69  ining if a warni
9420: 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 65 6d 69  ng should be emi
9430: 74 74 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  tted...    #..  
9440: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
9450: 73 74 73 20 6e 6f 28 71 75 69 65 74 29 5d 7d 20  sts no(quiet)]} 
9460: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
9470: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  .      # NOTE: F
9480: 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63 2d  or tests "basic-
9490: 31 2e 33 36 22 2c 20 22 62 65 6e 63 68 6d 61 72  1.36", "benchmar
94a0: 6b 2d 31 2e 2a 22 2c 20 22 64 65 62 75 67 2d 31  k-1.*", "debug-1
94b0: 2e 33 22 2c 0d 0a 20 20 20 20 20 20 23 20 20 20  .3",..      #   
94c0: 20 20 20 20 22 64 65 62 75 67 2d 31 2e 34 2e 2a      "debug-1.4.*
94d0: 22 2c 20 22 67 6c 6f 62 2d 39 39 2e 2a 22 2c 20  ", "glob-99.*", 
94e0: 22 6f 62 6a 65 63 74 2d 31 30 2e 2a 22 2c 20 22  "object-10.*", "
94f0: 70 65 72 66 2d 32 2e 32 22 2c 0d 0a 20 20 20 20  perf-2.2",..    
9500: 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 76 61    #       and va
9510: 72 69 6f 75 73 20 6f 74 68 65 72 20 70 6c 61 63  rious other plac
9520: 65 73 20 77 69 74 68 69 6e 20 74 68 65 20 74 65  es within the te
9530: 73 74 20 73 75 69 74 65 20 63 6f 64 65 0d 0a 20  st suite code.. 
9540: 20 20 20 20 20 23 20 20 20 20 20 20 20 69 74 73       #       its
9550: 65 6c 66 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  elf...      #.. 
9560: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 51 75 69       checkForQui
9570: 65 74 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  et $test_channel
9580: 20 66 61 6c 73 65 0d 0a 20 20 20 20 7d 0d 0a 0d   false..    }...
9590: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
95a0: 54 45 3a 20 48 61 73 20 61 64 6d 69 6e 69 73 74  TE: Has administ
95b0: 72 61 74 6f 72 20 64 65 74 65 63 74 69 6f 6e 20  rator detection 
95c0: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
95d0: 61 62 6c 65 64 3f 20 20 57 65 20 64 6f 0d 0a 20  abled?  We do.. 
95e0: 20 20 20 23 20 20 20 20 20 20 20 74 68 69 73 20     #       this 
95f0: 63 68 65 63 6b 20 5b 6e 65 61 72 6c 79 5d 20 66  check [nearly] f
9600: 69 72 73 74 20 61 73 20 69 74 20 6d 61 79 20 5b  irst as it may [
9610: 65 76 65 6e 74 75 61 6c 6c 79 5d 20 62 65 20 75  eventually] be u
9620: 73 65 64 0d 0a 20 20 20 20 23 20 20 20 20 20 20  sed..    #      
9630: 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69   to help determi
9640: 6e 65 20 69 66 20 6f 74 68 65 72 20 63 6f 6e 73  ne if other cons
9650: 74 72 61 69 6e 74 73 20 73 68 6f 75 6c 64 20 62  traints should b
9660: 65 20 73 6b 69 70 70 65 64 2e 0d 0a 20 20 20 20  e skipped...    
9670: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
9680: 6f 20 65 78 69 73 74 73 20 6e 6f 28 61 64 6d 69  o exists no(admi
9690: 6e 69 73 74 72 61 74 6f 72 29 5d 7d 20 74 68 65  nistrator)]} the
96a0: 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
96b0: 46 6f 72 41 64 6d 69 6e 69 73 74 72 61 74 6f 72  ForAdministrator
96c0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
96d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
96e0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
96f0: 68 6f 73 74 20 64 65 74 65 63 74 69 6f 6e 20 73  host detection s
9700: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
9710: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
9720: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
9730: 73 74 73 20 6e 6f 28 68 6f 73 74 29 5d 7d 20 74  sts no(host)]} t
9740: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
9750: 63 6b 46 6f 72 48 6f 73 74 20 24 74 65 73 74 5f  ckForHost $test_
9760: 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
9770: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
9780: 4f 54 45 3a 20 48 61 73 20 68 6f 73 74 20 74 79  OTE: Has host ty
9790: 70 65 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70  pe detection sup
97a0: 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
97b0: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
97c0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
97d0: 73 20 6e 6f 28 68 6f 73 74 54 79 70 65 29 5d 7d  s no(hostType)]}
97e0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
97f0: 68 65 63 6b 46 6f 72 48 6f 73 74 54 79 70 65 20  heckForHostType 
9800: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
9810: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
9820: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 70     # NOTE: Has p
9830: 72 69 6d 61 72 79 20 74 68 72 65 61 64 20 64 65  rimary thread de
9840: 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  tection support 
9850: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 20 20  been disabled?  
9860: 57 65 20 64 6f 0d 0a 20 20 20 20 23 20 20 20 20  We do..    #    
9870: 20 20 20 74 68 69 73 20 63 68 65 63 6b 20 5b 6e     this check [n
9880: 65 61 72 6c 79 5d 20 66 69 72 73 74 20 61 73 20  early] first as 
9890: 69 74 20 6d 61 79 20 5b 65 76 65 6e 74 75 61 6c  it may [eventual
98a0: 6c 79 5d 20 62 65 20 75 73 65 64 0d 0a 20 20 20  ly] be used..   
98b0: 20 23 20 20 20 20 20 20 20 74 6f 20 68 65 6c 70   #       to help
98c0: 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 6f 74   determine if ot
98d0: 68 65 72 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  her constraints 
98e0: 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70 70 65  should be skippe
98f0: 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d...    #..    i
9900: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
9910: 20 6e 6f 28 70 72 69 6d 61 72 79 54 68 72 65 61   no(primaryThrea
9920: 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
9930: 20 20 20 63 68 65 63 6b 46 6f 72 50 72 69 6d 61     checkForPrima
9940: 72 79 54 68 72 65 61 64 20 24 74 65 73 74 5f 63  ryThread $test_c
9950: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
9960: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
9970: 54 45 3a 20 48 61 73 20 64 65 66 61 75 6c 74 20  TE: Has default 
9980: 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61  application doma
9990: 69 6e 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70  in detection sup
99a0: 70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20 20 23  port been..    #
99b0: 20 20 20 20 20 20 20 64 69 73 61 62 6c 65 64 3f         disabled?
99c0: 20 20 57 65 20 64 6f 20 74 68 69 73 20 63 68 65    We do this che
99d0: 63 6b 20 5b 6e 65 61 72 6c 79 5d 20 66 69 72 73  ck [nearly] firs
99e0: 74 20 61 73 20 69 74 20 6d 61 79 0d 0a 20 20 20  t as it may..   
99f0: 20 23 20 20 20 20 20 20 20 5b 65 76 65 6e 74 75   #       [eventu
9a00: 61 6c 6c 79 5d 20 62 65 20 75 73 65 64 20 74 6f  ally] be used to
9a10: 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e 65 20   help determine 
9a20: 69 66 20 6f 74 68 65 72 0d 0a 20 20 20 20 23 20  if other..    # 
9a30: 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e 74        constraint
9a40: 73 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70  s should be skip
9a50: 70 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ped...    #..   
9a60: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
9a70: 74 73 20 6e 6f 28 64 65 66 61 75 6c 74 41 70 70  ts no(defaultApp
9a80: 44 6f 6d 61 69 6e 29 5d 7d 20 74 68 65 6e 20 7b  Domain)]} then {
9a90: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
9aa0: 44 65 66 61 75 6c 74 41 70 70 44 6f 6d 61 69 6e  DefaultAppDomain
9ab0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
9ac0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
9ad0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
9ae0: 72 75 6e 74 69 6d 65 20 64 65 74 65 63 74 69 6f  runtime detectio
9af0: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
9b00: 69 73 61 62 6c 65 64 3f 20 20 57 65 20 64 6f 20  isabled?  We do 
9b10: 74 68 69 73 0d 0a 20 20 20 20 23 20 20 20 20 20  this..    #     
9b20: 20 20 63 68 65 63 6b 69 6e 67 20 5b 6e 65 61 72    checking [near
9b30: 6c 79 5d 20 66 69 72 73 74 20 61 73 20 69 74 20  ly] first as it 
9b40: 6d 61 79 20 73 6b 69 70 20 6f 74 68 65 72 20 63  may skip other c
9b50: 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20 20 20  onstraints...   
9b60: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
9b70: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 75 6e  fo exists no(run
9b80: 74 69 6d 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  time)]} then {..
9b90: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52 75        checkForRu
9ba0: 6e 74 69 6d 65 20 24 74 65 73 74 5f 63 68 61 6e  ntime $test_chan
9bb0: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
9bc0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
9bd0: 20 43 68 65 63 6b 20 74 68 65 20 76 61 72 69 61   Check the varia
9be0: 6e 74 20 61 6e 64 2f 6f 72 20 76 65 72 73 69 6f  nt and/or versio
9bf0: 6e 20 6f 66 20 74 68 65 20 43 4c 52 20 74 68 61  n of the CLR tha
9c00: 74 20 77 65 20 61 72 65 0d 0a 20 20 20 20 23 20  t we are..    # 
9c10: 20 20 20 20 20 20 63 75 72 72 65 6e 74 6c 79 20        currently 
9c20: 72 75 6e 6e 69 6e 67 20 6f 6e 2e 0d 0a 20 20 20  running on...   
9c30: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
9c40: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65  fo exists no(che
9c50: 63 6b 46 6f 72 52 75 6e 74 69 6d 65 56 65 72 73  ckForRuntimeVers
9c60: 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ion)]} then {.. 
9c70: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52 75 6e       checkForRun
9c80: 74 69 6d 65 56 65 72 73 69 6f 6e 20 24 74 65 73  timeVersion $tes
9c90: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
9ca0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
9cb0: 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68 65   NOTE: Check the
9cc0: 20 66 72 61 6d 65 77 6f 72 6b 20 76 65 72 73 69   framework versi
9cd0: 6f 6e 20 28 69 2e 65 2e 20 72 65 67 61 72 64 6c  on (i.e. regardl
9ce0: 65 73 73 20 6f 66 20 72 75 6e 74 69 6d 65 29 20  ess of runtime) 
9cf0: 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20 20 20  that..    #     
9d00: 20 20 77 65 20 61 72 65 20 63 75 72 72 65 6e 74    we are current
9d10: 6c 79 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e 0d 0a  ly running on...
9d20: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
9d30: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
9d40: 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e  frameworkVersion
9d50: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
9d60: 20 20 63 68 65 63 6b 46 6f 72 46 72 61 6d 65 77    checkForFramew
9d70: 6f 72 6b 56 65 72 73 69 6f 6e 20 24 74 65 73 74  orkVersion $test
9d80: 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
9d90: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
9da0: 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68 65 20  NOTE: Check the 
9db0: 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65  image runtime ve
9dc0: 72 73 69 6f 6e 20 28 69 2e 65 2e 20 74 68 65 20  rsion (i.e. the 
9dd0: 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e 20  runtime version 
9de0: 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20 20 20  that..    #     
9df0: 20 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79 20    this assembly 
9e00: 63 6f 6d 70 69 6c 65 64 20 61 67 61 69 6e 73 74  compiled against
9e10: 29 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  )...    #..    i
9e20: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
9e30: 20 6e 6f 28 69 6d 61 67 65 52 75 6e 74 69 6d 65   no(imageRuntime
9e40: 56 65 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20  Version)]} then 
9e50: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
9e60: 72 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  rImageRuntimeVer
9e70: 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  sion $test_chann
9e80: 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  el..    }....   
9e90: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
9ea0: 43 68 65 63 6b 20 69 66 20 74 68 65 20 69 6d 61  Check if the ima
9eb0: 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69  ge runtime versi
9ec0: 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 65 20 66  on matches the f
9ed0: 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20 23  ramework...    #
9ee0: 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
9ef0: 20 65 78 69 73 74 73 20 6e 6f 28 6d 61 74 63 68   exists no(match
9f00: 69 6e 67 46 72 61 6d 65 77 6f 72 6b 56 65 72 73  ingFrameworkVers
9f10: 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ion)]} then {.. 
9f20: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 61 74       checkForMat
9f30: 63 68 69 6e 67 46 72 61 6d 65 77 6f 72 6b 56 65  chingFrameworkVe
9f40: 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  rsion $test_chan
9f50: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
9f60: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
9f70: 20 48 61 73 20 70 72 6f 63 65 73 73 20 62 69 74   Has process bit
9f80: 73 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70 70  s detection supp
9f90: 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
9fa0: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
9fb0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
9fc0: 20 6e 6f 28 70 72 6f 63 65 73 73 42 69 74 73 29   no(processBits)
9fd0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
9fe0: 20 63 68 65 63 6b 46 6f 72 50 72 6f 63 65 73 73   checkForProcess
9ff0: 42 69 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  Bits $test_chann
a000: 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  el..    }....   
a010: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
a020: 48 61 73 20 6d 61 63 68 69 6e 65 20 64 65 74 65  Has machine dete
a030: 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65  ction support be
a040: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
a050: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
a060: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d 61  nfo exists no(ma
a070: 63 68 69 6e 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  chine)]} then {.
a080: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d  .      checkForM
a090: 61 63 68 69 6e 65 20 24 74 65 73 74 5f 63 68 61  achine $test_cha
a0a0: 6e 6e 65 6c 20 33 32 20 69 6e 74 65 6c 3b 20 23  nnel 32 intel; #
a0b0: 20 28 69 2e 65 2e 20 78 38 36 29 0d 0a 20 20 20   (i.e. x86)..   
a0c0: 20 20 20 63 68 65 63 6b 46 6f 72 4d 61 63 68 69     checkForMachi
a0d0: 6e 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ne $test_channel
a0e0: 20 33 32 20 61 72 6d 3b 20 20 20 23 20 28 69 2e   32 arm;   # (i.
a0f0: 65 2e 20 61 72 6d 29 0d 0a 20 20 20 20 20 20 63  e. arm)..      c
a100: 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20 24  heckForMachine $
a110: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34 20  test_channel 64 
a120: 69 61 36 34 3b 20 20 23 20 28 69 2e 65 2e 20 69  ia64;  # (i.e. i
a130: 74 61 6e 69 75 6d 29 0d 0a 20 20 20 20 20 20 63  tanium)..      c
a140: 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20 24  heckForMachine $
a150: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34 20  test_channel 64 
a160: 61 6d 64 36 34 3b 20 23 20 28 69 2e 65 2e 20 78  amd64; # (i.e. x
a170: 36 34 29 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  64)..      check
a180: 46 6f 72 4d 61 63 68 69 6e 65 20 24 74 65 73 74  ForMachine $test
a190: 5f 63 68 61 6e 6e 65 6c 20 36 34 20 61 72 6d 36  _channel 64 arm6
a1a0: 34 3b 20 23 20 28 69 2e 65 2e 20 61 72 6d 36 34  4; # (i.e. arm64
a1b0: 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  )..    }....    
a1c0: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
a1d0: 61 73 20 74 65 73 74 20 73 75 69 74 65 20 63 61  as test suite ca
a1e0: 6c 6c 20 73 74 61 63 6b 20 70 72 6f 62 69 6e 67  ll stack probing
a1f0: 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
a200: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
a210: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
a220: 28 74 65 73 74 43 61 6c 6c 53 74 61 63 6b 29 5d  (testCallStack)]
a230: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
a240: 63 68 65 63 6b 46 6f 72 54 65 73 74 43 61 6c 6c  checkForTestCall
a250: 53 74 61 63 6b 20 24 74 65 73 74 5f 63 68 61 6e  Stack $test_chan
a260: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
a270: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
a280: 20 48 61 73 20 63 75 6c 74 75 72 65 20 64 65 74   Has culture det
a290: 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62  ection support b
a2a0: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
a2b0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
a2c0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
a2d0: 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20 7b  ulture)]} then {
a2e0: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
a2f0: 43 75 6c 74 75 72 65 20 24 74 65 73 74 5f 63 68  Culture $test_ch
a300: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
a310: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
a320: 45 3a 20 48 61 73 20 74 68 72 65 61 64 20 63 75  E: Has thread cu
a330: 6c 74 75 72 65 20 64 65 74 65 63 74 69 6f 6e 20  lture detection 
a340: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
a350: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
a360: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
a370: 69 73 74 73 20 6e 6f 28 74 68 72 65 61 64 43 75  ists no(threadCu
a380: 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  lture)]} then {.
a390: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54  .      checkForT
a3a0: 68 72 65 61 64 43 75 6c 74 75 72 65 20 24 74 65  hreadCulture $te
a3b0: 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
a3c0: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
a3d0: 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 65 63 75  # NOTE: Has secu
a3e0: 72 69 74 79 20 64 65 74 65 63 74 69 6f 6e 20 73  rity detection s
a3f0: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
a400: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
a410: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
a420: 73 74 73 20 6e 6f 28 73 65 63 75 72 69 74 79 29  sts no(security)
a430: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a440: 20 63 68 65 63 6b 46 6f 72 53 65 63 75 72 69 74   checkForSecurit
a450: 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  y $test_channel.
a460: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
a470: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
a480: 20 73 6f 66 74 77 61 72 65 20 75 70 64 61 74 65   software update
a490: 20 74 72 75 73 74 20 64 65 74 65 63 74 69 6f 6e   trust detection
a4a0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
a4b0: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
a4c0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
a4d0: 78 69 73 74 73 20 6e 6f 28 73 6f 66 74 77 61 72  xists no(softwar
a4e0: 65 55 70 64 61 74 65 29 5d 7d 20 74 68 65 6e 20  eUpdate)]} then 
a4f0: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
a500: 72 53 6f 66 74 77 61 72 65 55 70 64 61 74 65 54  rSoftwareUpdateT
a510: 72 75 73 74 20 24 74 65 73 74 5f 63 68 61 6e 6e  rust $test_chann
a520: 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  el..    }....   
a530: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
a540: 48 61 73 20 6c 69 62 72 61 72 79 20 61 73 73 65  Has library asse
a550: 6d 62 6c 79 20 6e 61 6d 65 20 64 65 74 65 63 74  mbly name detect
a560: 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
a570: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
a580: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
a590: 6f 20 65 78 69 73 74 73 20 6e 6f 28 6c 69 62 72  o exists no(libr
a5a0: 61 72 79 41 73 73 65 6d 62 6c 79 4e 61 6d 65 29  aryAssemblyName)
a5b0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a5c0: 20 63 68 65 63 6b 46 6f 72 4c 69 62 72 61 72 79   checkForLibrary
a5d0: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 24 74 65  AssemblyName $te
a5e0: 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
a5f0: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
a600: 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 74 72 6f  # NOTE: Has stro
a610: 6e 67 20 6e 61 6d 65 20 64 65 74 65 63 74 69 6f  ng name detectio
a620: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
a630: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
a640: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
a650: 65 78 69 73 74 73 20 6e 6f 28 73 74 72 6f 6e 67  exists no(strong
a660: 4e 61 6d 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Name)]} then {..
a670: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 53 74        checkForSt
a680: 72 6f 6e 67 4e 61 6d 65 20 24 74 65 73 74 5f 63  rongName $test_c
a690: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
a6a0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
a6b0: 54 45 3a 20 48 61 73 20 73 74 72 6f 6e 67 20 6e  TE: Has strong n
a6c0: 61 6d 65 20 6b 65 79 20 64 65 74 65 63 74 69 6f  ame key detectio
a6d0: 6e 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  n been disabled?
a6e0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
a6f0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
a700: 6f 28 73 74 72 6f 6e 67 4e 61 6d 65 4b 65 79 29  o(strongNameKey)
a710: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a720: 20 63 68 65 63 6b 46 6f 72 53 74 72 6f 6e 67 4e   checkForStrongN
a730: 61 6d 65 4b 65 79 20 24 74 65 73 74 5f 63 68 61  ameKey $test_cha
a740: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
a750: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
a760: 3a 20 48 61 73 20 63 65 72 74 69 66 69 63 61 74  : Has certificat
a770: 65 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70 70  e detection supp
a780: 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
a790: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
a7a0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
a7b0: 20 6e 6f 28 63 65 72 74 69 66 69 63 61 74 65 29   no(certificate)
a7c0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a7d0: 20 63 68 65 63 6b 46 6f 72 43 65 72 74 69 66 69   checkForCertifi
a7e0: 63 61 74 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  cate $test_chann
a7f0: 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  el..    }....   
a800: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
a810: 48 61 73 20 64 61 74 61 62 61 73 65 20 74 65 73  Has database tes
a820: 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
a830: 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
a840: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
a850: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72  fo exists no(cor
a860: 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f 20 65 78  e)] && ![info ex
a870: 69 73 74 73 20 6e 6f 28 64 61 74 61 62 61 73 65  ists no(database
a880: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
a890: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
a8a0: 45 3a 20 53 65 74 20 74 68 65 20 73 65 72 76 65  E: Set the serve
a8b0: 72 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63 65 73  r name, if neces
a8c0: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  sary...      #..
a8d0: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
a8e0: 20 65 78 69 73 74 73 20 73 65 72 76 65 72 5d 7d   exists server]}
a8f0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
a900: 20 73 65 74 20 73 65 72 76 65 72 20 2e 0d 0a 20   set server ... 
a910: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
a920: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
a930: 20 53 65 74 20 74 68 65 20 64 61 74 61 62 61 73   Set the databas
a940: 65 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63 65 73  e name, if neces
a950: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  sary...      #..
a960: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
a970: 20 65 78 69 73 74 73 20 64 61 74 61 62 61 73 65   exists database
a980: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a990: 20 20 20 73 65 74 20 64 61 74 61 62 61 73 65 20     set database 
a9a0: 6d 61 73 74 65 72 0d 0a 20 20 20 20 20 20 7d 0d  master..      }.
a9b0: 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
a9c0: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
a9d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 69 6d  e connection tim
a9e0: 65 6f 75 74 2c 20 69 66 20 6e 65 63 65 73 73 61  eout, if necessa
a9f0: 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ry...      #..  
aa00: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
aa10: 78 69 73 74 73 20 74 69 6d 65 6f 75 74 5d 7d 20  xists timeout]} 
aa20: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
aa30: 73 65 74 20 74 69 6d 65 6f 75 74 20 5b 65 78 70  set timeout [exp
aa40: 72 20 7b 24 74 65 73 74 5f 74 69 6d 65 6f 75 74  r {$test_timeout
aa50: 20 2f 20 31 30 30 30 7d 5d 3b 20 23 20 6d 69 6c   / 1000}]; # mil
aa60: 6c 69 73 65 63 6f 6e 64 73 20 74 6f 20 73 65 63  liseconds to sec
aa70: 6f 6e 64 73 2e 0d 0a 20 20 20 20 20 20 7d 0d 0a  onds...      }..
aa80: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
aa90: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
aaa0: 20 74 65 73 74 20 75 73 65 72 20 6e 61 6d 65 2c   test user name,
aab0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
aac0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
aad0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
aae0: 20 75 73 65 72 5d 7d 20 74 68 65 6e 20 7b 0d 0a   user]} then {..
aaf0: 20 20 20 20 20 20 20 20 73 65 74 20 75 73 65 72          set user
ab00: 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74   [getEnvironment
ab10: 56 61 72 69 61 62 6c 65 20 75 73 65 72 5d 0d 0a  Variable user]..
ab20: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ab30: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
ab40: 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20 70  : Set the test p
ab50: 61 73 73 77 6f 72 64 2c 20 69 66 20 6e 65 63 65  assword, if nece
ab60: 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d  ssary...      #.
ab70: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
ab80: 6f 20 65 78 69 73 74 73 20 70 61 73 73 77 6f 72  o exists passwor
ab90: 64 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  d]} then {..    
aba0: 20 20 20 20 73 65 74 20 70 61 73 73 77 6f 72 64      set password
abb0: 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74   [getEnvironment
abc0: 56 61 72 69 61 62 6c 65 20 70 61 73 73 77 6f 72  Variable passwor
abd0: 64 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  d]..      }.... 
abe0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
abf0: 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74 65  NOTE: Set the te
ac00: 73 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  st database conn
ac10: 65 63 74 69 6f 6e 20 74 79 70 65 2c 20 69 66 20  ection type, if 
ac20: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20  necessary...    
ac30: 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
ac40: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
ac50: 74 5f 64 61 74 61 62 61 73 65 5f 74 79 70 65 5d  t_database_type]
ac60: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
ac70: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
ac80: 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66  OTE: Use the def
ac90: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 63 6f  ault database co
aca0: 6e 6e 65 63 74 69 6f 6e 20 74 79 70 65 2e 0d 0a  nnection type...
acb0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
acc0: 20 20 20 73 65 74 20 74 65 73 74 5f 64 61 74 61     set test_data
acd0: 62 61 73 65 5f 74 79 70 65 20 53 71 6c 3b 20 23  base_type Sql; #
ace0: 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 74 65 73 74   TODO: Good test
acf0: 20 64 65 66 61 75 6c 74 3f 0d 0a 20 20 20 20 20   default?..     
ad00: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
ad10: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74       # NOTE: Set
ad20: 20 74 68 65 20 74 65 73 74 20 64 61 74 61 62 61   the test databa
ad30: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74  se connection st
ad40: 72 69 6e 67 2c 20 69 66 20 6e 65 63 65 73 73 61  ring, if necessa
ad50: 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ry...      #..  
ad60: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
ad70: 78 69 73 74 73 20 74 65 73 74 5f 64 61 74 61 62  xists test_datab
ad80: 61 73 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ase]} then {..  
ad90: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
ada0: 20 23 20 4e 4f 54 45 3a 20 4d 6f 6e 6f 20 64 6f   # NOTE: Mono do
adb0: 65 73 20 6e 6f 74 20 68 61 76 65 20 73 75 70 70  es not have supp
adc0: 6f 72 74 20 66 6f 72 20 22 74 72 75 73 74 65 64  ort for "trusted
add0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 22 3b 0d 0a   connections";..
ade0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
adf0: 74 68 65 72 65 66 6f 72 65 2c 20 77 65 20 6d 75  therefore, we mu
ae00: 73 74 20 65 6d 69 74 20 61 20 64 69 66 66 65 72  st emit a differ
ae10: 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  ent connection s
ae20: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 23  tring..        #
ae30: 20 20 20 20 20 20 20 77 68 65 6e 20 72 75 6e 6e         when runn
ae40: 69 6e 67 20 74 68 65 72 65 2e 0d 0a 20 20 20 20  ing there...    
ae50: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73      #..        s
ae60: 65 74 20 74 65 73 74 5f 64 61 74 61 62 61 73 65  et test_database
ae70: 20 5b 73 75 62 73 74 20 5c 0d 0a 20 20 20 20 20   [subst \..     
ae80: 20 20 20 20 20 20 20 7b 44 61 74 61 20 53 6f 75         {Data Sou
ae90: 72 63 65 3d 24 7b 73 65 72 76 65 72 7d 3b 49 6e  rce=${server};In
aea0: 69 74 69 61 6c 20 43 61 74 61 6c 6f 67 3d 24 7b  itial Catalog=${
aeb0: 64 61 74 61 62 61 73 65 7d 3b 43 6f 6e 6e 65 63  database};Connec
aec0: 74 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t\..            
aed0: 54 69 6d 65 6f 75 74 3d 24 7b 74 69 6d 65 6f 75  Timeout=${timeou
aee0: 74 7d 3b 5b 65 78 70 72 20 7b 5b 69 73 4d 6f 6e  t};[expr {[isMon
aef0: 6f 5d 20 3f 20 5b 73 75 62 73 74 20 5c 0d 0a 20  o] ? [subst \.. 
af00: 20 20 20 20 20 20 20 20 20 20 20 7b 55 73 65 72             {User
af10: 20 49 64 3d 24 7b 75 73 65 72 7d 3b 50 61 73 73   Id=${user};Pass
af20: 77 6f 72 64 3d 24 7b 70 61 73 73 77 6f 72 64 7d  word=${password}
af30: 3b 7d 5d 20 3a 20 7b 49 6e 74 65 67 72 61 74 65  ;}] : {Integrate
af40: 64 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d\..            
af50: 53 65 63 75 72 69 74 79 3d 53 53 50 49 3b 7d 7d  Security=SSPI;}}
af60: 5d 7d 5d 3b 20 23 20 4e 4f 54 45 3a 20 4d 69 63  ]}]; # NOTE: Mic
af70: 72 6f 73 6f 66 74 20 53 51 4c 20 53 65 72 76 65  rosoft SQL Serve
af80: 72 20 73 70 65 63 69 66 69 63 2e 0d 0a 20 20 20  r specific...   
af90: 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 5b 69 6e     } elseif {[in
afa0: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 64  fo exists test_d
afb0: 61 74 61 62 61 73 65 5f 73 75 62 73 74 5d 7d 20  atabase_subst]} 
afc0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
afd0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
afe0: 45 3a 20 54 68 65 20 74 65 73 74 20 64 61 74 61  E: The test data
aff0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
b000: 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65 20 64  string must be d
b010: 79 6e 61 6d 69 63 61 6c 6c 79 0d 0a 20 20 20 20  ynamically..    
b020: 20 20 20 20 23 20 20 20 20 20 20 20 70 6f 73 74      #       post
b030: 2d 70 72 6f 63 65 73 73 65 64 20 75 73 69 6e 67  -processed using
b040: 20 5b 73 75 62 73 74 5d 2c 20 70 65 72 20 72 65   [subst], per re
b050: 71 75 65 73 74 2e 20 20 54 68 69 73 20 61 6c 6c  quest.  This all
b060: 6f 77 73 0d 0a 20 20 20 20 20 20 20 20 23 20 20  ows..        #  
b070: 20 20 20 20 20 74 68 65 20 5b 63 75 73 74 6f 6d       the [custom
b080: 5d 20 74 65 73 74 20 64 61 74 61 62 61 73 65 20  ] test database 
b090: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
b0a0: 67 20 74 6f 20 63 6f 6e 74 61 69 6e 0d 0a 20 20  g to contain..  
b0b0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 72 65        #       re
b0c0: 66 65 72 65 6e 63 65 73 20 74 6f 20 74 68 65 20  ferences to the 
b0d0: 6f 74 68 65 72 20 74 65 73 74 20 64 61 74 61 62  other test datab
b0e0: 61 73 65 20 76 61 72 69 61 62 6c 65 73 20 73 65  ase variables se
b0f0: 74 75 70 0d 0a 20 20 20 20 20 20 20 20 23 20 20  tup..        #  
b100: 20 20 20 20 20 62 79 20 74 68 69 73 20 74 65 73       by this tes
b110: 74 20 70 72 6f 6c 6f 67 75 65 2e 0d 0a 20 20 20  t prologue...   
b120: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
b130: 73 65 74 20 74 65 73 74 5f 64 61 74 61 62 61 73  set test_databas
b140: 65 20 5b 73 75 62 73 74 20 24 74 65 73 74 5f 64  e [subst $test_d
b150: 61 74 61 62 61 73 65 5d 0d 0a 20 20 20 20 20 20  atabase]..      
b160: 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
b170: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
b180: 74 68 65 20 74 65 73 74 20 64 61 74 61 62 61 73  the test databas
b190: 65 20 74 61 62 6c 65 2c 20 69 66 20 6e 65 63 65  e table, if nece
b1a0: 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d  ssary...      #.
b1b0: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
b1c0: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 64 61  o exists test_da
b1d0: 74 61 62 61 73 65 5f 74 61 62 6c 65 5d 7d 20 74  tabase_table]} t
b1e0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
b1f0: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
b200: 3a 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c  : Use the defaul
b210: 74 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65  t database table
b220: 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
b230: 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 64        set test_d
b240: 61 74 61 62 61 73 65 5f 74 61 62 6c 65 20 65 61  atabase_table ea
b250: 67 6c 65 5f 73 71 6c 5f 74 65 73 74 5f 6f 6b 5f  gle_sql_test_ok_
b260: 74 6f 5f 64 65 6c 65 74 65 0d 0a 20 20 20 20 20  to_delete..     
b270: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
b280: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 43 61 6e       # NOTE: Can
b290: 20 77 65 20 61 63 63 65 73 73 20 74 68 65 20 63   we access the c
b2a0: 6f 6e 66 69 67 75 72 65 64 20 74 65 73 74 20 64  onfigured test d
b2b0: 61 74 61 62 61 73 65 3f 0d 0a 20 20 20 20 20 20  atabase?..      
b2c0: 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  #..      checkFo
b2d0: 72 44 61 74 61 62 61 73 65 20 24 74 65 73 74 5f  rDatabase $test_
b2e0: 63 68 61 6e 6e 65 6c 20 24 74 65 73 74 5f 64 61  channel $test_da
b2f0: 74 61 62 61 73 65 5f 74 79 70 65 20 24 74 65 73  tabase_type $tes
b300: 74 5f 64 61 74 61 62 61 73 65 0d 0a 0d 0a 20 20  t_database....  
b310: 20 20 20 20 75 6e 73 65 74 20 70 61 73 73 77 6f      unset passwo
b320: 72 64 20 75 73 65 72 20 74 69 6d 65 6f 75 74 20  rd user timeout 
b330: 64 61 74 61 62 61 73 65 20 73 65 72 76 65 72 0d  database server.
b340: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
b350: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
b360: 20 73 79 6d 62 6f 6c 20 74 65 73 74 69 6e 67 20   symbol testing 
b370: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
b380: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
b390: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
b3a0: 69 73 74 73 20 6e 6f 28 61 73 73 65 6d 62 6c 79  ists no(assembly
b3b0: 53 79 6d 62 6f 6c 73 29 5d 7d 20 74 68 65 6e 20  Symbols)]} then 
b3c0: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
b3d0: 72 53 79 6d 62 6f 6c 73 20 24 74 65 73 74 5f 63  rSymbols $test_c
b3e0: 68 61 6e 6e 65 6c 20 5b 6c 69 6e 64 65 78 20 5b  hannel [lindex [
b3f0: 69 6e 66 6f 20 61 73 73 65 6d 62 6c 79 5d 20 65  info assembly] e
b400: 6e 64 5d 20 61 73 73 65 6d 62 6c 79 0d 0a 20 20  nd] assembly..  
b410: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
b420: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6f 62    # NOTE: Has ob
b430: 6a 65 63 74 20 68 61 6e 64 6c 65 20 72 65 66 65  ject handle refe
b440: 72 65 6e 63 65 20 63 6f 75 6e 74 20 74 72 61 63  rence count trac
b450: 6b 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  king support bee
b460: 6e 20 64 69 73 61 62 6c 65 64 0d 0a 20 20 20 20  n disabled..    
b470: 23 20 20 20 20 20 20 20 28 61 74 20 63 6f 6d 70  #       (at comp
b480: 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20  ile-time)?..    
b490: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
b4a0: 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65 66 43  o exists no(refC
b4b0: 6f 75 6e 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ount)]} then {..
b4c0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
b4d0: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
b4e0: 20 22 65 78 63 65 6c 2d 2a 22 2c 20 22 6f 62 6a   "excel-*", "obj
b4f0: 65 63 74 2d 32 2e 2a 22 2c 20 22 6f 62 6a 65 63  ect-2.*", "objec
b500: 74 2d 37 2e 31 22 2c 20 22 6f 62 6a 65 63 74 2d  t-7.1", "object-
b510: 38 2e 2a 22 2c 0d 0a 20 20 20 20 20 20 23 20 20  8.*",..      #  
b520: 20 20 20 20 20 61 6e 64 20 22 6f 62 6a 65 63 74       and "object
b530: 2d 39 38 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23  -98.*"...      #
b540: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
b550: 52 65 66 65 72 65 6e 63 65 43 6f 75 6e 74 54 72  ReferenceCountTr
b560: 61 63 6b 69 6e 67 20 24 74 65 73 74 5f 63 68 61  acking $test_cha
b570: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
b580: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
b590: 3a 20 48 61 73 20 74 65 73 74 69 6e 67 20 75 73  : Has testing us
b5a0: 69 6e 67 20 74 68 65 20 43 23 20 63 6f 6d 70 69  ing the C# compi
b5b0: 6c 65 72 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ler been disable
b5c0: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
b5d0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
b5e0: 20 6e 6f 28 63 68 65 63 6b 46 6f 72 43 6f 6d 70   no(checkForComp
b5f0: 69 6c 65 43 53 68 61 72 70 29 5d 7d 20 74 68 65  ileCSharp)]} the
b600: 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
b610: 46 6f 72 43 6f 6d 70 69 6c 65 43 53 68 61 72 70  ForCompileCSharp
b620: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
b630: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
b640: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
b650: 63 6f 6d 70 69 6c 65 2f 72 75 6e 74 69 6d 65 20  compile/runtime 
b660: 6f 70 74 69 6f 6e 20 74 65 73 74 69 6e 67 20 73  option testing s
b670: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
b680: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
b690: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
b6a0: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4f 70  sts no(compileOp
b6b0: 74 69 6f 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  tions)]} then {.
b6c0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
b6d0: 23 20 4e 4f 54 45 3a 20 48 61 73 20 22 6b 6e 6f  # NOTE: Has "kno
b6e0: 77 6e 22 20 63 6f 6d 70 69 6c 65 20 6f 70 74 69  wn" compile opti
b6f0: 6f 6e 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  on testing suppo
b700: 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
b710: 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ?..      #..    
b720: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
b730: 73 74 73 20 6e 6f 28 6b 6e 6f 77 6e 43 6f 6d 70  sts no(knownComp
b740: 69 6c 65 4f 70 74 69 6f 6e 73 29 5d 7d 20 74 68  ileOptions)]} th
b750: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
b760: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
b770: 20 43 68 65 63 6b 20 66 6f 72 20 61 6c 6c 20 22   Check for all "
b780: 6b 6e 6f 77 6e 22 20 63 6f 6d 70 69 6c 65 20 6f  known" compile o
b790: 70 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20  ptions...       
b7a0: 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
b7b0: 6b 46 6f 72 4b 6e 6f 77 6e 43 6f 6d 70 69 6c 65  kForKnownCompile
b7c0: 4f 70 74 69 6f 6e 73 20 24 74 65 73 74 5f 63 68  Options $test_ch
b7d0: 61 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 20 65  annel..      } e
b7e0: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  lse {..        #
b7f0: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
b800: 3a 20 48 61 73 20 63 61 6c 6c 62 61 63 6b 20 71  : Has callback q
b810: 75 65 75 65 20 73 75 70 70 6f 72 74 20 62 65 65  ueue support bee
b820: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
b830: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
b840: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
b850: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
b860: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 43 61 6c  ts no(compileCal
b870: 6c 62 61 63 6b 51 75 65 75 65 29 5d 7d 20 74 68  lbackQueue)]} th
b880: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
b890: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
b8a0: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
b8b0: 62 61 73 69 63 2d 31 2e 35 34 22 20 61 6e 64 20  basic-1.54" and 
b8c0: 22 63 6f 6d 6d 61 6e 64 73 2d 31 2e 34 22 2e 0d  "commands-1.4"..
b8d0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
b8e0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
b8f0: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74  CompileOption $t
b900: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 43 41 4c 4c  est_channel CALL
b910: 42 41 43 4b 5f 51 55 45 55 45 0d 0a 20 20 20 20  BACK_QUEUE..    
b920: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b930: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
b940: 54 45 3a 20 48 61 73 20 6c 65 67 61 63 79 20 43  TE: Has legacy C
b950: 41 53 20 70 6f 6c 69 63 79 20 73 75 70 70 6f 72  AS policy suppor
b960: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
b970: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
b980: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
b990: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
b9a0: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
b9b0: 6c 65 43 61 73 50 6f 6c 69 63 79 29 5d 7d 20 74  leCasPolicy)]} t
b9c0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
b9d0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
b9e0: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
b9f0: 22 6c 6f 61 64 2d 31 2e 36 22 20 61 6e 64 20 22  "load-1.6" and "
ba00: 6c 6f 61 64 2d 31 2e 37 22 2e 0d 0a 20 20 20 20  load-1.7"...    
ba10: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
ba20: 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69     checkForCompi
ba30: 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63  leOption $test_c
ba40: 68 61 6e 6e 65 6c 20 43 41 53 5f 50 4f 4c 49 43  hannel CAS_POLIC
ba50: 59 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  Y..        }....
ba60: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ba70: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63     # NOTE: Has c
ba80: 6f 6e 73 6f 6c 65 20 73 75 70 70 6f 72 74 20 62  onsole support b
ba90: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
baa0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
bab0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
bac0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
bad0: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 43  ists no(compileC
bae0: 6f 6e 73 6f 6c 65 29 5d 7d 20 74 68 65 6e 20 7b  onsole)]} then {
baf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
bb00: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
bb10: 20 46 6f 72 20 74 65 73 74 20 22 68 6f 73 74 2d   For test "host-
bb20: 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  1.2"...         
bb30: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
bb40: 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
bb50: 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
bb60: 6c 20 43 4f 4e 53 4f 4c 45 0d 0a 20 20 20 20 20  l CONSOLE..     
bb70: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
bb80: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
bb90: 45 3a 20 48 61 73 20 64 61 74 61 62 61 73 65 20  E: Has database 
bba0: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
bbb0: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
bbc0: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
bbd0: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
bbe0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
bbf0: 28 63 6f 6d 70 69 6c 65 44 61 74 61 29 5d 7d 20  (compileData)]} 
bc00: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
bc10: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
bc20: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
bc30: 20 22 73 71 6c 2d 31 2e 31 22 20 61 6e 64 20 22   "sql-1.1" and "
bc40: 75 70 76 61 72 2d 39 39 2e 31 22 2e 0d 0a 20 20  upvar-99.1"...  
bc50: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
bc60: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
bc70: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
bc80: 5f 63 68 61 6e 6e 65 6c 20 44 41 54 41 0d 0a 20  _channel DATA.. 
bc90: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
bca0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
bcb0: 20 4e 4f 54 45 3a 20 48 61 73 20 73 63 72 69 70   NOTE: Has scrip
bcc0: 74 20 64 65 62 75 67 67 65 72 20 73 75 70 70 6f  t debugger suppo
bcd0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
bce0: 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  (at compile-time
bcf0: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
bd00: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
bd10: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
bd20: 69 6c 65 44 65 62 75 67 67 65 72 29 5d 7d 20 74  ileDebugger)]} t
bd30: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
bd40: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
bd50: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
bd60: 22 64 65 62 75 67 2d 31 2e 31 22 2c 20 22 64 65  "debug-1.1", "de
bd70: 62 75 67 2d 32 2e 31 22 2c 20 22 64 65 62 75 67  bug-2.1", "debug
bd80: 2d 33 2e 31 22 2c 0d 0a 20 20 20 20 20 20 20 20  -3.1",..        
bd90: 20 20 23 20 20 20 20 20 20 20 22 64 65 62 75 67    #       "debug
bda0: 2d 34 2e 31 22 2c 20 61 6e 64 20 22 70 72 6f 63  -4.1", and "proc
bdb0: 2d 32 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20  -2.1"...        
bdc0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
bdd0: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
bde0: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
bdf0: 65 6c 20 44 45 42 55 47 47 45 52 0d 0a 20 20 20  el DEBUGGER..   
be00: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
be10: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
be20: 4f 54 45 3a 20 48 61 73 20 73 63 72 69 70 74 20  OTE: Has script 
be30: 64 65 62 75 67 67 65 72 20 61 72 67 75 6d 65 6e  debugger argumen
be40: 74 73 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ts support been 
be50: 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a 20 20 20  enabled (at..   
be60: 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d       #       com
be70: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
be80: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
be90: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
bea0: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 44 65 62 75  s no(compileDebu
beb0: 67 67 65 72 41 72 67 75 6d 65 6e 74 73 29 5d 7d  ggerArguments)]}
bec0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
bed0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
bee0: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
bef0: 73 20 22 6f 62 6a 65 63 74 2d 35 2e 31 2e 2a 22  s "object-5.1.*"
bf00: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
bf10: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
bf20: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
bf30: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 44 45  $test_channel DE
bf40: 42 55 47 47 45 52 5f 41 52 47 55 4d 45 4e 54 53  BUGGER_ARGUMENTS
bf50: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
bf60: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
bf70: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 63    # NOTE: Has sc
bf80: 72 69 70 74 20 62 72 65 61 6b 70 6f 69 6e 74 20  ript breakpoint 
bf90: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
bfa0: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
bfb0: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
bfc0: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
bfd0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
bfe0: 28 63 6f 6d 70 69 6c 65 42 72 65 61 6b 70 6f 69  (compileBreakpoi
bff0: 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  nts)]} then {.. 
c000: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
c010: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
c020: 72 20 74 65 73 74 20 22 70 72 6f 63 2d 32 2e 31  r test "proc-2.1
c030: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
c040: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
c050: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
c060: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 42   $test_channel B
c070: 52 45 41 4b 50 4f 49 4e 54 53 0d 0a 20 20 20 20  REAKPOINTS..    
c080: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c090: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
c0a0: 54 45 3a 20 48 61 73 20 61 70 70 6c 69 63 61 74  TE: Has applicat
c0b0: 69 6f 6e 20 64 6f 6d 61 69 6e 20 6d 61 6e 61 67  ion domain manag
c0c0: 65 6d 65 6e 74 20 73 75 70 70 6f 72 74 20 62 65  ement support be
c0d0: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a  en enabled (at..
c0e0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
c0f0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
c100: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c110: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
c120: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 41  ists no(compileA
c130: 70 70 44 6f 6d 61 69 6e 73 29 5d 7d 20 74 68 65  ppDomains)]} the
c140: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
c150: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
c160: 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69 6e  TE: For test "in
c170: 74 65 72 70 2d 31 2e 32 37 22 2e 0d 0a 20 20 20  terp-1.27"...   
c180: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c190: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
c1a0: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
c1b0: 63 68 61 6e 6e 65 6c 20 41 50 50 44 4f 4d 41 49  channel APPDOMAI
c1c0: 4e 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  NS..        }...
c1d0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
c1e0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
c1f0: 69 73 6f 6c 61 74 65 64 20 69 6e 74 65 72 70 72  isolated interpr
c200: 65 74 65 72 20 73 75 70 70 6f 72 74 20 62 65 65  eter support bee
c210: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
c220: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
c230: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
c240: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
c250: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 49 73 6f  ts no(compileIso
c260: 6c 61 74 65 64 49 6e 74 65 72 70 72 65 74 65 72  latedInterpreter
c270: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
c280: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c290: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
c2a0: 74 65 73 74 20 22 78 61 6d 6c 2d 31 2e 32 22 2e  test "xaml-1.2".
c2b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
c2c0: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
c2d0: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
c2e0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 49 53 4f  test_channel ISO
c2f0: 4c 41 54 45 44 5f 49 4e 54 45 52 50 52 45 54 45  LATED_INTERPRETE
c300: 52 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  RS..        }...
c310: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
c320: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
c330: 65 78 70 72 65 73 73 69 6f 6e 20 66 6c 61 67 73  expression flags
c340: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
c350: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
c360: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
c370: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
c380: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
c390: 6f 28 63 6f 6d 70 69 6c 65 45 78 70 72 65 73 73  o(compileExpress
c3a0: 69 6f 6e 46 6c 61 67 73 29 5d 7d 20 74 68 65 6e  ionFlags)]} then
c3b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
c3c0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
c3d0: 45 3a 20 46 6f 72 20 74 65 73 74 20 22 66 75 6e  E: For test "fun
c3e0: 63 74 69 6f 6e 2d 32 2e 31 36 22 2e 0d 0a 20 20  ction-2.16"...  
c3f0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c400: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
c410: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
c420: 5f 63 68 61 6e 6e 65 6c 20 45 58 50 52 45 53 53  _channel EXPRESS
c430: 49 4f 4e 5f 46 4c 41 47 53 0d 0a 20 20 20 20 20  ION_FLAGS..     
c440: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
c450: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
c460: 45 3a 20 48 61 73 20 69 73 6f 6c 61 74 65 64 20  E: Has isolated 
c470: 70 6c 75 67 69 6e 20 73 75 70 70 6f 72 74 20 62  plugin support b
c480: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
c490: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
c4a0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c4b0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
c4c0: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 49  ists no(compileI
c4d0: 73 6f 6c 61 74 65 64 50 6c 75 67 69 6e 73 29 5d  solatedPlugins)]
c4e0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
c4f0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
c500: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
c510: 74 20 22 6c 6f 61 64 2d 31 2e 31 2e 31 22 2e 0d  t "load-1.1.1"..
c520: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
c530: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
c540: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74  CompileOption $t
c550: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 49 53 4f 4c  est_channel ISOL
c560: 41 54 45 44 5f 50 4c 55 47 49 4e 53 0d 0a 20 20  ATED_PLUGINS..  
c570: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c580: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
c590: 4e 4f 54 45 3a 20 48 61 73 20 50 6f 77 65 72 53  NOTE: Has PowerS
c5a0: 68 65 6c 6c 20 61 70 70 72 6f 76 65 64 2d 76 65  hell approved-ve
c5b0: 72 62 73 20 73 75 70 70 6f 72 74 20 62 65 65 6e  rbs support been
c5c0: 20 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a 20 20   enabled (at..  
c5d0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f        #       co
c5e0: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
c5f0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
c600: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
c610: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 41 70 70  ts no(compileApp
c620: 72 6f 76 65 64 56 65 72 62 73 29 5d 7d 20 74 68  rovedVerbs)]} th
c630: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
c640: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
c650: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
c660: 62 6a 65 63 74 2d 34 2e 38 22 2e 0d 0a 20 20 20  bject-4.8"...   
c670: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c680: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
c690: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
c6a0: 63 68 61 6e 6e 65 6c 20 41 50 50 52 4f 56 45 44  channel APPROVED
c6b0: 5f 56 45 52 42 53 0d 0a 20 20 20 20 20 20 20 20  _VERBS..        
c6c0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
c6d0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
c6e0: 48 61 73 20 4d 6f 6e 6f 20 73 75 70 70 6f 72 74  Has Mono support
c6f0: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61   been enabled (a
c700: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f  t compile-time)?
c710: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
c720: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
c730: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
c740: 65 4d 6f 6e 6f 29 5d 7d 20 74 68 65 6e 20 7b 0d  eMono)]} then {.
c750: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
c760: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
c770: 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74  For test "object
c780: 2d 34 2e 31 33 22 2e 0d 0a 20 20 20 20 20 20 20  -4.13"...       
c790: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
c7a0: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
c7b0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
c7c0: 6e 65 6c 20 4d 4f 4e 4f 0d 0a 20 20 20 20 20 20  nel MONO..      
c7d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
c7e0: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
c7f0: 3a 20 48 61 73 20 57 69 6e 64 6f 77 73 20 73 75  : Has Windows su
c800: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
c810: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
c820: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
c830: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
c840: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
c850: 6f 6d 70 69 6c 65 57 69 6e 64 6f 77 73 29 5d 7d  ompileWindows)]}
c860: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
c870: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
c880: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
c890: 73 20 22 67 61 72 75 64 61 2d 31 2e 31 22 20 61  s "garuda-1.1" a
c8a0: 6e 64 20 22 67 61 72 75 64 61 2d 31 2e 32 22 2e  nd "garuda-1.2".
c8b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
c8c0: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
c8d0: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
c8e0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 57 49 4e  test_channel WIN
c8f0: 44 4f 57 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d  DOWS..        }.
c900: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
c910: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
c920: 73 20 57 69 6e 64 6f 77 73 20 46 6f 72 6d 73 20  s Windows Forms 
c930: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
c940: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
c950: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
c960: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
c970: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
c980: 28 63 6f 6d 70 69 6c 65 57 69 6e 46 6f 72 6d 73  (compileWinForms
c990: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
c9a0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
c9b0: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
c9c0: 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 31 30 2e  ests "object-10.
c9d0: 32 31 22 2c 20 22 74 63 6c 4c 6f 61 64 2d 31 2e  21", "tclLoad-1.
c9e0: 32 22 2c 20 22 77 69 6e 46 6f 72 6d 73 2d 2a 2e  2", "winForms-*.
c9f0: 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  *"...          #
ca00: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
ca10: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
ca20: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
ca30: 57 49 4e 46 4f 52 4d 53 0d 0a 20 20 20 20 20 20  WINFORMS..      
ca40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
ca50: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
ca60: 3a 20 48 61 73 20 6e 61 74 69 76 65 20 6c 69 62  : Has native lib
ca70: 72 61 72 79 20 73 75 70 70 6f 72 74 20 62 65 65  rary support bee
ca80: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
ca90: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
caa0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
cab0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
cac0: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4c 69 62  ts no(compileLib
cad0: 72 61 72 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  rary)]} then {..
cae0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
caf0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
cb00: 6f 72 20 74 65 73 74 73 20 22 63 6f 6d 6d 61 6e  or tests "comman
cb10: 64 73 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  ds-1.*"...      
cb20: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
cb30: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
cb40: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
cb50: 6e 6e 65 6c 20 4c 49 42 52 41 52 59 0d 0a 20 20  nnel LIBRARY..  
cb60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
cb70: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
cb80: 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65  NOTE: Has native
cb90: 20 63 6f 64 65 20 73 75 70 70 6f 72 74 20 62 65   code support be
cba0: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63  en enabled (at c
cbb0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
cbc0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
cbd0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
cbe0: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e 61  sts no(compileNa
cbf0: 74 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  tive)]} then {..
cc00: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
cc10: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
cc20: 6f 72 20 74 65 73 74 73 20 22 64 65 62 75 67 2d  or tests "debug-
cc30: 33 2e 32 22 2c 20 22 65 78 70 72 2d 33 2e 32 22  3.2", "expr-3.2"
cc40: 2c 20 61 6e 64 20 22 68 6f 73 74 2d 31 2e 31 22  , and "host-1.1"
cc50: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
cc60: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
cc70: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
cc80: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 41  $test_channel NA
cc90: 54 49 56 45 0d 0a 20 20 20 20 20 20 20 20 7d 0d  TIVE..        }.
cca0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
ccb0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
ccc0: 73 20 6e 61 74 69 76 65 20 70 61 63 6b 61 67 65  s native package
ccd0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
cce0: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
ccf0: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
cd00: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
cd10: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
cd20: 6f 28 63 6f 6d 70 69 6c 65 4e 61 74 69 76 65 50  o(compileNativeP
cd30: 61 63 6b 61 67 65 29 5d 7d 20 74 68 65 6e 20 7b  ackage)]} then {
cd40: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
cd50: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
cd60: 20 46 6f 72 20 74 65 73 74 73 20 22 67 61 72 75   For tests "garu
cd70: 64 61 2d 31 2e 31 22 20 61 6e 64 20 22 67 61 72  da-1.1" and "gar
cd80: 75 64 61 2d 31 2e 32 22 2e 0d 0a 20 20 20 20 20  uda-1.2"...     
cd90: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
cda0: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
cdb0: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
cdc0: 61 6e 6e 65 6c 20 4e 41 54 49 56 45 5f 50 41 43  annel NATIVE_PAC
cdd0: 4b 41 47 45 0d 0a 20 20 20 20 20 20 20 20 7d 0d  KAGE..        }.
cde0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
cdf0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
ce00: 73 20 6e 65 74 77 6f 72 6b 20 73 75 70 70 6f 72  s network suppor
ce10: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
ce20: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
ce30: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
ce40: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
ce50: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
ce60: 6c 65 4e 65 74 77 6f 72 6b 29 5d 7d 20 74 68 65  leNetwork)]} the
ce70: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
ce80: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
ce90: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63  TE: For tests "c
cea0: 6f 6d 6d 61 6e 64 73 2d 31 2e 34 22 2c 20 22 73  ommands-1.4", "s
ceb0: 6f 63 6b 65 74 2d 31 2e 2a 22 2c 20 22 73 6f 63  ocket-1.*", "soc
cec0: 6b 65 74 2d 32 2e 31 22 2c 20 61 6e 64 0d 0a 20  ket-2.1", and.. 
ced0: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
cee0: 20 22 73 6f 63 6b 65 74 2d 33 2e 31 22 2e 0d 0a   "socket-3.1"...
cef0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
cf00: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
cf10: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
cf20: 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 45 54 57 4f  st_channel NETWO
cf30: 52 4b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  RK..        }...
cf40: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
cf50: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
cf60: 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20 73 75 70  notification sup
cf70: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
cf80: 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  d (at compile-ti
cf90: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
cfa0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
cfb0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
cfc0: 6d 70 69 6c 65 4e 6f 74 69 66 79 29 5d 7d 20 74  mpileNotify)]} t
cfd0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
cfe0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
cff0: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
d000: 62 61 73 69 63 2d 31 2e 37 35 22 2e 0d 0a 20 20  basic-1.75"...  
d010: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d020: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
d030: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
d040: 5f 63 68 61 6e 6e 65 6c 20 4e 4f 54 49 46 59 0d  _channel NOTIFY.
d050: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
d060: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
d070: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 6f 74   # NOTE: Has not
d080: 69 66 69 63 61 74 69 6f 6e 20 61 72 67 75 6d 65  ification argume
d090: 6e 74 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  nt support been 
d0a0: 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a 20 20 20  enabled (at..   
d0b0: 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d       #       com
d0c0: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
d0d0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
d0e0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
d0f0: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e 6f 74 69  s no(compileNoti
d100: 66 79 41 72 67 75 6d 65 6e 74 73 29 5d 7d 20 74  fyArguments)]} t
d110: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
d120: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
d130: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
d140: 62 61 73 69 63 2d 31 2e 37 35 22 2e 0d 0a 20 20  basic-1.75"...  
d150: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d160: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
d170: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
d180: 5f 63 68 61 6e 6e 65 6c 20 4e 4f 54 49 46 59 5f  _channel NOTIFY_
d190: 41 52 47 55 4d 45 4e 54 53 0d 0a 20 20 20 20 20  ARGUMENTS..     
d1a0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d1b0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
d1c0: 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 54 63  E: Has native Tc
d1d0: 6c 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  l support been e
d1e0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
d1f0: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
d200: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
d210: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
d220: 6e 6f 28 63 6f 6d 70 69 6c 65 54 63 6c 29 5d 7d  no(compileTcl)]}
d230: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
d240: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
d250: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
d260: 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31 2e 31 2e  s "commands-1.1.
d270: 2a 22 2c 20 22 65 78 63 65 6c 2d 32 2e 32 22 2c  *", "excel-2.2",
d280: 20 22 74 63 6c 43 61 6e 63 65 6c 2d 31 2e 31 22   "tclCancel-1.1"
d290: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  ,..          #  
d2a0: 20 20 20 20 20 22 74 63 6c 45 6e 63 6f 64 69 6e       "tclEncodin
d2b0: 67 2d 31 2e 2a 22 2c 20 22 74 63 6c 45 72 72 6f  g-1.*", "tclErro
d2c0: 72 49 6e 66 6f 2d 31 2e 2a 22 2c 20 22 74 63 6c  rInfo-1.*", "tcl
d2d0: 4c 6f 61 64 2d 2a 2e 2a 22 2c 0d 0a 20 20 20 20  Load-*.*",..    
d2e0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 22 74        #       "t
d2f0: 63 6c 52 65 73 65 74 43 61 6e 63 65 6c 2d 31 2e  clResetCancel-1.
d300: 31 22 2c 20 22 74 63 6c 52 65 73 65 74 43 61 6e  1", "tclResetCan
d310: 63 65 6c 2d 32 2e 31 22 2c 0d 0a 20 20 20 20 20  cel-2.1",..     
d320: 20 20 20 20 20 23 20 20 20 20 20 20 20 22 74 63       #       "tc
d330: 6c 52 65 73 65 74 43 61 6e 63 65 6c 2d 32 2e 32  lResetCancel-2.2
d340: 22 2c 20 22 74 63 6c 52 65 73 65 74 43 61 6e 63  ", "tclResetCanc
d350: 65 6c 2d 33 2e 31 22 2c 0d 0a 20 20 20 20 20 20  el-3.1",..      
d360: 20 20 20 20 23 20 20 20 20 20 20 20 22 74 63 6c      #       "tcl
d370: 52 65 73 65 74 43 61 6e 63 65 6c 2d 34 2e 31 22  ResetCancel-4.1"
d380: 2c 20 22 74 63 6c 53 65 74 2d 31 2e 31 22 2c 20  , "tclSet-1.1", 
d390: 61 6e 64 20 22 74 63 6c 53 75 62 73 74 2d 31 2e  and "tclSubst-1.
d3a0: 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  1"...          #
d3b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
d3c0: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
d3d0: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
d3e0: 54 43 4c 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  TCL..        }..
d3f0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
d400: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
d410: 20 58 4d 4c 20 73 75 70 70 6f 72 74 20 62 65 65   XML support bee
d420: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
d430: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
d440: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
d450: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
d460: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 58 6d 6c  ts no(compileXml
d470: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
d480: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
d490: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
d4a0: 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31  ests "commands-1
d4b0: 2e 34 22 2c 20 22 6f 62 6a 65 63 74 2d 37 2e 33  .4", "object-7.3
d4c0: 22 20 61 6e 64 20 22 78 6d 6c 2d 31 2e 31 2e 2a  " and "xml-1.1.*
d4d0: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
d4e0: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
d4f0: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
d500: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 58   $test_channel X
d510: 4d 4c 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ML..        }...
d520: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
d530: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
d540: 73 65 72 69 61 6c 69 7a 61 74 69 6f 6e 20 73 75  serialization su
d550: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
d560: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
d570: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
d580: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
d590: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
d5a0: 6f 6d 70 69 6c 65 53 65 72 69 61 6c 69 7a 61 74  ompileSerializat
d5b0: 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ion)]} then {.. 
d5c0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
d5d0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
d5e0: 72 20 74 65 73 74 20 22 69 6e 74 65 72 70 2d 31  r test "interp-1
d5f0: 2e 31 30 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  .10"...         
d600: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
d610: 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
d620: 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
d630: 6c 20 53 45 52 49 41 4c 49 5a 41 54 49 4f 4e 0d  l SERIALIZATION.
d640: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
d650: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
d660: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 64 65 64   # NOTE: Has ded
d670: 69 63 61 74 65 64 20 74 65 73 74 20 73 75 70 70  icated test supp
d680: 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  ort been enabled
d690: 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   (at compile-tim
d6a0: 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e)?..        #..
d6b0: 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e          if {![in
d6c0: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d  fo exists no(com
d6d0: 70 69 6c 65 54 65 73 74 29 5d 7d 20 74 68 65 6e  pileTest)]} then
d6e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
d6f0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
d700: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61  E: For tests "ba
d710: 73 69 63 2d 31 2e 32 30 22 2c 20 22 62 61 73 69  sic-1.20", "basi
d720: 63 2d 31 2e 32 31 22 2c 20 22 66 75 6e 63 74 69  c-1.21", "functi
d730: 6f 6e 2d 31 2e 31 22 2c 0d 0a 20 20 20 20 20 20  on-1.1",..      
d740: 20 20 20 20 23 20 20 20 20 20 20 20 22 6f 62 6a      #       "obj
d750: 65 63 74 2d 32 2e 31 22 2c 20 22 6f 62 6a 65 63  ect-2.1", "objec
d760: 74 2d 33 2e 31 22 2c 20 22 6f 62 6a 65 63 74 2d  t-3.1", "object-
d770: 34 2e 31 22 2c 20 22 6f 62 6a 65 63 74 2d 37 2e  4.1", "object-7.
d780: 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 23  1",..          #
d790: 20 20 20 20 20 20 20 22 6f 62 6a 65 63 74 2d 37         "object-7
d7a0: 2e 32 22 2c 20 22 6f 62 6a 65 63 74 2d 37 2e 34  .2", "object-7.4
d7b0: 22 2c 20 22 6f 62 6a 65 63 74 2d 31 34 2e 34 22  ", "object-14.4"
d7c0: 2c 20 22 6f 62 6a 65 63 74 2d 31 34 2e 35 22 2c  , "object-14.5",
d7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
d7e0: 20 20 20 20 22 6f 62 6a 65 63 74 2d 31 34 2e 36      "object-14.6
d7f0: 22 2c 20 22 72 65 6d 6f 74 69 6e 67 53 65 72 76  ", "remotingServ
d800: 65 72 2d 31 2e 2a 22 2c 20 61 6e 64 20 22 64 65  er-1.*", and "de
d810: 62 75 67 2d 35 2e 2a 22 2e 0d 0a 20 20 20 20 20  bug-5.*"...     
d820: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
d830: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
d840: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
d850: 61 6e 6e 65 6c 20 54 45 53 54 0d 0a 20 20 20 20  annel TEST..    
d860: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
d870: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
d880: 54 45 3a 20 48 61 73 20 74 68 72 65 61 64 69 6e  TE: Has threadin
d890: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  g support been e
d8a0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
d8b0: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
d8c0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
d8d0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
d8e0: 6e 6f 28 63 6f 6d 70 69 6c 65 54 68 72 65 61 64  no(compileThread
d8f0: 69 6e 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ing)]} then {.. 
d900: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
d910: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
d920: 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d  r tests "object-
d930: 31 30 2e 32 22 20 61 6e 64 20 22 6f 62 6a 65 63  10.2" and "objec
d940: 74 2d 31 30 2e 33 22 2e 0d 0a 20 20 20 20 20 20  t-10.3"...      
d950: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
d960: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
d970: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
d980: 6e 6e 65 6c 20 54 48 52 45 41 44 49 4e 47 0d 0a  nnel THREADING..
d990: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d9a0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
d9b0: 23 20 4e 4f 54 45 3a 20 48 61 73 20 54 63 6c 20  # NOTE: Has Tcl 
d9c0: 74 68 72 65 61 64 69 6e 67 20 73 75 70 70 6f 72  threading suppor
d9d0: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
d9e0: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
d9f0: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
da00: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
da10: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
da20: 6c 65 54 63 6c 54 68 72 65 61 64 65 64 29 5d 7d  leTclThreaded)]}
da30: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
da40: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
da50: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
da60: 73 20 22 74 63 6c 4c 6f 61 64 2d 33 2e 2a 22 2e  s "tclLoad-3.*".
da70: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
da80: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
da90: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
daa0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 54 43 4c  test_channel TCL
dab0: 5f 54 48 52 45 41 44 45 44 0d 0a 20 20 20 20 20  _THREADED..     
dac0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
dad0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
dae0: 45 3a 20 48 61 73 20 54 63 6c 20 69 73 6f 6c 61  E: Has Tcl isola
daf0: 74 65 64 20 69 6e 74 65 72 70 72 65 74 65 72 20  ted interpreter 
db00: 74 68 72 65 61 64 20 73 75 70 70 6f 72 74 20 62  thread support b
db10: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d  een enabled (at.
db20: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
db30: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
db40: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
db50: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
db60: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
db70: 54 63 6c 54 68 72 65 61 64 73 29 5d 7d 20 74 68  TclThreads)]} th
db80: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
db90: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
dba0: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
dbb0: 74 63 6c 4c 6f 61 64 2d 33 2e 2a 22 2e 0d 0a 20  tclLoad-3.*"... 
dbc0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
dbd0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
dbe0: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
dbf0: 74 5f 63 68 61 6e 6e 65 6c 20 54 43 4c 5f 54 48  t_channel TCL_TH
dc00: 52 45 41 44 53 0d 0a 20 20 20 20 20 20 20 20 7d  READS..        }
dc10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
dc20: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48         # NOTE: H
dc30: 61 73 20 47 44 49 2b 20 64 72 61 77 69 6e 67 20  as GDI+ drawing 
dc40: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
dc50: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
dc60: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
dc70: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
dc80: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
dc90: 28 63 6f 6d 70 69 6c 65 44 72 61 77 69 6e 67 29  (compileDrawing)
dca0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
dcb0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
dcc0: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
dcd0: 5f 63 68 61 6e 6e 65 6c 20 44 52 41 57 49 4e 47  _channel DRAWING
dce0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
dcf0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
dd00: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 57 69    # NOTE: Has Wi
dd10: 6e 46 6f 72 6d 73 20 73 75 70 70 6f 72 74 20 62  nForms support b
dd20: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
dd30: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
dd40: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
dd50: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
dd60: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 57  ists no(compileW
dd70: 69 6e 46 6f 72 6d 73 29 5d 7d 20 74 68 65 6e 20  inForms)]} then 
dd80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65  {..          che
dd90: 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69  ckForCompileOpti
dda0: 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  on $test_channel
ddb0: 20 57 49 4e 46 4f 52 4d 53 0d 0a 20 20 20 20 20   WINFORMS..     
ddc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
ddd0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
dde0: 45 3a 20 48 61 73 20 72 75 6e 74 69 6d 65 20 6c  E: Has runtime l
ddf0: 69 63 65 6e 73 65 20 63 68 65 63 6b 69 6e 67 20  icense checking 
de00: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
de10: 61 62 6c 65 64 20 28 61 74 0d 0a 20 20 20 20 20  abled (at..     
de20: 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d 70 69     #       compi
de30: 6c 65 2d 74 69 6d 65 29 3f 20 20 54 68 69 73 20  le-time)?  This 
de40: 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 6f 20  only applies to 
de50: 74 68 69 72 64 2d 70 61 72 74 79 20 70 6c 75 67  third-party plug
de60: 69 6e 73 0d 0a 20 20 20 20 20 20 20 20 23 20 20  ins..        #  
de70: 20 20 20 20 20 61 6e 64 20 61 70 70 6c 69 63 61       and applica
de80: 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20  tions...        
de90: 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  #..        if {!
dea0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
deb0: 63 6f 6d 70 69 6c 65 4c 69 63 65 6e 73 69 6e 67  compileLicensing
dec0: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
ded0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
dee0: 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20     # NOTE: This 
def0: 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79  is not currently
df00: 20 75 73 65 64 20 62 79 20 61 6e 79 20 74 65 73   used by any tes
df10: 74 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  ts...          #
df20: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
df30: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
df40: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
df50: 4c 49 43 45 4e 53 49 4e 47 0d 0a 20 20 20 20 20  LICENSING..     
df60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
df70: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
df80: 45 3a 20 48 61 73 20 72 75 6e 74 69 6d 65 20 22  E: Has runtime "
df90: 6c 69 6d 69 74 65 64 20 65 64 69 74 69 6f 6e 22  limited edition"
dfa0: 20 63 68 65 63 6b 69 6e 67 20 73 75 70 70 6f 72   checking suppor
dfb0: 74 20 62 65 65 6e 0d 0a 20 20 20 20 20 20 20 20  t been..        
dfc0: 23 20 20 20 20 20 20 20 64 69 73 61 62 6c 65 64  #       disabled
dfd0: 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   (at compile-tim
dfe0: 65 29 3f 20 20 54 68 69 73 20 6f 6e 6c 79 20 61  e)?  This only a
dff0: 70 70 6c 69 65 73 20 74 6f 0d 0a 20 20 20 20 20  pplies to..     
e000: 20 20 20 23 20 20 20 20 20 20 20 74 68 69 72 64     #       third
e010: 2d 70 61 72 74 79 20 70 6c 75 67 69 6e 73 20 61  -party plugins a
e020: 6e 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  nd applications.
e030: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
e040: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
e050: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
e060: 65 4c 69 6d 69 74 65 64 45 64 69 74 69 6f 6e 29  eLimitedEdition)
e070: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
e080: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
e090: 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69    # NOTE: This i
e0a0: 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20  s not currently 
e0b0: 75 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74  used by any test
e0c0: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  s...          #.
e0d0: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
e0e0: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
e0f0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4c   $test_channel L
e100: 49 4d 49 54 45 44 5f 45 44 49 54 49 4f 4e 0d 0a  IMITED_EDITION..
e110: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
e120: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
e130: 23 20 4e 4f 54 45 3a 20 48 61 73 20 72 75 6e 74  # NOTE: Has runt
e140: 69 6d 65 20 22 64 65 6d 6f 20 65 64 69 74 69 6f  ime "demo editio
e150: 6e 22 20 63 68 65 63 6b 69 6e 67 20 73 75 70 70  n" checking supp
e160: 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20 20 20 20  ort been..      
e170: 20 20 23 20 20 20 20 20 20 20 64 69 73 61 62 6c    #       disabl
e180: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
e190: 69 6d 65 29 3f 20 20 54 68 69 73 20 6f 6e 6c 79  ime)?  This only
e1a0: 20 61 70 70 6c 69 65 73 20 74 6f 0d 0a 20 20 20   applies to..   
e1b0: 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68 69       #       thi
e1c0: 72 64 2d 70 61 72 74 79 20 70 6c 75 67 69 6e 73  rd-party plugins
e1d0: 20 61 6e 64 20 61 70 70 6c 69 63 61 74 69 6f 6e   and application
e1e0: 73 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  s...        #.. 
e1f0: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
e200: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
e210: 69 6c 65 44 65 6d 6f 45 64 69 74 69 6f 6e 29 5d  ileDemoEdition)]
e220: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
e230: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
e240: 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73   # NOTE: This is
e250: 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
e260: 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73  sed by any tests
e270: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
e280: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
e290: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
e2a0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 44 45  $test_channel DE
e2b0: 4d 4f 5f 45 44 49 54 49 4f 4e 0d 0a 20 20 20 20  MO_EDITION..    
e2c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
e2d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
e2e0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
e2f0: 64 79 6e 61 6d 69 63 20 6c 6f 61 64 69 6e 67 20  dynamic loading 
e300: 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
e310: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
e320: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
e330: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
e340: 64 79 6e 61 6d 69 63 29 5d 7d 20 74 68 65 6e 20  dynamic)]} then 
e350: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
e360: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
e370: 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31 2e  sts "commands-1.
e380: 31 2e 2a 22 2c 20 22 6c 69 62 72 61 72 79 2d 33  1.*", "library-3
e390: 2e 2a 22 2c 20 61 6e 64 20 22 74 63 6c 2a 2d 2a  .*", and "tcl*-*
e3a0: 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .*"...      #.. 
e3b0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 44 79 6e       checkForDyn
e3c0: 61 6d 69 63 4c 6f 61 64 69 6e 67 20 24 74 65 73  amicLoading $tes
e3d0: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
e3e0: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
e3f0: 20 4e 4f 54 45 3a 20 48 61 73 20 54 63 6c 20 74   NOTE: Has Tcl t
e400: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
e410: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
e420: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
e430: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
e440: 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  cl)]} then {..  
e450: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
e460: 78 69 73 74 73 20 6e 6f 28 74 63 6c 49 6e 73 74  xists no(tclInst
e470: 61 6c 6c 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  alls)]} then {..
e480: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e490: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
e4a0: 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31  ests "commands-1
e4b0: 2e 31 2e 2a 22 2c 20 22 6c 69 62 72 61 72 79 2d  .1.*", "library-
e4c0: 33 2e 2a 22 2c 20 61 6e 64 20 22 74 63 6c 2a 2d  3.*", and "tcl*-
e4d0: 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  *.*"...        #
e4e0: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
e4f0: 6f 72 54 63 6c 49 6e 73 74 61 6c 6c 73 20 24 74  orTclInstalls $t
e500: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
e510: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66     }....      if
e520: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
e530: 6e 6f 28 74 63 6c 52 65 61 64 79 29 5d 7d 20 74  no(tclReady)]} t
e540: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 63  hen {..        c
e550: 68 65 63 6b 46 6f 72 54 63 6c 52 65 61 64 79 20  heckForTclReady 
e560: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
e570: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e580: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
e590: 73 20 6e 6f 28 74 63 6c 53 65 6c 65 63 74 29 5d  s no(tclSelect)]
e5a0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
e5b0: 20 20 63 68 65 63 6b 46 6f 72 54 63 6c 53 65 6c    checkForTclSel
e5c0: 65 63 74 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ect $test_channe
e5d0: 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  l..      }....  
e5e0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
e5f0: 78 69 73 74 73 20 6e 6f 28 74 63 6c 53 68 65 6c  xists no(tclShel
e600: 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
e610: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
e620: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
e630: 20 22 67 61 72 75 64 61 2d 31 2e 31 22 2e 0d 0a   "garuda-1.1"...
e640: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e650: 20 20 20 63 68 65 63 6b 46 6f 72 54 63 6c 53 68     checkForTclSh
e660: 65 6c 6c 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ell $test_channe
e670: 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  l..      }....  
e680: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
e690: 78 69 73 74 73 20 6e 6f 28 74 6b 50 61 63 6b 61  xists no(tkPacka
e6a0: 67 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ge)]} then {..  
e6b0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
e6c0: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
e6d0: 74 20 22 74 63 6c 4c 6f 61 64 2d 31 2e 31 22 2e  t "tclLoad-1.1".
e6e0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
e6f0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54 6b 50       checkForTkP
e700: 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61  ackage $test_cha
e710: 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  nnel..      }.. 
e720: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
e730: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63     # NOTE: Has c
e740: 75 73 74 6f 6d 20 74 65 73 74 20 6d 65 74 68 6f  ustom test metho
e750: 64 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  d support been d
e760: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
e770: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
e780: 65 78 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d  exists no(core)]
e790: 20 26 26 20 21 5b 69 6e 66 6f 20 65 78 69 73 74   && ![info exist
e7a0: 73 20 6e 6f 28 74 65 73 74 29 5d 7d 20 74 68 65  s no(test)]} the
e7b0: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
e7c0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
e7d0: 50 61 63 6b 61 67 65 43 61 6c 6c 62 61 63 6b 20  PackageCallback 
e7e0: 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
e7f0: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
e800: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
e810: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
e820: 20 6e 6f 28 74 65 73 74 50 61 63 6b 61 67 65 43   no(testPackageC
e830: 61 6c 6c 62 61 63 6b 29 5d 7d 20 74 68 65 6e 20  allback)]} then 
e840: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
e850: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
e860: 72 20 74 65 73 74 20 22 70 61 63 6b 61 67 65 2d  r test "package-
e870: 32 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  2.1"...        #
e880: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
e890: 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
e8a0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
e8b0: 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
e8c0: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
e8d0: 20 2a 54 65 73 74 53 65 74 50 61 63 6b 61 67 65   *TestSetPackage
e8e0: 46 61 6c 6c 62 61 63 6b 43 61 6c 6c 62 61 63 6b  FallbackCallback
e8f0: 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  *..      }....  
e900: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
e910: 4f 54 45 3a 20 48 61 73 20 45 78 65 63 75 74 65  OTE: Has Execute
e920: 43 61 6c 6c 62 61 63 6b 20 74 65 73 74 69 6e 67  Callback testing
e930: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
e940: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
e950: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
e960: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
e970: 74 45 78 65 63 75 74 65 43 61 6c 6c 62 61 63 6b  tExecuteCallback
e980: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
e990: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e9a0: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
e9b0: 20 22 65 78 65 63 75 74 65 43 61 6c 6c 62 61 63   "executeCallbac
e9c0: 6b 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20  k-1.*"...       
e9d0: 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
e9e0: 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
e9f0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
ea00: 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
ea10: 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
ea20: 20 20 20 2a 54 65 73 74 41 64 64 45 78 65 63 75     *TestAddExecu
ea30: 74 65 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a 20  teCallback*.... 
ea40: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
ea50: 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
ea60: 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
ea70: 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
ea80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
ea90: 65 73 74 45 78 65 63 75 74 65 43 61 6c 6c 62 61  estExecuteCallba
eaa0: 63 6b 31 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ck1*....        
eab0: 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
eac0: 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
ead0: 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
eae0: 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
eaf0: 20 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63         *TestExec
eb00: 75 74 65 43 61 6c 6c 62 61 63 6b 32 2a 0d 0a 20  uteCallback2*.. 
eb10: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
eb20: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
eb30: 20 48 61 73 20 57 72 69 74 65 48 65 61 64 65 72   Has WriteHeader
eb40: 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
eb50: 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
eb60: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
eb70: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
eb80: 73 20 6e 6f 28 74 65 73 74 57 72 69 74 65 48 65  s no(testWriteHe
eb90: 61 64 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ader)]} then {..
eba0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ebb0: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
ebc0: 65 73 74 20 22 68 6f 73 74 2d 31 2e 35 22 2e 0d  est "host-1.5"..
ebd0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
ebe0: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
ebf0: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
ec00: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
ec10: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
ec20: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
ec30: 44 69 73 70 6f 73 65 64 57 72 69 74 65 48 65 61  DisposedWriteHea
ec40: 64 65 72 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  der*..      }...
ec50: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
ec60: 23 20 4e 4f 54 45 3a 20 48 61 73 20 6f 70 74 69  # NOTE: Has opti
ec70: 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 20 74  onal parameter t
ec80: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
ec90: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
eca0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
ecb0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
ecc0: 6e 6f 28 74 65 73 74 4f 70 74 69 6f 6e 61 6c 50  no(testOptionalP
ecd0: 61 72 61 6d 65 74 65 72 29 5d 7d 20 74 68 65 6e  arameter)]} then
ece0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
ecf0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
ed00: 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74  or tests "object
ed10: 2d 32 2e 38 31 22 2c 20 22 6f 62 6a 65 63 74 2d  -2.81", "object-
ed20: 32 2e 38 32 22 2c 20 22 6f 62 6a 65 63 74 2d 32  2.82", "object-2
ed30: 2e 38 33 22 2c 0d 0a 20 20 20 20 20 20 20 20 23  .83",..        #
ed40: 20 20 20 20 20 20 20 61 6e 64 20 22 6f 62 6a 65         and "obje
ed50: 63 74 2d 32 2e 38 34 22 2e 0d 0a 20 20 20 20 20  ct-2.84"...     
ed60: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
ed70: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
ed80: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
ed90: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
eda0: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
edb0: 20 20 20 20 20 2a 54 65 73 74 4f 70 74 69 6f 6e       *TestOption
edc0: 61 6c 50 61 72 61 6d 65 74 65 72 30 2a 0d 0a 0d  alParameter0*...
edd0: 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
ede0: 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
edf0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
ee00: 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
ee10: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
ee20: 2a 54 65 73 74 4f 70 74 69 6f 6e 61 6c 50 61 72  *TestOptionalPar
ee30: 61 6d 65 74 65 72 31 2a 0d 0a 0d 0a 20 20 20 20  ameter1*....    
ee40: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
ee50: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
ee60: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
ee70: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
ee80: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
ee90: 4f 70 74 69 6f 6e 61 6c 50 61 72 61 6d 65 74 65  OptionalParamete
eea0: 72 32 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  r2*....        c
eeb0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
eec0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
eed0: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
eee0: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
eef0: 20 20 20 20 20 20 2a 54 65 73 74 4f 70 74 69 6f        *TestOptio
ef00: 6e 61 6c 50 61 72 61 6d 65 74 65 72 5a 2a 0d 0a  nalParameterZ*..
ef10: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ef20: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
ef30: 3a 20 48 61 73 20 70 6c 75 67 69 6e 20 70 6f 6c  : Has plugin pol
ef40: 69 63 79 20 74 65 73 74 69 6e 67 20 73 75 70 70  icy testing supp
ef50: 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
ef60: 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
ef70: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
ef80: 69 73 74 73 20 6e 6f 28 74 65 73 74 50 6c 75 67  ists no(testPlug
ef90: 69 6e 50 6f 6c 69 63 79 29 5d 7d 20 74 68 65 6e  inPolicy)]} then
efa0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
efb0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
efc0: 6f 72 20 74 65 73 74 73 20 22 6c 6f 61 64 2d 32  or tests "load-2
efd0: 2e 30 22 20 61 6e 64 20 22 6c 6f 61 64 2d 32 2e  .0" and "load-2.
efe0: 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  1"...        #..
eff0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
f000: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
f010: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
f020: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
f030: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
f040: 54 65 73 74 41 64 64 4c 6f 61 64 50 6c 75 67 69  TestAddLoadPlugi
f050: 6e 50 6f 6c 69 63 79 2a 0d 0a 0d 0a 20 20 20 20  nPolicy*....    
f060: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
f070: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
f080: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
f090: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
f0a0: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
f0b0: 4c 6f 61 64 50 6c 75 67 69 6e 50 6f 6c 69 63 79  LoadPluginPolicy
f0c0: 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  *..      }....  
f0d0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
f0e0: 4f 54 45 3a 20 48 61 73 20 73 63 72 69 70 74 20  OTE: Has script 
f0f0: 73 74 72 65 61 6d 20 74 65 73 74 69 6e 67 20 73  stream testing s
f100: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
f110: 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
f120: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
f130: 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53   exists no(testS
f140: 63 72 69 70 74 53 74 72 65 61 6d 29 5d 7d 20 74  criptStream)]} t
f150: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
f160: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
f170: 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73  : For tests "bas
f180: 69 63 2d 31 2e 34 36 22 20 61 6e 64 20 22 62 61  ic-1.46" and "ba
f190: 73 69 63 2d 31 2e 34 37 22 2e 0d 0a 20 20 20 20  sic-1.47"...    
f1a0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
f1b0: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
f1c0: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
f1d0: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
f1e0: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
f1f0: 20 20 20 20 20 20 2a 54 65 73 74 53 63 72 69 70        *TestScrip
f200: 74 53 74 72 65 61 6d 2a 0d 0a 20 20 20 20 20 20  tStream*..      
f210: 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
f220: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
f230: 63 6f 6d 70 6c 61 69 6e 74 20 74 65 73 74 69 6e  complaint testin
f240: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
f250: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
f260: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
f270: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
f280: 73 74 43 6f 6d 70 6c 61 69 6e 29 5d 7d 20 74 68  stComplain)]} th
f290: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
f2a0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
f2b0: 20 46 6f 72 20 74 65 73 74 73 20 22 64 65 62 75   For tests "debu
f2c0: 67 2d 31 2e 39 38 22 20 61 6e 64 20 22 64 65 62  g-1.98" and "deb
f2d0: 75 67 2d 31 2e 39 39 22 2e 0d 0a 20 20 20 20 20  ug-1.99"...     
f2e0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
f2f0: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
f300: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
f310: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
f320: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
f330: 20 20 20 20 20 2a 54 65 73 74 53 65 74 43 6f 6d       *TestSetCom
f340: 70 6c 61 69 6e 43 61 6c 6c 62 61 63 6b 2a 0d 0a  plainCallback*..
f350: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
f360: 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
f370: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
f380: 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
f390: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
f3a0: 20 2a 54 65 73 74 43 6f 6d 70 6c 61 69 6e 43 61   *TestComplainCa
f3b0: 6c 6c 62 61 63 6b 54 68 72 6f 77 2a 0d 0a 0d 0a  llbackThrow*....
f3c0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
f3d0: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
f3e0: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
f3f0: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
f400: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
f410: 54 65 73 74 43 6f 6d 70 6c 61 69 6e 43 61 6c 6c  TestComplainCall
f420: 62 61 63 6b 4e 6f 54 68 72 6f 77 2a 0d 0a 20 20  backNoThrow*..  
f430: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
f440: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
f450: 48 61 73 20 6e 65 77 20 69 6e 74 65 72 70 72 65  Has new interpre
f460: 74 65 72 20 63 61 6c 6c 62 61 63 6b 20 74 65 73  ter callback tes
f470: 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
f480: 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
f490: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
f4a0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
f4b0: 28 74 65 73 74 4e 65 77 49 6e 74 65 72 70 72 65  (testNewInterpre
f4c0: 74 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ter)]} then {.. 
f4d0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
f4e0: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
f4f0: 73 74 73 20 22 69 6e 74 65 72 70 2d 31 2e 31 30  sts "interp-1.10
f500: 31 22 20 61 6e 64 20 22 69 6e 74 65 72 70 2d 31  1" and "interp-1
f510: 2e 31 30 32 22 2e 0d 0a 20 20 20 20 20 20 20 20  .102"...        
f520: 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
f530: 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
f540: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
f550: 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
f560: 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
f570: 20 20 2a 54 65 73 74 53 65 74 4e 65 77 49 6e 74    *TestSetNewInt
f580: 65 72 70 72 65 74 65 72 43 61 6c 6c 62 61 63 6b  erpreterCallback
f590: 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
f5a0: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
f5b0: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
f5c0: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
f5d0: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
f5e0: 20 20 20 20 2a 54 65 73 74 4e 65 77 49 6e 74 65      *TestNewInte
f5f0: 72 70 72 65 74 65 72 43 61 6c 6c 62 61 63 6b 2a  rpreterCallback*
f600: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
f610: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
f620: 54 45 3a 20 48 61 73 20 63 75 73 74 6f 6d 20 6d  TE: Has custom m
f630: 61 74 63 68 20 6d 6f 64 65 20 74 65 73 74 69 6e  atch mode testin
f640: 67 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  g been disabled?
f650: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
f660: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
f670: 74 73 20 6e 6f 28 74 65 73 74 4d 61 74 63 68 4d  ts no(testMatchM
f680: 6f 64 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ode)]} then {.. 
f690: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
f6a0: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
f6b0: 73 74 20 22 73 74 72 69 6e 67 4d 61 74 63 68 2d  st "stringMatch-
f6c0: 31 30 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20  101.1"...       
f6d0: 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
f6e0: 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
f6f0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
f700: 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
f710: 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
f720: 20 20 20 2a 54 65 73 74 53 65 74 4d 61 74 63 68     *TestSetMatch
f730: 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20 20 20  Callback*..     
f740: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
f750: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
f760: 20 77 65 62 20 63 6c 69 65 6e 74 20 74 65 73 74   web client test
f770: 69 6e 67 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ing been disable
f780: 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
f790: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
f7a0: 69 73 74 73 20 6e 6f 28 74 65 73 74 57 65 62 43  ists no(testWebC
f7b0: 6c 69 65 6e 74 29 5d 7d 20 74 68 65 6e 20 7b 0d  lient)]} then {.
f7c0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
f7d0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
f7e0: 74 65 73 74 20 22 73 6f 63 6b 65 74 2d 33 2e 35  test "socket-3.5
f7f0: 30 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  0"...        #..
f800: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
f810: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
f820: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
f830: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
f840: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
f850: 54 65 73 74 48 61 73 53 63 72 69 70 74 4e 65 77  TestHasScriptNew
f860: 57 65 62 43 6c 69 65 6e 74 43 61 6c 6c 62 61 63  WebClientCallbac
f870: 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68  k*....        ch
f880: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
f890: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
f8a0: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
f8b0: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
f8c0: 20 20 20 20 20 2a 54 65 73 74 48 61 73 45 72 72       *TestHasErr
f8d0: 6f 72 4e 65 77 57 65 62 43 6c 69 65 6e 74 43 61  orNewWebClientCa
f8e0: 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20  llback*....     
f8f0: 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
f900: 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
f910: 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
f920: 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
f930: 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
f940: 65 74 53 63 72 69 70 74 4e 65 77 57 65 62 43 6c  etScriptNewWebCl
f950: 69 65 6e 74 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20  ientCallback*.. 
f960: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f970: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
f980: 73 20 6e 6f 28 74 65 73 74 4c 6f 61 64 29 5d 7d  s no(testLoad)]}
f990: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
f9a0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
f9b0: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6c  TE: For tests "l
f9c0: 6f 61 64 2d 31 2e 36 22 20 61 6e 64 20 22 6c 6f  oad-1.6" and "lo
f9d0: 61 64 2d 31 2e 37 22 2e 0d 0a 20 20 20 20 20 20  ad-1.7"...      
f9e0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
f9f0: 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
fa00: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
fa10: 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
fa20: 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
fa30: 20 20 20 20 2a 54 65 73 74 4c 6f 61 64 50 6c 75      *TestLoadPlu
fa40: 67 69 6e 56 69 61 42 79 74 65 73 2a 0d 0a 20 20  ginViaBytes*..  
fa50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69      }....      i
fa60: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
fa70: 20 6e 6f 28 74 65 73 74 50 65 72 6d 75 74 65 29   no(testPermute)
fa80: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
fa90: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
faa0: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
fab0: 22 6c 70 65 72 6d 75 74 65 2d 31 2e 33 22 20 61  "lpermute-1.3" a
fac0: 6e 64 20 22 6c 70 65 72 6d 75 74 65 2d 31 2e 34  nd "lpermute-1.4
fad0: 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
fae0: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
faf0: 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
fb00: 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
fb10: 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
fb20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
fb30: 65 73 74 50 65 72 6d 75 74 65 2a 0d 0a 20 20 20  estPermute*..   
fb40: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66     }....      if
fb50: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
fb60: 6e 6f 28 74 65 73 74 44 79 6e 61 6d 69 63 43 61  no(testDynamicCa
fb70: 6c 6c 62 61 63 6b 29 5d 7d 20 74 68 65 6e 20 7b  llback)]} then {
fb80: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
fb90: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
fba0: 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 38   tests "object-8
fbb0: 2e 31 3f 3f 22 2e 0d 0a 20 20 20 20 20 20 20 20  .1??"...        
fbc0: 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
fbd0: 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
fbe0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
fbf0: 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
fc00: 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
fc10: 20 20 2a 54 65 73 74 43 61 6c 6c 44 79 6e 61 6d    *TestCallDynam
fc20: 69 63 43 61 6c 6c 62 61 63 6b 30 2a 0d 0a 0d 0a  icCallback0*....
fc30: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
fc40: 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
fc50: 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
fc60: 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
fc70: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
fc80: 54 65 73 74 43 61 6c 6c 44 79 6e 61 6d 69 63 43  TestCallDynamicC
fc90: 61 6c 6c 62 61 63 6b 31 2a 0d 0a 0d 0a 20 20 20  allback1*....   
fca0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
fcb0: 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
fcc0: 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
fcd0: 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
fce0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
fcf0: 74 43 61 6c 6c 44 79 6e 61 6d 69 63 43 61 6c 6c  tCallDynamicCall
fd00: 62 61 63 6b 32 2a 0d 0a 0d 0a 20 20 20 20 20 20  back2*....      
fd10: 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
fd20: 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
fd30: 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
fd40: 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
fd50: 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 43 61           *TestCa
fd60: 6c 6c 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63  llDynamicCallbac
fd70: 6b 33 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  k3*....        c
fd80: 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
fd90: 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
fda0: 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
fdb0: 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
fdc0: 20 20 20 20 20 20 2a 54 65 73 74 47 65 74 44 79        *TestGetDy
fdd0: 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 73 2a 0d  namicCallbacks*.
fde0: 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
fdf0: 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
fe00: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
fe10: 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
fe20: 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
fe30: 20 20 2a 54 65 73 74 43 61 6c 6c 53 74 61 74 69    *TestCallStati
fe40: 63 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b  cDynamicCallback
fe50: 30 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68  0*....        ch
fe60: 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
fe70: 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
fe80: 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
fe90: 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
fea0: 20 20 20 20 20 2a 54 65 73 74 43 61 6c 6c 53 74       *TestCallSt
feb0: 61 74 69 63 44 79 6e 61 6d 69 63 43 61 6c 6c 62  aticDynamicCallb
fec0: 61 63 6b 31 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  ack1*....       
fed0: 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
fee0: 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
fef0: 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
ff00: 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
ff10: 20 20 20 20 20 20 20 20 2a 54 65 73 74 43 61 6c          *TestCal
ff20: 6c 53 74 61 74 69 63 44 79 6e 61 6d 69 63 43 61  lStaticDynamicCa
ff30: 6c 6c 62 61 63 6b 32 2a 0d 0a 0d 0a 20 20 20 20  llback2*....    
ff40: 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
ff50: 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
ff60: 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
ff70: 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
ff80: 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
ff90: 43 61 6c 6c 53 74 61 74 69 63 44 79 6e 61 6d 69  CallStaticDynami
ffa0: 63 43 61 6c 6c 62 61 63 6b 33 2a 0d 0a 0d 0a 20  cCallback3*.... 
ffb0: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
ffc0: 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
ffd0: 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
ffe0: 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
fff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
10000 65 73 74 47 65 74 53 74 61 74 69 63 44 79 6e 61  estGetStaticDyna
10010 6d 69 63 43 61 6c 6c 62 61 63 6b 73 2a 0d 0a 20  micCallbacks*.. 
10020 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10030 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
10040 20 48 61 73 20 44 61 74 65 54 69 6d 65 20 74 65   Has DateTime te
10050 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
10060 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
10070 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
10080 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
10090 6f 28 74 65 73 74 44 61 74 65 54 69 6d 65 29 5d  o(testDateTime)]
100a0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
100b0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
100c0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 76  OTE: For test "v
100d0 77 61 69 74 2d 31 2e 31 31 22 2e 0d 0a 20 20 20  wait-1.11"...   
100e0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
100f0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
10100 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
10110 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
10120 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
10130 20 20 20 20 20 20 20 2a 54 65 73 74 53 65 74 44         *TestSetD
10140 61 74 65 54 69 6d 65 4e 6f 77 43 61 6c 6c 62 61  ateTimeNowCallba
10150 63 6b 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ck*..      }....
10160 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
10170 20 4e 4f 54 45 3a 20 48 61 73 20 72 65 6d 6f 74   NOTE: Has remot
10180 69 6e 67 20 74 65 73 74 69 6e 67 20 73 75 70 70  ing testing supp
10190 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
101a0 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
101b0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
101c0 69 73 74 73 20 6e 6f 28 74 65 73 74 52 65 6d 6f  ists no(testRemo
101d0 74 69 6e 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ting)]} then {..
101e0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
101f0 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
10200 65 73 74 73 20 22 72 65 6d 6f 74 69 6e 67 53 65  ests "remotingSe
10210 72 76 65 72 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20  rver-1.*"...    
10220 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
10230 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
10240 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
10250 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
10260 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
10270 20 20 20 20 20 20 2a 54 65 73 74 52 65 6d 6f 74        *TestRemot
10280 69 6e 67 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ing*....        
10290 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
102a0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
102b0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
102c0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
102d0 20 20 20 20 20 20 20 2a 54 65 73 74 52 65 6d 6f         *TestRemo
102e0 74 69 6e 67 48 61 76 65 43 68 61 6e 6e 65 6c 2a  tingHaveChannel*
102f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
10300 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
10310 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
10320 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
10330 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
10340 20 20 20 2a 54 65 73 74 52 65 6d 6f 74 69 6e 67     *TestRemoting
10350 54 72 79 47 65 74 43 68 61 6e 6e 65 6c 2a 0d 0a  TryGetChannel*..
10360 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10370 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
10380 3a 20 48 61 73 20 65 6d 62 65 64 64 65 64 20 72  : Has embedded r
10390 65 73 6f 75 72 63 65 20 74 65 73 74 69 6e 67 20  esource testing 
103a0 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
103b0 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
103c0 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
103d0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
103e0 52 65 73 6f 75 72 63 65 73 29 5d 7d 20 74 68 65  Resources)]} the
103f0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
10400 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
10410 46 6f 72 20 74 65 73 74 20 22 69 6e 74 65 72 70  For test "interp
10420 2d 31 2e 34 30 30 22 2e 0d 0a 20 20 20 20 20 20  -1.400"...      
10430 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
10440 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
10450 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
10460 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
10470 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
10480 20 20 20 20 2a 54 65 73 74 47 65 74 52 65 73 6f      *TestGetReso
10490 75 72 63 65 53 74 72 69 6e 67 2a 0d 0a 20 20 20  urceString*..   
104a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
104b0 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
104c0 61 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20  as asynchronous 
104d0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
104e0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
104f0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
10500 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
10510 20 6e 6f 28 74 65 73 74 41 73 79 6e 63 68 72 6f   no(testAsynchro
10520 6e 6f 75 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  nous)]} then {..
10530 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
10540 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
10550 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e 32 30  ests "basic-1.20
10560 22 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 32  " and "basic-1.2
10570 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  1"...        #..
10580 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
10590 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
105a0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
105b0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
105c0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
105d0 54 65 73 74 45 76 61 6c 75 61 74 65 41 73 79 6e  TestEvaluateAsyn
105e0 63 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  c*..      }.... 
105f0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
10600 4e 4f 54 45 3a 20 48 61 73 20 63 75 73 74 6f 6d  NOTE: Has custom
10610 20 66 75 6e 63 74 69 6f 6e 20 74 65 73 74 69 6e   function testin
10620 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
10630 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
10640 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
10650 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
10660 73 74 46 75 6e 63 74 69 6f 6e 29 5d 7d 20 74 68  stFunction)]} th
10670 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
10680 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
10690 20 46 6f 72 20 74 65 73 74 20 22 66 75 6e 63 74   For test "funct
106a0 69 6f 6e 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20  ion-1.1"...     
106b0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
106c0 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
106d0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
106e0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
106f0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
10700 20 20 20 20 20 2a 54 65 73 74 41 64 64 46 75 6e       *TestAddFun
10710 63 74 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20  ction*....      
10720 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
10730 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
10740 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
10750 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
10760 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52 65           *TestRe
10770 6d 6f 76 65 46 75 6e 63 74 69 6f 6e 2a 0d 0a 0d  moveFunction*...
10780 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
10790 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
107a0 74 65 73 74 73 20 22 66 75 6e 63 74 69 6f 6e 2d  tests "function-
107b0 35 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  5.*"...        #
107c0 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
107d0 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
107e0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
107f0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
10800 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
10810 20 2a 54 65 73 74 41 64 64 4e 61 6d 65 64 46 75   *TestAddNamedFu
10820 6e 63 74 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20  nction*....     
10830 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
10840 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
10850 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
10860 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
10870 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52            *TestR
10880 65 6d 6f 76 65 4e 61 6d 65 64 46 75 6e 63 74 69  emoveNamedFuncti
10890 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  on*....        #
108a0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
108b0 3a 20 46 6f 72 20 74 65 73 74 20 22 69 6e 74 65  : For test "inte
108c0 72 70 2d 31 2e 31 39 22 2e 0d 0a 20 20 20 20 20  rp-1.19"...     
108d0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
108e0 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
108f0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
10900 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
10910 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
10920 20 20 20 20 20 2a 54 65 73 74 41 64 64 4e 61 6d       *TestAddNam
10930 65 64 46 75 6e 63 74 69 6f 6e 32 2a 0d 0a 0d 0a  edFunction2*....
10940 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
10950 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
10960 65 73 74 73 20 22 66 75 6e 63 74 69 6f 6e 2d 35  ests "function-5
10970 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .*"...        #.
10980 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
10990 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
109a0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
109b0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
109c0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
109d0 2a 54 65 73 74 41 64 64 4e 61 6d 65 64 46 75 6e  *TestAddNamedFun
109e0 63 74 69 6f 6e 33 2a 0d 0a 20 20 20 20 20 20 7d  ction3*..      }
109f0 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
10a00 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 77     # NOTE: Has w
10a10 72 69 74 65 2d 62 6f 78 20 74 65 73 74 69 6e 67  rite-box testing
10a20 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
10a30 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
10a40 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
10a50 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
10a60 74 57 72 69 74 65 42 6f 78 29 5d 7d 20 74 68 65  tWriteBox)]} the
10a70 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
10a80 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
10a90 46 6f 72 20 74 65 73 74 73 20 22 64 65 62 75 67  For tests "debug
10aa0 2d 35 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20  -5.*"...        
10ab0 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
10ac0 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
10ad0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
10ae0 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
10af0 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
10b00 20 20 2a 54 65 73 74 57 72 69 74 65 42 6f 78 2a    *TestWriteBox*
10b10 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
10b20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
10b30 54 45 3a 20 48 61 73 20 73 68 65 6c 6c 20 74 65  TE: Has shell te
10b40 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
10b50 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
10b60 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
10b70 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
10b80 6f 28 74 65 73 74 53 68 65 6c 6c 29 5d 7d 20 74  o(testShell)]} t
10b90 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
10ba0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
10bb0 3a 20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75  : For test "debu
10bc0 67 2d 31 2e 33 22 2e 0d 0a 20 20 20 20 20 20 20  g-1.3"...       
10bd0 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
10be0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
10bf0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
10c00 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
10c10 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
10c20 20 20 20 2a 54 65 73 74 53 68 65 6c 6c 4d 61 69     *TestShellMai
10c30 6e 43 6f 72 65 2a 0d 0a 20 20 20 20 20 20 7d 0d  nCore*..      }.
10c40 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
10c50 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 71 75    # NOTE: Has qu
10c60 69 65 74 20 70 72 6f 70 65 72 74 79 20 74 65 73  iet property tes
10c70 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
10c80 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
10c90 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
10ca0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
10cb0 28 74 65 73 74 53 65 74 51 75 69 65 74 29 5d 7d  (testSetQuiet)]}
10cc0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
10cd0 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
10ce0 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62  TE: For tests "b
10cf0 61 73 69 63 2d 31 2e 33 36 22 20 61 6e 64 20 22  asic-1.36" and "
10d00 64 65 62 75 67 2d 31 2e 33 22 2e 0d 0a 20 20 20  debug-1.3"...   
10d10 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
10d20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
10d30 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
10d40 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
10d50 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
10d60 20 20 20 20 20 20 20 2a 54 65 73 74 53 65 74 51         *TestSetQ
10d70 75 69 65 74 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  uiet*..      }..
10d80 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
10d90 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 6d   # NOTE: Has com
10da0 70 6c 61 69 6e 74 20 74 65 73 74 69 6e 67 20 73  plaint testing s
10db0 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
10dc0 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
10dd0 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
10de0 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53   exists no(testS
10df0 65 74 43 6f 6d 70 6c 61 69 6e 29 5d 7d 20 74 68  etComplain)]} th
10e00 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
10e10 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
10e20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63 75 72   This is not cur
10e30 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79 20 61  rently used by a
10e40 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20 20 20  ny tests...     
10e50 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
10e60 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
10e70 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
10e80 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
10e90 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
10ea0 20 20 20 20 20 2a 54 65 73 74 53 65 74 43 6f 6d       *TestSetCom
10eb0 70 6c 61 69 6e 2a 0d 0a 20 20 20 20 20 20 7d 0d  plain*..      }.
10ec0 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
10ed0 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 65 6e    # NOTE: Has en
10ee0 75 6d 65 72 61 62 6c 65 20 76 61 72 69 61 62 6c  umerable variabl
10ef0 65 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  e testing suppor
10f00 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
10f10 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
10f20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
10f30 74 73 20 6e 6f 28 74 65 73 74 45 6e 75 6d 65 72  ts no(testEnumer
10f40 61 62 6c 65 56 61 72 69 61 62 6c 65 73 29 5d 7d  ableVariables)]}
10f50 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
10f60 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
10f70 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61  TE: For test "ba
10f80 73 69 63 2d 31 2e 31 30 35 22 2e 0d 0a 20 20 20  sic-1.105"...   
10f90 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
10fa0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
10fb0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
10fc0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
10fd0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
10fe0 20 20 20 20 20 20 20 2a 54 65 73 74 53 65 74 75         *TestSetu
10ff0 70 49 6e 74 41 72 72 61 79 2a 0d 0a 0d 0a 20 20  pIntArray*....  
11000 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
11010 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
11020 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
11030 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
11040 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
11050 73 74 53 65 74 56 61 72 69 61 62 6c 65 45 6e 75  stSetVariableEnu
11060 6d 65 72 61 62 6c 65 2a 0d 0a 0d 0a 20 20 20 20  merable*....    
11070 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
11080 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
11090 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
110a0 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
110b0 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
110c0 55 6e 73 65 74 56 61 72 69 61 62 6c 65 45 6e 75  UnsetVariableEnu
110d0 6d 65 72 61 62 6c 65 2a 0d 0a 20 20 20 20 20 20  merable*..      
110e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
110f0 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
11100 6c 69 6e 6b 65 64 20 76 61 72 69 61 62 6c 65 20  linked variable 
11110 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
11120 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
11130 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
11140 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
11150 20 6e 6f 28 74 65 73 74 4c 69 6e 6b 65 64 56 61   no(testLinkedVa
11160 72 69 61 62 6c 65 73 29 5d 7d 20 74 68 65 6e 20  riables)]} then 
11170 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
11180 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
11190 72 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31  r tests "basic-1
111a0 2e 33 39 22 2c 20 22 62 61 73 69 63 2d 31 2e 34  .39", "basic-1.4
111b0 30 22 2c 20 22 62 61 73 69 63 2d 31 2e 34 31 22  0", "basic-1.41"
111c0 2c 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  ,..        #    
111d0 20 20 20 22 62 61 73 69 63 2d 31 2e 34 32 22 2c     "basic-1.42",
111e0 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 34 33   and "basic-1.43
111f0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
11200 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
11210 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
11220 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
11230 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
11240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
11250 65 73 74 53 65 74 56 61 72 69 61 62 6c 65 4c 69  estSetVariableLi
11260 6e 6b 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nks*....        
11270 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
11280 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
11290 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
112a0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
112b0 20 20 20 20 20 20 20 2a 54 65 73 74 55 6e 73 65         *TestUnse
112c0 74 56 61 72 69 61 62 6c 65 4c 69 6e 6b 73 2a 0d  tVariableLinks*.
112d0 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
112e0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
112f0 45 3a 20 48 61 73 20 73 79 73 74 65 6d 20 61 72  E: Has system ar
11300 72 61 79 20 76 61 72 69 61 62 6c 65 20 74 65 73  ray variable tes
11310 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
11320 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
11330 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
11340 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
11350 28 74 65 73 74 53 79 73 74 65 6d 41 72 72 61 79  (testSystemArray
11360 56 61 72 69 61 62 6c 65 73 29 5d 7d 20 74 68 65  Variables)]} the
11370 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
11380 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
11390 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63  For tests "basic
113a0 2d 31 2e 36 32 22 2c 20 22 62 61 73 69 63 2d 31  -1.62", "basic-1
113b0 2e 36 33 22 2c 20 22 62 61 73 69 63 2d 31 2e 36  .63", "basic-1.6
113c0 34 22 2c 0d 0a 20 20 20 20 20 20 20 20 23 20 20  4",..        #  
113d0 20 20 20 20 20 61 6e 64 20 22 62 61 73 69 63 2d       and "basic-
113e0 31 2e 36 35 22 2e 0d 0a 20 20 20 20 20 20 20 20  1.65"...        
113f0 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
11400 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
11410 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
11420 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
11430 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
11440 20 20 2a 54 65 73 74 49 6e 74 50 74 72 43 68 61    *TestIntPtrCha
11450 6e 67 65 54 79 70 65 43 61 6c 6c 62 61 63 6b 2a  ngeTypeCallback*
11460 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
11470 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
11480 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
11490 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
114a0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
114b0 20 20 20 2a 54 65 73 74 53 65 74 56 61 72 69 61     *TestSetVaria
114c0 62 6c 65 53 79 73 74 65 6d 41 72 72 61 79 2a 0d  bleSystemArray*.
114d0 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
114e0 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
114f0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
11500 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
11510 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
11520 20 20 2a 54 65 73 74 55 6e 73 65 74 56 61 72 69    *TestUnsetVari
11530 61 62 6c 65 53 79 73 74 65 6d 41 72 72 61 79 2a  ableSystemArray*
11540 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
11550 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
11560 54 45 3a 20 48 61 73 20 66 69 65 6c 64 20 74 65  TE: Has field te
11570 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
11580 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
11590 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
115a0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
115b0 6f 28 74 65 73 74 46 69 65 6c 64 73 29 5d 7d 20  o(testFields)]} 
115c0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
115d0 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
115e0 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61  E: For tests "ba
115f0 73 69 63 2d 31 2e 33 39 22 2c 20 22 62 61 73 69  sic-1.39", "basi
11600 63 2d 31 2e 34 30 22 2c 20 22 62 61 73 69 63 2d  c-1.40", "basic-
11610 31 2e 34 31 22 2c 0d 0a 20 20 20 20 20 20 20 20  1.41",..        
11620 23 20 20 20 20 20 20 20 22 62 61 73 69 63 2d 31  #       "basic-1
11630 2e 34 32 22 2c 20 61 6e 64 20 22 62 61 73 69 63  .42", and "basic
11640 2d 31 2e 34 33 22 2e 0d 0a 20 20 20 20 20 20 20  -1.43"...       
11650 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
11660 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
11670 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
11680 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
11690 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
116a0 20 20 20 2a 70 72 69 76 61 74 65 46 69 65 6c 64     *privateField
116b0 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
116c0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
116d0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
116e0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
116f0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
11700 20 20 20 20 2a 6f 62 6a 65 63 74 46 69 65 6c 64      *objectField
11710 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
11720 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
11730 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
11740 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
11750 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
11760 20 20 20 20 2a 69 6e 74 46 69 65 6c 64 2a 0d 0a      *intField*..
11770 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11780 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
11790 3a 20 48 61 73 20 70 72 6f 70 65 72 74 79 20 74  : Has property t
117a0 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
117b0 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
117c0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
117d0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
117e0 6e 6f 28 74 65 73 74 50 72 6f 70 65 72 74 69 65  no(testPropertie
117f0 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
11800 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
11810 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
11820 73 20 22 62 61 73 69 63 2d 31 2e 33 39 22 2c 20  s "basic-1.39", 
11830 22 62 61 73 69 63 2d 31 2e 34 30 22 2c 20 22 62  "basic-1.40", "b
11840 61 73 69 63 2d 31 2e 34 31 22 2c 0d 0a 20 20 20  asic-1.41",..   
11850 20 20 20 20 20 23 20 20 20 20 20 20 20 22 62 61       #       "ba
11860 73 69 63 2d 31 2e 34 32 22 2c 20 61 6e 64 20 22  sic-1.42", and "
11870 62 61 73 69 63 2d 31 2e 34 33 22 2e 0d 0a 20 20  basic-1.43"...  
11880 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
11890 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
118a0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
118b0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
118c0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
118d0 20 20 20 20 20 20 20 20 2a 67 65 74 5f 53 69 6d          *get_Sim
118e0 70 6c 65 49 6e 74 50 72 6f 70 65 72 74 79 2a 0d  pleIntProperty*.
118f0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
11900 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
11910 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33  r test "object-3
11920 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .1"...        #.
11930 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
11940 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
11950 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
11960 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
11970 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
11980 2a 67 65 74 5f 49 74 65 6d 2a 0d 0a 0d 0a 20 20  *get_Item*....  
11990 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
119a0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
119b0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
119c0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
119d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 73 65  .            *se
119e0 74 5f 49 74 65 6d 2a 0d 0a 20 20 20 20 20 20 7d  t_Item*..      }
119f0 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
11a00 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63     # NOTE: Has c
11a10 6f 72 65 20 6d 61 72 73 68 61 6c 6c 65 72 20 74  ore marshaller t
11a20 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
11a30 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
11a40 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
11a50 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
11a60 6e 6f 28 74 65 73 74 4d 61 72 73 68 61 6c 6c 65  no(testMarshalle
11a70 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  r)]} then {..   
11a80 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
11a90 23 20 4e 4f 54 45 3a 20 54 68 65 73 65 20 61 72  # NOTE: These ar
11aa0 65 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20  e not currently 
11ab0 75 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74  used by any test
11ac0 73 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  s...        #.. 
11ad0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
11ae0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
11af0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
11b00 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
11b10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
11b20 65 73 74 53 61 76 65 4f 62 6a 65 63 74 73 2a 0d  estSaveObjects*.
11b30 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
11b40 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
11b50 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
11b60 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
11b70 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
11b80 20 20 2a 54 65 73 74 52 65 73 74 6f 72 65 4f 62    *TestRestoreOb
11b90 6a 65 63 74 73 2a 0d 0a 0d 0a 20 20 20 20 20 20  jects*....      
11ba0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
11bb0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62  OTE: For test "b
11bc0 61 73 69 63 2d 31 2e 32 39 22 2e 0d 0a 20 20 20  asic-1.29"...   
11bd0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
11be0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
11bf0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
11c00 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
11c10 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
11c20 20 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63         *TestExec
11c30 75 74 65 53 74 61 74 69 63 44 65 6c 65 67 61 74  uteStaticDelegat
11c40 65 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  es*....        #
11c50 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
11c60 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73  : For tests "bas
11c70 69 63 2d 31 2e 33 30 22 20 61 6e 64 20 22 62 61  ic-1.30" and "ba
11c80 73 69 63 2d 31 2e 33 31 22 2e 0d 0a 20 20 20 20  sic-1.31"...    
11c90 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
11ca0 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
11cb0 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
11cc0 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
11cd0 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
11ce0 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63 75        *TestExecu
11cf0 74 65 44 65 6c 65 67 61 74 65 43 6f 6d 6d 61 6e  teDelegateComman
11d00 64 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ds*....        #
11d10 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
11d20 3a 20 46 6f 72 20 74 65 73 74 20 22 6e 61 6d 65  : For test "name
11d30 73 70 61 63 65 2d 39 37 2e 31 30 22 2e 0d 0a 20  space-97.10"... 
11d40 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
11d50 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
11d60 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
11d70 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
11d80 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
11d90 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52 65           *TestRe
11da0 6e 61 6d 65 4e 61 6d 65 73 70 61 63 65 2a 0d 0a  nameNamespace*..
11db0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
11dc0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
11dd0 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 32 2e   test "object-2.
11de0 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  1"...        #..
11df0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
11e00 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
11e10 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
11e20 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
11e30 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
11e40 54 65 73 74 43 6f 6d 70 6c 65 78 4d 65 74 68 6f  TestComplexMetho
11e50 64 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  d*....        #.
11e60 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
11e70 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
11e80 74 2d 32 2e 31 32 22 2e 0d 0a 20 20 20 20 20 20  t-2.12"...      
11e90 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
11ea0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
11eb0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
11ec0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
11ed0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
11ee0 20 20 20 20 2a 54 65 73 74 4d 6f 72 65 43 6f 6d      *TestMoreCom
11ef0 70 6c 65 78 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20  plexMethod*.... 
11f00 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
11f10 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
11f20 73 74 20 22 6f 62 6a 65 63 74 2d 32 2e 33 22 2e  st "object-2.3".
11f30 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
11f40 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
11f50 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
11f60 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
11f70 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
11f80 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
11f90 74 54 6f 48 65 78 61 64 65 63 69 6d 61 6c 53 74  tToHexadecimalSt
11fa0 72 69 6e 67 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  ring*....       
11fb0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
11fc0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
11fd0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
11fe0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
11ff0 20 20 20 20 20 20 20 20 2a 54 65 73 74 4d 75 6c          *TestMul
12000 74 69 32 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20  ti2Array*....   
12010 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
12020 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
12030 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
12040 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
12050 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
12060 74 4d 75 6c 74 69 33 41 72 72 61 79 2a 0d 0a 0d  tMulti3Array*...
12070 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
12080 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
12090 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
120a0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
120b0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
120c0 2a 54 65 73 74 4e 65 73 74 65 64 41 72 72 61 79  *TestNestedArray
120d0 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *....        #..
120e0 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
120f0 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74  For test "object
12100 2d 32 2e 31 31 22 2e 0d 0a 20 20 20 20 20 20 20  -2.11"...       
12110 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
12120 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
12130 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
12140 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
12150 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
12160 20 20 20 2a 54 65 73 74 4f 62 6a 65 63 74 41 73     *TestObjectAs
12170 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20  Array*....      
12180 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
12190 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
121a0 6f 62 6a 65 63 74 2d 33 2e 36 22 20 61 6e 64 20  object-3.6" and 
121b0 22 6f 62 6a 65 63 74 2d 33 2e 37 22 2e 0d 0a 20  "object-3.7"... 
121c0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
121d0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
121e0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
121f0 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
12200 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
12210 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53 74           *TestSt
12220 72 69 6e 67 49 4c 69 73 74 52 65 74 75 72 6e 56  ringIListReturnV
12230 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  alue*....       
12240 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
12250 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
12260 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
12270 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
12280 20 20 20 20 20 20 20 20 2a 54 65 73 74 53 74 72          *TestStr
12290 69 6e 67 49 4c 69 73 74 49 4c 69 73 74 49 4c 69  ingIListIListILi
122a0 73 74 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a  stReturnValue*..
122b0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
122c0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
122d0 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e   test "object-3.
122e0 38 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  8"...        #..
122f0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
12300 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
12310 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
12320 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
12330 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
12340 54 65 73 74 42 79 74 65 4c 69 73 74 2a 0d 0a 0d  TestByteList*...
12350 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
12360 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
12370 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 39  test "object-3.9
12380 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
12390 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
123a0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
123b0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
123c0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
123d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
123e0 65 73 74 49 6e 74 4c 69 73 74 2a 0d 0a 0d 0a 20  estIntList*.... 
123f0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
12400 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
12410 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 30 22  st "object-3.10"
12420 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
12430 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12440 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12450 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12460 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12470 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12480 73 74 4c 6f 6e 67 4c 69 73 74 2a 0d 0a 0d 0a 20  stLongList*.... 
12490 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
124a0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
124b0 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 31 22  st "object-3.11"
124c0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
124d0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
124e0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
124f0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12500 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12510 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12520 73 74 44 65 72 69 76 65 64 4c 69 73 74 2a 0d 0a  stDerivedList*..
12530 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
12540 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
12550 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 33   tests "object-3
12560 2e 31 32 22 20 61 6e 64 20 22 6f 62 6a 65 63 74  .12" and "object
12570 2d 33 2e 31 33 22 2e 0d 0a 20 20 20 20 20 20 20  -3.13"...       
12580 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
12590 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
125a0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
125b0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
125c0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
125d0 20 20 20 2a 54 65 73 74 53 74 72 69 6e 67 49 44     *TestStringID
125e0 69 63 74 69 6f 6e 61 72 79 52 65 74 75 72 6e 56  ictionaryReturnV
125f0 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  alue*....       
12600 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
12610 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6f  TE: For tests "o
12620 62 6a 65 63 74 2d 33 2e 31 34 22 20 61 6e 64 20  bject-3.14" and 
12630 22 6f 62 6a 65 63 74 2d 33 2e 31 35 22 2e 0d 0a  "object-3.15"...
12640 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
12650 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
12660 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
12670 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
12680 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
12690 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52            *TestR
126a0 65 74 75 72 6e 4f 66 53 65 6c 66 2a 0d 0a 0d 0a  eturnOfSelf*....
126b0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
126c0 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
126d0 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 37  est "object-3.17
126e0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
126f0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
12700 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
12710 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
12720 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
12730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
12740 65 73 74 42 79 52 65 66 42 79 74 65 41 72 72 61  estByRefByteArra
12750 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  y*....        #.
12760 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
12770 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
12780 74 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20  t-4.1"...       
12790 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
127a0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
127b0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
127c0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
127d0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
127e0 20 20 20 2a 54 65 73 74 45 78 70 72 2a 0d 0a 0d     *TestExpr*...
127f0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
12800 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
12810 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e 36  tests "basic-1.6
12820 36 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 37 22  6", "basic-1.67"
12830 2c 20 22 62 61 73 69 63 2d 31 2e 36 38 22 2c 0d  , "basic-1.68",.
12840 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
12850 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 36 39   and "basic-1.69
12860 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
12870 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
12880 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
12890 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
128a0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
128b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
128c0 65 73 74 54 61 6b 65 45 76 65 6e 74 48 61 6e 64  estTakeEventHand
128d0 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ler*....        
128e0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
128f0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
12900 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
12910 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
12920 20 20 20 20 20 20 20 2a 54 65 73 74 54 61 6b 65         *TestTake
12930 47 65 6e 65 72 69 63 45 76 65 6e 74 48 61 6e 64  GenericEventHand
12940 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ler*....        
12950 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
12960 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
12970 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
12980 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
12990 20 20 20 20 20 20 20 2a 54 65 73 74 54 61 6b 65         *TestTake
129a0 52 65 73 6f 6c 76 65 45 76 65 6e 74 48 61 6e 64  ResolveEventHand
129b0 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ler*....        
129c0 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
129d0 45 3a 20 46 6f 72 20 74 65 73 74 20 22 61 72 72  E: For test "arr
129e0 61 79 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20 20  ay-4.1"...      
129f0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
12a00 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
12a10 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
12a20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
12a30 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
12a40 20 20 20 20 2a 54 65 73 74 54 77 6f 42 79 74 65      *TestTwoByte
12a50 41 72 72 61 79 73 2a 0d 0a 0d 0a 20 20 20 20 20  Arrays*....     
12a60 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
12a70 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
12a80 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
12a90 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
12aa0 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52            *TestR
12ab0 65 74 75 72 6e 42 79 74 65 41 72 72 61 79 2a 0d  eturnByteArray*.
12ac0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
12ad0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
12ae0 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 37  r test "object-7
12af0 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .1"...        #.
12b00 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
12b10 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
12b20 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
12b30 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
12b40 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
12b50 2a 54 65 73 74 42 79 52 65 66 56 61 6c 75 65 54  *TestByRefValueT
12b60 79 70 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20 20  ypeMethod*....  
12b70 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12b80 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12b90 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12ba0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12bb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12bc0 73 74 4e 75 6c 6c 61 62 6c 65 56 61 6c 75 65 54  stNullableValueT
12bd0 79 70 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20 20  ypeMethod*....  
12be0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12bf0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12c00 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12c10 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12c30 73 74 42 79 52 65 66 4e 75 6c 6c 61 62 6c 65 56  stByRefNullableV
12c40 61 6c 75 65 54 79 70 65 4d 65 74 68 6f 64 2a 0d  alueTypeMethod*.
12c50 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
12c60 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
12c70 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
12c80 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
12c90 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
12ca0 20 20 2a 54 65 73 74 49 6e 74 41 72 72 61 79 52    *TestIntArrayR
12cb0 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20  eturnValue*.... 
12cc0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
12cd0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
12ce0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
12cf0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
12d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
12d10 65 73 74 53 74 72 69 6e 67 41 72 72 61 79 52 65  estStringArrayRe
12d20 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20  turnValue*....  
12d30 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12d40 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12d50 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12d60 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12d80 73 74 53 74 72 69 6e 67 4c 69 73 74 52 65 74 75  stStringListRetu
12d90 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20  rnValue*....    
12da0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
12db0 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
12dc0 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
12dd0 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
12de0 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
12df0 53 74 72 69 6e 67 4c 69 73 74 41 72 72 61 79 52  StringListArrayR
12e00 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20  eturnValue*.... 
12e10 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
12e20 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
12e30 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
12e40 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
12e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
12e60 65 73 74 42 79 52 65 66 53 74 72 69 6e 67 4c 69  estByRefStringLi
12e70 73 74 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20  stArray*....    
12e80 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
12e90 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
12ea0 20 22 6f 62 6a 65 63 74 2d 37 2e 32 22 20 61 6e   "object-7.2" an
12eb0 64 20 22 6f 62 6a 65 63 74 2d 37 2e 34 22 2e 0d  d "object-7.4"..
12ec0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
12ed0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
12ee0 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
12ef0 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
12f00 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
12f10 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
12f20 4e 75 6c 6c 41 72 72 61 79 2a 0d 0a 0d 0a 20 20  NullArray*....  
12f30 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12f40 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12f50 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12f60 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12f70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12f80 73 74 4f 75 74 41 72 72 61 79 2a 0d 0a 0d 0a 20  stOutArray*.... 
12f90 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
12fa0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
12fb0 73 74 73 20 22 6f 62 6a 65 63 74 2d 37 2e 36 22  sts "object-7.6"
12fc0 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 37 2e 37   and "object-7.7
12fd0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
12fe0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
12ff0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
13000 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
13010 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
13020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
13030 65 73 74 42 79 52 65 66 41 72 72 61 79 2a 0d 0a  estByRefArray*..
13040 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
13050 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
13060 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 37 2e   test "object-7.
13070 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  5"...        #..
13080 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
13090 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
130a0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
130b0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
130c0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
130d0 54 65 73 74 45 6e 75 6d 2a 0d 0a 0d 0a 20 20 20  TestEnum*....   
130e0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
130f0 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
13100 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
13110 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
13120 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
13130 74 42 79 52 65 66 45 6e 75 6d 2a 0d 0a 0d 0a 20  tByRefEnum*.... 
13140 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
13150 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
13160 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
13170 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
13180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
13190 65 73 74 4e 75 6c 6c 61 62 6c 65 45 6e 75 6d 2a  estNullableEnum*
131a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
131b0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
131c0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
131d0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
131e0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
131f0 20 20 20 2a 54 65 73 74 42 79 52 65 66 4e 75 6c     *TestByRefNul
13200 6c 61 62 6c 65 45 6e 75 6d 2a 0d 0a 0d 0a 20 20  lableEnum*....  
13210 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
13220 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
13230 74 73 20 22 6f 62 6a 65 63 74 2d 31 34 2e 34 22  ts "object-14.4"
13240 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 31 34 2e   and "object-14.
13250 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  5"...        #..
13260 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
13270 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
13280 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
13290 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
132a0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
132b0 53 74 61 74 69 63 4f 62 6a 65 63 74 50 72 6f 70  StaticObjectProp
132c0 65 72 74 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  erty*....       
132d0 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
132e0 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62  TE: For test "ob
132f0 6a 65 63 74 2d 31 34 2e 36 22 2e 0d 0a 20 20 20  ject-14.6"...   
13300 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
13310 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
13320 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
13330 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
13340 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
13350 20 20 20 20 20 20 20 2a 54 79 70 65 50 72 6f 70         *TypeProp
13360 65 72 74 79 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  erty*..      }..
13370 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
13380 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 49 44 69   # NOTE: Has IDi
13390 73 70 6f 73 61 62 6c 65 20 74 65 73 74 69 6e 67  sposable testing
133a0 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
133b0 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
133c0 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
133d0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
133e0 74 44 69 73 70 6f 73 61 62 6c 65 29 5d 7d 20 74  tDisposable)]} t
133f0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
13400 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
13410 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
13420 63 74 2d 32 2e 38 22 2e 0d 0a 20 20 20 20 20 20  ct-2.8"...      
13430 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
13440 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
13450 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
13460 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
13470 61 75 6c 74 2b 44 69 73 70 6f 73 61 62 6c 65 20  ault+Disposable 
13480 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
13490 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c 65 2e  ToString* Eagle.
134a0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e 44  _Tests.Default.D
134b0 69 73 70 6f 73 61 62 6c 65 2e 54 6f 53 74 72 69  isposable.ToStri
134c0 6e 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ng..      }.... 
134d0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
134e0 4e 4f 54 45 3a 20 48 61 73 20 49 53 75 62 43 6f  NOTE: Has ISubCo
134f0 6d 6d 61 6e 64 20 74 65 73 74 69 6e 67 20 73 75  mmand testing su
13500 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
13510 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20  led?..      #.. 
13520 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
13530 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 75  exists no(testSu
13540 62 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  bCommand)]} then
13550 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
13560 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
13570 6f 72 20 74 65 73 74 73 20 22 72 65 64 65 66 69  or tests "redefi
13580 6e 65 2d 32 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  ne-2.*"...      
13590 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
135a0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
135b0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
135c0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
135d0 61 75 6c 74 2b 53 75 62 43 6f 6d 6d 61 6e 64 20  ault+SubCommand 
135e0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
135f0 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c 65 2e  ToString* Eagle.
13600 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e 53  _Tests.Default.S
13610 75 62 43 6f 6d 6d 61 6e 64 2e 54 6f 53 74 72 69  ubCommand.ToStri
13620 6e 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ng..      }.... 
13630 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
13640 4e 4f 54 45 3a 20 48 61 73 20 49 52 65 73 6f 6c  NOTE: Has IResol
13650 76 65 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  ve testing suppo
13660 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
13670 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ?..      #..    
13680 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
13690 73 74 73 20 6e 6f 28 74 65 73 74 52 65 73 6f 6c  sts no(testResol
136a0 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ve)]} then {..  
136b0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
136c0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
136d0 74 73 20 22 72 65 73 6f 6c 76 65 72 2d 31 2e 2a  ts "resolver-1.*
136e0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
136f0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
13700 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
13710 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
13720 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b 52  _Tests.Default+R
13730 65 73 6f 6c 76 65 20 5c 0d 0a 20 20 20 20 20 20  esolve \..      
13740 20 20 20 20 20 20 2a 54 6f 53 74 72 69 6e 67 2a        *ToString*
13750 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
13760 66 61 75 6c 74 2e 52 65 73 6f 6c 76 65 2e 54 6f  fault.Resolve.To
13770 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 7d 0d  String..      }.
13780 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
13790 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 54 72    # NOTE: Has Tr
137a0 61 63 65 4c 69 73 74 65 6e 65 72 20 74 65 73 74  aceListener test
137b0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
137c0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
137d0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
137e0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
137f0 74 65 73 74 54 72 61 63 65 4c 69 73 74 65 6e 65  testTraceListene
13800 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  r)]} then {..   
13810 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
13820 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
13830 20 22 62 61 73 69 63 2d 31 2e 37 34 22 2e 0d 0a   "basic-1.74"...
13840 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13850 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13860 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13870 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13880 74 73 2e 44 65 66 61 75 6c 74 2b 4c 69 73 74 65  ts.Default+Liste
13890 6e 65 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ner \..         
138a0 20 20 20 2a 57 72 69 74 65 4c 69 6e 65 2a 20 45     *WriteLine* E
138b0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
138c0 75 6c 74 2e 4c 69 73 74 65 6e 65 72 2e 57 72 69  ult.Listener.Wri
138d0 74 65 4c 69 6e 65 0d 0a 0d 0a 20 20 20 20 20 20  teLine....      
138e0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
138f0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
13900 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
13910 73 2e 44 65 66 61 75 6c 74 2b 4c 69 73 74 65 6e  s.Default+Listen
13920 65 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  er \..          
13930 20 20 2a 46 6c 75 73 68 2a 20 45 61 67 6c 65 2e    *Flush* Eagle.
13940 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e 4c  _Tests.Default.L
13950 69 73 74 65 6e 65 72 2e 46 6c 75 73 68 0d 0a 0d  istener.Flush...
13960 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
13970 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
13980 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e 37 35  test "basic-1.75
13990 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
139a0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
139b0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
139c0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
139d0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b 4c  _Tests.Default+L
139e0 69 73 74 65 6e 65 72 20 5c 0d 0a 20 20 20 20 20  istener \..     
139f0 20 20 20 20 20 20 20 2a 20 45 61 67 6c 65 2e 5f         * Eagle._
13a00 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e 4c 69  Tests.Default.Li
13a10 73 74 65 6e 65 72 0d 0a 20 20 20 20 20 20 7d 0d  stener..      }.
13a20 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
13a30 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
13a40 20 4d 53 42 75 69 6c 64 20 74 65 73 74 69 6e 67   MSBuild testing
13a50 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
13a60 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
13a70 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
13a80 78 69 73 74 73 20 6e 6f 28 6d 73 42 75 69 6c 64  xists no(msBuild
13a90 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
13aa0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
13ab0 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a  E: For test "obj
13ac0 65 63 74 2d 34 2e 31 33 22 2e 0d 0a 20 20 20 20  ect-4.13"...    
13ad0 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
13ae0 46 6f 72 41 73 73 65 6d 62 6c 79 20 24 74 65 73  ForAssembly $tes
13af0 74 5f 63 68 61 6e 6e 65 6c 20 4d 69 63 72 6f 73  t_channel Micros
13b00 6f 66 74 2e 42 75 69 6c 64 2e 46 72 61 6d 65 77  oft.Build.Framew
13b10 6f 72 6b 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a  ork....      #..
13b20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
13b30 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 36  r test "object-6
13b40 2e 31 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .1"...      #.. 
13b50 20 20 20 20 20 63 68 65 63 6b 46 6f 72 41 73 73       checkForAss
13b60 65 6d 62 6c 79 20 24 74 65 73 74 5f 63 68 61 6e  embly $test_chan
13b70 6e 65 6c 20 4d 69 63 72 6f 73 6f 66 74 2e 42 75  nel Microsoft.Bu
13b80 69 6c 64 2e 45 6e 67 69 6e 65 0d 0a 20 20 20 20  ild.Engine..    
13b90 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
13ba0 23 20 4e 4f 54 45 3a 20 48 61 73 20 45 78 63 65  # NOTE: Has Exce
13bb0 6c 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  l testing suppor
13bc0 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
13bd0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
13be0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
13bf0 6f 28 65 78 63 65 6c 29 5d 7d 20 74 68 65 6e 20  o(excel)]} then 
13c00 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
13c10 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
13c20 73 74 73 20 22 65 78 63 65 6c 2d 2a 2e 2a 22 2e  sts "excel-*.*".
13c30 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
13c40 20 63 68 65 63 6b 46 6f 72 41 73 73 65 6d 62 6c   checkForAssembl
13c50 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  y $test_channel 
13c60 4d 69 63 72 6f 73 6f 66 74 2e 4f 66 66 69 63 65  Microsoft.Office
13c70 2e 49 6e 74 65 72 6f 70 2e 45 78 63 65 6c 0d 0a  .Interop.Excel..
13c80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
13c90 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
13ca0 73 70 65 65 63 68 20 74 65 73 74 69 6e 67 20 73  speech testing s
13cb0 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
13cc0 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
13cd0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
13ce0 73 74 73 20 6e 6f 28 73 70 65 65 63 68 29 5d 7d  sts no(speech)]}
13cf0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
13d00 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
13d10 53 65 74 20 74 68 65 20 61 75 64 69 6f 20 76 6f  Set the audio vo
13d20 6c 75 6d 65 2c 20 69 66 20 6e 65 63 65 73 73 61  lume, if necessa
13d30 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ry...      #..  
13d40 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
13d50 78 69 73 74 73 20 74 65 73 74 5f 76 6f 6c 75 6d  xists test_volum
13d60 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
13d70 20 20 20 20 73 65 74 20 74 65 73 74 5f 76 6f 6c      set test_vol
13d80 75 6d 65 20 30 3b 20 23 20 69 6e 20 70 65 72 63  ume 0; # in perc
13d90 65 6e 74 2c 20 30 20 69 73 20 73 69 6c 65 6e 74  ent, 0 is silent
13da0 2e 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ...      }....  
13db0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
13dc0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
13dd0 62 6a 65 63 74 2d 34 2e 35 22 2e 0d 0a 20 20 20  bject-4.5"...   
13de0 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
13df0 6b 46 6f 72 41 73 73 65 6d 62 6c 79 20 24 74 65  kForAssembly $te
13e00 73 74 5f 63 68 61 6e 6e 65 6c 20 53 79 73 74 65  st_channel Syste
13e10 6d 2e 53 70 65 65 63 68 0d 0a 20 20 20 20 7d 0d  m.Speech..    }.
13e20 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
13e30 4e 4f 54 45 3a 20 48 61 73 20 57 69 6e 46 6f 72  NOTE: Has WinFor
13e40 6d 73 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  ms testing suppo
13e50 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
13e60 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ?..    #..    if
13e70 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
13e80 6e 6f 28 77 69 6e 46 6f 72 6d 73 29 5d 7d 20 74  no(winForms)]} t
13e90 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
13ea0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
13eb0 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d  r tests "object-
13ec0 31 33 2e 31 2e 2a 22 2c 20 22 6f 62 6a 65 63 74  13.1.*", "object
13ed0 2d 31 33 2e 32 2e 2a 22 2c 20 61 6e 64 0d 0a 20  -13.2.*", and.. 
13ee0 20 20 20 20 20 23 20 20 20 20 20 20 20 22 77 69       #       "wi
13ef0 6e 46 6f 72 6d 73 2d 2a 2e 2a 22 2e 0d 0a 20 20  nForms-*.*"...  
13f00 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65      #..      che
13f10 63 6b 46 6f 72 57 69 6e 64 6f 77 73 46 6f 72 6d  ckForWindowsForm
13f20 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  s $test_channel.
13f30 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
13f40 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 72 65  .    # NOTE: Are
13f50 20 77 65 20 72 75 6e 6e 69 6e 67 20 69 6e 20 61   we running in a
13f60 20 57 6f 57 36 34 20 70 72 6f 63 65 73 73 3f 0d   WoW64 process?.
13f70 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
13f80 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
13f90 28 77 6f 77 36 34 29 5d 7d 20 74 68 65 6e 20 7b  (wow64)]} then {
13fa0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
13fb0 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73   # NOTE: This is
13fc0 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
13fd0 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73  sed by any tests
13fe0 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
13ff0 20 20 63 68 65 63 6b 46 6f 72 57 6f 57 36 34 20    checkForWoW64 
14000 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
14010 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
14020 20 20 20 23 20 4e 4f 54 45 3a 20 41 72 65 20 77     # NOTE: Are w
14030 65 20 72 75 6e 6e 69 6e 67 20 69 6e 20 61 6e 20  e running in an 
14040 53 54 41 20 74 68 72 65 61 64 3f 0d 0a 20 20 20  STA thread?..   
14050 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
14060 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 74 61  fo exists no(sta
14070 54 68 72 65 61 64 29 5d 7d 20 74 68 65 6e 20 7b  Thread)]} then {
14080 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
14090 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
140a0 74 73 20 22 78 61 6d 6c 2d 31 2e 2a 22 2e 0d 0a  ts "xaml-1.*"...
140b0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63        #..      c
140c0 68 65 63 6b 46 6f 72 53 74 61 54 68 72 65 61 64  heckForStaThread
140d0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
140e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
140f0 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
14100 57 50 46 20 74 65 73 74 69 6e 67 20 73 75 70 70  WPF testing supp
14110 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
14120 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
14130 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
14140 20 6e 6f 28 77 70 66 29 5d 7d 20 74 68 65 6e 20   no(wpf)]} then 
14150 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
14160 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
14170 73 74 73 20 22 78 61 6d 6c 2d 31 2e 2a 22 2e 0d  sts "xaml-1.*"..
14180 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
14190 63 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77 73 50  checkForWindowsP
141a0 72 65 73 65 6e 74 61 74 69 6f 6e 46 6f 75 6e 64  resentationFound
141b0 61 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ation $test_chan
141c0 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
141d0 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
141e0 20 48 61 73 20 50 6f 77 65 72 53 68 65 6c 6c 20   Has PowerShell 
141f0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
14200 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
14210 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
14220 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
14230 70 6f 77 65 72 53 68 65 6c 6c 29 5d 7d 20 74 68  powerShell)]} th
14240 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
14250 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
14260 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 34   tests "object-4
14270 2e 37 22 2c 20 22 6f 62 6a 65 63 74 2d 34 2e 38  .7", "object-4.8
14280 22 2c 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 34  ", and "object-4
14290 2e 39 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .9"...      #.. 
142a0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 50 6f 77       checkForPow
142b0 65 72 53 68 65 6c 6c 20 24 74 65 73 74 5f 63 68  erShell $test_ch
142c0 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
142d0 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
142e0 45 3a 20 48 61 73 20 2e 4e 45 54 20 46 72 61 6d  E: Has .NET Fram
142f0 65 77 6f 72 6b 20 32 2e 30 20 53 65 72 76 69 63  ework 2.0 Servic
14300 65 20 50 61 63 6b 20 74 65 73 74 69 6e 67 20 73  e Pack testing s
14310 75 70 70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20  upport been..   
14320 20 23 20 20 20 20 20 20 20 64 69 73 61 62 6c 65   #       disable
14330 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
14340 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
14350 20 6e 6f 28 6e 65 74 46 78 32 30 53 70 29 5d 7d   no(netFx20Sp)]}
14360 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
14370 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
14380 46 6f 72 20 74 65 73 74 20 22 68 61 73 68 2d 31  For test "hash-1
14390 2e 31 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .1"...      #.. 
143a0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 65 74       checkForNet
143b0 46 78 32 30 53 65 72 76 69 63 65 50 61 63 6b 20  Fx20ServicePack 
143c0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
143d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
143e0 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 2e     # NOTE: Has .
143f0 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 34 2e  NET Framework 4.
14400 78 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  x testing suppor
14410 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
14420 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
14430 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
14440 6f 28 6e 65 74 46 78 34 78 29 5d 7d 20 74 68 65  o(netFx4x)]} the
14450 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
14460 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
14470 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 31 32 2e  test "object-12.
14480 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  1.*"...      #..
14490 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 65        checkForNe
144a0 74 46 78 34 78 20 24 74 65 73 74 5f 63 68 61 6e  tFx4x $test_chan
144b0 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
144c0 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
144d0 20 48 61 73 20 74 61 72 67 65 74 20 66 72 61 6d   Has target fram
144e0 65 77 6f 72 6b 20 74 65 73 74 69 6e 67 20 73 75  ework testing su
144f0 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
14500 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
14510 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
14520 74 73 20 6e 6f 28 74 61 72 67 65 74 46 72 61 6d  ts no(targetFram
14530 65 77 6f 72 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d  ework)]} then {.
14540 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54  .      checkForT
14550 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 20 24  argetFramework $
14560 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
14570 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
14580 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61    # NOTE: Has na
14590 74 69 76 65 20 75 74 69 6c 69 74 79 20 74 65 73  tive utility tes
145a0 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
145b0 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
145c0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
145d0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e 61 74  fo exists no(nat
145e0 69 76 65 55 74 69 6c 69 74 79 29 5d 7d 20 74 68  iveUtility)]} th
145f0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
14600 6b 46 6f 72 4e 61 74 69 76 65 55 74 69 6c 69 74  kForNativeUtilit
14610 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  y $test_channel.
14620 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
14630 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
14640 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74   Visual Studio t
14650 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
14660 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
14670 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
14680 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 76  info exists no(v
14690 69 73 75 61 6c 53 74 75 64 69 6f 29 5d 7d 20 74  isualStudio)]} t
146a0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
146b0 63 6b 46 6f 72 56 69 73 75 61 6c 53 74 75 64 69  ckForVisualStudi
146c0 6f 56 69 61 52 65 67 69 73 74 72 79 20 24 74 65  oViaRegistry $te
146d0 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
146e0 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
146f0 23 20 4e 4f 54 45 3a 20 48 61 73 20 57 69 58 20  # NOTE: Has WiX 
14700 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
14710 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
14720 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
14730 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
14740 77 69 78 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  wix)]} then {.. 
14750 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
14760 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
14770 6f 62 6a 65 63 74 2d 34 2e 31 30 22 2e 0d 0a 20  object-4.10"... 
14780 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
14790 65 63 6b 46 6f 72 57 69 78 20 24 74 65 73 74 5f  eckForWix $test_
147a0 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
147b0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
147c0 4f 54 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20  OTE: Has native 
147d0 64 65 62 75 67 67 65 72 20 74 65 73 74 69 6e 67  debugger testing
147e0 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
147f0 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
14800 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
14810 78 69 73 74 73 20 6e 6f 28 6e 61 74 69 76 65 44  xists no(nativeD
14820 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e 20  ebugger)]} then 
14830 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
14840 72 4e 61 74 69 76 65 44 65 62 75 67 67 65 72 20  rNativeDebugger 
14850 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
14860 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
14870 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6d     # NOTE: Has m
14880 61 6e 61 67 65 64 20 64 65 62 75 67 67 65 72 20  anaged debugger 
14890 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
148a0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
148b0 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
148c0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
148d0 6d 61 6e 61 67 65 64 44 65 62 75 67 67 65 72 29  managedDebugger)
148e0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
148f0 20 63 68 65 63 6b 46 6f 72 4d 61 6e 61 67 65 64   checkForManaged
14900 44 65 62 75 67 67 65 72 20 24 74 65 73 74 5f 63  Debugger $test_c
14910 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
14920 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
14930 54 45 3a 20 48 61 73 20 6d 61 6e 61 67 65 64 20  TE: Has managed 
14940 64 65 62 75 67 67 69 6e 67 20 61 73 73 69 73 74  debugging assist
14950 61 6e 74 73 20 74 65 73 74 69 6e 67 20 73 75 70  ants testing sup
14960 70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20 20 23  port been..    #
14970 20 20 20 20 20 20 20 64 69 73 61 62 6c 65 64 3f         disabled?
14980 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
14990 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
149a0 6f 28 6d 61 6e 61 67 65 64 44 65 62 75 67 67 69  o(managedDebuggi
149b0 6e 67 41 73 73 69 73 74 61 6e 74 73 29 5d 7d 20  ngAssistants)]} 
149c0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68  then {..      ch
149d0 65 63 6b 46 6f 72 4d 61 6e 61 67 65 64 44 65 62  eckForManagedDeb
149e0 75 67 67 69 6e 67 41 73 73 69 73 74 61 6e 74 73  uggingAssistants
149f0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
14a00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
14a10 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
14a20 73 63 72 69 70 74 20 64 65 62 75 67 67 65 72 20  script debugger 
14a30 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
14a40 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
14a50 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
14a60 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
14a70 73 63 72 69 70 74 44 65 62 75 67 67 65 72 29 5d  scriptDebugger)]
14a80 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
14a90 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
14aa0 20 46 6f 72 20 74 65 73 74 73 20 22 64 65 62 75   For tests "debu
14ab0 67 2d 31 2e 31 22 2c 20 22 64 65 62 75 67 2d 32  g-1.1", "debug-2
14ac0 2e 31 22 2c 20 22 64 65 62 75 67 2d 33 2e 31 22  .1", "debug-3.1"
14ad0 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 23 20 20  , and..      #  
14ae0 20 20 20 20 20 22 64 65 62 75 67 2d 34 2e 31 22       "debug-4.1"
14af0 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
14b00 20 20 63 68 65 63 6b 46 6f 72 53 63 72 69 70 74    checkForScript
14b10 44 65 62 75 67 67 65 72 20 24 74 65 73 74 5f 63  Debugger $test_c
14b20 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
14b30 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
14b40 54 45 3a 20 48 61 73 20 73 63 72 69 70 74 20 64  TE: Has script d
14b50 65 62 75 67 67 65 72 20 69 6e 74 65 72 70 72 65  ebugger interpre
14b60 74 65 72 20 74 65 73 74 69 6e 67 20 73 75 70 70  ter testing supp
14b70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20 20 23 20  ort been..    # 
14b80 20 20 20 20 20 20 64 69 73 61 62 6c 65 64 3f 0d        disabled?.
14b90 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
14ba0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
14bb0 28 73 63 72 69 70 74 44 65 62 75 67 67 65 72 49  (scriptDebuggerI
14bc0 6e 74 65 72 70 72 65 74 65 72 29 5d 7d 20 74 68  nterpreter)]} th
14bd0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
14be0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
14bf0 20 74 65 73 74 20 22 64 65 62 75 67 2d 32 2e 31   test "debug-2.1
14c00 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  "...      #..   
14c10 20 20 20 63 68 65 63 6b 46 6f 72 53 63 72 69 70     checkForScrip
14c20 74 44 65 62 75 67 67 65 72 49 6e 74 65 72 70 72  tDebuggerInterpr
14c30 65 74 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  eter $test_chann
14c40 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  el..    }....   
14c50 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
14c60 41 72 65 20 77 65 20 72 75 6e 6e 69 6e 67 20 75  Are we running u
14c70 6e 64 65 72 20 74 68 65 20 4d 6f 6e 6f 20 64 65  nder the Mono de
14c80 62 75 67 67 65 72 3f 20 20 49 66 20 73 6f 2c 20  bugger?  If so, 
14c90 73 65 76 65 72 61 6c 0d 0a 20 20 20 20 23 20 20  several..    #  
14ca0 20 20 20 20 20 74 65 73 74 73 20 77 69 6c 6c 20       tests will 
14cb0 68 61 76 65 20 74 6f 20 62 65 20 64 69 73 61 62  have to be disab
14cc0 6c 65 64 20 62 65 63 61 75 73 65 20 74 68 65 79  led because they
14cd0 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 0d 0a   do not appear..
14ce0 20 20 20 20 23 20 20 20 20 20 20 20 74 6f 20 77      #       to w
14cf0 6f 72 6b 20 74 68 65 72 65 2e 0d 0a 20 20 20 20  ork there...    
14d00 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
14d10 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d 6f 6e 6f  o exists no(mono
14d20 44 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e  Debugger)]} then
14d30 20 7b 0d 0a 20 20 20 20 20 20 74 70 75 74 73 20   {..      tputs 
14d40 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 22 2d  $test_channel "-
14d50 2d 2d 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72  --- checking for
14d60 20 4d 6f 6e 6f 20 64 65 62 75 67 67 65 72 2e 2e   Mono debugger..
14d70 2e 20 22 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20  . "....      if 
14d80 7b 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74  {[haveConstraint
14d90 20 6d 6f 6e 6f 5d 20 26 26 20 5b 68 61 76 65 43   mono] && [haveC
14da0 6f 6e 73 74 72 61 69 6e 74 20 6d 61 6e 61 67 65  onstraint manage
14db0 64 44 65 62 75 67 67 65 72 5d 7d 20 74 68 65 6e  dDebugger]} then
14dc0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
14dd0 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 41         # NOTE: A
14de0 64 64 20 61 20 73 70 65 63 69 61 6c 20 74 65 73  dd a special tes
14df0 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 74 6f 20  t constraint to 
14e00 73 69 6d 70 6c 69 66 79 20 74 68 65 20 4d 6f 6e  simplify the Mon
14e10 6f 20 64 65 62 75 67 67 65 72 0d 0a 20 20 20 20  o debugger..    
14e20 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73 74      #       test
14e30 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 68 65 63   constraint chec
14e40 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73  king for the tes
14e50 74 73 20 74 68 61 74 20 6e 65 65 64 20 69 74 2e  ts that need it.
14e60 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
14e70 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69       addConstrai
14e80 6e 74 20 6d 6f 6e 6f 44 65 62 75 67 67 65 72 0d  nt monoDebugger.
14e90 0a 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74 73  ...        tputs
14ea0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 79   $test_channel y
14eb0 65 73 5c 6e 0d 0a 20 20 20 20 20 20 7d 20 65 6c  es\n..      } el
14ec0 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 70  se {..        tp
14ed0 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
14ee0 6c 20 6e 6f 5c 6e 0d 0a 20 20 20 20 20 20 7d 0d  l no\n..      }.
14ef0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
14f00 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
14f10 20 47 61 72 75 64 61 20 74 65 73 74 69 6e 67 20   Garuda testing 
14f20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
14f30 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
14f40 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
14f50 69 73 74 73 20 6e 6f 28 67 61 72 75 64 61 44 6c  ists no(garudaDl
14f60 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
14f70 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
14f80 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 67  TE: For tests "g
14f90 61 72 75 64 61 2d 31 2e 31 22 20 61 6e 64 20 22  aruda-1.1" and "
14fa0 67 61 72 75 64 61 2d 31 2e 32 22 2e 0d 0a 20 20  garuda-1.2"...  
14fb0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65      #..      che
14fc0 63 6b 46 6f 72 47 61 72 75 64 61 44 6c 6c 20 24  ckForGarudaDll $
14fd0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
14fe0 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23    }....    #####
14ff0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15000 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15010 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15020 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15030 23 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23  ######..    ####
15040 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15050 23 23 23 23 23 23 20 45 4e 44 20 45 61 67 6c 65  ###### END Eagle
15060 20 43 6f 6e 73 74 72 61 69 6e 74 73 20 23 23 23   Constraints ###
15070 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15080 23 23 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23  #######..    ###
15090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
150a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
150b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
150c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
150d0 23 23 23 23 23 23 23 23 0d 0a 20 20 7d 20 65 6c  ########..  } el
150e0 73 65 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  se {..    #..   
150f0 20 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75   # NOTE: Make su
15100 72 65 20 74 68 61 74 20 54 63 6c 20 68 6f 6e 6f  re that Tcl hono
15110 72 73 20 74 68 65 20 45 61 67 6c 65 20 74 65 73  rs the Eagle tes
15120 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a  t constraints...
15130 20 20 20 20 23 0d 0a 20 20 20 20 63 6f 6e 66 69      #..    confi
15140 67 75 72 65 54 63 6c 74 65 73 74 20 5c 0d 0a 20  gureTcltest \.. 
15150 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69         [expr {[i
15160 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
15170 66 6c 61 67 73 28 2d 76 65 72 62 6f 73 65 29 5d  flags(-verbose)]
15180 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
15190 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 76    $test_flags(-v
151a0 65 72 62 6f 73 65 29 20 3a 20 22 22 7d 5d 20 5c  erbose) : ""}] \
151b0 0d 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72 20  ..        [expr 
151c0 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
151d0 73 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29  st_flags(-match)
151e0 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ] ? \..         
151f0 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d     $test_flags(-
15200 6d 61 74 63 68 29 20 3a 20 5b 6c 69 73 74 5d 7d  match) : [list]}
15210 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 65 78  ] \..        [ex
15220 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
15230 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69   test_flags(-ski
15240 70 29 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  p)] ? \..       
15250 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73       $test_flags
15260 28 2d 73 6b 69 70 29 20 3a 20 5b 6c 69 73 74 5d  (-skip) : [list]
15270 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 65  }] \..        [e
15280 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
15290 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63 6f  s test_flags(-co
152a0 6e 73 74 72 61 69 6e 74 73 29 5d 20 3f 20 5c 0d  nstraints)] ? \.
152b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65  .            $te
152c0 73 74 5f 66 6c 61 67 73 28 2d 63 6f 6e 73 74 72  st_flags(-constr
152d0 61 69 6e 74 73 29 20 3a 20 5b 6c 69 73 74 5d 7d  aints) : [list]}
152e0 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69  ] \..        [li
152f0 73 74 5d 20 66 61 6c 73 65 0d 0a 0d 0a 20 20 20  st] false....   
15300 20 23 0d 0a 20 20 20 20 23 20 48 41 43 4b 3a 20   #..    # HACK: 
15310 52 65 73 65 74 20 74 68 65 20 74 65 73 74 20 63  Reset the test c
15320 6f 75 6e 74 73 20 66 6f 72 20 74 63 6c 74 65 73  ounts for tcltes
15330 74 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73  t...    #..    s
15340 65 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75  et ::tcltest::nu
15350 6d 54 65 73 74 73 28 54 6f 74 61 6c 29 20 30 0d  mTests(Total) 0.
15360 0a 20 20 20 20 73 65 74 20 3a 3a 74 63 6c 74 65  .    set ::tclte
15370 73 74 3a 3a 6e 75 6d 54 65 73 74 73 28 53 6b 69  st::numTests(Ski
15380 70 70 65 64 29 20 30 0d 0a 20 20 20 20 73 65 74  pped) 0..    set
15390 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75 6d 54   ::tcltest::numT
153a0 65 73 74 73 28 50 61 73 73 65 64 29 20 30 0d 0a  ests(Passed) 0..
153b0 20 20 20 20 73 65 74 20 3a 3a 74 63 6c 74 65 73      set ::tcltes
153c0 74 3a 3a 6e 75 6d 54 65 73 74 73 28 46 61 69 6c  t::numTests(Fail
153d0 65 64 29 20 30 0d 0a 0d 0a 20 20 20 20 23 0d 0a  ed) 0....    #..
153e0 20 20 20 20 23 20 48 41 43 4b 3a 20 52 65 73 65      # HACK: Rese
153f0 74 20 74 68 65 20 6c 69 73 74 20 6f 66 20 66 61  t the list of fa
15400 69 6c 65 64 20 66 69 6c 65 73 2e 0d 0a 20 20 20  iled files...   
15410 20 23 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74 63   #..    set ::tc
15420 6c 74 65 73 74 3a 3a 66 61 69 6c 46 69 6c 65 73  ltest::failFiles
15430 20 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20 20 20 23   [list]....    #
15440 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15450 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15460 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15470 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15480 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20 20 20  ##########..    
15490 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
154a0 23 23 23 23 23 23 23 23 23 23 20 42 45 47 49 4e  ########## BEGIN
154b0 20 54 63 6c 20 43 6f 6e 73 74 72 61 69 6e 74 73   Tcl Constraints
154c0 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
154d0 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20 20  ###########..   
154e0 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
154f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15510 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15520 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
15530 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
15540 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20  channel \..     
15550 20 20 20 22 2d 2d 2d 2d 20 73 74 61 72 74 20 6f     "---- start o
15560 66 20 54 63 6c 20 73 70 65 63 69 66 69 63 20 74  f Tcl specific t
15570 65 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e  est constraints.
15580 2e 2e 5c 6e 22 0d 0a 0d 0a 20 20 20 20 23 0d 0a  ..\n"....    #..
15590 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
155a0 63 6f 6d 70 69 6c 65 2f 72 75 6e 74 69 6d 65 20  compile/runtime 
155b0 6f 70 74 69 6f 6e 20 74 65 73 74 69 6e 67 20 73  option testing s
155c0 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
155d0 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
155e0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
155f0 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4f 70  sts no(compileOp
15600 74 69 6f 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  tions)]} then {.
15610 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
15620 23 20 4e 4f 54 45 3a 20 48 61 73 20 22 6b 6e 6f  # NOTE: Has "kno
15630 77 6e 22 20 63 6f 6d 70 69 6c 65 20 6f 70 74 69  wn" compile opti
15640 6f 6e 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  on testing suppo
15650 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
15660 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ?..      #..    
15670 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
15680 73 74 73 20 6e 6f 28 6b 6e 6f 77 6e 43 6f 6d 70  sts no(knownComp
15690 69 6c 65 4f 70 74 69 6f 6e 73 29 5d 7d 20 74 68  ileOptions)]} th
156a0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
156b0 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
156c0 20 43 68 65 63 6b 20 66 6f 72 20 61 6c 6c 20 22   Check for all "
156d0 6b 6e 6f 77 6e 22 20 63 6f 6d 70 69 6c 65 20 6f  known" compile o
156e0 70 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20  ptions...       
156f0 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
15700 6b 46 6f 72 4b 6e 6f 77 6e 43 6f 6d 70 69 6c 65  kForKnownCompile
15710 4f 70 74 69 6f 6e 73 20 24 74 65 73 74 5f 63 68  Options $test_ch
15720 61 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 20 65  annel..      } e
15730 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  lse {..        #
15740 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
15750 3a 20 48 61 73 20 64 65 64 69 63 61 74 65 64 20  : Has dedicated 
15760 74 65 73 74 20 73 75 70 70 6f 72 74 20 62 65 65  test support bee
15770 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
15780 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
15790 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
157a0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
157b0 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 54 65 73  ts no(compileTes
157c0 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
157d0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
157e0 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
157f0 74 65 73 74 73 20 22 74 63 6c 4c 6f 61 64 2d 31  tests "tclLoad-1
15800 33 2e 31 2e 31 22 20 61 6e 64 20 22 74 63 6c 4c  3.1.1" and "tclL
15810 6f 61 64 2d 31 33 2e 31 2e 32 22 2e 0d 0a 20 20  oad-13.1.2"...  
15820 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
15830 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
15840 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
15850 5f 63 68 61 6e 6e 65 6c 20 54 45 53 54 0d 0a 20  _channel TEST.. 
15860 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15870 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
15880 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15890 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
158a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
158b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
158c0 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20 20  ###########..   
158d0 20 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 20 45 4e 44  ############ END
158f0 20 54 63 6c 20 43 6f 6e 73 74 72 61 69 6e 74 73   Tcl Constraints
15900 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
15910 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20  ############..  
15920 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
15930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15960 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20  #############.. 
15970 20 7d 0d 0a 0d 0a 20 20 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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
159c0 23 23 23 23 23 0d 0a 20 20 23 23 23 23 23 23 23  #####..  #######
159d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
159e0 20 42 45 47 49 4e 20 54 63 6c 20 26 20 45 61 67   BEGIN Tcl & Eag
159f0 6c 65 20 43 6f 6e 73 74 72 61 69 6e 74 73 20 23  le Constraints #
15a00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15a10 23 23 23 23 23 23 0d 0a 20 20 23 23 23 23 23 23  ######..  ######
15a20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15a30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15a40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15a50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15a60 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 74 70 75  #######....  tpu
15a70 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
15a80 20 5c 0d 0a 20 20 20 20 20 20 22 2d 2d 2d 2d 20   \..      "---- 
15a90 73 74 61 72 74 20 6f 66 20 63 6f 6d 6d 6f 6e 20  start of common 
15aa0 28 54 63 6c 20 26 20 45 61 67 6c 65 29 20 74 65  (Tcl & Eagle) te
15ab0 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 2e  st constraints..
15ac0 2e 5c 6e 22 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .\n"....  #..  #
15ad0 20 4e 4f 54 45 3a 20 46 6f 72 63 65 20 74 65 73   NOTE: Force tes
15ae0 74 73 20 74 68 61 74 20 61 72 65 20 6e 6f 72 6d  ts that are norm
15af0 61 6c 6c 79 20 62 6c 6f 63 6b 65 64 20 62 79 20  ally blocked by 
15b00 4d 6f 6e 6f 20 69 73 73 75 65 73 20 74 6f 20 72  Mono issues to r
15b10 75 6e 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  un?..  #..  if {
15b20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
15b30 6d 6f 6e 6f 48 61 63 6b 73 29 5d 7d 20 74 68 65  monoHacks)]} the
15b40 6e 20 7b 0d 0a 20 20 20 20 61 64 64 4b 6e 6f 77  n {..    addKnow
15b50 6e 4d 6f 6e 6f 43 6f 6e 73 74 72 61 69 6e 74 73  nMonoConstraints
15b60 20 74 72 75 65 0d 0a 20 20 20 20 61 64 64 4b 6e   true..    addKn
15b70 6f 77 6e 4d 6f 6e 6f 43 6f 6e 73 74 72 61 69 6e  ownMonoConstrain
15b80 74 73 20 66 61 6c 73 65 0d 0a 0d 0a 20 20 20 20  ts false....    
15b90 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
15ba0 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 22  nel \..        "
15bb0 2d 2d 2d 2d 20 61 64 64 65 64 20 61 6c 6c 20 6b  ---- added all k
15bc0 6e 6f 77 6e 20 4d 6f 6e 6f 20 74 65 73 74 20 63  nown Mono test c
15bd0 6f 6e 73 74 72 61 69 6e 74 73 20 28 66 6f 72 63  onstraints (forc
15be0 65 64 29 5c 6e 22 0d 0a 20 20 7d 0d 0a 0d 0a 20  ed)\n"..  }.... 
15bf0 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61   #..  # NOTE: Ha
15c00 73 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  s Visual Studio 
15c10 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
15c20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
15c30 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
15c40 6f 20 65 78 69 73 74 73 20 6e 6f 28 76 69 73 75  o exists no(visu
15c50 61 6c 53 74 75 64 69 6f 29 5d 7d 20 74 68 65 6e  alStudio)]} then
15c60 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
15c70 56 69 73 75 61 6c 53 74 75 64 69 6f 56 69 61 56  VisualStudioViaV
15c80 73 57 68 65 72 65 20 24 74 65 73 74 5f 63 68 61  sWhere $test_cha
15c90 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
15ca0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63  ..  # NOTE: Chec
15cb0 6b 20 66 6f 72 20 45 61 67 6c 65 20 63 6f 72 65  k for Eagle core
15cc0 20 6c 69 62 72 61 72 79 20 70 61 63 6b 61 67 65   library package
15cd0 20 6e 61 6d 65 73 2e 2e 2e 0d 0a 20 20 23 0d 0a   names.....  #..
15ce0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
15cf0 73 74 73 20 6e 6f 28 63 6f 72 65 50 61 63 6b 61  sts no(corePacka
15d00 67 65 4e 61 6d 65 73 29 5d 7d 20 74 68 65 6e 20  geNames)]} then 
15d10 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50  {..    checkForP
15d20 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61  ackage $test_cha
15d30 6e 6e 65 6c 20 7b 5e 45 61 67 6c 65 5c 2e 5f 50  nnel {^Eagle\._P
15d40 6c 75 67 69 6e 73 5c 2e 43 6f 72 65 2c 20 2e 2a  lugins\.Core, .*
15d50 24 7d 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72  $}..    checkFor
15d60 50 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68  Package $test_ch
15d70 61 6e 6e 65 6c 20 7b 5e 45 61 67 6c 65 5c 2e 5f  annel {^Eagle\._
15d80 50 6c 75 67 69 6e 73 5c 2e 4f 62 6a 65 63 74 2c  Plugins\.Object,
15d90 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68 65 63 6b   .*$}..    check
15da0 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65 73 74  ForPackage $test
15db0 5f 63 68 61 6e 6e 65 6c 20 7b 5e 45 61 67 6c 65  _channel {^Eagle
15dc0 5c 2e 5f 50 6c 75 67 69 6e 73 5c 2e 54 65 73 74  \._Plugins\.Test
15dd0 2c 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68 65 63  , .*$}..    chec
15de0 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65 73  kForPackage $tes
15df0 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 45 61 67 6c  t_channel {^Eagl
15e00 65 5c 2e 5f 50 6c 75 67 69 6e 73 5c 2e 54 72 61  e\._Plugins\.Tra
15e10 63 65 2c 20 2e 2a 24 7d 0d 0a 20 20 7d 0d 0a 0d  ce, .*$}..  }...
15e20 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
15e30 43 68 65 63 6b 20 66 6f 72 20 45 61 67 6c 65 20  Check for Eagle 
15e40 45 6e 74 65 72 70 72 69 73 65 20 45 64 69 74 69  Enterprise Editi
15e50 6f 6e 20 70 61 63 6b 61 67 65 20 6e 61 6d 65 73  on package names
15e60 2e 2e 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  .....  #..  if {
15e70 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
15e80 28 65 6e 74 65 72 70 72 69 73 65 50 61 63 6b 61  (enterprisePacka
15e90 67 65 4e 61 6d 65 73 29 5d 7d 20 74 68 65 6e 20  geNames)]} then 
15ea0 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
15eb0 4e 4f 54 45 3a 20 54 68 65 73 65 20 61 72 65 20  NOTE: These are 
15ec0 66 72 6f 6d 20 76 61 72 69 6f 75 73 20 53 4b 55  from various SKU
15ed0 73 20 6f 66 20 74 68 65 20 48 61 72 70 79 20 70  s of the Harpy p
15ee0 6c 75 67 69 6e 2e 0d 0a 20 20 20 20 23 0d 0a 20  lugin...    #.. 
15ef0 20 20 20 63 68 65 63 6b 46 6f 72 50 61 63 6b 61     checkForPacka
15f00 67 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ge $test_channel
15f10 20 7b 5e 4c 69 63 65 6e 73 69 6e 67 5c 2e 43 6f   {^Licensing\.Co
15f20 72 65 2c 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68  re, .*$}..    ch
15f30 65 63 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74  eckForPackage $t
15f40 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 4c 69  est_channel {^Li
15f50 63 65 6e 73 69 6e 67 5c 2e 53 74 61 6e 64 61 72  censing\.Standar
15f60 64 2c 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68 65  d, .*$}..    che
15f70 63 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65  ckForPackage $te
15f80 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 4c 69 63  st_channel {^Lic
15f90 65 6e 73 69 6e 67 5c 2e 45 6e 74 65 72 70 72 69  ensing\.Enterpri
15fa0 73 65 2c 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68  se, .*$}..    ch
15fb0 65 63 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74  eckForPackage $t
15fc0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 53 65  est_channel {^Se
15fd0 63 75 72 69 74 79 5c 2e 43 6f 72 65 2c 20 2e 2a  curity\.Core, .*
15fe0 24 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  $}....    #..   
15ff0 20 23 20 4e 4f 54 45 3a 20 54 68 65 73 65 20 61   # NOTE: These a
16000 72 65 20 66 72 6f 6d 20 76 61 72 69 6f 75 73 20  re from various 
16010 53 4b 55 73 20 6f 66 20 74 68 65 20 42 61 64 67  SKUs of the Badg
16020 65 20 70 6c 75 67 69 6e 2e 0d 0a 20 20 20 20 23  e plugin...    #
16030 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61  ..    checkForPa
16040 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e  ckage $test_chan
16050 6e 65 6c 20 7b 5e 42 61 64 67 65 5c 2e 45 6e 74  nel {^Badge\.Ent
16060 65 72 70 72 69 73 65 2c 20 2e 2a 24 7d 0d 0a 20  erprise, .*$}.. 
16070 20 20 20 63 68 65 63 6b 46 6f 72 50 61 63 6b 61     checkForPacka
16080 67 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ge $test_channel
16090 20 7b 5e 53 65 63 75 72 69 74 79 5c 2e 43 65 72   {^Security\.Cer
160a0 74 69 66 69 63 61 74 65 73 2c 20 2e 2a 24 7d 0d  tificates, .*$}.
160b0 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
160c0 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72   NOTE: Check for
160d0 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 20   the test suite 
160e0 69 6e 66 72 61 73 74 72 75 63 74 75 72 65 20 66  infrastructure f
160f0 69 6c 65 73 2e 2e 2e 0d 0a 20 20 23 0d 0a 20 20  iles.....  #..  
16100 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
16110 73 20 6e 6f 28 74 65 73 74 53 75 69 74 65 46 69  s no(testSuiteFi
16120 6c 65 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  les)]} then {.. 
16130 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74 53     checkForTestS
16140 75 69 74 65 46 69 6c 65 73 20 24 74 65 73 74 5f  uiteFiles $test_
16150 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
16160 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
16170 61 73 20 61 6c 6c 20 75 73 65 20 6f 66 20 5b 65  as all use of [e
16180 78 65 63 5d 20 66 6f 72 20 74 65 73 74 73 20 62  xec] for tests b
16190 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
161a0 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
161b0 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b   exists no(check
161c0 46 6f 72 54 65 73 74 45 78 65 63 29 5d 7d 20 74  ForTestExec)]} t
161d0 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
161e0 46 6f 72 54 65 73 74 45 78 65 63 20 24 74 65 73  ForTestExec $tes
161f0 74 5f 63 68 61 6e 6e 65 6c 20 5b 68 61 76 65 43  t_channel [haveC
16200 6f 6e 73 74 72 61 69 6e 74 20 71 75 69 65 74 5d  onstraint quiet]
16210 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
16220 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63  # NOTE: Has chec
16230 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73  king for the tes
16240 74 20 6d 61 63 68 69 6e 65 20 62 65 65 6e 20 64  t machine been d
16250 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20  isabled?..  #.. 
16260 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
16270 74 73 20 6e 6f 28 74 65 73 74 4d 61 63 68 69 6e  ts no(testMachin
16280 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
16290 20 63 68 65 63 6b 46 6f 72 54 65 73 74 4d 61 63   checkForTestMac
162a0 68 69 6e 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  hine $test_chann
162b0 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  el..  }....  #..
162c0 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68    # NOTE: Has ch
162d0 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74  ecking for the t
162e0 65 73 74 20 70 6c 61 74 66 6f 72 6d 20 62 65 65  est platform bee
162f0 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23  n disabled?..  #
16300 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
16310 78 69 73 74 73 20 6e 6f 28 74 65 73 74 50 6c 61  xists no(testPla
16320 74 66 6f 72 6d 29 5d 7d 20 74 68 65 6e 20 7b 0d  tform)]} then {.
16330 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73  .    checkForTes
16340 74 50 6c 61 74 66 6f 72 6d 20 24 74 65 73 74 5f  tPlatform $test_
16350 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
16360 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
16370 61 73 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20  as checking for 
16380 74 68 65 20 74 65 73 74 20 63 6f 6e 66 69 67 75  the test configu
16390 72 61 74 69 6f 6e 20 62 65 65 6e 20 64 69 73 61  ration been disa
163a0 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
163b0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
163c0 6e 6f 28 74 65 73 74 43 6f 6e 66 69 67 75 72 61  no(testConfigura
163d0 74 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  tion)]} then {..
163e0 20 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74      checkForTest
163f0 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 24 74  Configuration $t
16400 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
16410 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
16420 45 3a 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20  E: Has checking 
16430 66 6f 72 20 74 68 65 20 74 65 73 74 20 73 75 66  for the test suf
16440 66 69 78 20 62 65 65 6e 20 64 69 73 61 62 6c 65  fix been disable
16450 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  d?..  #..  if {!
16460 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
16470 74 65 73 74 53 75 66 66 69 78 29 5d 7d 20 74 68  testSuffix)]} th
16480 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
16490 6f 72 54 65 73 74 53 75 66 66 69 78 20 24 74 65  orTestSuffix $te
164a0 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
164b0 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
164c0 3a 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20 66  : Has checking f
164d0 6f 72 20 74 68 65 20 65 78 74 72 61 20 66 69 6c  or the extra fil
164e0 65 73 20 6e 65 65 64 65 64 20 62 79 20 76 61 72  es needed by var
164f0 69 6f 75 73 20 74 65 73 74 73 20 69 6e 20 74 68  ious tests in th
16500 65 0d 0a 20 20 23 20 20 20 20 20 20 20 45 61 67  e..  #       Eag
16510 6c 65 20 63 6f 72 65 20 74 65 73 74 20 73 75 69  le core test sui
16520 74 65 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  te been disabled
16530 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ?..  #..  if {![
16540 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
16550 6f 72 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f 20  ore)] && ![info 
16560 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46  exists no(checkF
16570 6f 72 46 69 6c 65 29 5d 7d 20 74 68 65 6e 20 7b  orFile)]} then {
16580 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
16590 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
165a0 62 65 6e 63 68 6d 61 72 6b 2d 31 2e 33 5b 38 39  benchmark-1.3[89
165b0 5d 22 20 61 6e 64 20 22 62 65 6e 63 68 6d 61 72  ]" and "benchmar
165c0 6b 2d 31 2e 34 30 22 2e 0d 0a 20 20 20 20 23 0d  k-1.40"...    #.
165d0 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
165e0 65 78 69 73 74 73 20 6e 6f 28 62 65 6e 63 68 6d  exists no(benchm
165f0 61 72 6b 2e 74 78 74 29 5d 7d 20 74 68 65 6e 20  ark.txt)]} then 
16600 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
16610 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
16620 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
16630 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 62  test_data_path b
16640 65 6e 63 68 6d 61 72 6b 2e 74 78 74 5d 0d 0a 20  enchmark.txt].. 
16650 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
16660 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
16670 65 73 74 20 22 62 65 6e 63 68 6d 61 72 6b 2d 31  est "benchmark-1
16680 2e 34 32 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  .42"...    #..  
16690 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
166a0 73 74 73 20 6e 6f 28 70 6e 67 44 75 6d 70 2e 74  sts no(pngDump.t
166b0 78 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  xt)]} then {..  
166c0 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65      checkForFile
166d0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
166e0 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
166f0 64 61 74 61 5f 70 61 74 68 20 70 6e 67 44 75 6d  data_path pngDum
16700 70 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  p.txt]..    }...
16710 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16720 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 67 61  TE: For test "ga
16730 72 75 64 61 2d 31 2e 31 22 2e 0d 0a 20 20 20 20  ruda-1.1"...    
16740 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
16750 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 6b 67 41  o exists no(pkgA
16760 6c 6c 2e 74 63 6c 29 5d 7d 20 74 68 65 6e 20 7b  ll.tcl)]} then {
16770 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
16780 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
16790 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62  el [file join $b
167a0 61 73 65 5f 70 61 74 68 20 4e 61 74 69 76 65 20  ase_path Native 
167b0 50 61 63 6b 61 67 65 20 5c 0d 0a 20 20 20 20 20  Package \..     
167c0 20 20 20 20 20 54 65 73 74 73 20 61 6c 6c 2e 74       Tests all.t
167d0 63 6c 5d 20 70 6b 67 41 6c 6c 2e 74 63 6c 0d 0a  cl] pkgAll.tcl..
167e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
167f0 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
16800 74 65 73 74 73 20 22 73 75 62 73 74 2d 31 2e 2a  tests "subst-1.*
16810 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
16820 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
16830 20 6e 6f 28 62 61 64 5f 73 75 62 73 74 2e 74 78   no(bad_subst.tx
16840 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
16850 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
16860 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
16870 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64  ile join $test_d
16880 61 74 61 5f 70 61 74 68 20 62 61 64 5f 73 75 62  ata_path bad_sub
16890 73 74 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a  st.txt]..    }..
168a0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
168b0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 70  OTE: For test "p
168c0 72 6f 63 65 73 73 49 73 6f 6c 61 74 69 6f 6e 2d  rocessIsolation-
168d0 31 2e 31 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  1.1"...    #..  
168e0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
168f0 73 74 73 20 6e 6f 28 69 73 6f 6c 61 74 65 64 2e  sts no(isolated.
16900 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  eagle)]} then {.
16910 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
16920 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
16930 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
16940 73 74 5f 64 61 74 61 5f 70 61 74 68 20 69 73 6f  st_data_path iso
16950 6c 61 74 65 64 2e 65 61 67 6c 65 5d 0d 0a 20 20  lated.eagle]..  
16960 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
16970 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
16980 73 74 20 22 62 61 73 69 63 2d 31 2e 37 33 22 2e  st "basic-1.73".
16990 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
169a0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
169b0 6f 28 63 61 6c 6c 53 74 61 63 6b 2e 65 61 67 6c  o(callStack.eagl
169c0 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
169d0 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
169e0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
169f0 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64  ile join $test_d
16a00 61 74 61 5f 70 61 74 68 20 63 61 6c 6c 53 74 61  ata_path callSta
16a10 63 6b 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d  ck.eagle]..    }
16a20 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
16a30 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6e   NOTE: This is n
16a40 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65  ot currently use
16a50 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e 20  d by any tests. 
16a60 20 48 6f 77 65 76 65 72 2c 20 69 74 20 69 73 0d   However, it is.
16a70 0a 20 20 20 20 23 20 20 20 20 20 20 20 75 73 65  .    #       use
16a80 64 20 62 79 20 74 68 65 20 73 61 6d 70 6c 65 20  d by the sample 
16a90 74 61 72 67 65 74 73 20 66 69 6c 65 20 22 45 61  targets file "Ea
16aa0 67 6c 65 2e 53 61 6d 70 6c 65 2e 74 61 72 67 65  gle.Sample.targe
16ab0 74 73 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ts"...    #..   
16ac0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
16ad0 74 73 20 6e 6f 28 65 76 61 6c 75 61 74 65 2e 65  ts no(evaluate.e
16ae0 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  agle)]} then {..
16af0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69        checkForFi
16b00 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  le $test_channel
16b10 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73   [file join $tes
16b20 74 5f 64 61 74 61 5f 70 61 74 68 20 65 76 61 6c  t_data_path eval
16b30 75 61 74 65 2e 65 61 67 6c 65 5d 0d 0a 20 20 20  uate.eagle]..   
16b40 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
16b50 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73   # NOTE: This is
16b60 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
16b70 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73  sed by any tests
16b80 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 74 20 69  .  However, it i
16b90 73 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 75  s..    #       u
16ba0 73 65 64 20 62 79 20 74 68 65 20 73 61 6d 70 6c  sed by the sampl
16bb0 65 20 74 61 72 67 65 74 73 20 66 69 6c 65 20 22  e targets file "
16bc0 45 61 67 6c 65 2e 53 61 6d 70 6c 65 2e 74 61 72  Eagle.Sample.tar
16bd0 67 65 74 73 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  gets"...    #.. 
16be0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
16bf0 69 73 74 73 20 6e 6f 28 73 75 62 73 74 69 74 75  ists no(substitu
16c00 74 65 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e  te.eagle)]} then
16c10 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
16c20 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
16c30 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
16c40 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
16c50 73 75 62 73 74 69 74 75 74 65 2e 65 61 67 6c 65  substitute.eagle
16c60 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ]..    }....    
16c70 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54  #..    # NOTE: T
16c80 68 69 73 20 69 73 20 6e 6f 74 20 63 75 72 72 65  his is not curre
16c90 6e 74 6c 79 20 75 73 65 64 20 62 79 20 61 6e 79  ntly used by any
16ca0 20 74 65 73 74 73 2e 0d 0a 20 20 20 20 23 0d 0a   tests...    #..
16cb0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
16cc0 78 69 73 74 73 20 6e 6f 28 75 6e 69 63 6f 64 65  xists no(unicode
16cd0 5f 62 6f 6d 2e 74 78 74 29 5d 7d 20 74 68 65 6e  _bom.txt)]} then
16ce0 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
16cf0 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
16d00 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
16d10 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
16d20 75 6e 69 63 6f 64 65 5f 62 6f 6d 2e 74 78 74 5d  unicode_bom.txt]
16d30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
16d40 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68  ..    # NOTE: Th
16d50 69 73 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e  is is not curren
16d60 74 6c 79 20 75 73 65 64 20 62 79 20 61 6e 79 20  tly used by any 
16d70 74 65 73 74 73 2e 0d 0a 20 20 20 20 23 0d 0a 20  tests...    #.. 
16d80 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
16d90 69 73 74 73 20 6e 6f 28 75 6e 69 63 6f 64 65 5f  ists no(unicode_
16da0 6e 6f 5f 62 6f 6d 2e 74 78 74 29 5d 7d 20 74 68  no_bom.txt)]} th
16db0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
16dc0 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
16dd0 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
16de0 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
16df0 68 20 75 6e 69 63 6f 64 65 5f 6e 6f 5f 62 6f 6d  h unicode_no_bom
16e00 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .txt]..    }....
16e10 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
16e20 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63  E: This is not c
16e30 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79  urrently used by
16e40 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20   any tests...   
16e50 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
16e60 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 74 66  fo exists no(utf
16e70 38 2e 74 78 74 29 5d 7d 20 74 68 65 6e 20 7b 0d  8.txt)]} then {.
16e80 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
16e90 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
16ea0 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
16eb0 73 74 5f 64 61 74 61 5f 70 61 74 68 20 75 74 66  st_data_path utf
16ec0 38 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  8.txt]..    }...
16ed0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16ee0 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 66  TE: For tests "f
16ef0 69 6c 65 49 4f 2d 31 2e 2a 22 2e 0d 0a 20 20 20  ileIO-1.*"...   
16f00 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
16f10 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 66 69 6c  fo exists no(fil
16f20 65 2e 64 61 74 29 5d 7d 20 74 68 65 6e 20 7b 0d  e.dat)]} then {.
16f30 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
16f40 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
16f50 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
16f60 73 74 5f 64 61 74 61 5f 70 61 74 68 20 66 69 6c  st_data_path fil
16f70 65 2e 64 61 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  e.dat]..    }...
16f80 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16f90 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 67 61  TE: For test "ga
16fa0 72 62 61 67 65 2d 31 2e 31 22 2e 0d 0a 20 20 20  rbage-1.1"...   
16fb0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
16fc0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 67 61 72  fo exists no(gar
16fd0 62 61 67 65 2e 74 78 74 29 5d 7d 20 74 68 65 6e  bage.txt)]} then
16fe0 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
16ff0 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
17000 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
17010 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
17020 67 61 72 62 61 67 65 2e 74 78 74 5d 0d 0a 20 20  garbage.txt]..  
17030 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
17040 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
17050 73 74 73 20 22 78 61 6d 6c 2d 31 2e 2a 22 2e 0d  sts "xaml-1.*"..
17060 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
17070 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
17080 28 74 65 73 74 2e 70 6e 67 29 5d 7d 20 74 68 65  (test.png)]} the
17090 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
170a0 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
170b0 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
170c0 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
170d0 20 74 65 73 74 2e 70 6e 67 5d 0d 0a 20 20 20 20   test.png]..    
170e0 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
170f0 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
17100 20 22 73 6f 63 6b 65 74 2d 31 2e 32 22 2e 0d 0a   "socket-1.2"...
17110 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
17120 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
17130 63 6c 69 65 6e 74 2e 74 63 6c 29 5d 7d 20 74 68  client.tcl)]} th
17140 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
17150 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
17160 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
17170 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
17180 68 20 63 6c 69 65 6e 74 2e 74 63 6c 5d 0d 0a 20  h client.tcl].. 
17190 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
171a0 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
171b0 65 73 74 20 22 74 63 6c 4c 6f 61 64 2d 31 2e 32  est "tclLoad-1.2
171c0 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
171d0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
171e0 20 6e 6f 28 74 63 6c 5f 75 6e 6c 6f 61 64 2e 74   no(tcl_unload.t
171f0 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  cl)]} then {..  
17200 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65      checkForFile
17210 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
17220 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
17230 64 61 74 61 5f 70 61 74 68 20 74 63 6c 5f 75 6e  data_path tcl_un
17240 6c 6f 61 64 2e 74 63 6c 5d 0d 0a 20 20 20 20 7d  load.tcl]..    }
17250 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
17260 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
17270 22 62 61 73 69 63 2d 31 2e 34 22 2e 0d 0a 20 20  "basic-1.4"...  
17280 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
17290 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65  nfo exists no(re
172a0 61 64 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e  ad.eagle)]} then
172b0 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
172c0 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
172d0 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
172e0 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
172f0 72 65 61 64 2e 65 61 67 6c 65 5d 0d 0a 20 20 20  read.eagle]..   
17300 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
17310 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
17320 74 20 22 62 61 73 69 63 2d 31 2e 35 22 2e 0d 0a  t "basic-1.5"...
17330 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
17340 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
17350 72 65 61 64 32 2e 65 61 67 6c 65 29 5d 7d 20 74  read2.eagle)]} t
17360 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
17370 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
17380 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
17390 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61  in $test_data_pa
173a0 74 68 20 72 65 61 64 32 2e 65 61 67 6c 65 5d 0d  th read2.eagle].
173b0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
173c0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
173d0 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e 36   test "basic-1.6
173e0 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
173f0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
17400 20 6e 6f 28 72 65 61 64 33 2e 65 61 67 6c 65 29   no(read3.eagle)
17410 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
17420 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
17430 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
17440 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74  e join $test_dat
17450 61 5f 70 61 74 68 20 72 65 61 64 33 2e 65 61 67  a_path read3.eag
17460 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  le]..    }....  
17470 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
17480 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
17490 2d 31 2e 37 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.7"...    #.. 
174a0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
174b0 69 73 74 73 20 6e 6f 28 72 65 61 64 34 2e 65 61  ists no(read4.ea
174c0 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
174d0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
174e0 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
174f0 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74  [file join $test
17500 5f 64 61 74 61 5f 70 61 74 68 20 72 65 61 64 34  _data_path read4
17510 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a  .eagle]..    }..
17520 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
17530 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69  OTE: For test "i
17540 6e 66 6f 53 63 72 69 70 74 2d 31 2e 31 22 2e 0d  nfoScript-1.1"..
17550 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
17560 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
17570 28 73 63 72 69 70 74 2e 65 61 67 6c 65 29 5d 7d  (script.eagle)]}
17580 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
17590 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
175a0 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
175b0 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
175c0 70 61 74 68 20 73 63 72 69 70 74 2e 65 61 67 6c  path script.eagl
175d0 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e]..    }....   
175e0 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
175f0 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63 2d  For test "basic-
17600 31 2e 31 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  1.1"...    #..  
17610 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
17620 73 74 73 20 6e 6f 28 73 6f 75 72 63 65 2e 65 61  sts no(source.ea
17630 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
17640 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
17650 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
17660 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74  [file join $test
17670 5f 64 61 74 61 5f 70 61 74 68 20 73 6f 75 72 63  _data_path sourc
17680 65 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d  e.eagle]..    }.
17690 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
176a0 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
176b0 62 61 73 69 63 2d 31 2e 32 22 2e 0d 0a 20 20 20  basic-1.2"...   
176c0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
176d0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e 62  fo exists no(unb
176e0 61 6c 61 6e 63 65 64 5f 62 72 61 63 65 2e 65 61  alanced_brace.ea
176f0 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
17700 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
17710 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
17720 5b 66 69 6c 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20  [file join \..  
17730 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 64 61          $test_da
17740 74 61 5f 70 61 74 68 20 75 6e 62 61 6c 61 6e 63  ta_path unbalanc
17750 65 64 5f 62 72 61 63 65 2e 65 61 67 6c 65 5d 0d  ed_brace.eagle].
17760 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
17770 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
17780 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e 33   test "basic-1.3
17790 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
177a0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
177b0 20 6e 6f 28 75 6e 62 61 6c 61 6e 63 65 64 5f 62   no(unbalanced_b
177c0 72 61 63 65 32 2e 65 61 67 6c 65 29 5d 7d 20 74  race2.eagle)]} t
177d0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
177e0 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
177f0 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
17800 69 6e 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  in \..          
17810 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
17820 75 6e 62 61 6c 61 6e 63 65 64 5f 62 72 61 63 65  unbalanced_brace
17830 32 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d  2.eagle]..    }.
17840 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
17850 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
17860 22 65 78 63 65 6c 2d 32 2e 2a 22 2e 0d 0a 20 20  "excel-2.*"...  
17870 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
17880 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
17890 73 74 2e 78 6c 73 29 5d 7d 20 74 68 65 6e 20 7b  st.xls)]} then {
178a0 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
178b0 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
178c0 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74  el [file join $t
178d0 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 74 65  est_data_path te
178e0 73 74 2e 78 6c 73 5d 0d 0a 20 20 20 20 7d 0d 0a  st.xls]..    }..
178f0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
17900 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 70  OTE: For test "p
17910 72 6f 63 2d 31 2e 39 22 2e 0d 0a 20 20 20 20 23  roc-1.9"...    #
17920 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
17930 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 50   exists no(testP
17940 72 6f 63 73 2e 74 63 6c 29 5d 7d 20 74 68 65 6e  rocs.tcl)]} then
17950 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
17960 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
17970 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
17980 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
17990 74 65 73 74 50 72 6f 63 73 2e 74 63 6c 5d 0d 0a  testProcs.tcl]..
179a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
179b0 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
179c0 74 65 73 74 20 22 69 6e 74 65 72 70 2d 31 2e 31  test "interp-1.1
179d0 30 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  0"...    #..    
179e0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
179f0 73 20 6e 6f 28 73 65 74 74 69 6e 67 73 2e 78 6d  s no(settings.xm
17a00 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
17a10 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
17a20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
17a30 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64  ile join $test_d
17a40 61 74 61 5f 70 61 74 68 20 73 65 74 74 69 6e 67  ata_path setting
17a50 73 2e 78 6d 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  s.xml]..    }...
17a60 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
17a70 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6c  TE: For tests "l
17a80 6f 61 64 2d 31 2e 31 2e 2a 22 2e 0d 0a 20 20 20  oad-1.1.*"...   
17a90 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
17aa0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 50 6c 75  fo exists no(Plu
17ab0 67 69 6e 2e 64 6c 6c 29 5d 7d 20 74 68 65 6e 20  gin.dll)]} then 
17ac0 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
17ad0 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
17ae0 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
17af0 6c 69 62 5f 70 61 74 68 20 50 6c 75 67 69 6e 31  lib_path Plugin1
17b00 2e 30 20 50 6c 75 67 69 6e 2e 64 6c 6c 5d 0d 0a  .0 Plugin.dll]..
17b10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
17b20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
17b30 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 36 2e 31  test "object-6.1
17b40 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
17b50 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
17b60 20 6e 6f 28 53 61 6d 70 6c 65 2e 65 78 65 29 5d   no(Sample.exe)]
17b70 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
17b80 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
17b90 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
17ba0 20 6a 6f 69 6e 20 24 62 69 6e 5f 70 61 74 68 20   join $bin_path 
17bb0 53 61 6d 70 6c 65 2e 65 78 65 5d 0d 0a 20 20 20  Sample.exe]..   
17bc0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
17bd0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
17be0 74 20 22 6f 62 6a 65 63 74 2d 34 2e 38 22 2e 0d  t "object-4.8"..
17bf0 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
17c00 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
17c10 28 45 61 67 6c 65 43 6d 64 6c 65 74 73 2e 64 6c  (EagleCmdlets.dl
17c20 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
17c30 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
17c40 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
17c50 69 6c 65 20 6a 6f 69 6e 20 24 62 69 6e 5f 70 61  ile join $bin_pa
17c60 74 68 20 45 61 67 6c 65 43 6d 64 6c 65 74 73 2e  th EagleCmdlets.
17c70 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  dll]..    }.... 
17c80 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
17c90 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
17ca0 63 74 2d 34 2e 31 30 22 2e 0d 0a 20 20 20 20 23  ct-4.10"...    #
17cb0 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
17cc0 20 65 78 69 73 74 73 20 6e 6f 28 45 61 67 6c 65   exists no(Eagle
17cd0 45 78 74 65 6e 73 69 6f 6e 73 2e 64 6c 6c 29 5d  Extensions.dll)]
17ce0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
17cf0 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
17d00 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
17d10 20 6a 6f 69 6e 20 24 62 69 6e 5f 70 61 74 68 20   join $bin_path 
17d20 45 61 67 6c 65 45 78 74 65 6e 73 69 6f 6e 73 2e  EagleExtensions.
17d30 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  dll]..    }.... 
17d40 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
17d50 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
17d60 63 74 2d 34 2e 31 30 22 2e 0d 0a 20 20 20 20 23  ct-4.10"...    #
17d70 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
17d80 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 2e   exists no(test.
17d90 77 78 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  wxs)]} then {.. 
17da0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
17db0 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
17dc0 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65  [file join $base
17dd0 5f 70 61 74 68 20 49 6e 73 74 61 6c 6c 65 72 20  _path Installer 
17de0 54 65 73 74 73 20 74 65 73 74 2e 77 78 73 5d 0d  Tests test.wxs].
17df0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
17e00 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
17e10 20 74 65 73 74 73 20 22 73 71 6c 2d 31 2e 32 22   tests "sql-1.2"
17e20 2c 20 22 73 71 6c 2d 31 2e 34 22 2c 20 22 73 71  , "sql-1.4", "sq
17e30 6c 2d 31 2e 35 22 2c 20 22 73 71 6c 2d 31 2e 36  l-1.5", "sql-1.6
17e40 22 2c 20 22 73 71 6c 2d 31 2e 37 22 2c 0d 0a 20  ", "sql-1.7",.. 
17e50 20 20 20 23 20 20 20 20 20 20 20 22 73 71 6c 2d     #       "sql-
17e60 31 2e 38 22 2c 20 61 6e 64 20 22 73 71 6c 2d 31  1.8", and "sql-1
17e70 2e 39 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .9"...    #..   
17e80 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
17e90 74 73 20 6e 6f 28 73 71 6c 69 74 65 33 2e 64 6c  ts no(sqlite3.dl
17ea0 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
17eb0 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
17ec0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
17ed0 69 6c 65 20 6a 6f 69 6e 20 24 62 69 6e 5f 70 61  ile join $bin_pa
17ee0 74 68 20 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 0d  th sqlite3.dll].
17ef0 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
17f00 20 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65    # NOTE: Did we
17f10 20 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20   manage to find 
17f20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
17f30 65 20 6c 69 62 72 61 72 79 3f 20 20 49 66 20 6e  e library?  If n
17f40 6f 74 2c 20 64 6f 20 77 65 0d 0a 20 20 20 20 20  ot, do we..     
17f50 20 23 20 20 20 20 20 20 20 61 74 20 6c 65 61 73   #       at leas
17f60 74 20 6b 6e 6f 77 20 74 68 65 20 6d 61 63 68 69  t know the machi
17f70 6e 65 20 74 79 70 65 3f 0d 0a 20 20 20 20 20 20  ne type?..      
17f80 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 68  #..      if {![h
17f90 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 66 69  aveConstraint fi
17fa0 6c 65 5f 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d  le_sqlite3.dll]}
17fb0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
17fc0 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
17fd0 54 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20  TE: Ok, now try 
17fe0 74 6f 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65  to check for the
17ff0 20 6d 61 63 68 69 6e 65 20 73 70 65 63 69 66 69   machine specifi
18000 63 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 0d  c native SQLite.
18010 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
18020 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20   library...     
18030 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
18040 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74  eckForFile $test
18050 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a  _channel [file j
18060 6f 69 6e 20 24 62 69 6e 5f 70 61 74 68 20 5b 6d  oin $bin_path [m
18070 61 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f 72 6d  achineToPlatform
18080 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
18090 24 74 65 73 74 5f 6d 61 63 68 69 6e 65 20 74 72  $test_machine tr
180a0 75 65 5d 20 73 71 6c 69 74 65 33 2e 64 6c 6c 5d  ue] sqlite3.dll]
180b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
180c0 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 44         # NOTE: D
180d0 69 64 20 77 65 20 6d 61 6e 61 67 65 20 74 6f 20  id we manage to 
180e0 66 69 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20  find the native 
180f0 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 79  SQLite library y
18100 65 74 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  et?..        #..
18110 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61          if {![ha
18120 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c  veConstraint fil
18130 65 5f 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20  e_sqlite3.dll]} 
18140 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
18150 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
18160 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74   NOTE: Ok, now t
18170 72 79 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 20  ry to check for 
18180 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 73 70 65  the platform spe
18190 63 69 66 69 63 20 6e 61 74 69 76 65 20 53 51 4c  cific native SQL
181a0 69 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 23  ite..          #
181b0 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 2e 0d         library..
181c0 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
181d0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
181e0 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
181f0 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62  el [file join $b
18200 69 6e 5f 70 61 74 68 20 5b 6d 61 63 68 69 6e 65  in_path [machine
18210 54 6f 50 6c 61 74 66 6f 72 6d 20 5c 0d 0a 20 20  ToPlatform \..  
18220 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73              $tes
18230 74 5f 6d 61 63 68 69 6e 65 20 66 61 6c 73 65 5d  t_machine false]
18240 20 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 0d 0a 20   sqlite3.dll].. 
18250 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
18260 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  }..    }....    
18270 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
18280 73 20 6e 6f 28 53 79 73 74 65 6d 2e 44 61 74 61  s no(System.Data
18290 2e 53 51 4c 69 74 65 2e 64 6c 6c 29 5d 7d 20 74  .SQLite.dll)]} t
182a0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
182b0 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
182c0 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
182d0 69 6e 20 24 62 69 6e 5f 70 61 74 68 20 53 79 73  in $bin_path Sys
182e0 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
182f0 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  dll]..    }.... 
18300 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
18310 69 73 74 73 20 6e 6f 28 74 65 73 74 2e 73 71 6c  ists no(test.sql
18320 69 74 65 33 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ite3)]} then {..
18330 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69        checkForFi
18340 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  le $test_channel
18350 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73   [file join $tes
18360 74 5f 64 61 74 61 5f 70 61 74 68 20 74 65 73 74  t_data_path test
18370 2e 73 71 6c 69 74 65 33 5d 0d 0a 20 20 20 20 7d  .sqlite3]..    }
18380 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
18390 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68  # NOTE: Check th
183a0 65 20 63 6f 72 65 20 74 65 73 74 20 63 6f 6e 73  e core test cons
183b0 74 72 61 69 6e 74 73 20 75 6e 6c 65 73 73 20 74  traints unless t
183c0 68 65 79 20 68 61 76 65 20 62 65 65 6e 0d 0a 20  hey have been.. 
183d0 20 23 20 20 20 20 20 20 20 65 78 70 6c 69 63 69   #       explici
183e0 74 6c 79 20 64 69 73 61 62 6c 65 64 2e 0d 0a 20  tly disabled... 
183f0 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
18400 20 65 78 69 73 74 73 20 6e 6f 28 70 6c 61 74 66   exists no(platf
18410 6f 72 6d 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  orm)]} then {.. 
18420 20 20 20 63 68 65 63 6b 46 6f 72 50 6c 61 74 66     checkForPlatf
18430 6f 72 6d 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  orm $test_channe
18440 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  l..  }....  if {
18450 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
18460 28 77 69 6e 64 6f 77 73 56 65 72 73 69 6f 6e 29  (windowsVersion)
18470 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
18480 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77 73 56 65  heckForWindowsVe
18490 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  rsion $test_chan
184a0 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  nel..  }....  if
184b0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
184c0 6e 6f 28 6f 70 65 72 61 74 69 6e 67 53 79 73 74  no(operatingSyst
184d0 65 6d 55 70 64 61 74 65 73 29 5d 7d 20 74 68 65  emUpdates)]} the
184e0 6e 20 7b 0d 0a 20 20 20 20 69 66 20 7b 5b 69 73  n {..    if {[is
184f0 45 61 67 6c 65 5d 20 26 26 20 5b 69 6e 66 6f 20  Eagle] && [info 
18500 65 78 69 73 74 73 20 74 63 6c 5f 70 6c 61 74 66  exists tcl_platf
18510 6f 72 6d 28 6f 73 45 78 74 72 61 29 5d 7d 20 74  orm(osExtra)]} t
18520 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 76 77 61  hen {..      vwa
18530 69 74 57 69 74 68 54 69 6d 65 6f 75 74 20 74 63  itWithTimeout tc
18540 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 45 78 74  l_platform(osExt
18550 72 61 29 20 24 74 65 73 74 5f 74 69 6d 65 6f 75  ra) $test_timeou
18560 74 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  t..    }....    
18570 63 68 65 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e  checkForOperatin
18580 67 53 79 73 74 65 6d 55 70 64 61 74 65 20 24 74  gSystemUpdate $t
18590 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4b 42 39 33  est_channel KB93
185a0 36 39 32 39 0d 0a 20 20 20 20 63 68 65 63 6b 46  6929..    checkF
185b0 6f 72 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65  orOperatingSyste
185c0 6d 55 70 64 61 74 65 20 24 74 65 73 74 5f 63 68  mUpdate $test_ch
185d0 61 6e 6e 65 6c 20 4b 42 39 37 36 39 33 32 0d 0a  annel KB976932..
185e0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 70 65 72      checkForOper
185f0 61 74 69 6e 67 53 79 73 74 65 6d 55 70 64 61 74  atingSystemUpdat
18600 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
18610 22 4e 6f 76 65 6d 62 65 72 20 55 70 64 61 74 65  "November Update
18620 22 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4f  "..    checkForO
18630 70 65 72 61 74 69 6e 67 53 79 73 74 65 6d 55 70  peratingSystemUp
18640 64 61 74 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  date $test_chann
18650 65 6c 20 22 41 6e 6e 69 76 65 72 73 61 72 79 20  el "Anniversary 
18660 55 70 64 61 74 65 22 0d 0a 20 20 20 20 63 68 65  Update"..    che
18670 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e 67 53 79  ckForOperatingSy
18680 73 74 65 6d 55 70 64 61 74 65 20 24 74 65 73 74  stemUpdate $test
18690 5f 63 68 61 6e 6e 65 6c 20 22 43 72 65 61 74 6f  _channel "Creato
186a0 72 73 20 55 70 64 61 74 65 22 0d 0a 20 20 20 20  rs Update"..    
186b0 63 68 65 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e  checkForOperatin
186c0 67 53 79 73 74 65 6d 55 70 64 61 74 65 20 24 74  gSystemUpdate $t
186d0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 22 46 61 6c  est_channel "Fal
186e0 6c 20 43 72 65 61 74 6f 72 73 20 55 70 64 61 74  l Creators Updat
186f0 65 22 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  e"..  }....  if 
18700 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
18710 6f 28 73 63 72 69 70 74 4c 69 62 72 61 72 79 29  o(scriptLibrary)
18720 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
18730 68 65 63 6b 46 6f 72 53 63 72 69 70 74 4c 69 62  heckForScriptLib
18740 72 61 72 79 20 24 74 65 73 74 5f 63 68 61 6e 6e  rary $test_chann
18750 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
18760 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
18770 6f 28 74 63 6c 4f 70 74 69 6f 6e 73 29 5d 7d 20  o(tclOptions)]} 
18780 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
18790 6b 46 6f 72 54 63 6c 4f 70 74 69 6f 6e 73 20 24  kForTclOptions $
187a0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
187b0 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
187c0 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63  o exists no(chec
187d0 6b 46 6f 72 42 69 67 4c 69 73 74 73 29 5d 7d 20  kForBigLists)]} 
187e0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
187f0 6b 46 6f 72 42 69 67 4c 69 73 74 73 20 24 74 65  kForBigLists $te
18800 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
18810 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
18820 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46  exists no(checkF
18830 6f 72 50 72 6f 63 65 73 73 6f 72 49 6e 74 65 6e  orProcessorInten
18840 73 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  sive)]} then {..
18850 20 20 20 20 63 68 65 63 6b 46 6f 72 50 72 6f 63      checkForProc
18860 65 73 73 6f 72 49 6e 74 65 6e 73 69 76 65 20 24  essorIntensive $
18870 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
18880 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
18890 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63  o exists no(chec
188a0 6b 46 6f 72 54 69 6d 65 49 6e 74 65 6e 73 69 76  kForTimeIntensiv
188b0 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
188c0 20 63 68 65 63 6b 46 6f 72 54 69 6d 65 49 6e 74   checkForTimeInt
188d0 65 6e 73 69 76 65 20 24 74 65 73 74 5f 63 68 61  ensive $test_cha
188e0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
188f0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
18900 20 6e 6f 28 63 68 65 63 6b 46 6f 72 46 75 6c 6c   no(checkForFull
18910 54 65 73 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Test)]} then {..
18920 20 20 20 20 63 68 65 63 6b 46 6f 72 46 75 6c 6c      checkForFull
18930 54 65 73 74 20 24 74 65 73 74 5f 63 68 61 6e 6e  Test $test_chann
18940 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
18950 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
18960 6f 28 63 68 65 63 6b 46 6f 72 4d 65 6d 6f 72 79  o(checkForMemory
18970 49 6e 74 65 6e 73 69 76 65 29 5d 7d 20 74 68 65  Intensive)]} the
18980 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
18990 72 4d 65 6d 6f 72 79 49 6e 74 65 6e 73 69 76 65  rMemoryIntensive
189a0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
189b0 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
189c0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68  nfo exists no(ch
189d0 65 63 6b 46 6f 72 53 74 61 63 6b 49 6e 74 65 6e  eckForStackInten
189e0 73 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  sive)]} then {..
189f0 20 20 20 20 63 68 65 63 6b 46 6f 72 53 74 61 63      checkForStac
18a00 6b 49 6e 74 65 6e 73 69 76 65 20 24 74 65 73 74  kIntensive $test
18a10 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
18a20 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
18a30 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72  ists no(checkFor
18a40 53 74 61 63 6b 53 69 7a 65 29 5d 7d 20 74 68 65  StackSize)]} the
18a50 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
18a60 72 53 74 61 63 6b 53 69 7a 65 20 24 74 65 73 74  rStackSize $test
18a70 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
18a80 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
18a90 69 73 74 73 20 6e 6f 28 77 69 6e 64 6f 77 73 43  ists no(windowsC
18aa0 6f 6d 6d 61 6e 64 50 72 6f 63 65 73 73 6f 72 29  ommandProcessor)
18ab0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
18ac0 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77 73 43 6f  heckForWindowsCo
18ad0 6d 6d 61 6e 64 50 72 6f 63 65 73 73 6f 72 20 24  mmandProcessor $
18ae0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 63 6d 64  test_channel cmd
18af0 2e 65 78 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  .exe..  }....  i
18b00 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
18b10 20 6e 6f 28 66 6f 73 73 69 6c 29 5d 7d 20 74 68   no(fossil)]} th
18b20 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
18b30 6f 72 46 6f 73 73 69 6c 20 24 74 65 73 74 5f 63  orFossil $test_c
18b40 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
18b50 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
18b60 74 73 20 6e 6f 28 74 65 73 74 52 65 70 6f 73 69  ts no(testReposi
18b70 74 6f 72 79 55 72 6c 29 5d 7d 20 74 68 65 6e 20  toryUrl)]} then 
18b80 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 56  {..    checkForV
18b90 61 72 69 61 62 6c 65 20 24 74 65 73 74 5f 63 68  ariable $test_ch
18ba0 61 6e 6e 65 6c 20 74 65 73 74 5f 72 65 70 6f 73  annel test_repos
18bb0 69 74 6f 72 79 5f 75 72 6c 0d 0a 20 20 7d 0d 0a  itory_url..  }..
18bc0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
18bd0 78 69 73 74 73 20 6e 6f 28 74 65 73 74 52 65 70  xists no(testRep
18be0 6f 73 69 74 6f 72 79 46 69 6c 65 29 5d 7d 20 74  ositoryFile)]} t
18bf0 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
18c00 46 6f 72 56 61 72 69 61 62 6c 65 20 24 74 65 73  ForVariable $tes
18c10 74 5f 63 68 61 6e 6e 65 6c 20 74 65 73 74 5f 72  t_channel test_r
18c20 65 70 6f 73 69 74 6f 72 79 5f 66 69 6c 65 0d 0a  epository_file..
18c30 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
18c40 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 76 65  nfo exists no(ve
18c50 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d  rsion)]} then {.
18c60 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 56 65 72  .    checkForVer
18c70 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  sion $test_chann
18c80 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
18c90 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
18ca0 6f 28 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20  o(eagle)]} then 
18cb0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 45  {..    checkForE
18cc0 61 67 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  agle $test_chann
18cd0 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
18ce0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
18cf0 6f 28 6e 6f 4c 6f 67 46 69 6c 65 29 5d 7d 20 74  o(noLogFile)]} t
18d00 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
18d10 46 6f 72 4c 6f 67 46 69 6c 65 20 24 74 65 73 74  ForLogFile $test
18d20 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
18d30 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
18d40 69 73 74 73 20 6e 6f 28 65 78 65 63 75 74 61 62  ists no(executab
18d50 6c 65 53 79 6d 62 6f 6c 73 29 5d 7d 20 74 68 65  leSymbols)]} the
18d60 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
18d70 72 53 79 6d 62 6f 6c 73 20 24 74 65 73 74 5f 63  rSymbols $test_c
18d80 68 61 6e 6e 65 6c 20 5b 69 6e 66 6f 20 6e 61 6d  hannel [info nam
18d90 65 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 20 65  eofexecutable] e
18da0 78 65 63 75 74 61 62 6c 65 0d 0a 20 20 7d 0d 0a  xecutable..  }..
18db0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
18dc0 78 69 73 74 73 20 6e 6f 28 67 61 72 75 64 61 29  xists no(garuda)
18dd0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
18de0 68 65 63 6b 46 6f 72 47 61 72 75 64 61 20 24 74  heckForGaruda $t
18df0 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
18e00 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
18e10 20 65 78 69 73 74 73 20 6e 6f 28 73 68 65 6c 6c   exists no(shell
18e20 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
18e30 63 68 65 63 6b 46 6f 72 53 68 65 6c 6c 20 24 74  checkForShell $t
18e40 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
18e50 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
18e60 20 65 78 69 73 74 73 20 6e 6f 28 6f 66 66 69 63   exists no(offic
18e70 69 61 6c 53 74 61 62 6c 65 52 65 6c 65 61 73 65  ialStableRelease
18e80 49 6e 50 72 6f 67 72 65 73 73 29 5d 7d 20 74 68  InProgress)]} th
18e90 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
18ea0 6f 72 4f 66 66 69 63 69 61 6c 53 74 61 62 6c 65  orOfficialStable
18eb0 52 65 6c 65 61 73 65 49 6e 50 72 6f 67 72 65 73  ReleaseInProgres
18ec0 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  s $test_channel.
18ed0 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
18ee0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 64  info exists no(d
18ef0 65 62 75 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ebug)]} then {..
18f00 20 20 20 20 63 68 65 63 6b 46 6f 72 44 65 62 75      checkForDebu
18f10 67 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  g $test_channel.
18f20 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
18f30 20 4e 4f 54 45 3a 20 48 61 73 20 54 6b 20 74 65   NOTE: Has Tk te
18f40 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
18f50 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
18f60 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
18f70 65 78 69 73 74 73 20 6e 6f 28 74 6b 29 5d 7d 20  exists no(tk)]} 
18f80 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
18f90 6b 46 6f 72 54 6b 20 24 74 65 73 74 5f 63 68 61  kForTk $test_cha
18fa0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
18fb0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
18fc0 6e 61 74 69 76 65 20 63 6f 64 65 20 64 65 74 65  native code dete
18fd0 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65  ction support be
18fe0 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
18ff0 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
19000 65 78 69 73 74 73 20 6e 6f 28 6e 61 74 69 76 65  exists no(native
19010 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
19020 63 68 65 63 6b 46 6f 72 4e 61 74 69 76 65 43 6f  checkForNativeCo
19030 64 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  de $test_channel
19040 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
19050 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f  # NOTE: Check fo
19060 72 20 76 61 72 69 6f 75 73 20 65 78 74 72 61 20  r various extra 
19070 63 6f 6d 6d 61 6e 64 73 20 74 68 61 74 20 6d 61  commands that ma
19080 79 20 62 65 20 70 72 65 73 65 6e 74 2e 0d 0a 20  y be present... 
19090 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
190a0 20 65 78 69 73 74 73 20 6e 6f 28 62 61 73 65 36   exists no(base6
190b0 34 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  4Command)]} then
190c0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
190d0 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
190e0 61 6e 6e 65 6c 20 62 61 73 65 36 34 0d 0a 20 20  annel base64..  
190f0 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
19100 6f 20 65 78 69 73 74 73 20 6e 6f 28 62 67 65 72  o exists no(bger
19110 72 6f 72 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68  rorCommand)]} th
19120 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
19130 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  orCommand $test_
19140 63 68 61 6e 6e 65 6c 20 62 67 65 72 72 6f 72 0d  channel bgerror.
19150 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
19160 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
19170 61 6c 6c 62 61 63 6b 43 6f 6d 6d 61 6e 64 29 5d  allbackCommand)]
19180 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
19190 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74  eckForCommand $t
191a0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 63 61 6c 6c  est_channel call
191b0 62 61 63 6b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  back..  }....  i
191c0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
191d0 20 6e 6f 28 64 65 62 75 67 43 6f 6d 6d 61 6e 64   no(debugCommand
191e0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
191f0 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
19200 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 64 65  $test_channel de
19210 62 75 67 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  bug..  }....  if
19220 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
19230 6e 6f 28 64 6f 43 6f 6d 6d 61 6e 64 29 5d 7d 20  no(doCommand)]} 
19240 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
19250 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73  kForCommand $tes
19260 74 5f 63 68 61 6e 6e 65 6c 20 64 6f 0d 0a 20 20  t_channel do..  
19270 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
19280 6f 20 65 78 69 73 74 73 20 6e 6f 28 64 6f 77 6e  o exists no(down
19290 6c 65 76 65 6c 43 6f 6d 6d 61 6e 64 29 5d 7d 20  levelCommand)]} 
192a0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
192b0 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73  kForCommand $tes
192c0 74 5f 63 68 61 6e 6e 65 6c 20 64 6f 77 6e 6c 65  t_channel downle
192d0 76 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  vel..  }....  if
192e0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
192f0 6e 6f 28 67 75 69 64 43 6f 6d 6d 61 6e 64 29 5d  no(guidCommand)]
19300 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
19310 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74  eckForCommand $t
19320 65 73 74 5f 63 68 61 6e 6e 65 6c 20 67 75 69 64  est_channel guid
19330 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
19340 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
19350 68 61 73 68 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74  hashCommand)]} t
19360 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
19370 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74  ForCommand $test
19380 5f 63 68 61 6e 6e 65 6c 20 68 61 73 68 0d 0a 20  _channel hash.. 
19390 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
193a0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 68 6f 73  fo exists no(hos
193b0 74 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  tCommand)]} then
193c0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
193d0 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
193e0 61 6e 6e 65 6c 20 68 6f 73 74 0d 0a 20 20 7d 0d  annel host..  }.
193f0 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
19400 65 78 69 73 74 73 20 6e 6f 28 69 6e 76 6f 6b 65  exists no(invoke
19410 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
19420 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
19430 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
19440 6e 6e 65 6c 20 69 6e 76 6f 6b 65 0d 0a 20 20 7d  nnel invoke..  }
19450 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
19460 20 65 78 69 73 74 73 20 6e 6f 28 6b 69 6c 6c 43   exists no(killC
19470 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b  ommand)]} then {
19480 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f  ..    checkForCo
19490 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e  mmand $test_chan
194a0 6e 65 6c 20 6b 69 6c 6c 0d 0a 20 20 7d 0d 0a 0d  nel kill..  }...
194b0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
194c0 69 73 74 73 20 6e 6f 28 6c 67 65 74 43 6f 6d 6d  ists no(lgetComm
194d0 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
194e0 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
194f0 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
19500 20 6c 67 65 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20   lget..  }....  
19510 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19520 73 20 6e 6f 28 6c 69 62 72 61 72 79 43 6f 6d 6d  s no(libraryComm
19530 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
19540 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
19550 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
19560 20 6c 69 62 72 61 72 79 0d 0a 20 20 7d 0d 0a 0d   library..  }...
19570 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
19580 69 73 74 73 20 6e 6f 28 6c 72 65 6d 6f 76 65 43  ists no(lremoveC
19590 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b  ommand)]} then {
195a0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f  ..    checkForCo
195b0 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e  mmand $test_chan
195c0 6e 65 6c 20 6c 72 65 6d 6f 76 65 0d 0a 20 20 7d  nel lremove..  }
195d0 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
195e0 20 65 78 69 73 74 73 20 6e 6f 28 6e 6f 70 43 6f   exists no(nopCo
195f0 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
19600 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
19610 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
19620 65 6c 20 6e 6f 70 0d 0a 20 20 7d 0d 0a 0d 0a 20  el nop..  }.... 
19630 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
19640 74 73 20 6e 6f 28 6f 62 6a 65 63 74 43 6f 6d 6d  ts no(objectComm
19650 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
19660 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
19670 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
19680 20 6f 62 6a 65 63 74 0d 0a 20 20 7d 0d 0a 0d 0a   object..  }....
19690 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
196a0 73 74 73 20 6e 6f 28 70 61 72 73 65 43 6f 6d 6d  sts no(parseComm
196b0 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
196c0 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
196d0 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
196e0 20 70 61 72 73 65 0d 0a 20 20 7d 0d 0a 0d 0a 20   parse..  }.... 
196f0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
19700 74 73 20 6e 6f 28 73 63 6f 70 65 43 6f 6d 6d 61  ts no(scopeComma
19710 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
19720 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
19730 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
19740 73 63 6f 70 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  scope..  }....  
19750 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19760 73 20 6e 6f 28 73 6f 63 6b 65 74 43 6f 6d 6d 61  s no(socketComma
19770 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
19780 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
19790 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
197a0 73 6f 63 6b 65 74 0d 0a 20 20 7d 0d 0a 0d 0a 20  socket..  }.... 
197b0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
197c0 74 73 20 6e 6f 28 73 71 6c 43 6f 6d 6d 61 6e 64  ts no(sqlCommand
197d0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
197e0 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
197f0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 73 71  $test_channel sq
19800 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  l..  }....  if {
19810 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
19820 28 74 63 6c 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74  (tclCommand)]} t
19830 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
19840 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74  ForCommand $test
19850 5f 63 68 61 6e 6e 65 6c 20 74 63 6c 0d 0a 20 20  _channel tcl..  
19860 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
19870 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 68 72 6f  o exists no(thro
19880 77 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  wCommand)]} then
19890 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
198a0 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
198b0 61 6e 6e 65 6c 20 74 68 72 6f 77 0d 0a 20 20 7d  annel throw..  }
198c0 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
198d0 20 65 78 69 73 74 73 20 6e 6f 28 74 72 75 6e 63   exists no(trunc
198e0 61 74 65 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68  ateCommand)]} th
198f0 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
19900 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  orCommand $test_
19910 63 68 61 6e 6e 65 6c 20 74 72 75 6e 63 61 74 65  channel truncate
19920 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
19930 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
19940 74 72 79 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68  tryCommand)]} th
19950 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
19960 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  orCommand $test_
19970 63 68 61 6e 6e 65 6c 20 74 72 79 0d 0a 20 20 7d  channel try..  }
19980 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
19990 20 65 78 69 73 74 73 20 6e 6f 28 75 72 69 43 6f   exists no(uriCo
199a0 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
199b0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
199c0 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
199d0 65 6c 20 75 72 69 0d 0a 20 20 7d 0d 0a 0d 0a 20  el uri..  }.... 
199e0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
199f0 74 73 20 6e 6f 28 76 65 72 73 69 6f 6e 43 6f 6d  ts no(versionCom
19a00 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  mand)]} then {..
19a10 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d      checkForComm
19a20 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  and $test_channe
19a30 6c 20 76 65 72 73 69 6f 6e 0d 0a 20 20 7d 0d 0a  l version..  }..
19a40 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
19a50 78 69 73 74 73 20 6e 6f 28 78 6d 6c 43 6f 6d 6d  xists no(xmlComm
19a60 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
19a70 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
19a80 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
19a90 20 78 6d 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23   xml..  }....  #
19aa0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
19ab0 6e 61 6d 65 73 70 61 63 65 20 64 65 74 65 63 74  namespace detect
19ac0 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
19ad0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
19ae0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
19af0 69 73 74 73 20 6e 6f 28 6e 61 6d 65 73 70 61 63  ists no(namespac
19b00 65 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  es)]} then {..  
19b10 20 20 63 68 65 63 6b 46 6f 72 4e 61 6d 65 73 70    checkForNamesp
19b20 61 63 65 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  aces $test_chann
19b30 65 6c 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69  el [haveConstrai
19b40 6e 74 20 71 75 69 65 74 5d 0d 0a 20 20 7d 0d 0a  nt quiet]..  }..
19b50 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
19b60 20 43 68 65 63 6b 20 66 6f 72 20 76 61 72 69 6f   Check for vario
19b70 75 73 20 6e 61 74 69 76 65 20 54 63 6c 20 66 65  us native Tcl fe
19b80 61 74 75 72 65 73 20 74 68 61 74 20 77 65 72 65  atures that were
19b90 20 61 64 64 65 64 0d 0a 20 20 23 20 20 20 20 20   added..  #     
19ba0 20 20 28 6f 72 20 73 69 6d 70 6c 79 20 70 72 6f    (or simply pro
19bb0 70 6f 73 65 64 29 20 74 68 72 6f 75 67 68 20 74  posed) through t
19bc0 68 65 20 54 49 50 20 70 72 6f 63 65 73 73 2e 0d  he TIP process..
19bd0 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
19be0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70  fo exists no(tip
19bf0 31 32 37 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  127)]} then {.. 
19c00 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70 31 32     checkForTip12
19c10 37 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  7 $test_channel.
19c20 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
19c30 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
19c40 69 70 31 39 34 29 5d 7d 20 74 68 65 6e 20 7b 0d  ip194)]} then {.
19c50 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70  .    checkForTip
19c60 31 39 34 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  194 $test_channe
19c70 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  l..  }....  if {
19c80 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
19c90 28 74 69 70 32 30 37 29 5d 7d 20 74 68 65 6e 20  (tip207)]} then 
19ca0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54  {..    checkForT
19cb0 69 70 32 30 37 20 24 74 65 73 74 5f 63 68 61 6e  ip207 $test_chan
19cc0 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  nel..  }....  if
19cd0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
19ce0 6e 6f 28 74 69 70 32 34 31 29 5d 7d 20 74 68 65  no(tip241)]} the
19cf0 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
19d00 72 54 69 70 32 34 31 20 24 74 65 73 74 5f 63 68  rTip241 $test_ch
19d10 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
19d20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19d30 73 20 6e 6f 28 74 69 70 32 38 35 29 5d 7d 20 74  s no(tip285)]} t
19d40 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
19d50 46 6f 72 54 69 70 32 38 35 20 24 74 65 73 74 5f  ForTip285 $test_
19d60 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
19d70 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
19d80 73 74 73 20 6e 6f 28 74 69 70 34 30 35 29 5d 7d  sts no(tip405)]}
19d90 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
19da0 63 6b 46 6f 72 54 69 70 34 30 35 20 24 74 65 73  ckForTip405 $tes
19db0 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
19dc0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
19dd0 78 69 73 74 73 20 6e 6f 28 74 69 70 34 32 31 29  xists no(tip421)
19de0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
19df0 68 65 63 6b 46 6f 72 54 69 70 34 32 31 20 24 74  heckForTip421 $t
19e00 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
19e10 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
19e20 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70 34 32   exists no(tip42
19e30 36 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  6)]} then {..   
19e40 20 63 68 65 63 6b 46 6f 72 54 69 70 34 32 36 20   checkForTip426 
19e50 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
19e60 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
19e70 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70  fo exists no(tip
19e80 34 32 39 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  429)]} then {.. 
19e90 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70 34 32     checkForTip42
19ea0 39 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  9 $test_channel.
19eb0 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
19ec0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
19ed0 69 70 34 34 30 29 5d 7d 20 74 68 65 6e 20 7b 0d  ip440)]} then {.
19ee0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70  .    checkForTip
19ef0 34 34 30 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  440 $test_channe
19f00 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  l..  }....  if {
19f10 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
19f20 28 74 69 70 34 36 31 29 5d 7d 20 74 68 65 6e 20  (tip461)]} then 
19f30 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54  {..    checkForT
19f40 69 70 34 36 31 20 24 74 65 73 74 5f 63 68 61 6e  ip461 $test_chan
19f50 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  nel..  }....  if
19f60 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
19f70 6e 6f 28 74 69 70 34 36 33 29 5d 7d 20 74 68 65  no(tip463)]} the
19f80 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
19f90 72 54 69 70 34 36 33 20 24 74 65 73 74 5f 63 68  rTip463 $test_ch
19fa0 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
19fb0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19fc0 73 20 6e 6f 28 74 69 70 34 37 31 29 5d 7d 20 74  s no(tip471)]} t
19fd0 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
19fe0 46 6f 72 54 69 70 34 37 31 20 24 74 65 73 74 5f  ForTip471 $test_
19ff0 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
1a000 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
1a010 61 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 74  as performance t
1a020 65 73 74 69 6e 67 20 62 65 65 6e 20 64 69 73 61  esting been disa
1a030 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
1a040 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1a050 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 5c 0d 0a  no(core)] && \..
1a060 20 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69        ![info exi
1a070 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 50  sts no(checkForP
1a080 65 72 66 6f 72 6d 61 6e 63 65 29 5d 7d 20 74 68  erformance)]} th
1a090 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1a0a0 6f 72 50 65 72 66 6f 72 6d 61 6e 63 65 20 24 74  orPerformance $t
1a0b0 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
1a0c0 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
1a0d0 45 3a 20 48 61 76 65 20 61 6e 79 20 74 69 6d 69  E: Have any timi
1a0e0 6e 67 20 72 65 6c 61 74 65 64 20 63 6f 6e 73 74  ng related const
1a0f0 72 61 69 6e 74 73 20 62 65 65 6e 20 64 69 73 61  raints been disa
1a100 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 23 20  bled?..  #..  # 
1a110 42 55 47 42 55 47 3a 20 49 6e 20 45 61 67 6c 65  BUGBUG: In Eagle
1a120 2c 20 74 68 65 73 65 20 63 68 65 63 6b 73 20 66  , these checks f
1a130 6f 72 20 22 70 72 65 63 69 73 69 6f 6e 22 20 74  or "precision" t
1a140 69 6d 69 6e 67 20 61 72 65 20 6e 6f 74 20 6f 76  iming are not ov
1a150 65 72 6c 79 0d 0a 20 20 23 20 20 20 20 20 20 20  erly..  #       
1a160 20 20 72 65 6c 69 61 62 6c 65 2e 20 20 54 68 69    reliable.  Thi
1a170 73 20 6d 61 79 20 62 65 20 64 75 65 20 74 6f 20  s may be due to 
1a180 74 68 65 20 73 65 6d 69 2d 72 61 6e 64 6f 6d 20  the semi-random 
1a190 6e 61 74 75 72 65 20 6f 66 20 74 68 65 0d 0a 20  nature of the.. 
1a1a0 20 23 20 20 20 20 20 20 20 20 20 67 61 72 62 61   #         garba
1a1b0 67 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 2e 20 20  ge collection.  
1a1c0 4d 6f 72 65 20 72 65 73 65 61 72 63 68 20 69 6e  More research in
1a1d0 74 6f 20 74 68 65 20 70 72 65 63 69 73 65 20 63  to the precise c
1a1e0 61 75 73 65 20 6f 66 0d 0a 20 20 23 20 20 20 20  ause of..  #    
1a1f0 20 20 20 20 20 74 69 6d 69 6e 67 20 69 73 73 75       timing issu
1a200 65 73 20 69 73 20 63 65 72 74 61 69 6e 6c 79 20  es is certainly 
1a210 77 61 72 72 61 6e 74 65 64 2e 0d 0a 20 20 23 0d  warranted...  #.
1a220 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
1a230 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72  fo exists no(cor
1a240 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
1a250 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1a260 28 74 69 6d 69 6e 67 29 5d 7d 20 74 68 65 6e 20  (timing)]} then 
1a270 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54  {..    checkForT
1a280 69 6d 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e  iming $test_chan
1a290 6e 65 6c 20 35 30 3b 20 23 20 31 2f 32 30 74 68  nel 50; # 1/20th
1a2a0 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 7d 0d 0a 0d   second...  }...
1a2b0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1a2c0 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26  ists no(core)] &
1a2d0 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66  & \..      ![inf
1a2e0 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 72 65 63  o exists no(prec
1a2f0 69 73 65 54 69 6d 69 6e 67 29 5d 7d 20 74 68 65  iseTiming)]} the
1a300 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  n {..    #..    
1a310 23 20 4e 4f 54 45 3a 20 4e 6f 72 6d 61 6c 6c 79  # NOTE: Normally
1a320 2c 20 74 68 65 20 22 70 72 65 63 69 73 65 54 69  , the "preciseTi
1a330 6d 69 6e 67 22 20 63 6f 6e 73 74 72 61 69 6e 74  ming" constraint
1a340 20 69 6d 70 6c 69 63 69 74 6c 79 20 72 65 71 75   implicitly requ
1a350 69 72 65 73 20 74 68 61 74 0d 0a 20 20 20 20 23  ires that..    #
1a360 20 20 20 20 20 20 20 74 68 65 20 22 74 69 6d 69         the "timi
1a370 6e 67 22 20 63 6f 6e 73 74 72 61 69 6e 74 20 62  ng" constraint b
1a380 65 20 70 72 65 73 65 6e 74 20 61 73 20 77 65 6c  e present as wel
1a390 6c 3b 20 68 6f 77 65 76 65 72 2c 20 74 68 61 74  l; however, that
1a3a0 20 63 61 6e 20 62 65 0d 0a 20 20 20 20 23 20 20   can be..    #  
1a3b0 20 20 20 20 20 6f 76 65 72 72 69 64 64 65 6e 2e       overridden.
1a3c0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
1a3d0 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  {[info exists no
1a3e0 28 72 65 71 75 69 72 65 54 69 6d 69 6e 67 29 5d  (requireTiming)]
1a3f0 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b   || \..        [
1a400 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 74  haveConstraint t
1a410 69 6d 69 6e 67 5d 7d 20 74 68 65 6e 20 7b 0d 0a  iming]} then {..
1a420 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69        checkForTi
1a430 6d 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e 6e  ming $test_chann
1a440 65 6c 20 32 35 20 70 72 65 63 69 73 65 54 69 6d  el 25 preciseTim
1a450 69 6e 67 3b 20 23 20 31 2f 34 30 74 68 20 73 65  ing; # 1/40th se
1a460 63 6f 6e 64 2e 0d 0a 20 20 20 20 7d 0d 0a 20 20  cond...    }..  
1a470 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1a480 54 45 3a 20 48 61 73 20 69 6e 74 65 72 61 63 74  TE: Has interact
1a490 69 76 65 20 74 65 73 74 69 6e 67 20 62 65 65 6e  ive testing been
1a4a0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
1a4b0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1a4c0 69 73 74 73 20 6e 6f 28 69 6e 74 65 72 61 63 74  ists no(interact
1a4d0 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ive)]} then {.. 
1a4e0 20 20 20 63 68 65 63 6b 46 6f 72 49 6e 74 65 72     checkForInter
1a4f0 61 63 74 69 76 65 20 24 74 65 73 74 5f 63 68 61  active $test_cha
1a500 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
1a510 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
1a520 69 6e 74 65 72 61 63 74 69 76 65 20 63 6f 6d 6d  interactive comm
1a530 61 6e 64 20 74 65 73 74 69 6e 67 20 62 65 65 6e  and testing been
1a540 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
1a550 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1a560 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26  ists no(core)] &
1a570 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66  & \..      ![inf
1a580 6f 20 65 78 69 73 74 73 20 6e 6f 28 69 6e 74 65  o exists no(inte
1a590 72 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64 29 5d  ractiveCommand)]
1a5a0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d  } then {..    #.
1a5b0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
1a5c0 20 74 65 73 74 20 22 64 65 62 75 67 2d 31 2e 38   test "debug-1.8
1a5d0 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 63  "...    #..    c
1a5e0 68 65 63 6b 46 6f 72 49 6e 74 65 72 61 63 74 69  heckForInteracti
1a5f0 76 65 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  veCommand $test_
1a600 63 68 61 6e 6e 65 6c 20 67 6f 0d 0a 0d 0a 20 20  channel go....  
1a610 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
1a620 20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75 67   For test "debug
1a630 2d 31 2e 39 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.9"...    #.. 
1a640 20 20 20 63 68 65 63 6b 46 6f 72 49 6e 74 65 72     checkForInter
1a650 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64 20 24 74  activeCommand $t
1a660 65 73 74 5f 63 68 61 6e 6e 65 6c 20 64 6f 6e 65  est_channel done
1a670 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
1a680 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
1a690 22 6f 62 6a 65 63 74 2d 31 35 2e 39 22 2e 0d 0a  "object-15.9"...
1a6a0 20 20 20 20 23 0d 0a 20 20 20 20 63 68 65 63 6b      #..    check
1a6b0 46 6f 72 49 6e 74 65 72 61 63 74 69 76 65 43 6f  ForInteractiveCo
1a6c0 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e  mmand $test_chan
1a6d0 6e 65 6c 20 61 72 67 73 0d 0a 20 20 7d 0d 0a 0d  nel args..  }...
1a6e0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1a6f0 69 73 74 73 20 6e 6f 28 75 73 65 72 49 6e 74 65  ists no(userInte
1a700 72 61 63 74 69 6f 6e 29 5d 7d 20 74 68 65 6e 20  raction)]} then 
1a710 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 55  {..    checkForU
1a720 73 65 72 49 6e 74 65 72 61 63 74 69 6f 6e 20 24  serInteraction $
1a730 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1a740 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1a750 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 6e 65  TE: Check for ne
1a760 74 77 6f 72 6b 20 63 6f 6e 6e 65 63 74 69 76 69  twork connectivi
1a770 74 79 20 74 6f 20 6f 75 72 20 74 65 73 74 20 68  ty to our test h
1a780 6f 73 74 20 28 69 2e 65 2e 0d 0a 20 20 23 20 20  ost (i.e...  #  
1a790 20 20 20 20 20 74 68 65 20 45 61 67 6c 65 20 64       the Eagle d
1a7a0 69 73 74 72 69 62 75 74 69 6f 6e 20 73 69 74 65  istribution site
1a7b0 29 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  )...  #..  if {!
1a7c0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1a7d0 63 6f 72 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f  core)] && ![info
1a7e0 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74 77 6f   exists no(netwo
1a7f0 72 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rk)]} then {..  
1a800 20 20 63 68 65 63 6b 46 6f 72 4e 65 74 77 6f 72    checkForNetwor
1a810 6b 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  k $test_channel 
1a820 24 74 65 73 74 5f 68 6f 73 74 20 24 74 65 73 74  $test_host $test
1a830 5f 74 69 6d 65 6f 75 74 0d 0a 20 20 7d 0d 0a 0d  _timeout..  }...
1a840 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
1a850 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a870 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a880 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a890 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
1a8a0 45 3a 20 46 69 67 75 72 65 20 6f 75 74 20 74 68  E: Figure out th
1a8b0 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20 72 65  e approximate re
1a8c0 6c 61 74 69 76 65 20 70 65 72 66 6f 72 6d 61 6e  lative performan
1a8d0 63 65 20 6f 66 20 74 68 69 73 20 6d 61 63 68 69  ce of this machi
1a8e0 6e 65 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  ne...  #..  if {
1a8f0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1a900 28 62 6f 67 6f 43 6f 70 73 29 5d 20 26 26 20 5b  (bogoCops)] && [
1a910 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 70  haveConstraint p
1a920 65 72 66 6f 72 6d 61 6e 63 65 5d 7d 20 74 68 65  erformance]} the
1a930 6e 20 7b 0d 0a 20 20 20 20 74 70 75 74 73 20 24  n {..    tputs $
1a940 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a  test_channel \..
1a950 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63 68          "---- ch
1a960 65 63 6b 69 6e 67 20 66 6f 72 20 62 61 73 65 6c  ecking for basel
1a970 69 6e 65 20 42 6f 67 6f 43 6f 70 73 20 28 63 6f  ine BogoCops (co
1a980 6d 6d 61 6e 64 73 2d 70 65 72 2d 73 65 63 6f 6e  mmands-per-secon
1a990 64 29 2e 2e 2e 20 22 0d 0a 0d 0a 20 20 20 20 69  d)... "....    i
1a9a0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1a9b0 20 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73 5d   test_base_cops]
1a9c0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
1a9d0 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
1a9e0 20 54 68 65 20 65 78 70 65 63 74 65 64 20 70 65   The expected pe
1a9f0 72 66 6f 72 6d 61 6e 63 65 20 6e 75 6d 62 65 72  rformance number
1aa00 73 20 66 6f 72 20 61 6c 6c 20 74 68 65 0d 0a 20  s for all the.. 
1aa10 20 20 20 20 20 23 20 20 20 20 20 20 20 70 65 72       #       per
1aa20 66 6f 72 6d 61 6e 63 65 20 74 65 73 74 73 20 77  formance tests w
1aa30 69 6c 6c 20 62 65 20 63 61 6c 69 62 72 61 74 65  ill be calibrate
1aa40 64 20 62 61 73 65 64 20 6f 6e 0d 0a 20 20 20 20  d based on..    
1aa50 20 20 23 20 20 20 20 20 20 20 74 68 69 73 20 6e    #       this n
1aa60 75 6d 62 65 72 20 28 77 68 69 63 68 20 69 73 20  umber (which is 
1aa70 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6d 65 61  based on the mea
1aa80 73 75 72 65 64 0d 0a 20 20 20 20 20 20 23 20 20  sured..      #  
1aa90 20 20 20 20 20 70 65 72 66 6f 72 6d 61 6e 63 65       performance
1aaa0 20 6f 66 20 74 68 65 20 61 63 74 75 61 6c 20 6d   of the actual m
1aab0 61 63 68 69 6e 65 20 74 68 61 74 20 77 61 73 0d  achine that was.
1aac0 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 75  .      #       u
1aad0 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  sed to determine
1aae0 20 74 68 6f 73 65 20 65 78 70 65 63 74 65 64 20   those expected 
1aaf0 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a 20 20 20  performance..   
1ab00 20 20 20 23 20 20 20 20 20 20 20 6e 75 6d 62 65     #       numbe
1ab10 72 73 29 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  rs)...      #.. 
1ab20 20 20 20 20 20 69 66 20 7b 5b 69 73 45 61 67 6c       if {[isEagl
1ab30 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
1ab40 20 20 20 20 73 65 74 20 74 65 73 74 5f 62 61 73      set test_bas
1ab50 65 5f 63 6f 70 73 20 33 36 30 30 30 2e 30 3b 20  e_cops 36000.0; 
1ab60 23 20 4e 4f 54 45 3a 20 45 61 67 6c 65 20 31 2e  # NOTE: Eagle 1.
1ab70 30 20 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 7d  0 Win32..      }
1ab80 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20   else {..       
1ab90 20 73 65 74 20 74 65 73 74 5f 62 61 73 65 5f 63   set test_base_c
1aba0 6f 70 73 20 31 35 37 30 30 30 30 2e 30 3b 20 23  ops 1570000.0; #
1abb0 20 4e 4f 54 45 3a 20 54 63 6c 20 38 2e 34 2e 31   NOTE: Tcl 8.4.1
1abc0 39 20 57 69 6e 33 32 0d 0a 20 20 20 20 20 20 7d  9 Win32..      }
1abd0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74  ..    }....    t
1abe0 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
1abf0 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 24  el [appendArgs $
1ac00 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73 20 5c  test_base_cops \
1ac10 6e 5d 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74  n]..    tputs $t
1ac20 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20  est_channel \.. 
1ac30 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63 68 65         "---- che
1ac40 63 6b 69 6e 67 20 66 6f 72 20 62 61 73 65 6c 69  cking for baseli
1ac50 6e 65 20 42 6f 67 6f 43 6f 70 73 20 6d 75 6c 74  ne BogoCops mult
1ac60 69 70 6c 69 65 72 73 2e 2e 2e 20 22 0d 0a 0d 0a  ipliers... "....
1ac70 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
1ac80 78 69 73 74 73 20 74 65 73 74 5f 62 61 73 65 5f  xists test_base_
1ac90 63 6f 70 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73  cops_multipliers
1aca0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
1acb0 20 73 65 74 20 74 65 73 74 5f 62 61 73 65 5f 63   set test_base_c
1acc0 6f 70 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73 20  ops_multipliers 
1acd0 5b 6c 69 73 74 20 5c 0d 0a 20 20 20 20 20 20 20  [list \..       
1ace0 20 20 20 32 20 34 20 38 20 31 30 20 31 36 20 32     2 4 8 10 16 2
1acf0 30 20 33 32 20 35 30 20 36 34 20 31 30 30 20 31  0 32 50 64 100 1
1ad00 30 30 30 20 31 30 30 30 30 20 31 30 30 30 30 30  000 10000 100000
1ad10 20 31 30 30 30 30 30 30 5d 0d 0a 20 20 20 20 7d   1000000]..    }
1ad20 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74  ....    tputs $t
1ad30 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
1ad40 65 6e 64 41 72 67 73 20 24 74 65 73 74 5f 62 61  endArgs $test_ba
1ad50 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69 70 6c 69  se_cops_multipli
1ad60 65 72 73 20 5c 6e 5d 0d 0a 20 20 20 20 74 70 75  ers \n]..    tpu
1ad70 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
1ad80 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
1ad90 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 63  - checking for c
1ada0 75 72 72 65 6e 74 20 42 6f 67 6f 43 6f 70 73 20  urrent BogoCops 
1adb0 28 63 6f 6d 6d 61 6e 64 73 2d 70 65 72 2d 73 65  (commands-per-se
1adc0 63 6f 6e 64 29 2e 2e 2e 20 22 0d 0a 0d 0a 20 20  cond)... "....  
1add0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1ade0 73 74 73 20 74 65 73 74 5f 63 6f 70 73 5d 7d 20  sts test_cops]} 
1adf0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65  then {..      se
1ae00 74 20 74 65 73 74 5f 63 6f 70 73 20 5b 63 61 6c  t test_cops [cal
1ae10 63 75 6c 61 74 65 42 6f 67 6f 43 6f 70 73 5d 0d  culateBogoCops].
1ae20 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70  .    }....    tp
1ae30 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
1ae40 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5b 66  l [appendArgs [f
1ae50 6f 72 6d 61 74 44 65 63 69 6d 61 6c 20 24 74 65  ormatDecimal $te
1ae60 73 74 5f 63 6f 70 73 5d 20 5c 6e 5d 0d 0a 20 20  st_cops] \n]..  
1ae70 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
1ae80 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20  annel \..       
1ae90 20 22 2d 2d 2d 2d 20 63 68 65 63 6b 69 6e 67 20   "---- checking 
1aea0 66 6f 72 20 63 75 72 72 65 6e 74 20 42 6f 67 6f  for current Bogo
1aeb0 43 6f 70 73 20 61 67 61 69 6e 73 74 20 62 61 73  Cops against bas
1aec0 65 6c 69 6e 65 20 42 6f 67 6f 43 6f 70 73 2e 2e  eline BogoCops..
1aed0 2e 20 22 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 24  . "....    if {$
1aee0 74 65 73 74 5f 63 6f 70 73 20 3e 20 24 74 65 73  test_cops > $tes
1aef0 74 5f 62 61 73 65 5f 63 6f 70 73 7d 20 74 68 65  t_base_cops} the
1af00 6e 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b 21  n {..      if {!
1af10 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1af20 66 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 29 5d  fasterBogoCops)]
1af30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
1af40 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74 20    addConstraint 
1af50 73 61 6d 65 4f 72 46 61 73 74 65 72 42 6f 67 6f  sameOrFasterBogo
1af60 43 6f 70 73 0d 0a 20 20 20 20 20 20 20 20 61 64  Cops..        ad
1af70 64 43 6f 6e 73 74 72 61 69 6e 74 20 66 61 73 74  dConstraint fast
1af80 65 72 42 6f 67 6f 43 6f 70 73 0d 0a 0d 0a 20 20  erBogoCops....  
1af90 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
1afa0 20 65 78 69 73 74 73 20 6e 6f 28 62 6f 67 6f 43   exists no(bogoC
1afb0 6f 70 73 4d 75 6c 74 69 70 6c 69 65 72 73 29 5d  opsMultipliers)]
1afc0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
1afd0 20 20 20 20 66 6f 72 65 61 63 68 20 6d 75 6c 74      foreach mult
1afe0 69 70 6c 69 65 72 20 24 74 65 73 74 5f 62 61 73  iplier $test_bas
1aff0 65 5f 63 6f 70 73 5f 6d 75 6c 74 69 70 6c 69 65  e_cops_multiplie
1b000 72 73 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  rs {..          
1b010 20 20 69 66 20 7b 24 74 65 73 74 5f 63 6f 70 73    if {$test_cops
1b020 20 3e 3d 20 24 74 65 73 74 5f 62 61 73 65 5f 63   >= $test_base_c
1b030 6f 70 73 20 2a 20 24 6d 75 6c 74 69 70 6c 69 65  ops * $multiplie
1b040 72 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  r} then {..     
1b050 20 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73           addCons
1b060 74 72 61 69 6e 74 20 5b 61 70 70 65 6e 64 41 72  traint [appendAr
1b070 67 73 20 66 61 73 74 65 72 42 6f 67 6f 43 6f 70  gs fasterBogoCop
1b080 73 42 79 20 24 6d 75 6c 74 69 70 6c 69 65 72 20  sBy $multiplier 
1b090 58 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  X]..            
1b0a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  }..          }..
1b0b0 0d 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73 65  ..          unse
1b0c0 74 20 6d 75 6c 74 69 70 6c 69 65 72 0d 0a 20 20  t multiplier..  
1b0d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1b0e0 0d 0a 0d 0a 20 20 20 20 20 20 74 70 75 74 73 20  ....      tputs 
1b0f0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 66 61  $test_channel fa
1b100 73 74 65 72 5c 6e 0d 0a 20 20 20 20 7d 20 65 6c  ster\n..    } el
1b110 73 65 69 66 20 7b 24 74 65 73 74 5f 63 6f 70 73  seif {$test_cops
1b120 20 3c 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f   < $test_base_co
1b130 70 73 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  ps} then {..    
1b140 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1b150 73 74 73 20 6e 6f 28 73 6c 6f 77 65 72 42 6f 67  sts no(slowerBog
1b160 6f 43 6f 70 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  oCops)]} then {.
1b170 0a 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73  .        addCons
1b180 74 72 61 69 6e 74 20 73 61 6d 65 4f 72 53 6c 6f  traint sameOrSlo
1b190 77 65 72 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20  werBogoCops..   
1b1a0 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69       addConstrai
1b1b0 6e 74 20 73 6c 6f 77 65 72 42 6f 67 6f 43 6f 70  nt slowerBogoCop
1b1c0 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  s....        if 
1b1d0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1b1e0 6f 28 62 6f 67 6f 43 6f 70 73 4d 75 6c 74 69 70  o(bogoCopsMultip
1b1f0 6c 69 65 72 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  liers)]} then {.
1b200 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61  .          forea
1b210 63 68 20 6d 75 6c 74 69 70 6c 69 65 72 20 24 74  ch multiplier $t
1b220 65 73 74 5f 62 61 73 65 5f 63 6f 70 73 5f 6d 75  est_base_cops_mu
1b230 6c 74 69 70 6c 69 65 72 73 20 7b 0d 0a 20 20 20  ltipliers {..   
1b240 20 20 20 20 20 20 20 20 20 69 66 20 7b 24 6d 75           if {$mu
1b250 6c 74 69 70 6c 69 65 72 20 21 3d 20 30 20 26 26  ltiplier != 0 &&
1b260 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
1b270 20 20 20 20 24 74 65 73 74 5f 63 6f 70 73 20 3c      $test_cops <
1b280 3d 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f 70  = $test_base_cop
1b290 73 20 2a 20 28 31 2e 30 20 2f 20 24 6d 75 6c 74  s * (1.0 / $mult
1b2a0 69 70 6c 69 65 72 29 7d 20 74 68 65 6e 20 7b 0d  iplier)} then {.
1b2b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61  .              a
1b2c0 64 64 43 6f 6e 73 74 72 61 69 6e 74 20 5b 61 70  ddConstraint [ap
1b2d0 70 65 6e 64 41 72 67 73 20 73 6c 6f 77 65 72 42  pendArgs slowerB
1b2e0 6f 67 6f 43 6f 70 73 42 79 20 24 6d 75 6c 74 69  ogoCopsBy $multi
1b2f0 70 6c 69 65 72 20 58 5d 0d 0a 20 20 20 20 20 20  plier X]..      
1b300 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1b310 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1b320 20 20 75 6e 73 65 74 20 6d 75 6c 74 69 70 6c 69    unset multipli
1b330 65 72 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  er..        }.. 
1b340 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1b350 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
1b360 6e 65 6c 20 73 6c 6f 77 65 72 5c 6e 0d 0a 20 20  nel slower\n..  
1b370 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
1b380 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1b390 73 74 73 20 6e 6f 28 73 61 6d 65 42 6f 67 6f 43  sts no(sameBogoC
1b3a0 6f 70 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ops)]} then {.. 
1b3b0 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72         addConstr
1b3c0 61 69 6e 74 20 73 61 6d 65 4f 72 46 61 73 74 65  aint sameOrFaste
1b3d0 72 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20 20  rBogoCops..     
1b3e0 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74     addConstraint
1b3f0 20 73 61 6d 65 4f 72 53 6c 6f 77 65 72 42 6f 67   sameOrSlowerBog
1b400 6f 43 6f 70 73 0d 0a 20 20 20 20 20 20 20 20 61  oCops..        a
1b410 64 64 43 6f 6e 73 74 72 61 69 6e 74 20 73 61 6d  ddConstraint sam
1b420 65 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20 20  eBogoCops..     
1b430 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 74 70 75 74   }....      tput
1b440 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
1b450 73 61 6d 65 5c 6e 0d 0a 20 20 20 20 7d 0d 0a 0d  same\n..    }...
1b460 0a 20 20 20 20 73 65 74 20 70 65 72 63 65 6e 74  .    set percent
1b470 20 5b 65 78 70 72 20 7b 5b 63 61 6c 63 75 6c 61   [expr {[calcula
1b480 74 65 52 65 6c 61 74 69 76 65 50 65 72 66 6f 72  teRelativePerfor
1b490 6d 61 6e 63 65 20 69 74 65 72 61 74 69 6f 6e 73  mance iterations
1b4a0 20 31 5d 20 2a 20 31 30 30 7d 5d 0d 0a 0d 0a 20   1] * 100}].... 
1b4b0 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
1b4c0 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
1b4d0 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d  gs \..        "-
1b4e0 2d 2d 2d 20 63 75 72 72 65 6e 74 20 42 6f 67 6f  --- current Bogo
1b4f0 43 6f 70 73 20 28 63 6f 6d 6d 61 6e 64 73 2d 70  Cops (commands-p
1b500 65 72 2d 73 65 63 6f 6e 64 29 20 69 73 20 22 20  er-second) is " 
1b510 5b 66 6f 72 6d 61 74 44 65 63 69 6d 61 6c 20 5c  [formatDecimal \
1b520 0d 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72 20  ..        [expr 
1b530 7b 24 70 65 72 63 65 6e 74 20 3e 20 31 30 30 20  {$percent > 100 
1b540 3f 20 24 70 65 72 63 65 6e 74 20 2d 20 31 30 30  ? $percent - 100
1b550 20 3a 20 24 70 65 72 63 65 6e 74 7d 5d 20 32 5d   : $percent}] 2]
1b560 20 22 25 20 22 20 5c 0d 0a 20 20 20 20 20 20 20   "% " \..       
1b570 20 5b 65 78 70 72 20 7b 24 70 65 72 63 65 6e 74   [expr {$percent
1b580 20 3e 20 31 30 30 20 3f 20 22 66 61 73 74 65 72   > 100 ? "faster
1b590 20 74 68 61 6e 22 20 3a 20 22 61 73 20 66 61 73   than" : "as fas
1b5a0 74 20 61 73 22 7d 5d 20 5c 0d 0a 20 20 20 20 20  t as"}] \..     
1b5b0 20 20 20 22 20 74 68 65 20 62 61 73 65 6c 69 6e     " the baselin
1b5c0 65 5c 6e 22 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73  e\n"]....    uns
1b5d0 65 74 20 70 65 72 63 65 6e 74 0d 0a 20 20 7d 0d  et percent..  }.
1b5e0 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23  ...  ###########
1b5f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b630 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ##....  #..  # N
1b640 4f 54 45 3a 20 54 68 65 20 74 65 73 74 20 63 6f  OTE: The test co
1b650 6e 73 74 72 61 69 6e 74 73 20 73 68 6f 75 6c 64  nstraints should
1b660 20 6e 6f 77 20 62 65 20 66 75 6c 6c 79 20 62 75   now be fully bu
1b670 69 6c 74 2c 20 63 61 63 68 65 20 74 68 65 6d 2e  ilt, cache them.
1b680 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
1b690 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
1b6a0 63 6f 6e 73 74 72 61 69 6e 74 73 5d 7d 20 74 68  constraints]} th
1b6b0 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65  en {..    set te
1b6c0 73 74 5f 63 6f 6e 73 74 72 61 69 6e 74 73 20 5b  st_constraints [
1b6d0 67 65 74 43 6f 6e 73 74 72 61 69 6e 74 73 5d 0d  getConstraints].
1b6e0 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23  .  }....  ######
1b6f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b700 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b710 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b720 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b730 23 23 23 23 23 23 23 0d 0a 20 20 23 23 23 23 23  #######..  #####
1b740 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b750 23 23 23 20 45 4e 44 20 45 61 67 6c 65 20 26 20  ### END Eagle & 
1b760 54 63 6c 20 43 6f 6e 73 74 72 61 69 6e 74 73 20  Tcl Constraints 
1b770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b780 23 23 23 23 23 23 23 23 0d 0a 20 20 23 23 23 23  ########..  ####
1b790 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b7a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b7b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b7c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b7d0 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23  #########....  #
1b7e0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20  ..  # NOTE: For 
1b7f0 45 61 67 6c 65 2c 20 64 75 6d 70 20 74 68 65 20  Eagle, dump the 
1b800 70 6c 61 74 66 6f 72 6d 20 69 6e 66 6f 72 6d 61  platform informa
1b810 74 69 6f 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20  tion, including 
1b820 74 68 65 20 63 6f 6d 70 69 6c 65 0d 0a 20 20 23  the compile..  #
1b830 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2e 0d         options..
1b840 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 73 45  .  #..  if {[isE
1b850 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  agle]} then {.. 
1b860 20 20 20 73 65 74 20 74 69 6d 65 53 74 61 6d 70     set timeStamp
1b870 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
1b880 6f 20 74 69 6d 65 53 74 61 6d 70 20 22 22 5d 0d  o timeStamp ""].
1b890 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69  ...    if {[stri
1b8a0 6e 67 20 6c 65 6e 67 74 68 20 24 74 69 6d 65 53  ng length $timeS
1b8b0 74 61 6d 70 5d 20 3e 20 30 7d 20 74 68 65 6e 20  tamp] > 0} then 
1b8c0 7b 0d 0a 20 20 20 20 20 20 23 23 23 23 23 23 23  {..      #######
1b8d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b8e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b8f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b900 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b910 23 23 0d 0a 20 20 20 20 20 20 23 20 4d 4f 4e 4f  ##..      # MONO
1b920 3a 20 42 75 67 2c 20 73 65 65 3a 20 68 74 74 70  : Bug, see: http
1b930 73 3a 2f 2f 62 75 67 7a 69 6c 6c 61 2e 6e 6f 76  s://bugzilla.nov
1b940 65 6c 6c 2e 63 6f 6d 2f 73 68 6f 77 5f 62 75 67  ell.com/show_bug
1b950 2e 63 67 69 3f 69 64 3d 34 37 39 30 36 31 0d 0a  .cgi?id=479061..
1b960 20 20 20 20 20 20 23 23 23 23 23 23 23 23 23 23        ##########
1b970 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b980 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b990 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b9a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
1b9b0 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 73  ...      if {[is
1b9c0 4d 6f 6e 6f 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  Mono]} then {.. 
1b9d0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1b9e0 20 20 23 20 48 41 43 4b 3a 20 57 65 20 6e 65 65    # HACK: We nee
1b9f0 64 20 73 6f 6d 65 74 68 69 6e 67 20 74 6f 20 67  d something to g
1ba00 6f 20 69 6e 74 6f 20 74 68 65 20 6c 6f 67 20 66  o into the log f
1ba10 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  ile...        #.
1ba20 0a 20 20 20 20 20 20 20 20 73 65 74 20 74 69 6d  .        set tim
1ba30 65 53 74 61 6d 70 20 5b 6c 69 6e 64 65 78 20 24  eStamp [lindex $
1ba40 74 69 6d 65 53 74 61 6d 70 20 30 5d 0d 0a 20 20  timeStamp 0]..  
1ba50 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
1ba60 20 20 20 20 20 20 73 65 74 20 74 69 6d 65 53 74        set timeSt
1ba70 61 6d 70 20 5b 66 6f 72 6d 61 74 54 69 6d 65 53  amp [formatTimeS
1ba80 74 61 6d 70 20 5b 63 6c 6f 63 6b 20 73 63 61 6e  tamp [clock scan
1ba90 20 24 74 69 6d 65 53 74 61 6d 70 5d 5d 0d 0a 20   $timeStamp]].. 
1baa0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 20 65 6c       }..    } el
1bab0 73 65 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20  se {..      set 
1bac0 74 69 6d 65 53 74 61 6d 70 20 3c 6e 6f 6e 65 3e  timeStamp <none>
1bad0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74  ..    }....    t
1bae0 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
1baf0 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
1bb00 2d 2d 2d 2d 20 62 75 69 6c 64 3a 20 22 20 5c 0d  ---- build: " \.
1bb10 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b  .        [list [
1bb20 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20  getPlatformInfo 
1bb30 65 6e 67 69 6e 65 20 3c 6e 6f 6e 65 3e 5d 5d 20  engine <none>]] 
1bb40 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  " " \..        [
1bb50 6c 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72  list [getPlatfor
1bb60 6d 49 6e 66 6f 20 70 61 74 63 68 4c 65 76 65 6c  mInfo patchLevel
1bb70 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d   <none>]] " " \.
1bb80 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b  .        [list [
1bb90 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20  getPlatformInfo 
1bba0 74 61 67 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22  tag <none>]] " "
1bbb0 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73   \..        [lis
1bbc0 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e  t [getPlatformIn
1bbd0 66 6f 20 72 65 6c 65 61 73 65 20 3c 6e 6f 6e 65  fo release <none
1bbe0 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20 20  >]] " " \..     
1bbf0 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61     [list [getPla
1bc00 74 66 6f 72 6d 49 6e 66 6f 20 74 65 78 74 20 3c  tformInfo text <
1bc10 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20  none>]] " " \.. 
1bc20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67 65         [list [ge
1bc30 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63 6f  tPlatformInfo co
1bc40 6e 66 69 67 75 72 61 74 69 6f 6e 20 3c 6e 6f 6e  nfiguration <non
1bc50 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20  e>]] " " \..    
1bc60 20 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c      [list [getPl
1bc70 61 74 66 6f 72 6d 49 6e 66 6f 20 73 75 66 66 69  atformInfo suffi
1bc80 78 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c  x <none>]] " " \
1bc90 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20  ..        [list 
1bca0 24 74 69 6d 65 53 74 61 6d 70 5d 20 22 20 22 20  $timeStamp] " " 
1bcb0 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74  \..        [list
1bcc0 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
1bcd0 6f 20 73 6f 75 72 63 65 49 64 20 3c 6e 6f 6e 65  o sourceId <none
1bce0 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20 20  >]] " " \..     
1bcf0 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61     [list [getPla
1bd00 74 66 6f 72 6d 49 6e 66 6f 20 73 6f 75 72 63 65  tformInfo source
1bd10 54 69 6d 65 53 74 61 6d 70 20 3c 6e 6f 6e 65 3e  TimeStamp <none>
1bd20 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e  ]] \n]....    un
1bd30 73 65 74 20 74 69 6d 65 53 74 61 6d 70 0d 0a 0d  set timeStamp...
1bd40 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74  .    tputs $test
1bd50 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
1bd60 41 72 67 73 20 22 2d 2d 2d 2d 20 6f 73 3a 20 22  Args "---- os: "
1bd70 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65 74   \..        [get
1bd80 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 6f 73 20  PlatformInfo os 
1bd90 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20  <none>] \n].... 
1bda0 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
1bdb0 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
1bdc0 67 73 20 22 2d 2d 2d 2d 20 67 6c 6f 62 61 6c 41  gs "---- globalA
1bdd0 73 73 65 6d 62 6c 79 43 61 63 68 65 3a 20 22 20  ssemblyCache: " 
1bde0 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65 74 50  \..        [getP
1bdf0 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 67 6c 6f 62  latformInfo glob
1be00 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20  alAssemblyCache 
1be10 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20  <none>] \n].... 
1be20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
1be30 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
1be40 67 73 20 22 2d 2d 2d 2d 20 6d 6f 64 75 6c 65 56  gs "---- moduleV
1be50 65 72 73 69 6f 6e 49 64 3a 20 22 20 5c 0d 0a 20  ersionId: " \.. 
1be60 20 20 20 20 20 20 20 5b 67 65 74 50 6c 61 74 66         [getPlatf
1be70 6f 72 6d 49 6e 66 6f 20 6d 6f 64 75 6c 65 56 65  ormInfo moduleVe
1be80 72 73 69 6f 6e 49 64 20 3c 6e 6f 6e 65 3e 5d 20  rsionId <none>] 
1be90 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73  \n]....    tputs
1bea0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
1beb0 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
1bec0 20 63 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 3a   compileOptions:
1bed0 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66   " \..        [f
1bee0 6f 72 6d 61 74 4c 69 73 74 20 5b 67 65 74 50 6c  ormatList [getPl
1bef0 61 74 66 6f 72 6d 49 6e 66 6f 20 63 6f 6d 70 69  atformInfo compi
1bf00 6c 65 4f 70 74 69 6f 6e 73 20 3c 6e 6f 6e 65 3e  leOptions <none>
1bf10 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70  ]] \n]....    tp
1bf20 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
1bf30 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
1bf40 2d 2d 2d 20 73 74 72 6f 6e 67 4e 61 6d 65 3a 20  --- strongName: 
1bf50 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65  " \..        [ge
1bf60 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 73 74  tPlatformInfo st
1bf70 72 6f 6e 67 4e 61 6d 65 20 3c 6e 6f 6e 65 3e 5d  rongName <none>]
1bf80 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74   \n]....    tput
1bf90 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
1bfa0 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
1bfb0 2d 20 63 65 72 74 69 66 69 63 61 74 65 3a 20 22  - certificate: "
1bfc0 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65 74   \..        [get
1bfd0 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63 65 72  PlatformInfo cer
1bfe0 74 69 66 69 63 61 74 65 20 3c 6e 6f 6e 65 3e 5d  tificate <none>]
1bff0 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74   \n]....    tput
1c000 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
1c010 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
1c020 2d 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72  - targetFramewor
1c030 6b 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20  k: " \..        
1c040 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f  [getPlatformInfo
1c050 20 74 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b   targetFramework
1c060 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 20 20   <none>] \n]..  
1c070 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1c080 54 45 3a 20 53 68 6f 77 20 74 68 65 20 63 75 72  TE: Show the cur
1c090 72 65 6e 74 20 74 65 73 74 20 66 69 6c 65 20 6e  rent test file n
1c0a0 61 6d 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20  ame, if any...  
1c0b0 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  #..  tputs $test
1c0c0 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
1c0d0 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20  Args "---- test 
1c0e0 66 69 6c 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20  file: " \..     
1c0f0 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
1c100 69 73 74 73 20 74 65 73 74 5f 66 69 6c 65 5d 20  ists test_file] 
1c110 26 26 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  && [string lengt
1c120 68 20 24 74 65 73 74 5f 66 69 6c 65 5d 20 3e 20  h $test_file] > 
1c130 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 24 74 65  0 ? \..      $te
1c140 73 74 5f 66 69 6c 65 20 3a 20 22 3c 6e 6f 6e 65  st_file : "<none
1c150 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d  >"}] \n]....  #.
1c160 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20  .  # NOTE: Show 
1c170 74 68 65 20 61 63 74 69 76 65 20 61 6e 64 20 63  the active and c
1c180 61 63 68 65 64 20 74 65 73 74 20 63 6f 6e 73 74  ached test const
1c190 72 61 69 6e 74 73 2e 0d 0a 20 20 23 0d 0a 20 20  raints...  #..  
1c1a0 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
1c1b0 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
1c1c0 22 2d 2d 2d 2d 20 61 63 74 69 76 65 20 63 6f 6e  "---- active con
1c1d0 73 74 72 61 69 6e 74 73 3a 20 22 20 5c 0d 0a 20  straints: " \.. 
1c1e0 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74       [formatList
1c1f0 20 5b 6c 73 6f 72 74 20 5b 67 65 74 43 6f 6e 73   [lsort [getCons
1c200 74 72 61 69 6e 74 73 5d 5d 20 3c 6e 6f 6e 65 3e  traints]] <none>
1c210 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  ] \n]....  tputs
1c220 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
1c230 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
1c240 20 63 61 63 68 65 64 20 63 6f 6e 73 74 72 61 69   cached constrai
1c250 6e 74 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  nts: " \..      
1c260 5b 66 6f 72 6d 61 74 4c 69 73 74 20 5b 6c 73 6f  [formatList [lso
1c270 72 74 20 5b 67 65 74 43 61 63 68 65 64 43 6f 6e  rt [getCachedCon
1c280 73 74 72 61 69 6e 74 73 5d 5d 20 3c 6e 6f 6e 65  straints]] <none
1c290 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20  >] \n]....  #.. 
1c2a0 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68   # NOTE: Show th
1c2b0 65 20 73 74 61 72 74 69 6e 67 20 63 6f 6d 6d 61  e starting comma
1c2c0 6e 64 20 63 6f 75 6e 74 20 28 66 6f 72 20 62 6f  nd count (for bo
1c2d0 74 68 20 54 63 6c 20 61 6e 64 20 45 61 67 6c 65  th Tcl and Eagle
1c2e0 29 2e 0d 0a 20 20 23 0d 0a 20 20 74 70 75 74 73  )...  #..  tputs
1c2f0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
1c300 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
1c310 20 73 74 61 72 74 69 6e 67 20 63 6f 6d 6d 61 6e   starting comman
1c320 64 20 63 6f 75 6e 74 3a 20 22 20 5c 0d 0a 20 20  d count: " \..  
1c330 20 20 20 20 5b 69 6e 66 6f 20 63 6d 64 63 6f 75      [info cmdcou
1c340 6e 74 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 69 66 20  nt] \n]....  if 
1c350 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e  {[isEagle]} then
1c360 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23   {..    #..    #
1c370 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 65 20   NOTE: Show the 
1c380 73 74 61 72 74 69 6e 67 20 6f 70 65 72 61 74 69  starting operati
1c390 6f 6e 20 63 6f 75 6e 74 20 28 66 6f 72 20 45 61  on count (for Ea
1c3a0 67 6c 65 20 6f 6e 6c 79 29 2e 0d 0a 20 20 20 20  gle only)...    
1c3b0 23 0d 0a 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e  #..    if {[llen
1c3c0 67 74 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e  gth [info comman
1c3d0 64 73 20 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 7d  ds object]] > 0}
1c3e0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
1c3f0 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
1c400 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66  object invoke -f
1c410 6c 61 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20  lags +NonPublic 
1c420 49 6e 74 65 72 70 72 65 74 65 72 2e 47 65 74 41  Interpreter.GetA
1c430 63 74 69 76 65 20 4f 70 65 72 61 74 69 6f 6e 43  ctive OperationC
1c440 6f 75 6e 74 0d 0a 20 20 20 20 20 20 7d 20 6f 70  ount..      } op
1c450 65 72 61 74 69 6f 6e 43 6f 75 6e 74 0d 0a 20 20  erationCount..  
1c460 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
1c470 20 20 73 65 74 20 6f 70 65 72 61 74 69 6f 6e 43    set operationC
1c480 6f 75 6e 74 20 75 6e 61 76 61 69 6c 61 62 6c 65  ount unavailable
1c490 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74  ..    }....    t
1c4a0 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
1c4b0 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
1c4c0 2d 2d 2d 2d 20 73 74 61 72 74 69 6e 67 20 6f 70  ---- starting op
1c4d0 65 72 61 74 69 6f 6e 20 63 6f 75 6e 74 3a 20 22  eration count: "
1c4e0 20 5c 0d 0a 20 20 20 20 20 20 20 20 24 6f 70 65   \..        $ope
1c4f0 72 61 74 69 6f 6e 43 6f 75 6e 74 20 5c 6e 5d 0d  rationCount \n].
1c500 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 6f 70 65  ...    unset ope
1c510 72 61 74 69 6f 6e 43 6f 75 6e 74 0d 0a 0d 0a 20  rationCount.... 
1c520 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
1c530 3a 20 52 65 63 6f 72 64 20 74 68 65 20 72 61 77  : Record the raw
1c540 20 73 74 61 72 74 69 6e 67 20 70 65 72 66 6f 72   starting perfor
1c550 6d 61 6e 63 65 20 63 6f 75 6e 74 2c 20 66 6f 72  mance count, for
1c560 20 6c 61 74 65 72 20 75 73 65 20 69 6e 0d 0a 20   later use in.. 
1c570 20 20 20 23 20 20 20 20 20 20 20 63 61 6c 63 75     #       calcu
1c580 6c 61 74 69 6e 67 20 74 68 65 20 61 70 70 72 6f  lating the appro
1c590 78 69 6d 61 74 65 20 6e 75 6d 62 65 72 20 6f 66  ximate number of
1c5a0 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 20 65 6c   microseconds el
1c5b0 61 70 73 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20  apsed...    #.. 
1c5c0 20 20 20 63 61 74 63 68 20 7b 73 65 74 20 74 65     catch {set te
1c5d0 73 74 5f 74 69 6d 65 73 74 61 6d 70 28 73 74 61  st_timestamp(sta
1c5e0 72 74 43 6f 75 6e 74 29 20 5b 63 6c 6f 63 6b 20  rtCount) [clock 
1c5f0 73 74 61 72 74 5d 7d 0d 0a 20 20 7d 0d 0a 0d 0a  start]}..  }....
1c600 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
1c610 68 6f 77 20 77 68 65 6e 20 74 68 65 20 74 65 73  how when the tes
1c620 74 73 20 61 63 74 75 61 6c 6c 79 20 62 65 67 61  ts actually bega
1c630 6e 20 28 6e 6f 77 29 2e 0d 0a 20 20 23 0d 0a 20  n (now)...  #.. 
1c640 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
1c650 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
1c660 20 22 2d 2d 2d 2d 20 74 65 73 74 73 20 73 74 61   "---- tests sta
1c670 72 74 65 64 20 61 74 20 22 20 5c 0d 0a 20 20 20  rted at " \..   
1c680 20 20 20 5b 66 6f 72 6d 61 74 54 69 6d 65 53 74     [formatTimeSt
1c690 61 6d 70 20 5b 73 65 74 20 74 65 73 74 5f 74 69  amp [set test_ti
1c6a0 6d 65 73 74 61 6d 70 28 73 74 61 72 74 53 65 63  mestamp(startSec
1c6b0 6f 6e 64 73 29 20 5c 0d 0a 20 20 20 20 20 20 5b  onds) \..      [
1c6c0 63 6c 6f 63 6b 20 73 65 63 6f 6e 64 73 5d 5d 5d  clock seconds]]]
1c6d0 20 5c 6e 5d 0d 0a 7d 0d 0a                        \n]..}..