System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 3fd5a528f1f6472c6f0379376780ca64d45c3a0f:


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 68 6f 6d 65 20 64 69 72 65 63  f the home direc
0b90: 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75 72  tory for the cur
0ba0: 72 65 6e 74 0d 0a 20 20 23 20 20 20 20 20 20 20  rent..  #       
0bb0: 75 73 65 72 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  user...  #..  if
0bc0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
0bd0: 74 65 73 74 5f 68 6f 6d 65 5f 70 61 74 68 5d 7d  test_home_path]}
0be0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74   then {..    set
0bf0: 20 74 65 73 74 5f 68 6f 6d 65 5f 70 61 74 68 20   test_home_path 
0c00: 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20  [file normalize 
0c10: 7e 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  ~]..  }....  #..
0c20: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
0c30: 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68  e location of th
0c40: 65 20 74 65 73 74 20 73 75 69 74 65 20 64 61 74  e test suite dat
0c50: 61 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  a, if necessary.
0c60: 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
0c70: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
0c80: 64 61 74 61 5f 70 61 74 68 5d 7d 20 74 68 65 6e  data_path]} then
0c90: 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74   {..    set test
0ca0: 5f 64 61 74 61 5f 70 61 74 68 20 5b 66 69 6c 65  _data_path [file
0cb0: 20 6a 6f 69 6e 20 24 74 65 73 74 5f 70 61 74 68   join $test_path
0cc0: 20 64 61 74 61 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20   data]..  }.... 
0cd0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65   #..  # NOTE: Se
0ce0: 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f  t the location o
0cf0: 66 20 74 68 65 20 62 61 73 65 20 45 61 67 6c 65  f the base Eagle
0d00: 20 64 69 72 65 63 74 6f 72 79 2c 20 69 66 0d 0a   directory, if..
0d10: 20 20 23 20 20 20 20 20 20 20 6e 65 63 65 73 73    #       necess
0d20: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
0d30: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 62  {![info exists b
0d40: 61 73 65 5f 70 61 74 68 5d 7d 20 74 68 65 6e 20  ase_path]} then 
0d50: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
0d60: 4e 4f 54 45 3a 20 53 74 61 72 74 20 6f 75 74 20  NOTE: Start out 
0d70: 67 6f 69 6e 67 20 75 70 20 6f 6e 65 20 6c 65 76  going up one lev
0d80: 65 6c 20 61 6e 64 20 63 68 65 63 6b 20 66 6f 72  el and check for
0d90: 20 61 20 22 6c 69 62 22 0d 0a 20 20 20 20 23 20   a "lib"..    # 
0da0: 20 20 20 20 20 20 73 75 62 2d 64 69 72 65 63 74        sub-direct
0db0: 6f 72 79 2e 20 20 49 66 20 6e 6f 74 20 66 6f 75  ory.  If not fou
0dc0: 6e 64 2c 20 67 6f 20 75 70 20 61 6e 6f 74 68 65  nd, go up anothe
0dd0: 72 20 6c 65 76 65 6c 0d 0a 20 20 20 20 23 20 20  r level..    #  
0de0: 20 20 20 20 20 62 65 63 61 75 73 65 20 77 65 20       because we 
0df0: 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 74  will always be t
0e00: 77 6f 20 6c 65 76 65 6c 73 20 64 6f 77 6e 20 66  wo levels down f
0e10: 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 23 20 20  rom the..    #  
0e20: 20 20 20 20 20 62 61 73 65 20 64 69 72 65 63 74       base direct
0e30: 6f 72 79 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67  ory when running
0e40: 20 69 6e 73 69 64 65 20 74 68 65 20 73 6f 75 72   inside the sour
0e50: 63 65 20 74 72 65 65 2e 0d 0a 20 20 20 20 23 0d  ce tree...    #.
0e60: 0a 20 20 20 20 73 65 74 20 62 61 73 65 5f 70 61  .    set base_pa
0e70: 74 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69  th [file normali
0e80: 7a 65 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  ze [file dirname
0e90: 20 24 74 65 73 74 5f 70 61 74 68 5d 5d 0d 0a 0d   $test_path]]...
0ea0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 48 41  .    #..    # HA
0eb0: 43 4b 3a 20 57 65 20 6d 75 73 74 20 76 65 72 69  CK: We must veri
0ec0: 66 79 20 74 68 61 74 20 74 68 65 20 22 69 6e 69  fy that the "ini
0ed0: 74 2e 65 61 67 6c 65 22 20 66 69 6c 65 20 63 61  t.eagle" file ca
0ee0: 6e 20 65 76 65 6e 74 75 61 6c 6c 79 0d 0a 20 20  n eventually..  
0ef0: 20 20 23 20 20 20 20 20 20 20 62 65 20 66 6f 75    #       be fou
0f00: 6e 64 20 75 6e 64 65 72 20 74 68 65 20 22 6c 69  nd under the "li
0f10: 62 22 20 64 69 72 65 63 74 6f 72 79 20 73 69 6e  b" directory sin
0f20: 63 65 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f  ce Visual Studio
0f30: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 69 6e  ..    #       in
0f40: 73 69 73 74 73 20 6f 6e 20 63 72 65 61 74 69 6e  sists on creatin
0f50: 67 20 61 20 73 75 70 65 72 66 6c 75 6f 75 73 20  g a superfluous 
0f60: 28 61 6e 64 20 65 6d 70 74 79 29 20 22 6c 69 62  (and empty) "lib
0f70: 5c 45 61 67 6c 65 31 2e 30 22 0d 0a 20 20 20 20  \Eagle1.0"..    
0f80: 23 20 20 20 20 20 20 20 73 75 62 2d 64 69 72 65  #       sub-dire
0f90: 63 74 6f 72 79 20 69 6e 73 69 64 65 20 6f 66 20  ctory inside of 
0fa0: 74 68 65 20 22 4c 69 62 72 61 72 79 22 20 70 72  the "Library" pr
0fb0: 6f 6a 65 63 74 20 64 69 72 65 63 74 6f 72 79 0d  oject directory.
0fc0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 73 69 6d  .    #       sim
0fd0: 70 6c 79 20 64 75 65 20 74 6f 20 74 68 65 20 6c  ply due to the l
0fe0: 69 6e 6b 73 20 63 6f 6e 74 61 69 6e 65 64 20 69  inks contained i
0ff0: 6e 20 74 68 65 20 70 72 6f 6a 65 63 74 20 66 69  n the project fi
1000: 6c 65 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20  le that..    #  
1010: 20 20 20 20 20 61 63 74 75 61 6c 6c 79 20 70 6f       actually po
1020: 69 6e 74 20 74 6f 20 74 68 65 20 22 6c 69 62 5c  int to the "lib\
1030: 45 61 67 6c 65 31 2e 30 22 20 73 75 62 2d 64 69  Eagle1.0" sub-di
1040: 72 65 63 74 6f 72 79 20 75 6e 64 65 72 20 74 68  rectory under th
1050: 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 73  e..    #       s
1060: 6f 6c 75 74 69 6f 6e 20 64 69 72 65 63 74 6f 72  olution director
1070: 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  y...    #..    #
1080: 20 57 41 52 4e 49 4e 47 3a 20 54 68 65 20 45 61   WARNING: The Ea
1090: 67 6c 65 20 70 61 63 6b 61 67 65 20 6e 61 6d 65  gle package name
10a0: 20 61 6e 64 20 76 65 72 73 69 6f 6e 20 61 72 65   and version are
10b0: 20 68 61 72 64 2d 63 6f 64 65 64 20 68 65 72 65   hard-coded here
10c0: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65  ...    #..    se
10d0: 74 20 70 6b 67 5f 64 69 72 20 45 61 67 6c 65 31  t pkg_dir Eagle1
10e0: 2e 30 3b 20 23 20 54 4f 44 4f 3a 20 43 68 61 6e  .0; # TODO: Chan
10f0: 67 65 20 6d 65 2e 0d 0a 0d 0a 20 20 20 20 69 66  ge me.....    if
1100: 20 7b 21 5b 66 69 6c 65 20 65 78 69 73 74 73 20   {![file exists 
1110: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65  [file join $base
1120: 5f 70 61 74 68 20 6c 69 62 5d 5d 20 7c 7c 20 5c  _path lib]] || \
1130: 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69 6c 65  ..        ![file
1140: 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b 66 69   isdirectory [fi
1150: 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61  le join $base_pa
1160: 74 68 20 6c 69 62 5d 5d 20 7c 7c 20 5c 0d 0a 20  th lib]] || \.. 
1170: 20 20 20 20 20 20 20 21 5b 66 69 6c 65 20 65 78         ![file ex
1180: 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  ists [file join 
1190: 24 62 61 73 65 5f 70 61 74 68 20 6c 69 62 20 24  $base_path lib $
11a0: 70 6b 67 5f 64 69 72 5d 5d 20 7c 7c 20 5c 0d 0a  pkg_dir]] || \..
11b0: 20 20 20 20 20 20 20 20 21 5b 66 69 6c 65 20 69          ![file i
11c0: 73 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65  sdirectory [file
11d0: 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61 74 68   join $base_path
11e0: 20 6c 69 62 20 24 70 6b 67 5f 64 69 72 5d 5d 20   lib $pkg_dir]] 
11f0: 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b  || \..        ![
1200: 66 69 6c 65 20 65 78 69 73 74 73 20 5b 66 69 6c  file exists [fil
1210: 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61 74  e join $base_pat
1220: 68 20 6c 69 62 20 24 70 6b 67 5f 64 69 72 20 69  h lib $pkg_dir i
1230: 6e 69 74 2e 65 61 67 6c 65 5d 5d 20 7c 7c 20 5c  nit.eagle]] || \
1240: 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69 6c 65  ..        ![file
1250: 20 69 73 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f   isfile [file jo
1260: 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 6c 69  in $base_path li
1270: 62 20 24 70 6b 67 5f 64 69 72 20 69 6e 69 74 2e  b $pkg_dir init.
1280: 65 61 67 6c 65 5d 5d 7d 20 74 68 65 6e 20 7b 0d  eagle]]} then {.
1290: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
12a0: 23 20 4e 4f 54 45 3a 20 57 65 20 64 6f 20 6e 6f  # NOTE: We do no
12b0: 74 20 62 6f 74 68 65 72 20 74 6f 20 63 68 65 63  t bother to chec
12c0: 6b 20 69 66 20 74 68 65 20 22 6c 69 62 22 20 73  k if the "lib" s
12d0: 75 62 2d 64 69 72 65 63 74 6f 72 79 20 61 63 74  ub-directory act
12e0: 75 61 6c 6c 79 0d 0a 20 20 20 20 20 20 23 20 20  ually..      #  
12f0: 20 20 20 20 20 65 78 69 73 74 73 20 61 73 20 61       exists as a
1300: 20 63 68 69 6c 64 20 6f 66 20 74 68 69 73 20 6f   child of this o
1310: 6e 65 2e 20 20 54 68 69 73 20 69 73 20 74 68 65  ne.  This is the
1320: 20 70 72 65 76 69 6f 75 73 20 28 6c 65 67 61 63   previous (legac
1330: 79 29 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  y)..      #     
1340: 20 20 62 65 68 61 76 69 6f 72 20 28 69 2e 65 2e    behavior (i.e.
1350: 20 77 68 65 72 65 20 77 65 20 61 6c 77 61 79 73   where we always
1360: 20 77 65 6e 74 20 75 70 20 74 77 6f 20 6c 65 76   went up two lev
1370: 65 6c 73 20 74 6f 20 74 68 65 20 62 61 73 65 0d  els to the base.
1380: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 64  .      #       d
1390: 69 72 65 63 74 6f 72 79 29 2e 0d 0a 20 20 20 20  irectory)...    
13a0: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 62    #..      set b
13b0: 61 73 65 5f 70 61 74 68 20 5b 66 69 6c 65 20 64  ase_path [file d
13c0: 69 72 6e 61 6d 65 20 24 62 61 73 65 5f 70 61 74  irname $base_pat
13d0: 68 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  h]..    }....   
13e0: 20 75 6e 73 65 74 20 70 6b 67 5f 64 69 72 0d 0a   unset pkg_dir..
13f0: 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23    }....  #######
1400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1440: 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20  ######....  #.. 
1450: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
1460: 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65   location of the
1470: 20 45 61 67 6c 65 20 6d 61 69 6e 20 73 74 72 6f   Eagle main stro
1480: 6e 67 20 6e 61 6d 65 20 6b 65 79 73 20 64 69 72  ng name keys dir
1490: 65 63 74 6f 72 79 2c 0d 0a 20 20 23 20 20 20 20  ectory,..  #    
14a0: 20 20 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e     if necessary.
14b0: 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
14c0: 6e 66 6f 20 65 78 69 73 74 73 20 6b 65 79 5f 70  nfo exists key_p
14d0: 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ath]} then {..  
14e0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
14f0: 20 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 65 72 65   Normally, there
1500: 20 73 68 6f 75 6c 64 20 62 65 20 61 20 22 4b 65   should be a "Ke
1510: 79 73 22 20 73 75 62 2d 64 69 72 65 63 74 6f 72  ys" sub-director
1520: 79 20 6a 75 73 74 20 77 69 74 68 69 6e 0d 0a 20  y just within.. 
1530: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 62     #       the b
1540: 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a  ase directory...
1550: 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6b      #..    set k
1560: 65 79 5f 70 61 74 68 20 5b 66 69 6c 65 20 6a 6f  ey_path [file jo
1570: 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 4b 65  in $base_path Ke
1580: 79 73 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23  ys]..  }....  ##
1590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15d0: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20  ###########.... 
15e0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65   #..  # NOTE: Se
15f0: 74 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65  t the executable
1600: 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20 74   file name for t
1610: 68 65 20 70 72 6f 63 65 73 73 2c 20 69 66 0d 0a  he process, if..
1620: 20 20 23 20 20 20 20 20 20 20 6e 65 63 65 73 73    #       necess
1630: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
1640: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 62  {![info exists b
1650: 69 6e 5f 66 69 6c 65 5d 7d 20 74 68 65 6e 20 7b  in_file]} then {
1660: 0d 0a 20 20 20 20 73 65 74 20 62 69 6e 5f 66 69  ..    set bin_fi
1670: 6c 65 20 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66 65  le [info nameofe
1680: 78 65 63 75 74 61 62 6c 65 5d 0d 0a 20 20 7d 0d  xecutable]..  }.
1690: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
16a0: 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69  : Set the locati
16b0: 6f 6e 20 6f 66 20 74 68 65 20 64 69 72 65 63 74  on of the direct
16c0: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ory containing t
16d0: 68 65 0d 0a 20 20 23 20 20 20 20 20 20 20 65 78  he..  #       ex
16e0: 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20 66 6f  ecutable file fo
16f0: 72 20 74 68 65 20 70 72 6f 63 65 73 73 2c 20 69  r the process, i
1700: 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
1710: 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
1720: 65 78 69 73 74 73 20 62 69 6e 5f 70 61 74 68 5d  exists bin_path]
1730: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65  } then {..    se
1740: 74 20 62 69 6e 5f 70 61 74 68 20 5b 66 69 6c 65  t bin_path [file
1750: 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c 65   normalize [file
1760: 20 64 69 72 6e 61 6d 65 20 24 62 69 6e 5f 66 69   dirname $bin_fi
1770: 6c 65 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  le]]..  }....  #
1780: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20  ..  # NOTE: Set 
1790: 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20  the location of 
17a0: 74 68 65 20 5b 6e 6f 6e 2d 73 63 72 69 70 74 5d  the [non-script]
17b0: 20 6c 69 62 72 61 72 79 20 64 69 72 65 63 74 6f   library directo
17c0: 72 79 0d 0a 20 20 23 20 20 20 20 20 20 20 28 69  ry..  #       (i
17d0: 2e 65 2e 20 74 68 65 20 64 69 72 65 63 74 6f 72  .e. the director
17e0: 79 20 77 68 65 72 65 20 74 68 65 20 70 6c 75 67  y where the plug
17f0: 69 6e 73 20 61 72 65 20 6c 6f 63 61 74 65 64 29  ins are located)
1800: 2c 20 69 66 0d 0a 20 20 23 20 20 20 20 20 20 20  , if..  #       
1810: 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69 73  necessary.  This
1820: 20 76 61 72 69 61 6e 74 20 69 73 20 62 61 73 65   variant is base
1830: 64 20 6f 6e 20 77 68 65 72 65 20 74 68 65 20 70  d on where the p
1840: 72 6f 63 65 73 73 0d 0a 20 20 23 20 20 20 20 20  rocess..  #     
1850: 20 20 65 78 65 63 75 74 61 62 6c 65 20 69 73 20    executable is 
1860: 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 23 0d 0a 20  located...  #.. 
1870: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1880: 74 73 20 6c 69 62 5f 70 61 74 68 5d 7d 20 74 68  ts lib_path]} th
1890: 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  en {..    #..   
18a0: 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 73 68   # NOTE: This sh
18b0: 6f 75 6c 64 20 67 6f 20 6f 6e 65 20 64 69 72 65  ould go one dire
18c0: 63 74 6f 72 79 20 75 70 20 66 72 6f 6d 20 74 68  ctory up from th
18d0: 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  e directory..   
18e0: 20 23 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e   #       contain
18f0: 69 6e 67 20 74 68 65 20 65 78 65 63 75 74 61 62  ing the executab
1900: 6c 65 20 66 69 6c 65 20 66 6f 72 20 74 68 65 20  le file for the 
1910: 70 72 6f 63 65 73 73 20 28 65 2e 67 2e 0d 0a 20  process (e.g... 
1920: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 73     #       the s
1930: 68 65 6c 6c 29 20 61 6e 64 20 74 68 65 6e 20 69  hell) and then i
1940: 6e 74 6f 20 74 68 65 20 22 6c 69 62 22 20 64 69  nto the "lib" di
1950: 72 65 63 74 6f 72 79 20 6a 75 73 74 0d 0a 20 20  rectory just..  
1960: 20 20 23 20 20 20 20 20 20 20 62 65 6e 65 61 74    #       beneat
1970: 68 20 74 68 61 74 2e 0d 0a 20 20 20 20 23 0d 0a  h that...    #..
1980: 20 20 20 20 73 65 74 20 6c 69 62 5f 70 61 74 68      set lib_path
1990: 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65   [file normalize
19a0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c   [file join [fil
19b0: 65 20 64 69 72 6e 61 6d 65 20 24 62 69 6e 5f 70  e dirname $bin_p
19c0: 61 74 68 5d 20 6c 69 62 5d 5d 0d 0a 20 20 7d 0d  ath] lib]]..  }.
19d0: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
19e0: 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69  : Set the locati
19f0: 6f 6e 20 6f 66 20 74 68 65 20 45 61 67 6c 65 20  on of the Eagle 
1a00: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 2d 4f 52  core library -OR
1a10: 2d 20 54 63 6c 20 63 6f 72 65 0d 0a 20 20 23 20  - Tcl core..  # 
1a20: 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66 69        library fi
1a30: 6c 65 20 69 73 20 6c 6f 63 61 74 65 64 2e 20 20  le is located.  
1a40: 54 68 69 73 20 6d 61 79 20 62 65 20 64 69 66 66  This may be diff
1a50: 65 72 65 6e 74 20 74 68 61 6e 20 74 68 65 0d 0a  erent than the..
1a60: 20 20 23 20 20 20 20 20 20 20 6c 6f 63 61 74 69    #       locati
1a70: 6f 6e 20 6f 66 20 74 68 65 20 28 73 68 65 6c 6c  on of the (shell
1a80: 3f 29 20 65 78 65 63 75 74 61 62 6c 65 20 66 69  ?) executable fi
1a90: 6c 65 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  le...  #..  if {
1aa0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 63 6f  ![info exists co
1ab0: 72 65 5f 62 69 6e 5f 70 61 74 68 5d 7d 20 74 68  re_bin_path]} th
1ac0: 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  en {..    #..   
1ad0: 20 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74   # NOTE: Attempt
1ae0: 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 69   to obtain the i
1af0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 74  nformation for t
1b00: 68 65 20 45 61 67 6c 65 20 63 6f 72 65 0d 0a 20  he Eagle core.. 
1b10: 20 20 20 23 20 20 20 20 20 20 20 6c 69 62 72 61     #       libra
1b20: 72 79 20 61 73 73 65 6d 62 6c 79 2e 20 20 54 68  ry assembly.  Th
1b30: 69 73 20 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b  is will not work
1b40: 20 66 6f 72 20 6e 61 74 69 76 65 20 54 63 6c 2e   for native Tcl.
1b50: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
1b60: 7b 5b 63 61 74 63 68 20 7b 69 6e 66 6f 20 61 73  {[catch {info as
1b70: 73 65 6d 62 6c 79 7d 20 62 69 6e 5f 64 69 72 5d  sembly} bin_dir]
1b80: 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20   == 0} then {.. 
1b90: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
1ba0: 4e 4f 54 45 3a 20 47 72 61 62 20 74 68 65 20 64  NOTE: Grab the d
1bb0: 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65  irectory for the
1bc0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 61 73   core library as
1bd0: 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20 23  sembly...      #
1be0: 0d 0a 20 20 20 20 20 20 73 65 74 20 63 6f 72 65  ..      set core
1bf0: 5f 62 69 6e 5f 70 61 74 68 20 5b 66 69 6c 65 20  _bin_path [file 
1c00: 64 69 72 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20  dirname [lindex 
1c10: 24 62 69 6e 5f 64 69 72 20 65 6e 64 5d 5d 0d 0a  $bin_dir end]]..
1c20: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
1c30: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
1c40: 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6e 61 74  OTE: This is nat
1c50: 69 76 65 20 54 63 6c 2e 20 20 54 68 65 72 65 20  ive Tcl.  There 
1c60: 69 73 20 6e 6f 20 77 61 79 20 74 6f 20 71 75 65  is no way to que
1c70: 72 79 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20  ry the..      # 
1c80: 20 20 20 20 20 20 70 61 74 68 20 66 6f 72 20 74        path for t
1c90: 68 65 20 54 63 6c 20 63 6f 72 65 20 6c 69 62 72  he Tcl core libr
1ca0: 61 72 79 20 69 74 73 65 6c 66 20 28 65 2e 67 2e  ary itself (e.g.
1cb0: 20 22 74 63 6c 2a 2e 64 6c 6c 22 2c 0d 0a 20 20   "tcl*.dll",..  
1cc0: 20 20 20 20 23 20 20 20 20 20 20 20 22 6c 69 62      #       "lib
1cd0: 74 63 6c 2a 2e 73 6f 22 2c 20 65 74 63 29 3b 20  tcl*.so", etc); 
1ce0: 68 6f 77 65 76 65 72 2c 20 75 73 69 6e 67 20 5b  however, using [
1cf0: 69 6e 66 6f 20 6c 69 62 72 61 72 79 5d 20 69 73  info library] is
1d00: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
1d10: 63 6c 6f 73 65 20 65 6e 6f 75 67 68 2e 0d 0a 20  close enough... 
1d20: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
1d30: 74 20 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20  t core_bin_path 
1d40: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69  [file dirname [i
1d50: 6e 66 6f 20 6c 69 62 72 61 72 79 5d 5d 0d 0a 20  nfo library]].. 
1d60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65     }....    unse
1d70: 74 20 62 69 6e 5f 64 69 72 0d 0a 20 20 7d 0d 0a  t bin_dir..  }..
1d80: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
1d90: 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f   Set the locatio
1da0: 6e 20 6f 66 20 74 68 65 20 5b 6e 6f 6e 2d 73 63  n of the [non-sc
1db0: 72 69 70 74 5d 20 6c 69 62 72 61 72 79 20 64 69  ript] library di
1dc0: 72 65 63 74 6f 72 79 0d 0a 20 20 23 20 20 20 20  rectory..  #    
1dd0: 20 20 20 28 69 2e 65 2e 20 74 68 65 20 64 69 72     (i.e. the dir
1de0: 65 63 74 6f 72 79 20 77 68 65 72 65 20 74 68 65  ectory where the
1df0: 20 70 6c 75 67 69 6e 73 20 61 72 65 20 6c 6f 63   plugins are loc
1e00: 61 74 65 64 29 2c 20 69 66 0d 0a 20 20 23 20 20  ated), if..  #  
1e10: 20 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e 20       necessary. 
1e20: 20 54 68 69 73 20 76 61 72 69 61 6e 74 20 69 73   This variant is
1e30: 20 62 61 73 65 64 20 6f 6e 20 77 68 65 72 65 20   based on where 
1e40: 74 68 65 20 45 61 67 6c 65 0d 0a 20 20 23 20 20  the Eagle..  #  
1e50: 20 20 20 20 20 63 6f 72 65 20 6c 69 62 72 61 72       core librar
1e60: 79 20 2d 4f 52 2d 20 54 63 6c 20 63 6f 72 65 20  y -OR- Tcl core 
1e70: 6c 69 62 72 61 72 79 20 66 69 6c 65 20 69 73 20  library file is 
1e80: 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 23 0d 0a 20  located...  #.. 
1e90: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1ea0: 74 73 20 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68  ts core_lib_path
1eb0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23  ]} then {..    #
1ec0: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 74  ..    # NOTE: St
1ed0: 61 72 74 20 77 69 74 68 20 74 68 65 20 64 69 72  art with the dir
1ee0: 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63  ectory for the c
1ef0: 6f 72 65 20 6c 69 62 72 61 72 79 20 61 73 73 65  ore library asse
1f00: 6d 62 6c 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  mbly...    #..  
1f10: 20 20 73 65 74 20 63 6f 72 65 5f 6c 69 62 5f 70    set core_lib_p
1f20: 61 74 68 20 24 63 6f 72 65 5f 62 69 6e 5f 70 61  ath $core_bin_pa
1f30: 74 68 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  th....    #..   
1f40: 20 23 20 4e 4f 54 45 3a 20 50 65 72 66 6f 72 6d   # NOTE: Perform
1f50: 20 61 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65   a check for the
1f60: 20 2e 4e 45 54 20 43 6f 72 65 20 6f 75 74 70 75   .NET Core outpu
1f70: 74 20 64 69 72 65 63 74 6f 72 69 65 73 0d 0a 20  t directories.. 
1f80: 20 20 20 23 20 20 20 20 20 20 20 28 65 2e 67 2e     #       (e.g.
1f90: 20 22 6e 65 74 63 6f 72 65 61 70 70 32 2e 30 22   "netcoreapp2.0"
1fa0: 2c 20 65 74 63 29 2c 20 77 68 69 63 68 20 6d 75  , etc), which mu
1fb0: 73 74 20 62 65 20 72 65 6d 6f 76 65 64 0d 0a 20  st be removed.. 
1fc0: 20 20 20 23 20 20 20 20 20 20 20 69 66 20 70 72     #       if pr
1fd0: 65 73 65 6e 74 2c 20 70 72 69 6f 72 20 74 6f 20  esent, prior to 
1fe0: 66 75 72 74 68 65 72 20 63 68 65 63 6b 73 2e 0d  further checks..
1ff0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
2000: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
2010: 28 64 6f 74 4e 65 74 43 6f 72 65 4c 69 62 50 61  (dotNetCoreLibPa
2020: 74 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  th)] && \..     
2030: 20 20 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68     [string match
2040: 20 6e 65 74 2a 20 5b 66 69 6c 65 20 74 61 69 6c   net* [file tail
2050: 20 24 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68 5d   $core_lib_path]
2060: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
2070: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
2080: 3a 20 52 65 6d 6f 76 65 20 74 68 65 20 2e 4e 45  : Remove the .NE
2090: 54 20 43 6f 72 65 20 6f 75 74 70 75 74 20 64 69  T Core output di
20a0: 72 65 63 74 6f 72 79 20 6e 61 6d 65 2e 0d 0a 20  rectory name... 
20b0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
20c0: 74 20 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68 20  t core_lib_path 
20d0: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 63  [file dirname $c
20e0: 6f 72 65 5f 6c 69 62 5f 70 61 74 68 5d 0d 0a 20  ore_lib_path].. 
20f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
2100: 20 20 20 23 20 4e 4f 54 45 3a 20 47 6f 20 75 70     # NOTE: Go up
2110: 20 6f 6e 65 20 6c 65 76 65 6c 2c 20 74 6f 20 72   one level, to r
2120: 65 6d 6f 76 65 20 74 68 65 20 22 62 69 6e 22 20  emove the "bin" 
2130: 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a 20  directory and.. 
2140: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 6e 20     #       then 
2150: 61 70 70 65 6e 64 20 74 68 65 20 22 6c 69 62 22  append the "lib"
2160: 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68 69   directory.  Thi
2170: 73 20 67 69 76 65 73 20 75 73 20 74 68 65 0d 0a  s gives us the..
2180: 20 20 20 20 23 20 20 20 20 20 20 20 66 69 6e 61      #       fina
2190: 6c 20 70 61 74 68 20 77 65 20 6e 65 65 64 2e 0d  l path we need..
21a0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20  .    #..    set 
21b0: 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68 20 5b 66  core_lib_path [f
21c0: 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5c 0d  ile normalize \.
21d0: 0a 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20 6a  .        [file j
21e0: 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  oin [file dirnam
21f0: 65 20 24 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68  e $core_lib_path
2200: 5d 20 6c 69 62 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a  ] lib]]..  }....
2210: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
2220: 65 74 20 74 68 65 20 77 65 62 20 68 6f 73 74 20  et the web host 
2230: 74 6f 20 74 65 73 74 20 61 67 61 69 6e 73 74 2c  to test against,
2240: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
2250: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
2260: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 68 6f  o exists test_ho
2270: 73 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  st]} then {..   
2280: 20 73 65 74 20 74 65 73 74 5f 68 6f 73 74 20 65   set test_host e
2290: 61 67 6c 65 2e 74 6f 0d 0a 20 20 7d 0d 0a 0d 0a  agle.to..  }....
22a0: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
22b0: 65 74 20 74 68 65 20 70 6f 72 74 20 74 6f 20 75  et the port to u
22c0: 73 65 20 66 6f 72 20 73 65 72 76 65 72 20 73 6f  se for server so
22d0: 63 6b 65 74 73 2c 20 69 66 20 6e 65 63 65 73 73  ckets, if necess
22e0: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
22f0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
2300: 65 73 74 5f 70 6f 72 74 5d 7d 20 74 68 65 6e 20  est_port]} then 
2310: 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f  {..    set test_
2320: 70 6f 72 74 20 31 32 33 34 36 3b 20 23 20 49 41  port 12346; # IA
2330: 4e 41 2c 20 31 32 33 34 36 2d 31 32 37 35 32 20  NA, 12346-12752 
2340: 55 6e 61 73 73 69 67 6e 65 64 0d 0a 20 20 7d 0d  Unassigned..  }.
2350: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
2360: 3a 20 53 65 74 20 74 68 65 20 6e 65 74 77 6f 72  : Set the networ
2370: 6b 20 74 69 6d 65 6f 75 74 2c 20 69 66 20 6e 65  k timeout, if ne
2380: 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20  cessary...  #.. 
2390: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
23a0: 74 73 20 74 65 73 74 5f 74 69 6d 65 6f 75 74 5d  ts test_timeout]
23b0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65  } then {..    se
23c0: 74 20 74 65 73 74 5f 74 69 6d 65 6f 75 74 20 32  t test_timeout 2
23d0: 30 30 30 3b 20 23 20 69 6e 20 6d 69 6c 6c 69 73  000; # in millis
23e0: 65 63 6f 6e 64 73 2e 0d 0a 20 20 7d 0d 0a 0d 0a  econds...  }....
23f0: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
2400: 65 74 20 74 68 65 20 63 68 61 6e 6e 65 6c 20 74  et the channel t
2410: 6f 20 75 73 65 20 66 6f 72 20 74 65 73 74 20 6f  o use for test o
2420: 75 74 70 75 74 2c 20 69 66 20 6e 65 63 65 73 73  utput, if necess
2430: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
2440: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
2450: 65 73 74 5f 63 68 61 6e 6e 65 6c 5d 7d 20 74 68  est_channel]} th
2460: 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65  en {..    set te
2470: 73 74 5f 63 68 61 6e 6e 65 6c 20 73 74 64 6f 75  st_channel stdou
2480: 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  t..  }....  #.. 
2490: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
24a0: 20 70 72 69 6d 61 72 79 20 70 61 63 6b 61 67 65   primary package
24b0: 20 70 61 74 68 2c 20 69 66 20 6e 65 63 65 73 73   path, if necess
24c0: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
24d0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
24e0: 65 73 74 5f 70 61 63 6b 61 67 65 5f 70 61 74 68  est_package_path
24f0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73  ]} then {..    s
2500: 65 74 20 74 65 73 74 5f 70 61 63 6b 61 67 65 5f  et test_package_
2510: 70 61 74 68 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  path [file join 
2520: 24 62 61 73 65 5f 70 61 74 68 20 6c 69 62 5d 0d  $base_path lib].
2530: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
2540: 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75 72 65   NOTE: Make sure
2550: 20 6f 75 72 20 70 72 69 6d 61 72 79 20 70 61 63   our primary pac
2560: 6b 61 67 65 20 70 61 74 68 20 69 73 20 70 61 72  kage path is par
2570: 74 20 6f 66 20 74 68 65 20 61 75 74 6f 2d 70 61  t of the auto-pa
2580: 74 68 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  th...  #..  if {
2590: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 61 75 74  [info exists aut
25a0: 6f 5f 70 61 74 68 5d 20 26 26 20 5c 0d 0a 20 20  o_path] && \..  
25b0: 20 20 20 20 5b 6c 73 65 61 72 63 68 20 2d 65 78      [lsearch -ex
25c0: 61 63 74 20 24 61 75 74 6f 5f 70 61 74 68 20 24  act $auto_path $
25d0: 74 65 73 74 5f 70 61 63 6b 61 67 65 5f 70 61 74  test_package_pat
25e0: 68 5d 20 3d 3d 20 2d 31 7d 20 74 68 65 6e 20 7b  h] == -1} then {
25f0: 0d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 61 75  ..    lappend au
2600: 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 70 61  to_path $test_pa
2610: 63 6b 61 67 65 5f 70 61 74 68 0d 0a 20 20 7d 0d  ckage_path..  }.
2620: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
2630: 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20  : Make sure the 
2640: 74 65 73 74 20 73 75 69 74 65 20 70 61 63 6b 61  test suite packa
2650: 67 65 20 69 73 20 70 61 72 74 20 6f 66 20 74 68  ge is part of th
2660: 65 20 61 75 74 6f 2d 70 61 74 68 2e 0d 0a 20 20  e auto-path...  
2670: 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65  #..  if {[info e
2680: 78 69 73 74 73 20 61 75 74 6f 5f 70 61 74 68 5d  xists auto_path]
2690: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 73   && \..      [ls
26a0: 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 61 75  earch -exact $au
26b0: 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 61 6c  to_path $test_al
26c0: 6c 5f 70 61 74 68 5d 20 3d 3d 20 2d 31 7d 20 74  l_path] == -1} t
26d0: 68 65 6e 20 7b 0d 0a 20 20 20 20 6c 61 70 70 65  hen {..    lappe
26e0: 6e 64 20 61 75 74 6f 5f 70 61 74 68 20 24 74 65  nd auto_path $te
26f0: 73 74 5f 61 6c 6c 5f 70 61 74 68 0d 0a 20 20 7d  st_all_path..  }
2700: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
2710: 45 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65  E: Make sure the
2720: 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20 70   test suite is p
2730: 61 72 74 20 6f 66 20 74 68 65 20 61 75 74 6f 2d  art of the auto-
2740: 70 61 74 68 2e 20 20 54 68 69 73 20 69 73 0d 0a  path.  This is..
2750: 20 20 23 20 20 20 20 20 20 20 6e 6f 77 20 64 6f    #       now do
2760: 6e 65 20 66 6f 72 20 6c 65 67 61 63 79 20 63 6f  ne for legacy co
2770: 6d 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79  mpatibility only
2780: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69  ...  #..  if {[i
2790: 6e 66 6f 20 65 78 69 73 74 73 20 61 75 74 6f 5f  nfo exists auto_
27a0: 70 61 74 68 5d 20 26 26 20 5c 0d 0a 20 20 20 20  path] && \..    
27b0: 20 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61 63    [lsearch -exac
27c0: 74 20 24 61 75 74 6f 5f 70 61 74 68 20 24 74 65  t $auto_path $te
27d0: 73 74 5f 70 61 74 68 5d 20 3d 3d 20 2d 31 7d 20  st_path] == -1} 
27e0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 6c 61 70 70  then {..    lapp
27f0: 65 6e 64 20 61 75 74 6f 5f 70 61 74 68 20 24 74  end auto_path $t
2800: 65 73 74 5f 70 61 74 68 0d 0a 20 20 7d 0d 0a 0d  est_path..  }...
2810: 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
2820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2860: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
2870: 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 64  E: Check for and
2880: 20 6c 6f 61 64 20 74 68 65 20 45 61 67 6c 65 20   load the Eagle 
2890: 6c 69 62 72 61 72 79 20 70 61 63 6b 61 67 65 2c  library package,
28a0: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
28b0: 20 20 23 0d 0a 20 20 69 66 20 7b 5b 63 61 74 63    #..  if {[catc
28c0: 68 20 7b 70 61 63 6b 61 67 65 20 70 72 65 73 65  h {package prese
28d0: 6e 74 20 45 61 67 6c 65 2e 4c 69 62 72 61 72 79  nt Eagle.Library
28e0: 7d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  }]} then {..    
28f0: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
2900: 45 61 67 6c 65 2e 4c 69 62 72 61 72 79 0d 0a 20  Eagle.Library.. 
2910: 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
2920: 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61  OTE: Check for a
2930: 6e 64 20 6c 6f 61 64 20 74 68 65 20 45 61 67 6c  nd load the Eagl
2940: 65 20 74 65 73 74 20 70 61 63 6b 61 67 65 2c 20  e test package, 
2950: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
2960: 20 23 0d 0a 20 20 69 66 20 7b 5b 63 61 74 63 68   #..  if {[catch
2970: 20 7b 70 61 63 6b 61 67 65 20 70 72 65 73 65 6e   {package presen
2980: 74 20 45 61 67 6c 65 2e 54 65 73 74 7d 5d 7d 20  t Eagle.Test}]} 
2990: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 70 61 63 6b  then {..    pack
29a0: 61 67 65 20 72 65 71 75 69 72 65 20 45 61 67 6c  age require Eagl
29b0: 65 2e 54 65 73 74 0d 0a 20 20 7d 0d 0a 0d 0a 20  e.Test..  }.... 
29c0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68   #..  # NOTE: Ch
29d0: 65 63 6b 20 66 6f 72 20 61 6e 64 20 6c 6f 61 64  eck for and load
29e0: 20 74 68 65 20 45 61 67 6c 65 20 74 65 73 74 20   the Eagle test 
29f0: 63 6f 6e 73 74 72 61 69 6e 74 73 20 70 61 63 6b  constraints pack
2a00: 61 67 65 2c 20 69 66 0d 0a 20 20 23 20 20 20 20  age, if..  #    
2a10: 20 20 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20     necessary... 
2a20: 20 23 0d 0a 20 20 69 66 20 7b 5b 63 61 74 63 68   #..  if {[catch
2a30: 20 7b 70 61 63 6b 61 67 65 20 70 72 65 73 65 6e   {package presen
2a40: 74 20 45 61 67 6c 65 2e 54 65 73 74 2e 43 6f 6e  t Eagle.Test.Con
2a50: 73 74 72 61 69 6e 74 73 7d 5d 7d 20 74 68 65 6e  straints}]} then
2a60: 20 7b 0d 0a 20 20 20 20 70 61 63 6b 61 67 65 20   {..    package 
2a70: 72 65 71 75 69 72 65 20 45 61 67 6c 65 2e 54 65  require Eagle.Te
2a80: 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74 73 0d 0a  st.Constraints..
2a90: 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23    }....  #######
2aa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ad0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ae0: 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20  ######....  #.. 
2af0: 20 23 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49 41   # NOTE: *SPECIA
2b00: 4c 2a 20 54 68 69 73 20 74 65 73 74 20 63 6f 6e  L* This test con
2b10: 73 74 72 61 69 6e 74 20 6d 75 73 74 20 62 65 20  straint must be 
2b20: 63 68 65 63 6b 65 64 20 66 69 72 73 74 20 61 73  checked first as
2b30: 20 69 74 20 63 61 6e 0d 0a 20 20 23 20 20 20 20   it can..  #    
2b40: 20 20 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20     determine if 
2b50: 73 75 62 73 65 71 75 65 6e 74 20 6f 6e 65 73 20  subsequent ones 
2b60: 77 69 6c 6c 20 65 6d 69 74 20 77 61 72 6e 69 6e  will emit warnin
2b70: 67 73 2e 20 20 54 68 69 73 20 69 73 20 6f 6e 6c  gs.  This is onl
2b80: 79 0d 0a 20 20 23 20 20 20 20 20 20 20 61 70 70  y..  #       app
2b90: 6c 69 63 61 62 6c 65 20 74 6f 20 45 61 67 6c 65  licable to Eagle
2ba0: 2e 20 20 54 68 69 73 20 62 6c 6f 63 6b 20 72 65  .  This block re
2bb0: 71 75 69 72 65 73 20 74 68 65 20 22 45 61 67 6c  quires the "Eagl
2bc0: 65 2e 54 65 73 74 22 20 61 6e 64 0d 0a 20 20 23  e.Test" and..  #
2bd0: 20 20 20 20 20 20 20 22 45 61 67 6c 65 2e 54 65         "Eagle.Te
2be0: 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74 73 22 20  st.Constraints" 
2bf0: 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 23 0d 0a  packages...  #..
2c00: 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d    if {[isEagle]}
2c10: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a   then {..    #..
2c20: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
2c30: 71 75 69 65 74 20 74 65 73 74 69 6e 67 20 73 75  quiet testing su
2c40: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
2c50: 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
2c60: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
2c70: 74 73 20 6e 6f 28 70 72 65 51 75 69 65 74 29 5d  ts no(preQuiet)]
2c80: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
2c90: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
2ca0: 20 54 68 65 72 65 20 61 72 65 20 63 68 65 63 6b   There are check
2cb0: 73 20 66 6f 72 20 74 68 65 20 22 71 75 69 65 74  s for the "quiet
2cc0: 22 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69 6e  " test constrain
2cd0: 74 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20 20  t prior to..    
2ce0: 20 20 23 20 20 20 20 20 20 20 74 68 65 20 72 65    #       the re
2cf0: 61 6c 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69  al test constrai
2d00: 6e 74 73 20 62 65 69 6e 67 20 69 6e 69 74 69 61  nts being initia
2d10: 6c 69 7a 65 64 2e 20 20 50 72 65 70 61 72 65 20  lized.  Prepare 
2d20: 66 6f 72 0d 0a 20 20 20 20 20 20 23 20 20 20 20  for..      #    
2d30: 20 20 20 74 68 6f 73 65 20 63 68 65 63 6b 73 20     those checks 
2d40: 6e 6f 77 2e 20 20 54 68 69 73 20 77 69 6c 6c 20  now.  This will 
2d50: 68 61 76 65 20 74 6f 20 62 65 20 72 65 70 65 61  have to be repea
2d60: 74 65 64 20 6c 61 74 65 72 2c 0d 0a 20 20 20 20  ted later,..    
2d70: 20 20 23 20 20 20 20 20 20 20 61 66 74 65 72 20    #       after 
2d80: 74 68 65 20 72 65 61 6c 20 74 65 73 74 20 63 6f  the real test co
2d90: 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20 69 6e  nstraints are in
2da0: 69 74 69 61 6c 69 7a 65 64 2e 0d 0a 20 20 20 20  itialized...    
2db0: 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
2dc0: 46 6f 72 51 75 69 65 74 20 24 74 65 73 74 5f 63  ForQuiet $test_c
2dd0: 68 61 6e 6e 65 6c 20 74 72 75 65 0d 0a 20 20 20  hannel true..   
2de0: 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23   }..  }....  ###
2df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2e30: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20  ##########....  
2e40: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 56 65 72  #..  # NOTE: Ver
2e50: 69 66 79 20 74 68 61 74 20 74 68 65 20 63 75 72  ify that the cur
2e60: 72 65 6e 74 20 63 61 6c 6c 20 66 72 61 6d 65 20  rent call frame 
2e70: 69 73 20 63 6f 72 72 65 63 74 20 61 6e 64 20 74  is correct and t
2e80: 68 61 74 20 74 68 65 0d 0a 20 20 23 20 20 20 20  hat the..  #    
2e90: 20 20 20 69 6e 74 65 72 70 72 65 74 65 72 20 63     interpreter c
2ea0: 61 6c 6c 20 73 74 61 63 6b 20 68 61 73 20 6e 6f  all stack has no
2eb0: 74 20 62 65 65 6e 20 69 6d 62 61 6c 61 6e 63 65  t been imbalance
2ec0: 64 20 62 79 20 70 72 65 76 69 6f 75 73 0d 0a 20  d by previous.. 
2ed0: 20 23 20 20 20 20 20 20 20 74 65 73 74 73 20 6f   #       tests o
2ee0: 72 20 6f 74 68 65 72 20 65 72 72 6f 72 73 2e 20  r other errors. 
2ef0: 20 54 68 69 73 20 63 68 65 63 6b 20 6f 6e 6c 79   This check only
2f00: 20 61 70 70 6c 69 65 73 20 74 6f 20 45 61 67 6c   applies to Eagl
2f10: 65 2e 0d 0a 20 20 23 20 20 20 20 20 20 20 54 68  e...  #       Th
2f20: 69 73 20 62 6c 6f 63 6b 20 72 65 71 75 69 72 65  is block require
2f30: 73 20 74 68 65 20 22 45 61 67 6c 65 2e 4c 69 62  s the "Eagle.Lib
2f40: 72 61 72 79 22 20 70 61 63 6b 61 67 65 2e 0d 0a  rary" package...
2f50: 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 73 45 61    #..  if {[isEa
2f60: 67 6c 65 5d 20 26 26 20 5b 6c 6c 65 6e 67 74 68  gle] && [llength
2f70: 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20   [info commands 
2f80: 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 7d 20 74 68  object]] > 0} th
2f90: 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  en {..    #..   
2fa0: 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74   # NOTE: Check t
2fb0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63  he name of the c
2fc0: 75 72 72 65 6e 74 20 63 61 6c 6c 20 66 72 61 6d  urrent call fram
2fd0: 65 20 61 67 61 69 6e 73 74 20 74 68 65 20 6f 6e  e against the on
2fe0: 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74  e..    #       t
2ff0: 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75 73  hat should be us
3000: 65 64 20 66 6f 72 20 65 76 61 6c 75 61 74 69 6e  ed for evaluatin
3010: 67 20 74 68 69 73 20 73 63 72 69 70 74 20 66 69  g this script fi
3020: 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  le...    #..    
3030: 69 66 20 7b 5b 6f 62 6a 65 63 74 20 69 6e 76 6f  if {[object invo
3040: 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75  ke -flags +NonPu
3050: 62 6c 69 63 20 5c 0d 0a 20 20 20 20 20 20 20 20  blic \..        
3060: 20 20 20 20 49 6e 74 65 72 70 72 65 74 65 72 2e      Interpreter.
3070: 47 65 74 41 63 74 69 76 65 2e 43 75 72 72 65 6e  GetActive.Curren
3080: 74 46 72 61 6d 65 20 4e 61 6d 65 5d 20 6e 65 20  tFrame Name] ne 
3090: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74  \..        [list
30a0: 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6e 6f   source [file no
30b0: 72 6d 61 6c 69 7a 65 20 5b 69 6e 66 6f 20 73 63  rmalize [info sc
30c0: 72 69 70 74 5d 5d 5d 7d 20 74 68 65 6e 20 7b 0d  ript]]]} then {.
30d0: 0a 20 20 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f  .      unset -no
30e0: 63 6f 6d 70 6c 61 69 6e 20 74 65 73 74 5f 73 75  complain test_su
30f0: 69 74 65 5f 72 75 6e 6e 69 6e 67 0d 0a 20 20 20  ite_running..   
3100: 20 20 20 65 72 72 6f 72 20 22 63 61 6e 6e 6f 74     error "cannot
3110: 20 72 75 6e 20 70 72 6f 6c 6f 67 75 65 2c 20 63   run prologue, c
3120: 75 72 72 65 6e 74 20 66 72 61 6d 65 20 6e 6f 74  urrent frame not
3130: 20 66 6f 72 20 74 68 69 73 20 73 63 72 69 70 74   for this script
3140: 22 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  "..    }....    
3150: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41  #..    # NOTE: A
3160: 74 74 65 6d 70 74 20 74 6f 20 64 65 74 65 72 6d  ttempt to determ
3170: 69 6e 65 20 69 66 20 74 68 65 20 74 68 69 73 20  ine if the this 
3180: 73 63 72 69 70 74 20 66 69 6c 65 20 62 65 69 6e  script file bein
3190: 67 20 72 75 6e 20 61 73 0d 0a 20 20 20 20 23 20  g run as..    # 
31a0: 20 20 20 20 20 20 70 61 72 74 20 6f 66 20 74 68        part of th
31b0: 65 20 6f 76 65 72 61 6c 6c 20 74 65 73 74 20 73  e overall test s
31c0: 75 69 74 65 20 73 63 72 69 70 74 20 66 69 6c 65  uite script file
31d0: 20 69 74 73 65 6c 66 2e 20 20 49 66 20 6e 6f 74   itself.  If not
31e0: 2c 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 69  ,..    #       i
31f0: 73 73 75 65 20 61 20 77 61 72 6e 69 6e 67 20 61  ssue a warning a
3200: 62 6f 75 74 20 74 68 65 20 69 6e 61 62 69 6c 69  bout the inabili
3210: 74 79 20 74 6f 20 64 65 74 65 63 74 20 22 6c 65  ty to detect "le
3220: 61 6b 73 22 20 66 72 6f 6d 0d 0a 20 20 20 20 23  aks" from..    #
3230: 20 20 20 20 20 20 20 74 68 65 20 74 65 73 74 73         the tests
3240: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
3250: 20 7b 5b 6c 73 65 61 72 63 68 20 2d 67 6c 6f 62   {[lsearch -glob
3260: 20 2d 69 6e 64 65 78 20 30 20 2d 2d 20 5b 6f 62   -index 0 -- [ob
3270: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61  ject invoke -fla
3280: 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 5c 0d  gs +NonPublic \.
3290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
32a0: 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69  erpreter.GetActi
32b0: 76 65 20 53 63 72 69 70 74 4c 6f 63 61 74 69 6f  ve ScriptLocatio
32c0: 6e 73 2e 54 6f 53 74 72 69 6e 67 5d 20 5c 0d 0a  ns.ToString] \..
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 2a 5b 2f              {*[/
32e0: 5c 5d 61 6c 6c 2e 65 61 67 6c 65 7d 5d 20 3d 3d  \]all.eagle}] ==
32f0: 20 2d 31 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20   -1} then {..   
3300: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
3310: 54 45 3a 20 43 68 65 63 6b 20 69 66 20 74 68 65  TE: Check if the
3320: 20 77 61 72 6e 69 6e 67 20 73 68 6f 75 6c 64 20   warning should 
3330: 61 63 74 75 61 6c 6c 79 20 62 65 20 65 6d 69 74  actually be emit
3340: 74 65 64 2e 20 20 49 66 20 74 68 69 73 0d 0a 20  ted.  If this.. 
3350: 20 20 20 20 20 23 20 20 20 20 20 20 20 77 61 72       #       war
3360: 6e 69 6e 67 20 68 61 73 20 73 70 65 63 69 66 69  ning has specifi
3370: 63 61 6c 6c 79 20 62 65 65 6e 20 64 69 73 61 62  cally been disab
3380: 6c 65 64 20 6f 72 20 77 65 20 61 72 65 20 69 6e  led or we are in
3390: 20 71 75 69 65 74 0d 0a 20 20 20 20 20 20 23 20   quiet..      # 
33a0: 20 20 20 20 20 20 6d 6f 64 65 2c 20 64 6f 20 6e        mode, do n
33b0: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 23  othing...      #
33c0: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
33d0: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 61 72  fo exists no(war
33e0: 6e 69 6e 67 46 6f 72 41 6c 6c 45 61 67 6c 65 29  ningForAllEagle)
33f0: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
3400: 20 20 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69    ![haveConstrai
3410: 6e 74 20 71 75 69 65 74 5d 7d 20 74 68 65 6e 20  nt quiet]} then 
3420: 7b 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74 73  {..        tputs
3430: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
3440: 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20  appendArgs \..  
3450: 20 20 20 20 20 20 20 20 20 20 22 3d 3d 3d 3d 20            "==== 
3460: 57 41 52 4e 49 4e 47 3a 20 74 65 73 74 73 20 61  WARNING: tests a
3470: 72 65 20 6e 6f 74 20 62 65 69 6e 67 20 72 75 6e  re not being run
3480: 20 76 69 61 20 73 75 69 74 65 20 73 63 72 69 70   via suite scrip
3490: 74 20 66 69 6c 65 20 22 20 5c 0d 0a 20 20 20 20  t file " \..    
34a0: 20 20 20 20 20 20 20 20 22 5c 22 61 6c 6c 2e 65          "\"all.e
34b0: 61 67 6c 65 5c 22 2c 20 72 65 73 6f 75 72 63 65  agle\", resource
34c0: 20 6c 65 61 6b 73 20 77 69 6c 6c 20 70 72 6f 62   leaks will prob
34d0: 61 62 6c 79 20 6e 6f 74 20 62 65 20 72 65 70 6f  ably not be repo
34e0: 72 74 65 64 2e 5c 6e 22 5d 0d 0a 20 20 20 20 20  rted.\n"]..     
34f0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a   }..    }..  }..
3500: 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23  ..  ############
3510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3550: 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  #....  #..  # NO
3560: 54 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61  TE: Set the loca
3570: 6c 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79  l root directory
3580: 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20 63   of the source c
3590: 68 65 63 6b 6f 75 74 20 28 69 2e 65 2e 20 6f 66  heckout (i.e. of
35a0: 20 45 61 67 6c 65 0d 0a 20 20 23 20 20 20 20 20   Eagle..  #     
35b0: 20 20 6f 72 20 77 68 61 74 65 76 65 72 20 70 72    or whatever pr
35c0: 6f 6a 65 63 74 20 74 68 65 20 45 61 67 6c 65 20  oject the Eagle 
35d0: 62 69 6e 61 72 69 65 73 20 61 72 65 20 62 65 69  binaries are bei
35e0: 6e 67 20 75 73 65 64 20 62 79 29 20 75 73 69 6e  ng used by) usin
35f0: 67 20 61 0d 0a 20 20 23 20 20 20 20 20 20 20 46  g a..  #       F
3600: 6f 73 73 69 6c 20 62 69 6e 61 72 79 20 69 6e 20  ossil binary in 
3610: 74 68 65 20 50 41 54 48 2c 20 69 66 20 61 76 61  the PATH, if ava
3620: 69 6c 61 62 6c 65 2e 20 20 54 68 69 73 20 62 6c  ilable.  This bl
3630: 6f 63 6b 20 6e 6f 77 20 72 65 71 75 69 72 65 73  ock now requires
3640: 0d 0a 20 20 23 20 20 20 20 20 20 20 74 68 65 20  ..  #       the 
3650: 22 45 61 67 6c 65 2e 54 65 73 74 2e 43 6f 6e 73  "Eagle.Test.Cons
3660: 74 72 61 69 6e 74 73 22 20 70 61 63 6b 61 67 65  traints" package
3670: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
3680: 69 6e 66 6f 20 65 78 69 73 74 73 20 72 6f 6f 74  info exists root
3690: 5f 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a  _path]} then {..
36a0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
36b0: 45 3a 20 49 73 20 74 68 65 20 75 73 65 20 6f 66  E: Is the use of
36c0: 20 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20 74   Fossil by the t
36d0: 65 73 74 20 73 75 69 74 65 20 61 6c 6c 6f 77 65  est suite allowe
36e0: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
36f0: 66 20 7b 5b 63 61 6e 45 78 65 63 46 6f 73 73 69  f {[canExecFossi
3700: 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  l]} then {..    
3710: 20 20 73 65 74 20 70 61 74 74 65 72 6e 20 7b 5e    set pattern {^
3720: 6c 6f 63 61 6c 2d 72 6f 6f 74 3a 5c 73 2b 28 2e  local-root:\s+(.
3730: 2a 3f 29 24 7d 0d 0a 0d 0a 20 20 20 20 20 20 69  *?)$}....      i
3740: 66 20 7b 5b 63 61 74 63 68 20 7b 65 78 65 63 20  f {[catch {exec 
3750: 2d 2d 20 66 6f 73 73 69 6c 20 69 6e 66 6f 7d 20  -- fossil info} 
3760: 65 78 65 63 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20  exec] || \..    
3770: 20 20 20 20 20 20 21 5b 72 65 67 65 78 70 20 2d        ![regexp -
3780: 6c 69 6e 65 20 2d 2d 20 24 70 61 74 74 65 72 6e  line -- $pattern
3790: 20 24 65 78 65 63 20 64 75 6d 6d 79 20 64 69 72   $exec dummy dir
37a0: 65 63 74 6f 72 79 5d 7d 20 74 68 65 6e 20 7b 0d  ectory]} then {.
37b0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
37c0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20 63      # NOTE: We c
37d0: 6f 75 6c 64 20 6e 6f 74 20 71 75 65 72 79 20 6c  ould not query l
37e0: 6f 63 61 6c 20 72 6f 6f 74 20 64 69 72 65 63 74  ocal root direct
37f0: 6f 72 79 20 6f 66 20 74 68 65 20 73 6f 75 72 63  ory of the sourc
3800: 65 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  e..        #    
3810: 20 20 20 63 68 65 63 6b 6f 75 74 20 66 72 6f 6d     checkout from
3820: 20 46 6f 73 73 69 6c 3b 20 74 68 65 72 65 66 6f   Fossil; therefo
3830: 72 65 2c 20 61 74 74 65 6d 70 74 20 74 6f 20 6d  re, attempt to m
3840: 61 6b 65 20 61 6e 0d 0a 20 20 20 20 20 20 20 20  ake an..        
3850: 23 20 20 20 20 20 20 20 65 64 75 63 61 74 65 64  #       educated
3860: 20 67 75 65 73 73 2e 20 20 54 68 69 73 20 76 61   guess.  This va
3870: 6c 75 65 20 77 69 6c 6c 20 70 72 6f 62 61 62 6c  lue will probabl
3880: 79 20 62 65 20 77 72 6f 6e 67 20 66 6f 72 0d 0a  y be wrong for..
3890: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
38a0: 61 6e 79 20 70 72 6f 6a 65 63 74 28 73 29 20 6f  any project(s) o
38b0: 74 68 65 72 20 74 68 61 6e 20 45 61 67 6c 65 2e  ther than Eagle.
38c0: 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20    In that case, 
38d0: 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 23 20  this..        # 
38e0: 20 20 20 20 20 20 76 61 6c 75 65 20 73 68 6f 75        value shou
38f0: 6c 64 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e  ld be overridden
3900: 20 62 79 20 74 68 61 74 20 70 72 6f 6a 65 63 74   by that project
3910: 20 74 6f 20 72 65 66 6c 65 63 74 0d 0a 20 20 20   to reflect..   
3920: 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65       #       the
3930: 20 61 63 74 75 61 6c 20 6c 6f 63 61 6c 20 72 6f   actual local ro
3940: 6f 74 20 64 69 72 65 63 74 6f 72 79 20 6f 66 20  ot directory of 
3950: 74 68 65 20 73 6f 75 72 63 65 20 63 68 65 63 6b  the source check
3960: 6f 75 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20  out..        #  
3970: 20 20 20 20 20 66 6f 72 20 74 68 61 74 20 70 72       for that pr
3980: 6f 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 20 20  oject...        
3990: 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 72  #..        set r
39a0: 6f 6f 74 5f 70 61 74 68 20 24 62 61 73 65 5f 70  oot_path $base_p
39b0: 61 74 68 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73  ath..      } els
39c0: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e {..        #..
39d0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
39e0: 57 65 20 65 78 74 72 61 63 74 65 64 20 74 68 65  We extracted the
39f0: 20 6c 6f 63 61 6c 20 72 6f 6f 74 20 64 69 72 65   local root dire
3a00: 63 74 6f 72 79 20 6f 66 20 74 68 65 20 73 6f 75  ctory of the sou
3a10: 72 63 65 0d 0a 20 20 20 20 20 20 20 20 23 20 20  rce..        #  
3a20: 20 20 20 20 20 63 68 65 63 6b 6f 75 74 20 66 72       checkout fr
3a30: 6f 6d 20 46 6f 73 73 69 6c 2e 20 20 4e 6f 77 2c  om Fossil.  Now,
3a40: 20 6d 61 6b 65 20 73 75 72 65 20 69 74 20 69 73   make sure it is
3a50: 20 66 75 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20   fully..        
3a60: 23 20 20 20 20 20 20 20 6e 6f 72 6d 61 6c 69 7a  #       normaliz
3a70: 65 64 20 61 6e 64 20 68 61 73 20 6e 6f 20 74 72  ed and has no tr
3a80: 61 69 6c 69 6e 67 20 73 6c 61 73 68 65 73 2e 20  ailing slashes. 
3a90: 20 41 6c 73 6f 2c 20 6d 61 6b 65 0d 0a 20 20 20   Also, make..   
3aa0: 20 20 20 20 20 23 20 20 20 20 20 20 20 73 75 72       #       sur
3ab0: 65 20 61 6e 64 20 72 65 6d 6f 76 65 20 61 6e 79  e and remove any
3ac0: 20 74 72 61 69 6c 69 6e 67 20 6e 65 77 6c 69 6e   trailing newlin
3ad0: 65 20 22 6a 75 73 74 20 69 6e 20 63 61 73 65 22  e "just in case"
3ae0: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
3af0: 20 20 74 68 65 20 72 65 67 75 6c 61 72 20 65 78    the regular ex
3b00: 70 72 65 73 73 69 6f 6e 20 65 6e 67 69 6e 65 20  pression engine 
3b10: 69 6e 63 6c 75 64 65 64 20 69 74 2e 0d 0a 20 20  included it...  
3b20: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
3b30: 20 73 65 74 20 72 6f 6f 74 5f 70 61 74 68 20 5b   set root_path [
3b40: 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b  file normalize [
3b50: 73 74 72 69 6e 67 20 74 72 69 6d 20 24 64 69 72  string trim $dir
3b60: 65 63 74 6f 72 79 5d 5d 0d 0a 20 20 20 20 20 20  ectory]]..      
3b70: 7d 0d 0a 0d 0a 20 20 20 20 20 20 75 6e 73 65 74  }....      unset
3b80: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 64 69 72   -nocomplain dir
3b90: 65 63 74 6f 72 79 20 64 75 6d 6d 79 20 65 78 65  ectory dummy exe
3ba0: 63 20 70 61 74 74 65 72 6e 0d 0a 20 20 20 20 7d  c pattern..    }
3bb0: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 23   else {..      #
3bc0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
3bd0: 55 73 65 20 6f 66 20 46 6f 73 73 69 6c 20 62 79  Use of Fossil by
3be0: 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65 20   the test suite 
3bf0: 69 73 20 66 6f 72 62 69 64 64 65 6e 2e 20 20 46  is forbidden.  F
3c00: 61 6c 6c 62 61 63 6b 0d 0a 20 20 20 20 20 20 23  allback..      #
3c10: 20 20 20 20 20 20 20 74 6f 20 75 73 69 6e 67 20         to using 
3c20: 74 68 65 20 62 61 73 65 20 70 61 74 68 2e 0d 0a  the base path...
3c30: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
3c40: 65 74 20 72 6f 6f 74 5f 70 61 74 68 20 24 62 61  et root_path $ba
3c50: 73 65 5f 70 61 74 68 0d 0a 20 20 20 20 7d 0d 0a  se_path..    }..
3c60: 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23    }....  #######
3c70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3ca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3cb0: 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20  ######....  #.. 
3cc0: 20 23 20 4e 4f 54 45 3a 20 49 66 20 63 6f 6d 6d   # NOTE: If comm
3cd0: 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e  and line argumen
3ce0: 74 73 20 77 65 72 65 20 73 75 70 70 6c 69 65 64  ts were supplied
3cf0: 2c 20 70 72 6f 63 65 73 73 20 74 68 65 6d 20 6e  , process them n
3d00: 6f 77 2e 0d 0a 20 20 23 0d 0a 20 20 73 65 74 20  ow...  #..  set 
3d10: 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 75 69 74  test_flags(-suit
3d20: 65 29 20 22 22 3b 20 23 20 74 65 73 74 20 73 75  e) ""; # test su
3d30: 69 74 65 20 6e 61 6d 65 2c 20 64 65 66 61 75 6c  ite name, defaul
3d40: 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73  t to empty...  s
3d50: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6d  et test_flags(-m
3d60: 61 63 68 69 6e 65 29 20 22 22 3b 20 23 20 6d 61  achine) ""; # ma
3d70: 63 68 69 6e 65 20 61 72 63 68 69 74 65 63 74 75  chine architectu
3d80: 72 65 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65  re, default to e
3d90: 6d 70 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73  mpty...  set tes
3da0: 74 5f 66 6c 61 67 73 28 2d 70 6c 61 74 66 6f 72  t_flags(-platfor
3db0: 6d 29 20 22 22 3b 20 23 20 62 75 69 6c 64 20 70  m) ""; # build p
3dc0: 6c 61 74 66 6f 72 6d 2c 20 64 65 66 61 75 6c 74  latform, default
3dd0: 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65   to empty...  se
3de0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63 6f  t test_flags(-co
3df0: 6e 66 69 67 75 72 61 74 69 6f 6e 29 20 22 22 3b  nfiguration) "";
3e00: 20 23 20 62 75 69 6c 64 20 63 6f 6e 66 69 67 75   # build configu
3e10: 72 61 74 69 6f 6e 2c 20 64 65 66 61 75 6c 74 20  ration, default 
3e20: 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65 74  to empty...  set
3e30: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6e 61 6d   test_flags(-nam
3e40: 65 50 72 65 66 69 78 29 20 22 22 3b 20 23 20 74  ePrefix) ""; # t
3e50: 65 73 74 20 6e 61 6d 65 20 70 72 65 66 69 78 2c  est name prefix,
3e60: 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70 74   default to empt
3e70: 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  y...  set test_f
3e80: 6c 61 67 73 28 2d 73 75 66 66 69 78 29 20 22 22  lags(-suffix) ""
3e90: 3b 20 23 20 62 75 69 6c 64 20 73 75 66 66 69 78  ; # build suffix
3ea0: 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70  , default to emp
3eb0: 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  ty...  set test_
3ec0: 66 6c 61 67 73 28 2d 66 69 6c 65 29 20 5b 6c 69  flags(-file) [li
3ed0: 73 74 20 2a 2e 65 61 67 6c 65 5d 3b 20 23 20 64  st *.eagle]; # d
3ee0: 65 66 61 75 6c 74 20 74 6f 20 72 75 6e 6e 69 6e  efault to runnin
3ef0: 67 20 61 6c 6c 20 74 65 73 74 20 66 69 6c 65 73  g all test files
3f00: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
3f10: 61 67 73 28 2d 6e 6f 74 46 69 6c 65 29 20 5b 6c  ags(-notFile) [l
3f20: 69 73 74 20 6c 2e 2a 2e 65 61 67 6c 65 5d 3b 20  ist l.*.eagle]; 
3f30: 23 20 43 4f 4d 50 41 54 3a 20 54 63 6c 2e 0d 0a  # COMPAT: Tcl...
3f40: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
3f50: 28 2d 73 74 61 72 74 46 69 6c 65 29 20 5b 6c 69  (-startFile) [li
3f60: 73 74 5d 3b 20 23 20 73 74 61 72 74 20 72 75 6e  st]; # start run
3f70: 6e 69 6e 67 20 61 74 20 74 68 65 73 65 20 74 65  ning at these te
3f80: 73 74 20 66 69 6c 65 73 2e 0d 0a 20 20 73 65 74  st files...  set
3f90: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f   test_flags(-sto
3fa0: 70 46 69 6c 65 29 20 5b 6c 69 73 74 5d 3b 20 23  pFile) [list]; #
3fb0: 20 73 74 6f 70 20 72 75 6e 6e 69 6e 67 20 61 66   stop running af
3fc0: 74 65 72 20 74 68 65 73 65 20 74 65 73 74 20 66  ter these test f
3fd0: 69 6c 65 73 2e 0d 0a 20 20 73 65 74 20 74 65 73  iles...  set tes
3fe0: 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20  t_flags(-match) 
3ff0: 5b 6c 69 73 74 20 2a 5d 3b 20 23 20 64 65 66 61  [list *]; # defa
4000: 75 6c 74 20 74 6f 20 72 75 6e 6e 69 6e 67 20 61  ult to running a
4010: 6c 6c 20 74 65 73 74 73 2e 0d 0a 20 20 73 65 74  ll tests...  set
4020: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69   test_flags(-ski
4030: 70 29 20 5b 6c 69 73 74 5d 3b 20 23 20 64 65 66  p) [list]; # def
4040: 61 75 6c 74 20 74 6f 20 73 6b 69 70 70 69 6e 67  ault to skipping
4050: 20 6e 6f 20 74 65 73 74 73 2e 0d 0a 20 20 73 65   no tests...  se
4060: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63 6f  t test_flags(-co
4070: 6e 73 74 72 61 69 6e 74 73 29 20 5b 6c 69 73 74  nstraints) [list
4080: 5d 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  ]; # default to 
4090: 6e 6f 20 6d 61 6e 75 61 6c 20 63 6f 6e 73 74 72  no manual constr
40a0: 61 69 6e 74 73 2e 0d 0a 20 20 73 65 74 20 74 65  aints...  set te
40b0: 73 74 5f 66 6c 61 67 73 28 2d 76 65 72 62 6f 73  st_flags(-verbos
40c0: 65 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74  e) ""; # default
40d0: 20 74 6f 20 70 61 73 73 2c 20 62 6f 64 79 2c 20   to pass, body, 
40e0: 73 6b 69 70 2c 20 73 74 61 72 74 2c 20 65 72 72  skip, start, err
40f0: 6f 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  or...  set test_
4100: 66 6c 61 67 73 28 2d 6c 6f 67 50 61 74 68 29 20  flags(-logPath) 
4110: 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f  ""; # default to
4120: 20 75 73 69 6e 67 20 73 74 61 6e 64 61 72 64 20   using standard 
4130: 6c 6f 67 20 66 69 6c 65 20 70 61 74 68 2e 0d 0a  log file path...
4140: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
4150: 28 2d 6c 6f 67 49 64 29 20 22 22 3b 20 23 20 64  (-logId) ""; # d
4160: 65 66 61 75 6c 74 20 74 6f 20 75 73 69 6e 67 20  efault to using 
4170: 6e 6f 20 6c 6f 67 20 69 64 65 6e 74 69 66 69 65  no log identifie
4180: 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  r...  set test_f
4190: 6c 61 67 73 28 2d 6c 6f 67 46 69 6c 65 29 20 22  lags(-logFile) "
41a0: 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  "; # default to 
41b0: 75 73 69 6e 67 20 73 74 61 6e 64 61 72 64 20 6c  using standard l
41c0: 6f 67 20 66 69 6c 65 20 6e 61 6d 69 6e 67 2e 0d  og file naming..
41d0: 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67  .  set test_flag
41e0: 73 28 2d 74 68 72 65 73 68 6f 6c 64 29 20 22 22  s(-threshold) ""
41f0: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 72  ; # default to r
4200: 65 71 75 69 72 69 6e 67 20 61 6c 6c 20 74 65 73  equiring all tes
4210: 74 73 20 74 6f 20 70 61 73 73 2e 0d 0a 20 20 73  ts to pass...  s
4220: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 72  et test_flags(-r
4230: 61 6e 64 6f 6d 4f 72 64 65 72 29 20 22 22 3b 20  andomOrder) ""; 
4240: 23 20 64 65 66 61 75 6c 74 20 74 6f 20 64 65 74  # default to det
4250: 65 72 6d 69 6e 69 73 74 69 63 20 6f 72 64 65 72  erministic order
4260: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
4270: 61 67 73 28 2d 75 6e 63 6f 75 6e 74 65 64 4c 65  ags(-uncountedLe
4280: 61 6b 73 29 20 22 22 3b 20 23 20 75 73 65 20 64  aks) ""; # use d
4290: 65 66 61 75 6c 74 73 20 66 6f 72 20 75 6e 63 6f  efaults for unco
42a0: 75 6e 74 65 64 20 72 65 73 6f 75 72 63 65 73 2e  unted resources.
42b0: 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61  ..  set test_fla
42c0: 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b 29  gs(-breakOnLeak)
42d0: 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74   ""; # default t
42e0: 6f 20 63 6f 6e 74 69 6e 75 65 20 6f 6e 20 6c 65  o continue on le
42f0: 61 6b 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  ak...  set test_
4300: 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e 46 61 69  flags(-stopOnFai
4310: 6c 75 72 65 29 20 22 22 3b 20 23 20 64 65 66 61  lure) ""; # defa
4320: 75 6c 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20  ult to continue 
4330: 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 73  on failure...  s
4340: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73  et test_flags(-s
4350: 74 6f 70 4f 6e 4c 65 61 6b 29 20 22 22 3b 20 23  topOnLeak) ""; #
4360: 20 64 65 66 61 75 6c 74 20 74 6f 20 63 6f 6e 74   default to cont
4370: 69 6e 75 65 20 6f 6e 20 6c 65 61 6b 2e 0d 0a 20  inue on leak... 
4380: 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28   set test_flags(
4390: 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74 65 29  -exitOnComplete)
43a0: 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74   ""; # default t
43b0: 6f 20 6e 6f 74 20 65 78 69 74 20 61 66 74 65 72  o not exit after
43c0: 20 63 6f 6d 70 6c 65 74 65 2e 0d 0a 20 20 73 65   complete...  se
43d0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 72  t test_flags(-pr
43e0: 65 54 65 73 74 29 20 22 22 3b 20 23 20 64 65 66  eTest) ""; # def
43f0: 61 75 6c 74 20 74 6f 20 6e 6f 74 20 65 76 61 6c  ault to not eval
4400: 75 61 74 69 6e 67 20 61 6e 79 74 68 69 6e 67 2e  uating anything.
4410: 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61  ..  set test_fla
4420: 67 73 28 2d 70 6f 73 74 54 65 73 74 29 20 22 22  gs(-postTest) ""
4430: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 6e  ; # default to n
4440: 6f 74 20 65 76 61 6c 75 61 74 69 6e 67 20 61 6e  ot evaluating an
4450: 79 74 68 69 6e 67 2e 0d 0a 20 20 73 65 74 20 74  ything...  set t
4460: 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57 61  est_flags(-preWa
4470: 69 74 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c  it) ""; # defaul
4480: 74 20 74 6f 20 6e 6f 74 20 77 61 69 74 69 6e 67  t to not waiting
4490: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
44a0: 61 67 73 28 2d 70 6f 73 74 57 61 69 74 29 20 22  ags(-postWait) "
44b0: 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  "; # default to 
44c0: 6e 6f 74 20 77 61 69 74 69 6e 67 2e 0d 0a 20 20  not waiting...  
44d0: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
44e0: 74 63 6c 73 68 29 20 22 22 3b 20 23 20 54 63 6c  tclsh) ""; # Tcl
44f0: 20 73 68 65 6c 6c 2c 20 64 65 66 61 75 6c 74 20   shell, default 
4500: 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65 74  to empty...  set
4510: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 61 64   test_flags(-bad
4520: 29 20 5b 6c 69 73 74 5d 3b 20 23 20 74 68 65 73  ) [list]; # thes
4530: 65 20 61 72 65 20 74 68 65 20 75 6e 72 65 63 6f  e are the unreco
4540: 67 6e 69 7a 65 64 20 61 72 67 75 6d 65 6e 74 73  gnized arguments
4550: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
4560: 61 67 73 28 2d 6e 6f 29 20 5b 6c 69 73 74 5d 3b  ags(-no) [list];
4570: 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 6e 6f   # default to no
4580: 74 20 68 61 76 69 6e 67 20 61 6e 79 20 72 65 73  t having any res
4590: 74 72 69 63 74 69 6f 6e 73 2e 0d 0a 0d 0a 20 20  trictions.....  
45a0: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68 65  #..  # NOTE: Che
45b0: 63 6b 20 66 6f 72 20 61 6e 64 20 70 72 6f 63 65  ck for and proce
45c0: 73 73 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c  ss any command l
45d0: 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 2e 0d 0a  ine arguments...
45e0: 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66 6f    #..  if {[info
45f0: 20 65 78 69 73 74 73 20 61 72 67 76 5d 7d 20 74   exists argv]} t
4600: 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74  hen {..    set t
4610: 65 73 74 5f 66 6c 61 67 73 28 2d 62 61 64 29 20  est_flags(-bad) 
4620: 5b 65 76 61 6c 20 70 72 6f 63 65 73 73 54 65 73  [eval processTes
4630: 74 41 72 67 75 6d 65 6e 74 73 20 74 65 73 74 5f  tArguments test_
4640: 66 6c 61 67 73 20 66 61 6c 73 65 20 24 61 72 67  flags false $arg
4650: 76 5d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69  v]....    if {[i
4660: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
4670: 66 6c 61 67 73 28 2d 6e 6f 29 5d 20 26 26 20 5c  flags(-no)] && \
4680: 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e  ..        [strin
4690: 67 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66  g length $test_f
46a0: 6c 61 67 73 28 2d 6e 6f 29 5d 20 3e 20 30 7d 20  lags(-no)] > 0} 
46b0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
46c0: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53  .      # NOTE: S
46d0: 65 74 20 74 68 65 20 74 65 73 74 20 72 75 6e 20  et the test run 
46e0: 72 65 73 74 72 69 63 74 69 6f 6e 73 20 62 61 73  restrictions bas
46f0: 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 76 69 64  ed on the provid
4700: 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0d  ed command line.
4710: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 61  .      #       a
4720: 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 20 28 77  rgument value (w
4730: 68 69 63 68 20 69 73 20 61 73 73 75 6d 65 64 20  hich is assumed 
4740: 74 6f 20 62 65 20 61 20 22 64 69 63 74 69 6f 6e  to be a "diction
4750: 61 72 79 2d 73 74 79 6c 65 22 20 6c 69 73 74 0d  ary-style" list.
4760: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63  .      #       c
4770: 6f 6e 74 61 69 6e 69 6e 67 20 6e 61 6d 65 2f 76  ontaining name/v
4780: 61 6c 75 65 20 70 61 69 72 73 20 74 6f 20 61 64  alue pairs to ad
4790: 64 20 74 6f 20 74 68 65 20 67 6c 6f 62 61 6c 20  d to the global 
47a0: 22 6e 6f 22 20 61 72 72 61 79 29 2e 0d 0a 20 20  "no" array)...  
47b0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 66 6f 72      #..      for
47c0: 65 61 63 68 20 7b 6e 61 6d 65 20 76 61 6c 75 65  each {name value
47d0: 7d 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 6e  } $test_flags(-n
47e0: 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65  o) {..        se
47f0: 74 20 6e 6f 28 24 6e 61 6d 65 29 20 24 76 61 6c  t no($name) $val
4800: 75 65 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ue..      }.... 
4810: 20 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f       unset -noco
4820: 6d 70 6c 61 69 6e 20 6e 61 6d 65 20 76 61 6c 75  mplain name valu
4830: 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  e..    }....    
4840: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
4850: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f 67   test_flags(-log
4860: 50 61 74 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20  Path)] && \..   
4870: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e       [string len
4880: 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28  gth $test_flags(
4890: 2d 6c 6f 67 50 61 74 68 29 5d 20 3e 20 30 7d 20  -logPath)] > 0} 
48a0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
48b0: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53  .      # NOTE: S
48c0: 65 74 20 74 68 65 20 6c 6f 67 20 70 61 74 68 20  et the log path 
48d0: 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76 69  to the one provi
48e0: 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d 61  ded by the comma
48f0: 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20  nd line...      
4900: 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73  #..      set tes
4910: 74 5f 6c 6f 67 5f 70 61 74 68 20 24 74 65 73 74  t_log_path $test
4920: 5f 66 6c 61 67 73 28 2d 6c 6f 67 50 61 74 68 29  _flags(-logPath)
4930: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
4940: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  f {[info exists 
4950: 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f 67 49  test_flags(-logI
4960: 64 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  d)] && \..      
4970: 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68    [string length
4980: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f   $test_flags(-lo
4990: 67 49 64 29 5d 20 3e 20 30 7d 20 74 68 65 6e 20  gId)] > 0} then 
49a0: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
49b0: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
49c0: 65 20 6c 6f 67 20 69 64 65 6e 74 69 66 69 65 72  e log identifier
49d0: 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76   to the one prov
49e0: 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d  ided by the comm
49f0: 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20  and line...     
4a00: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
4a10: 73 74 5f 6c 6f 67 5f 69 64 20 24 74 65 73 74 5f  st_log_id $test_
4a20: 66 6c 61 67 73 28 2d 6c 6f 67 49 64 29 0d 0a 20  flags(-logId).. 
4a30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
4a40: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
4a50: 74 5f 66 6c 61 67 73 28 2d 6c 6f 67 46 69 6c 65  t_flags(-logFile
4a60: 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  )] && \..       
4a70: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
4a80: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f 67  $test_flags(-log
4a90: 46 69 6c 65 29 5d 20 3e 20 30 7d 20 74 68 65 6e  File)] > 0} then
4aa0: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
4ab0: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
4ac0: 68 65 20 6c 6f 67 20 66 69 6c 65 20 6e 61 6d 65  he log file name
4ad0: 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76   to the one prov
4ae0: 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d  ided by the comm
4af0: 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20  and line...     
4b00: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
4b10: 73 74 5f 6c 6f 67 20 24 74 65 73 74 5f 66 6c 61  st_log $test_fla
4b20: 67 73 28 2d 6c 6f 67 46 69 6c 65 29 0d 0a 20 20  gs(-logFile)..  
4b30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b    }....    if {[
4b40: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
4b50: 5f 66 6c 61 67 73 28 2d 74 68 72 65 73 68 6f 6c  _flags(-threshol
4b60: 64 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  d)] && \..      
4b70: 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69 6e 74    [string is int
4b80: 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 74 65  eger -strict $te
4b90: 73 74 5f 66 6c 61 67 73 28 2d 74 68 72 65 73 68  st_flags(-thresh
4ba0: 6f 6c 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  old)]} then {.. 
4bb0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
4bc0: 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74 65  NOTE: Set the te
4bd0: 73 74 20 70 61 73 73 20 74 68 72 65 73 68 6f 6c  st pass threshol
4be0: 64 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f  d to the one pro
4bf0: 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d  vided by the com
4c00: 6d 61 6e 64 0d 0a 20 20 20 20 20 20 23 20 20 20  mand..      #   
4c10: 20 20 20 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20      line...     
4c20: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
4c30: 73 74 5f 74 68 72 65 73 68 6f 6c 64 20 24 74 65  st_threshold $te
4c40: 73 74 5f 66 6c 61 67 73 28 2d 74 68 72 65 73 68  st_flags(-thresh
4c50: 6f 6c 64 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  old)..    }.... 
4c60: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
4c70: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
4c80: 72 61 6e 64 6f 6d 4f 72 64 65 72 29 5d 20 26 26  randomOrder)] &&
4c90: 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72   \..        [str
4ca0: 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d  ing is boolean -
4cb0: 73 74 72 69 63 74 20 24 74 65 73 74 5f 66 6c 61  strict $test_fla
4cc0: 67 73 28 2d 72 61 6e 64 6f 6d 4f 72 64 65 72 29  gs(-randomOrder)
4cd0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
4ce0: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
4cf0: 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20 72  : Set the test r
4d00: 61 6e 64 6f 6d 2d 6f 72 64 65 72 20 66 6c 61 67  andom-order flag
4d10: 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76   to the one prov
4d20: 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  ided by the..   
4d30: 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d 6d 61     #       comma
4d40: 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20  nd line...      
4d50: 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65 73  #..      set tes
4d60: 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64 65 72 20 24  t_random_order $
4d70: 74 65 73 74 5f 66 6c 61 67 73 28 2d 72 61 6e 64  test_flags(-rand
4d80: 6f 6d 4f 72 64 65 72 29 0d 0a 20 20 20 20 7d 0d  omOrder)..    }.
4d90: 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f  ...    if {[info
4da0: 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61   exists test_fla
4db0: 67 73 28 2d 75 6e 63 6f 75 6e 74 65 64 4c 65 61  gs(-uncountedLea
4dc0: 6b 73 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ks)] && \..     
4dd0: 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74     [string lengt
4de0: 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 75  h $test_flags(-u
4df0: 6e 63 6f 75 6e 74 65 64 4c 65 61 6b 73 29 5d 20  ncountedLeaks)] 
4e00: 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  > 0} then {..   
4e10: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
4e20: 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74  TE: Set the test
4e30: 20 75 6e 63 6f 75 6e 74 65 64 20 6c 65 61 6b 73   uncounted leaks
4e40: 20 22 6c 69 73 74 22 20 74 6f 20 74 68 65 20 6f   "list" to the o
4e50: 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79 0d 0a  ne provided by..
4e60: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68        #       th
4e70: 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20  e command line. 
4e80: 20 57 65 20 73 68 6f 75 6c 64 20 70 72 6f 62 61   We should proba
4e90: 62 6c 79 20 75 73 65 20 5b 73 74 72 69 6e 67 20  bly use [string 
4ea0: 69 73 20 6c 69 73 74 5d 0d 0a 20 20 20 20 20 20  is list]..      
4eb0: 23 20 20 20 20 20 20 20 68 65 72 65 3b 20 68 6f  #       here; ho
4ec0: 77 65 76 65 72 2c 20 74 68 61 74 20 69 73 20 6e  wever, that is n
4ed0: 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 75 6e 74  ot available unt
4ee0: 69 6c 20 6e 61 74 69 76 65 20 54 63 6c 20 38 2e  il native Tcl 8.
4ef0: 35 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  5...      #..   
4f00: 20 20 20 73 65 74 20 74 65 73 74 5f 75 6e 63 6f     set test_unco
4f10: 75 6e 74 65 64 5f 6c 65 61 6b 73 20 24 74 65 73  unted_leaks $tes
4f20: 74 5f 66 6c 61 67 73 28 2d 75 6e 63 6f 75 6e 74  t_flags(-uncount
4f30: 65 64 4c 65 61 6b 73 29 0d 0a 20 20 20 20 7d 0d  edLeaks)..    }.
4f40: 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f  ...    if {[info
4f50: 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61   exists test_fla
4f60: 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b 29  gs(-breakOnLeak)
4f70: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
4f80: 5b 73 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65  [string is boole
4f90: 61 6e 20 2d 73 74 72 69 63 74 20 24 74 65 73 74  an -strict $test
4fa0: 5f 66 6c 61 67 73 28 2d 62 72 65 61 6b 4f 6e 4c  _flags(-breakOnL
4fb0: 65 61 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  eak)]} then {.. 
4fc0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
4fd0: 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74 65  NOTE: Set the te
4fe0: 73 74 20 62 72 65 61 6b 2d 6f 6e 2d 6c 65 61 6b  st break-on-leak
4ff0: 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e 65   flag to the one
5000: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
5010: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
5020: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20  command line... 
5030: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
5040: 74 20 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f  t test_break_on_
5050: 6c 65 61 6b 20 24 74 65 73 74 5f 66 6c 61 67 73  leak $test_flags
5060: 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b 29 0d 0a  (-breakOnLeak)..
5070: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20      }....    if 
5080: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
5090: 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e  st_flags(-stopOn
50a0: 46 61 69 6c 75 72 65 29 5d 20 26 26 20 5c 0d 0a  Failure)] && \..
50b0: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
50c0: 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69  is boolean -stri
50d0: 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  ct $test_flags(-
50e0: 73 74 6f 70 4f 6e 46 61 69 6c 75 72 65 29 5d 7d  stopOnFailure)]}
50f0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
5100: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
5110: 53 65 74 20 74 68 65 20 74 65 73 74 20 73 74 6f  Set the test sto
5120: 70 2d 6f 6e 2d 66 61 69 6c 75 72 65 20 66 6c 61  p-on-failure fla
5130: 67 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f  g to the one pro
5140: 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20  vided by the..  
5150: 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d 6d      #       comm
5160: 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20  and line...     
5170: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
5180: 73 74 5f 73 74 6f 70 5f 6f 6e 5f 66 61 69 6c 75  st_stop_on_failu
5190: 72 65 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  re $test_flags(-
51a0: 73 74 6f 70 4f 6e 46 61 69 6c 75 72 65 29 0d 0a  stopOnFailure)..
51b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20      }....    if 
51c0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
51d0: 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e  st_flags(-stopOn
51e0: 4c 65 61 6b 29 5d 20 26 26 20 5c 0d 0a 20 20 20  Leak)] && \..   
51f0: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20       [string is 
5200: 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20  boolean -strict 
5210: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f  $test_flags(-sto
5220: 70 4f 6e 4c 65 61 6b 29 5d 7d 20 74 68 65 6e 20  pOnLeak)]} then 
5230: 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
5240: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
5250: 65 20 74 65 73 74 20 73 74 6f 70 2d 6f 6e 2d 6c  e test stop-on-l
5260: 65 61 6b 20 66 6c 61 67 20 74 6f 20 74 68 65 20  eak flag to the 
5270: 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79 20  one provided by 
5280: 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20  the..      #    
5290: 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e     command line.
52a0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
52b0: 20 73 65 74 20 74 65 73 74 5f 73 74 6f 70 5f 6f   set test_stop_o
52c0: 6e 5f 6c 65 61 6b 20 24 74 65 73 74 5f 66 6c 61  n_leak $test_fla
52d0: 67 73 28 2d 73 74 6f 70 4f 6e 4c 65 61 6b 29 0d  gs(-stopOnLeak).
52e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66  .    }....    if
52f0: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
5300: 65 73 74 5f 66 6c 61 67 73 28 2d 65 78 69 74 4f  est_flags(-exitO
5310: 6e 43 6f 6d 70 6c 65 74 65 29 5d 20 26 26 20 5c  nComplete)] && \
5320: 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e  ..        [strin
5330: 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74  g is boolean -st
5340: 72 69 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73  rict $test_flags
5350: 28 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74 65  (-exitOnComplete
5360: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
5370: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
5380: 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20  E: Set the test 
5390: 65 78 69 74 2d 6f 6e 2d 63 6f 6d 70 6c 65 74 65  exit-on-complete
53a0: 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e 65   flag to the one
53b0: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
53c0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
53d0: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20  command line... 
53e0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
53f0: 74 20 74 65 73 74 5f 65 78 69 74 5f 6f 6e 5f 63  t test_exit_on_c
5400: 6f 6d 70 6c 65 74 65 20 24 74 65 73 74 5f 66 6c  omplete $test_fl
5410: 61 67 73 28 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c  ags(-exitOnCompl
5420: 65 74 65 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ete)..    }.... 
5430: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
5440: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
5450: 70 72 65 54 65 73 74 29 5d 20 26 26 20 5c 0d 0a  preTest)] && \..
5460: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
5470: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61  length $test_fla
5480: 67 73 28 2d 70 72 65 54 65 73 74 29 5d 20 3e 20  gs(-preTest)] > 
5490: 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
54a0: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
54b0: 3a 20 53 65 74 20 74 68 65 20 70 72 65 2d 74 65  : Set the pre-te
54c0: 73 74 20 73 63 72 69 70 74 20 74 6f 20 74 68 65  st script to the
54d0: 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79   one provided by
54e0: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e   the command lin
54f0: 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  e...      #..   
5500: 20 20 20 73 65 74 20 74 65 73 74 5f 73 63 72 69     set test_scri
5510: 70 74 28 70 72 65 29 20 24 74 65 73 74 5f 66 6c  pt(pre) $test_fl
5520: 61 67 73 28 2d 70 72 65 54 65 73 74 29 0d 0a 20  ags(-preTest).. 
5530: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
5540: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
5550: 74 5f 66 6c 61 67 73 28 2d 70 6f 73 74 54 65 73  t_flags(-postTes
5560: 74 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  t)] && \..      
5570: 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68    [string length
5580: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 6f   $test_flags(-po
5590: 73 74 54 65 73 74 29 5d 20 3e 20 30 7d 20 74 68  stTest)] > 0} th
55a0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
55b0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74       # NOTE: Set
55c0: 20 74 68 65 20 70 72 65 2d 74 65 73 74 20 73 63   the pre-test sc
55d0: 72 69 70 74 20 74 6f 20 74 68 65 20 6f 6e 65 20  ript to the one 
55e0: 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
55f0: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20  command line... 
5600: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65       #..      se
5610: 74 20 74 65 73 74 5f 73 63 72 69 70 74 28 70 6f  t test_script(po
5620: 73 74 29 20 24 74 65 73 74 5f 66 6c 61 67 73 28  st) $test_flags(
5630: 2d 70 6f 73 74 54 65 73 74 29 0d 0a 20 20 20 20  -postTest)..    
5640: 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e  }....    if {[in
5650: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66  fo exists test_f
5660: 6c 61 67 73 28 2d 70 72 65 57 61 69 74 29 5d 20  lags(-preWait)] 
5670: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73  && \..        [s
5680: 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
5690: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 66   -strict $test_f
56a0: 6c 61 67 73 28 2d 70 72 65 57 61 69 74 29 5d 7d  lags(-preWait)]}
56b0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
56c0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
56d0: 53 65 74 20 74 68 65 20 73 70 65 63 69 66 69 65  Set the specifie
56e0: 64 20 77 61 69 74 20 28 69 6e 20 6d 69 6c 6c 69  d wait (in milli
56f0: 73 65 63 6f 6e 64 73 29 20 62 65 66 6f 72 65 20  seconds) before 
5700: 65 61 63 68 20 66 69 6c 65 2e 0d 0a 20 20 20 20  each file...    
5710: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74    #..      set t
5720: 65 73 74 5f 77 61 69 74 28 70 72 65 29 20 24 74  est_wait(pre) $t
5730: 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57 61  est_flags(-preWa
5740: 69 74 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  it)..    }....  
5750: 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73    if {[info exis
5760: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 70  ts test_flags(-p
5770: 6f 73 74 57 61 69 74 29 5d 20 26 26 20 5c 0d 0a  ostWait)] && \..
5780: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
5790: 69 73 20 69 6e 74 65 67 65 72 20 2d 73 74 72 69  is integer -stri
57a0: 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  ct $test_flags(-
57b0: 70 6f 73 74 57 61 69 74 29 5d 7d 20 74 68 65 6e  postWait)]} then
57c0: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
57d0: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
57e0: 68 65 20 73 70 65 63 69 66 69 65 64 20 77 61 69  he specified wai
57f0: 74 20 28 69 6e 20 6d 69 6c 6c 69 73 65 63 6f 6e  t (in millisecon
5800: 64 73 29 20 61 66 74 65 72 20 65 61 63 68 20 66  ds) after each f
5810: 69 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ile...      #.. 
5820: 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 77 61       set test_wa
5830: 69 74 28 70 6f 73 74 29 20 24 74 65 73 74 5f 66  it(post) $test_f
5840: 6c 61 67 73 28 2d 70 6f 73 74 57 61 69 74 29 0d  lags(-postWait).
5850: 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20  .    }..  }.... 
5860: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65   #..  # NOTE: Se
5870: 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 65  t the default te
5880: 73 74 20 73 75 69 74 65 20 6e 61 6d 65 2c 20 69  st suite name, i
5890: 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
58a0: 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
58b0: 65 78 69 73 74 73 20 74 65 73 74 5f 73 75 69 74  exists test_suit
58c0: 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
58d0: 73 65 74 20 74 65 73 74 5f 73 75 69 74 65 20 5b  set test_suite [
58e0: 67 65 74 54 65 73 74 53 75 69 74 65 5d 0d 0a 20  getTestSuite].. 
58f0: 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
5900: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 64 65 66  OTE: Set the def
5910: 61 75 6c 74 20 74 65 73 74 20 6d 61 63 68 69 6e  ault test machin
5920: 65 20 28 65 2e 67 2e 20 61 6d 64 36 34 2c 20 69  e (e.g. amd64, i
5930: 6e 74 65 6c 2c 20 65 74 63 29 2c 20 69 66 20 6e  ntel, etc), if n
5940: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
5950: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
5960: 73 74 73 20 74 65 73 74 5f 6d 61 63 68 69 6e 65  sts test_machine
5970: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73  ]} then {..    s
5980: 65 74 20 74 65 73 74 5f 6d 61 63 68 69 6e 65 20  et test_machine 
5990: 5b 67 65 74 54 65 73 74 4d 61 63 68 69 6e 65 5d  [getTestMachine]
59a0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
59b0: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
59c0: 64 65 66 61 75 6c 74 20 74 65 73 74 20 70 6c 61  default test pla
59d0: 74 66 6f 72 6d 20 28 65 2e 67 2e 20 78 38 36 2c  tform (e.g. x86,
59e0: 20 78 36 34 2c 20 65 74 63 29 2c 20 69 66 20 6e   x64, etc), if n
59f0: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
5a00: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
5a10: 73 74 73 20 74 65 73 74 5f 70 6c 61 74 66 6f 72  sts test_platfor
5a20: 6d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  m]} then {..    
5a30: 73 65 74 20 74 65 73 74 5f 70 6c 61 74 66 6f 72  set test_platfor
5a40: 6d 20 5b 67 65 74 54 65 73 74 50 6c 61 74 66 6f  m [getTestPlatfo
5a50: 72 6d 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d  rm]..  }....  #.
5a60: 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74  .  # NOTE: Set t
5a70: 68 65 20 64 65 66 61 75 6c 74 20 74 65 73 74 20  he default test 
5a80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 28 69  configuration (i
5a90: 2e 65 2e 20 44 65 62 75 67 20 6f 72 20 52 65 6c  .e. Debug or Rel
5aa0: 65 61 73 65 29 2c 20 69 66 0d 0a 20 20 23 20 20  ease), if..  #  
5ab0: 20 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e 0d       necessary..
5ac0: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
5ad0: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 63  fo exists test_c
5ae0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 7d 20 74  onfiguration]} t
5af0: 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74  hen {..    set t
5b00: 65 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f  est_configuratio
5b10: 6e 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e  n [getPlatformIn
5b20: 66 6f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  fo configuration
5b30: 20 52 65 6c 65 61 73 65 5d 0d 0a 20 20 7d 0d 0a   Release]..  }..
5b40: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
5b50: 20 53 65 74 20 74 68 65 20 6e 61 6d 65 20 70 72   Set the name pr
5b60: 65 66 69 78 20 75 73 65 64 20 66 6f 72 20 73 6f  efix used for so
5b70: 6d 65 20 74 65 73 74 73 2c 20 69 66 20 6e 65 63  me tests, if nec
5b80: 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20  essary...  #..  
5b90: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
5ba0: 73 20 74 65 73 74 5f 6e 61 6d 65 5f 70 72 65 66  s test_name_pref
5bb0: 69 78 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ix]} then {..   
5bc0: 20 73 65 74 20 74 65 73 74 5f 6e 61 6d 65 5f 70   set test_name_p
5bd0: 72 65 66 69 78 20 22 22 0d 0a 20 20 7d 0d 0a 0d  refix ""..  }...
5be0: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
5bf0: 48 61 73 20 61 75 74 6f 6d 61 74 69 63 20 6c 6f  Has automatic lo
5c00: 67 20 66 69 6c 65 20 6e 61 6d 69 6e 67 20 62 65  g file naming be
5c10: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
5c20: 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
5c30: 65 78 69 73 74 73 20 6e 6f 28 6c 6f 67 46 69 6c  exists no(logFil
5c40: 65 4e 61 6d 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  eName)]} then {.
5c50: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
5c60: 54 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 67 20  TE: Set the log 
5c70: 74 6f 20 75 73 65 20 66 6f 72 20 74 65 73 74 20  to use for test 
5c80: 6f 75 74 70 75 74 2c 20 69 66 20 6e 65 63 65 73  output, if neces
5c90: 73 61 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  sary...    #..  
5ca0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
5cb0: 73 74 73 20 74 65 73 74 5f 6c 6f 67 5d 7d 20 74  sts test_log]} t
5cc0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74  hen {..      set
5cd0: 20 74 65 73 74 5f 6c 6f 67 20 5b 67 65 74 44 65   test_log [getDe
5ce0: 66 61 75 6c 74 54 65 73 74 4c 6f 67 5d 0d 0a 20  faultTestLog].. 
5cf0: 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23     }..  }....  #
5d00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5d40: 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
5d50: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
5d60: 61 73 20 6e 61 74 69 76 65 20 54 63 6c 20 73 68  as native Tcl sh
5d70: 65 6c 6c 20 64 65 74 65 63 74 69 6f 6e 20 61 6e  ell detection an
5d80: 64 20 75 73 65 20 62 65 65 6e 20 64 69 73 61 62  d use been disab
5d90: 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20  led?..  #..  if 
5da0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
5db0: 6f 28 74 63 6c 73 68 29 5d 7d 20 74 68 65 6e 20  o(tclsh)]} then 
5dc0: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
5dd0: 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 54 63  NOTE: Set the Tc
5de0: 6c 20 73 68 65 6c 6c 20 65 78 65 63 75 74 61 62  l shell executab
5df0: 6c 65 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68  le to use for th
5e00: 6f 73 65 20 73 70 65 63 69 61 6c 69 7a 65 64 0d  ose specialized.
5e10: 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73  .    #       tes
5e20: 74 73 20 74 68 61 74 20 6d 61 79 20 72 65 71 75  ts that may requ
5e30: 69 72 65 20 69 74 2c 20 69 66 20 6e 65 63 65 73  ire it, if neces
5e40: 73 61 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  sary...    #..  
5e50: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
5e60: 73 74 73 20 74 65 73 74 5f 74 63 6c 73 68 5d 7d  sts test_tclsh]}
5e70: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
5e80: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
5e90: 57 68 65 6e 20 72 75 6e 6e 69 6e 67 20 69 6e 20  When running in 
5ea0: 45 61 67 6c 65 2c 20 6d 6f 72 65 20 63 6f 6d 70  Eagle, more comp
5eb0: 6c 65 78 20 6c 6f 67 69 63 20 69 73 20 72 65 71  lex logic is req
5ec0: 75 69 72 65 64 20 74 6f 0d 0a 20 20 20 20 20 20  uired to..      
5ed0: 23 20 20 20 20 20 20 20 64 65 74 65 72 6d 69 6e  #       determin
5ee0: 65 20 74 68 65 20 6e 61 74 69 76 65 20 54 63 6c  e the native Tcl
5ef0: 20 73 68 65 6c 6c 20 74 6f 20 75 73 65 20 66 6f   shell to use fo
5f00: 72 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 65  r the various te
5f10: 73 74 73 0d 0a 20 20 20 20 20 20 23 20 20 20 20  sts..      #    
5f20: 20 20 20 74 68 61 74 20 72 65 71 75 69 72 65 20     that require 
5f30: 69 74 2e 20 20 41 6c 73 6f 2c 20 74 68 69 73 20  it.  Also, this 
5f40: 73 61 6d 65 20 6c 6f 67 69 63 20 69 73 20 75 73  same logic is us
5f50: 65 64 20 77 69 74 68 20 54 63 6c 0d 0a 20 20 20  ed with Tcl..   
5f60: 20 20 20 23 20 20 20 20 20 20 20 77 68 65 6e 20     #       when 
5f70: 69 74 20 69 73 20 6e 6f 74 20 72 75 6e 6e 69 6e  it is not runnin
5f80: 67 20 66 72 6f 6d 20 61 6e 20 69 6e 73 74 61 6e  g from an instan
5f90: 63 65 20 6f 66 20 74 68 65 20 54 63 6c 20 73 68  ce of the Tcl sh
5fa0: 65 6c 6c 0d 0a 20 20 20 20 20 20 23 20 20 20 20  ell..      #    
5fb0: 20 20 20 65 78 65 63 75 74 61 62 6c 65 2e 0d 0a     executable...
5fc0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
5fd0: 66 20 7b 5b 69 73 45 61 67 6c 65 5d 20 7c 7c 20  f {[isEagle] || 
5fe0: 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 74  ![string match t
5ff0: 63 6c 73 68 2a 20 24 62 69 6e 5f 66 69 6c 65 5d  clsh* $bin_file]
6000: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
6010: 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73    if {[info exis
6020: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 74  ts test_flags(-t
6030: 63 6c 73 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20  clsh)] && \..   
6040: 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67           [string
6050: 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c   length $test_fl
6060: 61 67 73 28 2d 74 63 6c 73 68 29 5d 20 3e 20 30  ags(-tclsh)] > 0
6070: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
6080: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
6090: 20 23 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65   # NOTE: Use the
60a0: 20 6e 61 74 69 76 65 20 54 63 6c 20 73 68 65 6c   native Tcl shel
60b0: 6c 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20  l specified via 
60c0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  the command line
60d0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
60e0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 74 65            set te
60f0: 73 74 5f 74 63 6c 73 68 20 24 74 65 73 74 5f 66  st_tclsh $test_f
6100: 6c 61 67 73 28 2d 74 63 6c 73 68 29 0d 0a 20 20  lags(-tclsh)..  
6110: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
6120: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63            if {[c
6130: 61 6e 45 78 65 63 54 63 6c 53 68 65 6c 6c 5d 20  anExecTclShell] 
6140: 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  && \..          
6150: 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73 74      ![info exist
6160: 73 20 6e 6f 28 67 65 74 54 63 6c 53 68 65 6c 6c  s no(getTclShell
6170: 46 69 6c 65 4e 61 6d 65 29 5d 7d 20 74 68 65 6e  FileName)]} then
6180: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6190: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  #..            #
61a0: 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
61b0: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
61c0: 73 65 6c 65 63 74 20 74 68 65 20 6e 61 74 69 76  select the nativ
61d0: 65 20 54 63 6c 20 73 68 65 6c 6c 0d 0a 20 20 20  e Tcl shell..   
61e0: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
61f0: 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20   to use...      
6200: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
6210: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
6220: 65 78 69 73 74 73 20 6e 6f 28 77 61 72 6e 69 6e  exists no(warnin
6230: 67 46 6f 72 54 63 6c 53 68 65 6c 6c 29 5d 20 26  gForTclShell)] &
6240: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  & \..           
6250: 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73       ![info exis
6260: 74 73 20 6e 6f 28 61 75 74 6f 6d 61 74 69 63 54  ts no(automaticT
6270: 63 6c 53 68 65 6c 6c 29 5d 20 26 26 20 5c 0d 0a  clShell)] && \..
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6290: 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74  ![haveConstraint
62a0: 20 71 75 69 65 74 5d 7d 20 74 68 65 6e 20 7b 0d   quiet]} then {.
62b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74  .              t
62c0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
62d0: 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  el \..          
62e0: 20 20 20 20 20 20 20 20 22 3d 3d 3d 3d 20 57 41          "==== WA
62f0: 52 4e 49 4e 47 3a 20 61 74 74 65 6d 70 74 69 6e  RNING: attemptin
6300: 67 20 61 75 74 6f 6d 61 74 69 63 20 54 63 6c 20  g automatic Tcl 
6310: 73 68 65 6c 6c 20 73 65 6c 65 63 74 69 6f 6e 2e  shell selection.
6320: 2e 2e 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 20  ..\n"..         
6330: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
6340: 20 20 20 20 73 65 74 20 74 65 73 74 5f 74 63 6c      set test_tcl
6350: 73 68 20 5b 67 65 74 54 63 6c 53 68 65 6c 6c 46  sh [getTclShellF
6360: 69 6c 65 4e 61 6d 65 20 5c 0d 0a 20 20 20 20 20  ileName \..     
6370: 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72             [expr
6380: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
6390: 6e 6f 28 61 75 74 6f 6d 61 74 69 63 54 63 6c 53  no(automaticTclS
63a0: 68 65 6c 6c 29 5d 7d 5d 20 5c 0d 0a 20 20 20 20  hell)]}] \..    
63b0: 20 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70              [exp
63c0: 72 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  r {![info exists
63d0: 20 6e 6f 28 74 63 6c 4b 69 74 29 5d 7d 5d 20 5c   no(tclKit)]}] \
63e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
63f0: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
6400: 78 69 73 74 73 20 74 65 73 74 5f 6d 61 63 68 69  xists test_machi
6410: 6e 65 5d 20 3f 20 24 74 65 73 74 5f 6d 61 63 68  ne] ? $test_mach
6420: 69 6e 65 20 3a 20 22 22 7d 5d 5d 0d 0a 20 20 20  ine : ""}]]..   
6430: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d         } else {.
6440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a  .            #..
6450: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f              # NO
6460: 54 45 3a 20 53 6b 69 70 20 64 65 74 65 63 74 69  TE: Skip detecti
6470: 6f 6e 20 61 6e 64 20 75 73 65 20 74 68 65 20 66  on and use the f
6480: 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74 2e  allback default.
6490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d  ..            #.
64a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74  .            set
64b0: 20 74 65 73 74 5f 74 63 6c 73 68 20 74 63 6c 73   test_tclsh tcls
64c0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  h..          }..
64d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
64e0: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
64f0: 20 20 20 73 65 74 20 74 65 73 74 5f 74 63 6c 73     set test_tcls
6500: 68 20 24 62 69 6e 5f 66 69 6c 65 0d 0a 20 20 20  h $bin_file..   
6510: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d     }..    }..  }
6520: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
6530: 45 3a 20 57 68 65 6e 20 72 75 6e 6e 69 6e 67 20  E: When running 
6540: 69 6e 20 45 61 67 6c 65 2c 20 63 68 65 63 6b 20  in Eagle, check 
6550: 66 6f 72 20 61 6e 79 20 6e 6f 6e 2d 63 6f 72 65  for any non-core
6560: 20 70 6c 75 67 69 6e 73 20 6c 6f 61 64 65 64 20   plugins loaded 
6570: 69 6e 74 6f 0d 0a 20 20 23 20 20 20 20 20 20 20  into..  #       
6580: 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20  the interpreter 
6590: 61 6e 64 20 69 73 73 75 65 20 77 61 72 6e 69 6e  and issue warnin
65a0: 67 73 20 69 66 20 61 6e 79 20 61 72 65 20 66 6f  gs if any are fo
65b0: 75 6e 64 2e 20 20 54 68 65 20 77 61 72 6e 69 6e  und.  The warnin
65c0: 67 0d 0a 20 20 23 20 20 20 20 20 20 20 6d 61 79  g..  #       may
65d0: 20 62 65 20 75 73 65 64 20 74 6f 20 65 78 70 6c   be used to expl
65e0: 61 69 6e 20 73 75 62 73 65 71 75 65 6e 74 20 74  ain subsequent t
65f0: 65 73 74 20 66 61 69 6c 75 72 65 73 20 64 75 65  est failures due
6600: 20 74 6f 20 74 68 65 20 65 78 74 72 61 0d 0a 20   to the extra.. 
6610: 20 23 20 20 20 20 20 20 20 70 6c 75 67 69 6e 73   #       plugins
6620: 20 62 65 69 6e 67 20 6c 6f 61 64 65 64 20 28 69   being loaded (i
6630: 2e 65 2e 20 74 68 65 72 65 20 61 72 65 20 73 6f  .e. there are so
6640: 6d 65 20 74 65 73 74 73 20 61 72 65 20 73 65 6e  me tests are sen
6650: 73 69 74 69 76 65 20 74 6f 0d 0a 20 20 23 20 20  sitive to..  #  
6660: 20 20 20 20 20 68 61 76 69 6e 67 20 22 75 6e 65       having "une
6670: 78 70 65 63 74 65 64 22 20 70 6c 75 67 69 6e 73  xpected" plugins
6680: 20 6c 6f 61 64 65 64 29 2e 0d 0a 20 20 23 0d 0a   loaded)...  #..
6690: 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 20    if {[isEagle] 
66a0: 26 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e  && \..      ![in
66b0: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 61 72  fo exists no(war
66c0: 6e 69 6e 67 46 6f 72 50 6c 75 67 69 6e 29 5d 20  ningForPlugin)] 
66d0: 26 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 68 61  && \..      ![ha
66e0: 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 71 75 69  veConstraint qui
66f0: 65 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  et]} then {..   
6700: 20 66 6f 72 65 61 63 68 20 6c 6f 61 64 65 64 20   foreach loaded 
6710: 5b 69 6e 66 6f 20 6c 6f 61 64 65 64 5d 20 7b 0d  [info loaded] {.
6720: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
6730: 23 20 48 41 43 4b 3a 20 54 68 69 73 20 63 6f 64  # HACK: This cod
6740: 65 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 61  e assumes that a
6750: 6c 6c 20 70 6c 75 67 69 6e 73 20 69 6e 20 74 68  ll plugins in th
6760: 65 20 22 45 61 67 6c 65 2e 5f 50 6c 75 67 69 6e  e "Eagle._Plugin
6770: 73 22 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  s"..      #     
6780: 20 20 6e 61 6d 65 73 70 61 63 65 20 62 65 6c 6f    namespace belo
6790: 6e 67 20 74 6f 20 74 68 65 20 45 61 67 6c 65 20  ng to the Eagle 
67a0: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 69 74 73  core library its
67b0: 65 6c 66 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  elf...      #.. 
67c0: 20 20 20 20 20 69 66 20 7b 21 5b 73 74 72 69 6e       if {![strin
67d0: 67 20 6d 61 74 63 68 20 45 61 67 6c 65 2e 5f 50  g match Eagle._P
67e0: 6c 75 67 69 6e 73 2e 2a 20 5b 6c 69 6e 64 65 78  lugins.* [lindex
67f0: 20 24 6c 6f 61 64 65 64 20 31 5d 5d 7d 20 74 68   $loaded 1]]} th
6800: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 70  en {..        tp
6810: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
6820: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d  l [appendArgs \.
6830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 3d 3d  .            "==
6840: 3d 3d 20 57 41 52 4e 49 4e 47 3a 20 65 78 74 72  == WARNING: extr
6850: 61 20 70 6c 75 67 69 6e 20 66 6f 75 6e 64 3a 20  a plugin found: 
6860: 22 20 24 6c 6f 61 64 65 64 20 5c 6e 5d 0d 0a 20  " $loaded \n].. 
6870: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
6880: 0a 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  .    unset -noco
6890: 6d 70 6c 61 69 6e 20 6c 6f 61 64 65 64 0d 0a 20  mplain loaded.. 
68a0: 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
68b0: 4f 54 45 3a 20 53 68 6f 77 20 62 6f 74 68 20 74  OTE: Show both t
68c0: 68 65 20 70 72 65 2d 74 65 73 74 20 61 6e 64 20  he pre-test and 
68d0: 70 6f 73 74 2d 74 65 73 74 20 73 63 72 69 70 74  post-test script
68e0: 73 20 6e 6f 77 2c 20 70 72 69 6f 72 20 74 6f 20  s now, prior to 
68f0: 61 63 74 75 61 6c 6c 79 0d 0a 20 20 23 20 20 20  actually..  #   
6900: 20 20 20 20 65 76 61 6c 75 61 74 69 6e 67 20 65      evaluating e
6910: 69 74 68 65 72 20 6f 66 20 74 68 65 6d 20 28 65  ither of them (e
6920: 76 65 6e 20 69 66 20 74 68 65 69 72 20 75 73 65  ven if their use
6930: 20 68 61 73 20 62 65 65 6e 20 64 69 73 61 62 6c   has been disabl
6940: 65 64 29 2e 0d 0a 20 20 23 0d 0a 20 20 74 70 75  ed)...  #..  tpu
6950: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
6960: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
6970: 2d 2d 20 70 72 65 2d 74 65 73 74 20 73 63 72 69  -- pre-test scri
6980: 70 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  pt: " \..      [
6990: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
69a0: 74 73 20 74 65 73 74 5f 73 63 72 69 70 74 28 70  ts test_script(p
69b0: 72 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  re)] && \..     
69c0: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
69d0: 24 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65  $test_script(pre
69e0: 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20  )] > 0 ? \..    
69f0: 20 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22    [appendArgs \"
6a00: 20 24 74 65 73 74 5f 73 63 72 69 70 74 28 70 72   $test_script(pr
6a10: 65 29 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65 3e  e) \"] : "<none>
6a20: 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75  "}] \n]....  tpu
6a30: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
6a40: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
6a50: 2d 2d 20 70 6f 73 74 2d 74 65 73 74 20 73 63 72  -- post-test scr
6a60: 69 70 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ipt: " \..      
6a70: 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
6a80: 73 74 73 20 74 65 73 74 5f 73 63 72 69 70 74 28  sts test_script(
6a90: 70 6f 73 74 29 5d 20 26 26 20 5c 0d 0a 20 20 20  post)] && \..   
6aa0: 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74     [string lengt
6ab0: 68 20 24 74 65 73 74 5f 73 63 72 69 70 74 28 70  h $test_script(p
6ac0: 6f 73 74 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20  ost)] > 0 ? \.. 
6ad0: 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72 67 73       [appendArgs
6ae0: 20 5c 22 20 24 74 65 73 74 5f 73 63 72 69 70 74   \" $test_script
6af0: 28 70 6f 73 74 29 20 5c 22 5d 20 3a 20 22 3c 6e  (post) \"] : "<n
6b00: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
6b10: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68   #..  # NOTE: Sh
6b20: 6f 77 20 62 6f 74 68 20 74 68 65 20 70 72 65 2d  ow both the pre-
6b30: 74 65 73 74 20 61 6e 64 20 70 6f 73 74 2d 74 65  test and post-te
6b40: 73 74 20 77 61 69 74 73 20 6e 6f 77 2c 20 70 72  st waits now, pr
6b50: 69 6f 72 20 74 6f 20 61 63 74 75 61 6c 6c 79 0d  ior to actually.
6b60: 0a 20 20 23 20 20 20 20 20 20 20 75 73 69 6e 67  .  #       using
6b70: 20 65 69 74 68 65 72 20 6f 66 20 74 68 65 6d 20   either of them 
6b80: 28 65 76 65 6e 20 69 66 20 74 68 65 69 72 20 75  (even if their u
6b90: 73 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 61  se has been disa
6ba0: 62 6c 65 64 29 2e 0d 0a 20 20 23 0d 0a 20 20 74  bled)...  #..  t
6bb0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
6bc0: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
6bd0: 2d 2d 2d 2d 20 70 72 65 2d 74 65 73 74 20 77 61  ---- pre-test wa
6be0: 69 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  it: " \..      [
6bf0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
6c00: 74 73 20 74 65 73 74 5f 77 61 69 74 28 70 72 65  ts test_wait(pre
6c10: 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b  )] && \..      [
6c20: 73 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65  string is intege
6c30: 72 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f  r -strict $test_
6c40: 77 61 69 74 28 70 72 65 29 5d 20 3f 20 5c 0d 0a  wait(pre)] ? \..
6c50: 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72 67        [appendArg
6c60: 73 20 24 74 65 73 74 5f 77 61 69 74 28 70 72 65  s $test_wait(pre
6c70: 29 20 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73  ) " milliseconds
6c80: 22 5d 20 3a 20 5c 0d 0a 20 20 20 20 20 20 22 3c  "] : \..      "<
6c90: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
6ca0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
6cb0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
6cc0: 73 20 22 2d 2d 2d 2d 20 70 6f 73 74 2d 74 65 73  s "---- post-tes
6cd0: 74 20 77 61 69 74 3a 20 22 20 5c 0d 0a 20 20 20  t wait: " \..   
6ce0: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
6cf0: 65 78 69 73 74 73 20 74 65 73 74 5f 77 61 69 74  exists test_wait
6d00: 28 70 6f 73 74 29 5d 20 26 26 20 5c 0d 0a 20 20  (post)] && \..  
6d10: 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69      [string is i
6d20: 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24  nteger -strict $
6d30: 74 65 73 74 5f 77 61 69 74 28 70 6f 73 74 29 5d  test_wait(post)]
6d40: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 5b 61 70 70   ? \..      [app
6d50: 65 6e 64 41 72 67 73 20 24 74 65 73 74 5f 77 61  endArgs $test_wa
6d60: 69 74 28 70 6f 73 74 29 20 22 20 6d 69 6c 6c 69  it(post) " milli
6d70: 73 65 63 6f 6e 64 73 22 5d 20 3a 20 5c 0d 0a 20  seconds"] : \.. 
6d80: 20 20 20 20 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20       "<none>"}] 
6d90: 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20  \n]....  #..  # 
6da0: 4e 4f 54 45 3a 20 41 72 65 20 77 65 20 62 65 69  NOTE: Are we bei
6db0: 6e 67 20 70 72 65 76 65 6e 74 65 64 20 66 72 6f  ng prevented fro
6dc0: 6d 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65  m evaluating the
6dd0: 20 22 70 72 65 2d 74 65 73 74 22 20 73 63 72 69   "pre-test" scri
6de0: 70 74 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  pt?..  #..  if {
6df0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
6e00: 28 70 72 65 54 65 73 74 29 5d 7d 20 74 68 65 6e  (preTest)]} then
6e10: 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23   {..    #..    #
6e20: 20 4e 4f 54 45 3a 20 45 76 61 6c 75 61 74 65 20   NOTE: Evaluate 
6e30: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72  the specified pr
6e40: 65 2d 74 65 73 74 20 73 63 72 69 70 74 20 6e 6f  e-test script no
6e50: 77 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20  w, if any...    
6e60: 23 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f  #..    if {[info
6e70: 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 63 72   exists test_scr
6e80: 69 70 74 28 70 72 65 29 5d 20 26 26 20 5c 0d 0a  ipt(pre)] && \..
6e90: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
6ea0: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 73 63 72  length $test_scr
6eb0: 69 70 74 28 70 72 65 29 5d 20 3e 20 30 7d 20 74  ipt(pre)] > 0} t
6ec0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
6ed0: 20 20 20 20 20 20 23 20 54 4f 44 4f 3a 20 50 65        # TODO: Pe
6ee0: 72 68 61 70 73 20 75 73 65 20 5b 75 70 6c 65 76  rhaps use [uplev
6ef0: 65 6c 5d 20 68 65 72 65 20 69 6e 73 74 65 61 64  el] here instead
6f00: 20 6f 66 20 5b 65 76 61 6c 5d 2e 20 20 46 6f 72   of [eval].  For
6f10: 20 6e 6f 77 2c 20 69 74 20 64 6f 65 73 0d 0a 20   now, it does.. 
6f20: 20 20 20 20 20 23 20 20 20 20 20 20 20 6e 6f 74       #       not
6f30: 20 6d 61 74 74 65 72 20 73 69 6e 63 65 20 77 65   matter since we
6f40: 20 65 6e 66 6f 72 63 65 20 74 68 69 73 20 66 69   enforce this fi
6f50: 6c 65 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74  le being evaluat
6f60: 65 64 20 61 74 20 74 68 65 0d 0a 20 20 20 20 20  ed at the..     
6f70: 20 23 20 20 20 20 20 20 20 74 6f 70 2d 6c 65 76   #       top-lev
6f80: 65 6c 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  el...      #..  
6f90: 20 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20 24      if {[catch $
6fa0: 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65 29  test_script(pre)
6fb0: 20 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65   test_script(pre
6fc0: 2c 72 65 73 75 6c 74 29 5d 7d 20 74 68 65 6e 20  ,result)]} then 
6fd0: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
6fe0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4d 61        # NOTE: Ma
6ff0: 6b 65 20 31 30 30 25 20 73 75 72 65 2c 20 65 76  ke 100% sure, ev
7000: 65 6e 20 69 6e 20 22 71 75 69 65 74 22 20 6d 6f  en in "quiet" mo
7010: 64 65 2c 20 74 68 61 74 20 74 68 69 73 20 73 63  de, that this sc
7020: 72 69 70 74 20 65 72 72 6f 72 0d 0a 20 20 20 20  ript error..    
7030: 20 20 20 20 23 20 20 20 20 20 20 20 67 65 74 73      #       gets
7040: 20 69 6e 74 6f 20 74 68 65 20 74 65 73 74 20 6c   into the test l
7050: 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  og file...      
7060: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 74 70 75    #..        tpu
7070: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
7080: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
7090: 2d 2d 20 70 72 65 2d 74 65 73 74 20 73 63 72 69  -- pre-test scri
70a0: 70 74 20 65 72 72 6f 72 3a 20 22 20 5c 0d 0a 20  pt error: " \.. 
70b0: 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
70c0: 5f 73 63 72 69 70 74 28 70 72 65 2c 72 65 73 75  _script(pre,resu
70d0: 6c 74 29 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 20  lt) \n]....     
70e0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
70f0: 4e 4f 54 45 3a 20 54 68 65 20 70 72 65 2d 74 65  NOTE: The pre-te
7100: 73 74 20 73 63 72 69 70 74 20 66 61 69 6c 65 64  st script failed
7110: 20 69 6e 20 73 6f 6d 65 20 77 61 79 2e 20 20 54   in some way.  T
7120: 68 69 73 20 69 73 20 63 6f 6e 73 69 64 65 72 65  his is considere
7130: 64 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  d..        #    
7140: 20 20 20 74 6f 20 62 65 20 61 6e 20 6f 76 65 72     to be an over
7150: 61 6c 6c 20 66 61 69 6c 75 72 65 20 6f 66 20 74  all failure of t
7160: 68 65 20 74 65 73 74 20 73 75 69 74 65 3b 20 74  he test suite; t
7170: 68 65 72 65 66 6f 72 65 2c 20 72 61 69 73 65 0d  herefore, raise.
7180: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
7190: 20 74 68 65 20 65 72 72 6f 72 20 6e 6f 77 20 74   the error now t
71a0: 68 61 74 20 77 65 20 61 72 65 20 73 75 72 65 20  hat we are sure 
71b0: 69 74 20 68 61 73 20 62 65 65 6e 20 72 65 63 6f  it has been reco
71c0: 72 64 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20  rded in the..   
71d0: 20 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73       #       tes
71e0: 74 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20  t log file...   
71f0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
7200: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
7210: 6e 20 74 65 73 74 5f 73 75 69 74 65 5f 72 75 6e  n test_suite_run
7220: 6e 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 65 72  ning..        er
7230: 72 6f 72 20 24 74 65 73 74 5f 73 63 72 69 70 74  ror $test_script
7240: 28 70 72 65 2c 72 65 73 75 6c 74 29 0d 0a 20 20  (pre,result)..  
7250: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20      }..    }..  
7260: 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
7270: 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  TE: Check for an
7280: 64 20 70 72 6f 63 65 73 73 20 61 6e 79 20 63 75  d process any cu
7290: 73 74 6f 6d 20 74 65 73 74 20 70 72 6f 6c 6f 67  stom test prolog
72a0: 75 65 20 73 63 72 69 70 74 20 74 68 61 74 20 6d  ue script that m
72b0: 61 79 20 62 65 20 73 65 74 0d 0a 20 20 23 20 20  ay be set..  #  
72c0: 20 20 20 20 20 69 6e 20 74 68 65 20 65 6e 76 69       in the envi
72d0: 72 6f 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 6d  ronment.  This m
72e0: 75 73 74 20 62 65 20 64 6f 6e 65 20 61 66 74 65  ust be done afte
72f0: 72 20 74 68 65 20 45 61 67 6c 65 20 74 65 73 74  r the Eagle test
7300: 20 70 61 63 6b 61 67 65 0d 0a 20 20 23 20 20 20   package..  #   
7310: 20 20 20 20 68 61 73 20 62 65 65 6e 20 6d 61 64      has been mad
7320: 65 20 61 76 61 69 6c 61 62 6c 65 20 61 6e 64 20  e available and 
7330: 61 66 74 65 72 20 74 68 65 20 6c 6f 67 20 66 69  after the log fi
7340: 6c 65 20 68 61 73 20 62 65 65 6e 20 73 65 74 75  le has been setu
7350: 70 2e 0d 0a 20 20 23 0d 0a 20 20 73 6f 75 72 63  p...  #..  sourc
7360: 65 49 66 56 61 6c 69 64 20 70 72 6f 6c 6f 67 75  eIfValid prologu
7370: 65 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  e [getEnvironmen
7380: 74 56 61 72 69 61 62 6c 65 20 74 65 73 74 50 72  tVariable testPr
7390: 6f 6c 6f 67 75 65 5d 0d 0a 0d 0a 20 20 23 0d 0a  ologue]....  #..
73a0: 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74    # NOTE: Show t
73b0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65  he name of the e
73c0: 78 65 63 75 74 61 62 6c 65 20 61 6e 64 20 74 68  xecutable and th
73d0: 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61  e command line a
73e0: 72 67 75 6d 65 6e 74 73 2c 20 69 66 0d 0a 20 20  rguments, if..  
73f0: 23 20 20 20 20 20 20 20 61 6e 79 2e 20 20 54 68  #       any.  Th
7400: 69 73 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20  is must be done 
7410: 61 66 74 65 72 20 74 68 65 20 6c 6f 67 20 66 69  after the log fi
7420: 6c 65 20 68 61 73 20 62 65 65 6e 20 73 65 74 75  le has been setu
7430: 70 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20  p; otherwise,.. 
7440: 20 23 20 20 20 20 20 20 20 74 68 69 73 20 69 6e   #       this in
7450: 66 6f 72 6d 61 74 69 6f 6e 20 77 69 6c 6c 20 6e  formation will n
7460: 6f 74 20 62 65 20 76 69 73 69 62 6c 65 20 69 6e  ot be visible in
7470: 20 74 68 65 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a   the log file...
7480: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
7490: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 72 75  o exists test_ru
74a0: 6e 5f 69 64 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  n_id]} then {.. 
74b0: 20 20 20 73 65 74 20 74 65 73 74 5f 72 75 6e 5f     set test_run_
74c0: 69 64 20 5b 67 65 74 4e 65 77 54 65 73 74 52 75  id [getNewTestRu
74d0: 6e 49 64 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 74  nId]..  }....  t
74e0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
74f0: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7500: 2d 2d 2d 2d 20 74 65 73 74 52 75 6e 49 64 3a 20  ---- testRunId: 
7510: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72  " \..      [expr
7520: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
7530: 65 73 74 5f 72 75 6e 5f 69 64 5d 20 3f 20 5c 0d  est_run_id] ? \.
7540: 0a 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74  .          $test
7550: 5f 72 75 6e 5f 69 64 20 3a 20 22 3c 6e 6f 6e 65  _run_id : "<none
7560: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  >"}] \n]....  tp
7570: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
7580: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
7590: 2d 2d 2d 20 70 72 6f 63 65 73 73 49 64 3a 20 22  --- processId: "
75a0: 20 5c 0d 0a 20 20 20 20 20 20 5b 70 69 64 5d 20   \..      [pid] 
75b0: 5c 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20 70 70 69  \n]....  set ppi
75c0: 64 28 30 29 20 5b 63 61 74 63 68 20 7b 69 6e 66  d(0) [catch {inf
75d0: 6f 20 70 70 69 64 7d 20 70 70 69 64 28 31 29 5d  o ppid} ppid(1)]
75e0: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
75f0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
7600: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 70 61 72 65  dArgs "---- pare
7610: 6e 74 50 72 6f 63 65 73 73 49 64 3a 20 22 20 5c  ntProcessId: " \
7620: 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24  ..      [expr {$
7630: 70 70 69 64 28 30 29 20 3d 3d 20 30 20 3f 20 5c  ppid(0) == 0 ? \
7640: 0d 0a 20 20 20 20 20 20 20 20 20 20 24 70 70 69  ..          $ppi
7650: 64 28 31 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d  d(1) : "<none>"}
7660: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 75 6e 73 65 74  ] \n]....  unset
7670: 20 70 70 69 64 0d 0a 0d 0a 20 20 74 70 75 74 73   ppid....  tputs
7680: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
7690: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
76a0: 20 74 65 73 74 20 73 75 69 74 65 3a 20 22 20 5c   test suite: " \
76b0: 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b  ..      [expr {[
76c0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
76d0: 5f 73 75 69 74 65 5d 20 3f 20 5c 0d 0a 20 20 20  _suite] ? \..   
76e0: 20 20 20 20 20 20 20 24 74 65 73 74 5f 73 75 69         $test_sui
76f0: 74 65 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  te : "<none>"}] 
7700: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
7710: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
7720: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74  pendArgs "---- t
7730: 65 73 74 20 63 68 61 6e 6e 65 6c 3a 20 22 20 5c  est channel: " \
7740: 0d 0a 20 20 20 20 20 20 24 74 65 73 74 5f 63 68  ..      $test_ch
7750: 61 6e 6e 65 6c 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  annel \n]....  t
7760: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
7770: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7780: 2d 2d 2d 2d 20 74 65 73 74 20 6d 61 63 68 69 6e  ---- test machin
7790: 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  e: " \..      [e
77a0: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
77b0: 73 20 74 65 73 74 5f 6d 61 63 68 69 6e 65 5d 20  s test_machine] 
77c0: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24  ? \..          $
77d0: 74 65 73 74 5f 6d 61 63 68 69 6e 65 20 3a 20 22  test_machine : "
77e0: 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d  <none>"}] \n]...
77f0: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
7800: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
7810: 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 70 6c  gs "---- test pl
7820: 61 74 66 6f 72 6d 3a 20 22 20 5c 0d 0a 20 20 20  atform: " \..   
7830: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
7840: 65 78 69 73 74 73 20 74 65 73 74 5f 70 6c 61 74  exists test_plat
7850: 66 6f 72 6d 5d 20 3f 20 5c 0d 0a 20 20 20 20 20  form] ? \..     
7860: 20 20 20 20 20 24 74 65 73 74 5f 70 6c 61 74 66       $test_platf
7870: 6f 72 6d 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d  orm : "<none>"}]
7880: 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20   \n]....  tputs 
7890: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
78a0: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
78b0: 74 65 73 74 20 63 6f 6e 66 69 67 75 72 61 74 69  test configurati
78c0: 6f 6e 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  on: " \..      [
78d0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
78e0: 74 73 20 74 65 73 74 5f 63 6f 6e 66 69 67 75 72  ts test_configur
78f0: 61 74 69 6f 6e 5d 20 3f 20 5c 0d 0a 20 20 20 20  ation] ? \..    
7900: 20 20 20 20 20 20 24 74 65 73 74 5f 63 6f 6e 66        $test_conf
7910: 69 67 75 72 61 74 69 6f 6e 20 3a 20 22 3c 6e 6f  iguration : "<no
7920: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
7930: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
7940: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
7950: 22 2d 2d 2d 2d 20 74 65 73 74 20 6e 61 6d 65 20  "---- test name 
7960: 70 72 65 66 69 78 3a 20 22 20 5c 0d 0a 20 20 20  prefix: " \..   
7970: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
7980: 65 78 69 73 74 73 20 74 65 73 74 5f 6e 61 6d 65  exists test_name
7990: 5f 70 72 65 66 69 78 5d 20 3f 20 5c 0d 0a 20 20  _prefix] ? \..  
79a0: 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 6e 61          $test_na
79b0: 6d 65 5f 70 72 65 66 69 78 20 3a 20 22 3c 6e 6f  me_prefix : "<no
79c0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
79d0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
79e0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
79f0: 22 2d 2d 2d 2d 20 74 65 73 74 20 73 75 66 66 69  "---- test suffi
7a00: 78 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  x: " \..      [e
7a10: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
7a20: 73 20 74 65 73 74 5f 73 75 66 66 69 78 5d 20 3f  s test_suffix] ?
7a30: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74   \..          $t
7a40: 65 73 74 5f 73 75 66 66 69 78 20 3a 20 22 3c 6e  est_suffix : "<n
7a50: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
7a60: 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20   if {[isEagle]} 
7a70: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70 75 74  then {..    tput
7a80: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
7a90: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
7aa0: 2d 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61  - original comma
7ab0: 6e 64 20 6c 69 6e 65 3a 20 22 20 5c 0d 0a 20 20  nd line: " \..  
7ac0: 20 20 20 20 20 20 5b 69 6e 66 6f 20 63 6d 64 6c        [info cmdl
7ad0: 69 6e 65 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20  ine] \n]....    
7ae0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
7af0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
7b00: 22 2d 2d 2d 2d 20 74 68 72 65 61 64 49 64 3a 20  "---- threadId: 
7b10: 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 69 6e  " \..        [in
7b20: 66 6f 20 74 69 64 5d 20 5c 6e 5d 0d 0a 0d 0a 20  fo tid] \n].... 
7b30: 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
7b40: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
7b50: 67 73 20 22 2d 2d 2d 2d 20 70 72 6f 63 65 73 73  gs "---- process
7b60: 6f 72 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ors: " \..      
7b70: 20 20 5b 69 6e 66 6f 20 70 72 6f 63 65 73 73 6f    [info processo
7b80: 72 73 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 69  rs] \n]....    i
7b90: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66  f {[llength [inf
7ba0: 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63  o commands objec
7bb0: 74 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d  t]] > 0} then {.
7bc0: 0a 20 20 20 20 20 20 73 65 74 20 65 6e 63 6f 64  .      set encod
7bd0: 69 6e 67 28 30 29 20 5b 63 61 74 63 68 20 7b 0d  ing(0) [catch {.
7be0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
7bf0: 69 6e 76 6f 6b 65 20 43 6f 6e 73 6f 6c 65 2e 49  invoke Console.I
7c00: 6e 70 75 74 45 6e 63 6f 64 69 6e 67 20 57 65 62  nputEncoding Web
7c10: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 7d 20 65 6e  Name..      } en
7c20: 63 6f 64 69 6e 67 28 31 29 5d 0d 0a 20 20 20 20  coding(1)]..    
7c30: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
7c40: 73 65 74 20 65 6e 63 6f 64 69 6e 67 28 30 29 20  set encoding(0) 
7c50: 30 3b 20 73 65 74 20 65 6e 63 6f 64 69 6e 67 28  0; set encoding(
7c60: 31 29 20 75 6e 61 76 61 69 6c 61 62 6c 65 0d 0a  1) unavailable..
7c70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75      }....    tpu
7c80: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
7c90: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
7ca0: 2d 2d 20 69 6e 70 75 74 20 65 6e 63 6f 64 69 6e  -- input encodin
7cb0: 67 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20  g: " \..        
7cc0: 5b 65 78 70 72 20 7b 24 65 6e 63 6f 64 69 6e 67  [expr {$encoding
7cd0: 28 30 29 20 3d 3d 20 30 20 3f 20 24 65 6e 63 6f  (0) == 0 ? $enco
7ce0: 64 69 6e 67 28 31 29 20 3a 20 22 3c 6e 6f 6e 65  ding(1) : "<none
7cf0: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20  >"}] \n]....    
7d00: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e  if {[llength [in
7d10: 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65  fo commands obje
7d20: 63 74 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b  ct]] > 0} then {
7d30: 0d 0a 20 20 20 20 20 20 73 65 74 20 65 6e 63 6f  ..      set enco
7d40: 64 69 6e 67 28 30 29 20 5b 63 61 74 63 68 20 7b  ding(0) [catch {
7d50: 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74  ..        object
7d60: 20 69 6e 76 6f 6b 65 20 43 6f 6e 73 6f 6c 65 2e   invoke Console.
7d70: 4f 75 74 70 75 74 45 6e 63 6f 64 69 6e 67 20 57  OutputEncoding W
7d80: 65 62 4e 61 6d 65 0d 0a 20 20 20 20 20 20 7d 20  ebName..      } 
7d90: 65 6e 63 6f 64 69 6e 67 28 31 29 5d 0d 0a 20 20  encoding(1)]..  
7da0: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
7db0: 20 20 73 65 74 20 65 6e 63 6f 64 69 6e 67 28 30    set encoding(0
7dc0: 29 20 30 3b 20 73 65 74 20 65 6e 63 6f 64 69 6e  ) 0; set encodin
7dd0: 67 28 31 29 20 75 6e 61 76 61 69 6c 61 62 6c 65  g(1) unavailable
7de0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74  ..    }....    t
7df0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
7e00: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7e10: 2d 2d 2d 2d 20 6f 75 74 70 75 74 20 65 6e 63 6f  ---- output enco
7e20: 64 69 6e 67 3a 20 22 20 5c 0d 0a 20 20 20 20 20  ding: " \..     
7e30: 20 20 20 5b 65 78 70 72 20 7b 24 65 6e 63 6f 64     [expr {$encod
7e40: 69 6e 67 28 30 29 20 3d 3d 20 30 20 3f 20 24 65  ing(0) == 0 ? $e
7e50: 6e 63 6f 64 69 6e 67 28 31 29 20 3a 20 22 3c 6e  ncoding(1) : "<n
7e60: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
7e70: 20 20 20 75 6e 73 65 74 20 65 6e 63 6f 64 69 6e     unset encodin
7e80: 67 0d 0a 20 20 20 20 73 65 74 20 68 6f 73 74 28  g..    set host(
7e90: 30 29 20 5b 63 61 74 63 68 20 7b 68 6f 73 74 20  0) [catch {host 
7ea0: 71 75 65 72 79 7d 20 68 6f 73 74 28 31 29 5d 0d  query} host(1)].
7eb0: 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
7ec0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
7ed0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 68 6f 73  ndArgs "---- hos
7ee0: 74 20 71 75 65 72 79 3a 20 22 20 5c 0d 0a 20 20  t query: " \..  
7ef0: 20 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73        [formatLis
7f00: 74 41 73 44 69 63 74 20 5b 65 78 70 72 20 7b 24  tAsDict [expr {$
7f10: 68 6f 73 74 28 30 29 20 3d 3d 20 30 20 3f 20 24  host(0) == 0 ? $
7f20: 68 6f 73 74 28 31 29 20 3a 20 22 22 7d 5d 20 5c  host(1) : ""}] \
7f30: 0d 0a 20 20 20 20 20 20 20 20 3c 6e 6f 6e 65 3e  ..        <none>
7f40: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73  ] \n]....    uns
7f50: 65 74 20 68 6f 73 74 0d 0a 20 20 20 20 73 65 74  et host..    set
7f60: 20 6d 65 6d 6f 72 79 28 30 29 20 5b 63 61 74 63   memory(0) [catc
7f70: 68 20 7b 64 65 62 75 67 20 6d 65 6d 6f 72 79 7d  h {debug memory}
7f80: 20 6d 65 6d 6f 72 79 28 31 29 5d 0d 0a 0d 0a 20   memory(1)].... 
7f90: 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
7fa0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
7fb0: 67 73 20 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e  gs "---- startin
7fc0: 67 20 6d 65 6d 6f 72 79 3a 20 22 20 5c 0d 0a 20  g memory: " \.. 
7fd0: 20 20 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69         [formatLi
7fe0: 73 74 41 73 44 69 63 74 20 5b 65 78 70 72 20 7b  stAsDict [expr {
7ff0: 24 6d 65 6d 6f 72 79 28 30 29 20 3d 3d 20 30 20  $memory(0) == 0 
8000: 3f 20 24 6d 65 6d 6f 72 79 28 31 29 20 3a 20 22  ? $memory(1) : "
8010: 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 3c  "}] \..        <
8020: 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  none>] \n]....  
8030: 20 20 75 6e 73 65 74 20 6d 65 6d 6f 72 79 0d 0a    unset memory..
8040: 20 20 20 20 73 65 74 20 73 74 61 63 6b 28 30 29      set stack(0)
8050: 20 5b 63 61 74 63 68 20 7b 64 65 62 75 67 20 73   [catch {debug s
8060: 74 61 63 6b 20 74 72 75 65 7d 20 73 74 61 63 6b  tack true} stack
8070: 28 31 29 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74  (1)]....    tput
8080: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
8090: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
80a0: 2d 20 73 74 61 72 74 69 6e 67 20 73 74 61 63 6b  - starting stack
80b0: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  : " \..        [
80c0: 66 6f 72 6d 61 74 4c 69 73 74 41 73 44 69 63 74  formatListAsDict
80d0: 20 5b 65 78 70 72 20 7b 24 73 74 61 63 6b 28 30   [expr {$stack(0
80e0: 29 20 3d 3d 20 30 20 3f 20 24 73 74 61 63 6b 28  ) == 0 ? $stack(
80f0: 31 29 20 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20  1) : ""}] \..   
8100: 20 20 20 20 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d       <none>] \n]
8110: 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 73 74  ....    unset st
8120: 61 63 6b 0d 0a 20 20 20 20 73 65 74 20 64 72 69  ack..    set dri
8130: 76 65 28 30 29 20 5b 63 61 74 63 68 20 7b 66 69  ve(0) [catch {fi
8140: 6c 65 20 64 72 69 76 65 7d 20 64 72 69 76 65 28  le drive} drive(
8150: 31 29 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73  1)]....    tputs
8160: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
8170: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
8180: 20 73 79 73 74 65 6d 20 64 72 69 76 65 3a 20 22   system drive: "
8190: 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66 6f 72   \..        [for
81a0: 6d 61 74 4c 69 73 74 41 73 44 69 63 74 20 5b 65  matListAsDict [e
81b0: 78 70 72 20 7b 24 64 72 69 76 65 28 30 29 20 3d  xpr {$drive(0) =
81c0: 3d 20 30 20 3f 20 24 64 72 69 76 65 28 31 29 20  = 0 ? $drive(1) 
81d0: 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20  : ""}] \..      
81e0: 20 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d    <none>] \n]...
81f0: 0a 20 20 20 20 75 6e 73 65 74 20 64 72 69 76 65  .    unset drive
8200: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 74 70 75 74 73  ..  }....  tputs
8210: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
8220: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
8230: 20 65 78 65 63 75 74 61 62 6c 65 3a 20 5c 22 22   executable: \""
8240: 20 5c 0d 0a 20 20 20 20 20 20 24 62 69 6e 5f 66   \..      $bin_f
8250: 69 6c 65 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74  ile \"\n]....  t
8260: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8270: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
8280: 2d 2d 2d 2d 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  ---- command lin
8290: 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  e: " \..      [e
82a0: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
82b0: 73 20 61 72 67 76 5d 20 26 26 20 5b 73 74 72 69  s argv] && [stri
82c0: 6e 67 20 6c 65 6e 67 74 68 20 24 61 72 67 76 5d  ng length $argv]
82d0: 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20   > 0 ? \..      
82e0: 20 20 20 20 24 61 72 67 76 20 3a 20 22 3c 6e 6f      $argv : "<no
82f0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
8300: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
8310: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
8320: 22 2d 2d 2d 2d 20 75 6e 72 65 63 6f 67 6e 69 7a  "---- unrecogniz
8330: 65 64 20 61 72 67 75 6d 65 6e 74 73 3a 20 22 20  ed arguments: " 
8340: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
8350: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
8360: 74 5f 66 6c 61 67 73 28 2d 62 61 64 29 5d 20 26  t_flags(-bad)] &
8370: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b  & \..          [
8380: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74  string length $t
8390: 65 73 74 5f 66 6c 61 67 73 28 2d 62 61 64 29 5d  est_flags(-bad)]
83a0: 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20   > 0 ? \..      
83b0: 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c          $test_fl
83c0: 61 67 73 28 2d 62 61 64 29 20 3a 20 22 3c 6e 6f  ags(-bad) : "<no
83d0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
83e0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
83f0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
8400: 22 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 70 61  "---- logging pa
8410: 74 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  th: " \..      [
8420: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
8430: 74 73 20 74 65 73 74 5f 6c 6f 67 5f 70 61 74 68  ts test_log_path
8440: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
8450: 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68    [string length
8460: 20 24 74 65 73 74 5f 6c 6f 67 5f 70 61 74 68 5d   $test_log_path]
8470: 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20   > 0 ? \..      
8480: 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41          [appendA
8490: 72 67 73 20 5c 22 20 24 74 65 73 74 5f 6c 6f 67  rgs \" $test_log
84a0: 5f 70 61 74 68 20 5c 22 5d 20 3a 20 22 3c 6e 6f  _path \"] : "<no
84b0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
84c0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
84d0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
84e0: 22 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 69 64  "---- logging id
84f0: 65 6e 74 69 66 69 65 72 3a 20 22 20 5c 0d 0a 20  entifier: " \.. 
8500: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
8510: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 6c 6f  o exists test_lo
8520: 67 5f 69 64 5d 20 26 26 20 5c 0d 0a 20 20 20 20  g_id] && \..    
8530: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65        [string le
8540: 6e 67 74 68 20 24 74 65 73 74 5f 6c 6f 67 5f 69  ngth $test_log_i
8550: 64 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20  d] > 0 ? \..    
8560: 20 20 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e            [appen
8570: 64 41 72 67 73 20 5c 22 20 24 74 65 73 74 5f 6c  dArgs \" $test_l
8580: 6f 67 5f 69 64 20 5c 22 5d 20 3a 20 22 3c 6e 6f  og_id \"] : "<no
8590: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
85a0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
85b0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
85c0: 22 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 74 6f  "---- logging to
85d0: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
85e0: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
85f0: 20 74 65 73 74 5f 6c 6f 67 5d 20 26 26 20 5b 73   test_log] && [s
8600: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65  tring length $te
8610: 73 74 5f 6c 6f 67 5d 20 3e 20 30 20 3f 20 5c 0d  st_log] > 0 ? \.
8620: 0a 20 20 20 20 20 20 20 20 20 20 5b 61 70 70 65  .          [appe
8630: 6e 64 41 72 67 73 20 5c 22 20 24 74 65 73 74 5f  ndArgs \" $test_
8640: 6c 6f 67 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65  log \"] : "<none
8650: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  >"}] \n]....  tp
8660: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
8670: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
8680: 2d 2d 2d 20 70 61 73 73 20 74 68 72 65 73 68 6f  --- pass thresho
8690: 6c 64 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  ld: " \..      [
86a0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
86b0: 74 73 20 74 65 73 74 5f 74 68 72 65 73 68 6f 6c  ts test_threshol
86c0: 64 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  d] && \..       
86d0: 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69 6e     [string is in
86e0: 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 74  teger -strict $t
86f0: 65 73 74 5f 74 68 72 65 73 68 6f 6c 64 5d 20 3f  est_threshold] ?
8700: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
8710: 20 20 5b 61 70 70 65 6e 64 41 72 67 73 20 24 74    [appendArgs $t
8720: 65 73 74 5f 74 68 72 65 73 68 6f 6c 64 20 25 5d  est_threshold %]
8730: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
8740: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
8750: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
8760: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 72 61 6e  ndArgs "---- ran
8770: 64 6f 6d 20 6f 72 64 65 72 3a 20 22 20 5c 0d 0a  dom order: " \..
8780: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
8790: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 72  fo exists test_r
87a0: 61 6e 64 6f 6d 5f 6f 72 64 65 72 5d 20 26 26 20  andom_order] && 
87b0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74  \..          [st
87c0: 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20  ring is boolean 
87d0: 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 72 61  -strict $test_ra
87e0: 6e 64 6f 6d 5f 6f 72 64 65 72 5d 20 3f 20 5c 0d  ndom_order] ? \.
87f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24  .              $
8800: 74 65 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64 65  test_random_orde
8810: 72 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  r : "<none>"}] \
8820: 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74  n]....  tputs $t
8830: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
8840: 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 75 6e  endArgs "---- un
8850: 63 6f 75 6e 74 65 64 20 6c 65 61 6b 73 3a 20 22  counted leaks: "
8860: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
8870: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
8880: 73 74 5f 75 6e 63 6f 75 6e 74 65 64 5f 6c 65 61  st_uncounted_lea
8890: 6b 73 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  ks] && \..      
88a0: 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67      [string leng
88b0: 74 68 20 24 74 65 73 74 5f 75 6e 63 6f 75 6e 74  th $test_uncount
88c0: 65 64 5f 6c 65 61 6b 73 5d 20 3e 20 30 20 3f 20  ed_leaks] > 0 ? 
88d0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
88e0: 20 24 74 65 73 74 5f 75 6e 63 6f 75 6e 74 65 64   $test_uncounted
88f0: 5f 6c 65 61 6b 73 20 3a 20 22 3c 6e 6f 6e 65 3e  _leaks : "<none>
8900: 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75  "}] \n]....  tpu
8910: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
8920: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
8930: 2d 2d 20 62 72 65 61 6b 20 6f 6e 20 6c 65 61 6b  -- break on leak
8940: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
8950: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
8960: 20 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c   test_break_on_l
8970: 65 61 6b 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  eak] && \..     
8980: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20       [string is 
8990: 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20  boolean -strict 
89a0: 24 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c  $test_break_on_l
89b0: 65 61 6b 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20  eak] ? \..      
89c0: 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 62 72          $test_br
89d0: 65 61 6b 5f 6f 6e 5f 6c 65 61 6b 20 3a 20 22 3c  eak_on_leak : "<
89e0: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
89f0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
8a00: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
8a10: 73 20 22 2d 2d 2d 2d 20 73 74 6f 70 20 6f 6e 20  s "---- stop on 
8a20: 66 61 69 6c 75 72 65 3a 20 22 20 5c 0d 0a 20 20  failure: " \..  
8a30: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
8a40: 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 74 6f   exists test_sto
8a50: 70 5f 6f 6e 5f 66 61 69 6c 75 72 65 5d 20 26 26  p_on_failure] &&
8a60: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73   \..          [s
8a70: 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e  tring is boolean
8a80: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 73   -strict $test_s
8a90: 74 6f 70 5f 6f 6e 5f 66 61 69 6c 75 72 65 5d 20  top_on_failure] 
8aa0: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ? \..           
8ab0: 20 20 20 24 74 65 73 74 5f 73 74 6f 70 5f 6f 6e     $test_stop_on
8ac0: 5f 66 61 69 6c 75 72 65 20 3a 20 22 3c 6e 6f 6e  _failure : "<non
8ad0: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
8ae0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8af0: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
8b00: 2d 2d 2d 2d 20 73 74 6f 70 20 6f 6e 20 6c 65 61  ---- stop on lea
8b10: 6b 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  k: " \..      [e
8b20: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
8b30: 73 20 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 6c  s test_stop_on_l
8b40: 65 61 6b 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  eak] && \..     
8b50: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20       [string is 
8b60: 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20  boolean -strict 
8b70: 24 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 6c 65  $test_stop_on_le
8b80: 61 6b 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  ak] ? \..       
8b90: 20 20 20 20 20 20 20 24 74 65 73 74 5f 73 74 6f         $test_sto
8ba0: 70 5f 6f 6e 5f 6c 65 61 6b 20 3a 20 22 3c 6e 6f  p_on_leak : "<no
8bb0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
8bc0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
8bd0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
8be0: 22 2d 2d 2d 2d 20 65 78 69 74 20 6f 6e 20 63 6f  "---- exit on co
8bf0: 6d 70 6c 65 74 65 3a 20 22 20 5c 0d 0a 20 20 20  mplete: " \..   
8c00: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
8c10: 65 78 69 73 74 73 20 74 65 73 74 5f 65 78 69 74  exists test_exit
8c20: 5f 6f 6e 5f 63 6f 6d 70 6c 65 74 65 5d 20 26 26  _on_complete] &&
8c30: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73   \..          [s
8c40: 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e  tring is boolean
8c50: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 65   -strict $test_e
8c60: 78 69 74 5f 6f 6e 5f 63 6f 6d 70 6c 65 74 65 5d  xit_on_complete]
8c70: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
8c80: 20 20 20 20 24 74 65 73 74 5f 65 78 69 74 5f 6f      $test_exit_o
8c90: 6e 5f 63 6f 6d 70 6c 65 74 65 20 3a 20 22 3c 6e  n_complete : "<n
8ca0: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
8cb0: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68   #..  # NOTE: Sh
8cc0: 6f 77 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69  ow the informati
8cd0: 6f 6e 20 61 62 6f 75 74 20 77 68 69 63 68 20 74  on about which t
8ce0: 65 73 74 73 20 61 6e 64 20 66 69 6c 65 73 20 61  ests and files a
8cf0: 72 65 20 62 65 69 6e 67 20 72 75 6e 0d 0a 20 20  re being run..  
8d00: 23 20 20 20 20 20 20 20 61 6e 64 2f 6f 72 20 73  #       and/or s
8d10: 6b 69 70 70 65 64 20 28 43 4f 4d 50 41 54 3a 20  kipped (COMPAT: 
8d20: 54 63 6c 29 2e 0d 0a 20 20 23 0d 0a 20 20 74 70  Tcl)...  #..  tp
8d30: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
8d40: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
8d50: 2d 2d 2d 20 72 75 6e 6e 69 6e 67 20 74 65 73 74  --- running test
8d60: 20 66 69 6c 65 73 20 74 68 61 74 20 6d 61 74 63   files that matc
8d70: 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  h: " \..      [e
8d80: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
8d90: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 66 69  s test_flags(-fi
8da0: 6c 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  le)] && \..     
8db0: 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74       [llength $t
8dc0: 65 73 74 5f 66 6c 61 67 73 28 2d 66 69 6c 65 29  est_flags(-file)
8dd0: 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20  ] > 0 ? \..     
8de0: 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 66           $test_f
8df0: 6c 61 67 73 28 2d 66 69 6c 65 29 20 3a 20 22 3c  lags(-file) : "<
8e00: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
8e10: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
8e20: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
8e30: 73 20 22 2d 2d 2d 2d 20 73 6b 69 70 70 69 6e 67  s "---- skipping
8e40: 20 74 65 73 74 20 66 69 6c 65 73 20 74 68 61 74   test files that
8e50: 20 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20   match: " \..   
8e60: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
8e70: 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67  exists test_flag
8e80: 73 28 2d 6e 6f 74 46 69 6c 65 29 5d 20 26 26 20  s(-notFile)] && 
8e90: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c  \..          [ll
8ea0: 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67  ength $test_flag
8eb0: 73 28 2d 6e 6f 74 46 69 6c 65 29 5d 20 3e 20 30  s(-notFile)] > 0
8ec0: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
8ed0: 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28      $test_flags(
8ee0: 2d 6e 6f 74 46 69 6c 65 29 20 3a 20 22 3c 6e 6f  -notFile) : "<no
8ef0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
8f00: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
8f10: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
8f20: 5c 0d 0a 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73  \..      "---- s
8f30: 74 61 72 74 69 6e 67 20 77 69 74 68 20 74 65 73  tarting with tes
8f40: 74 20 66 69 6c 65 73 20 74 68 61 74 20 6d 61 74  t files that mat
8f50: 63 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  ch: " \..      [
8f60: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
8f70: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73  ts test_flags(-s
8f80: 74 61 72 74 46 69 6c 65 29 5d 20 26 26 20 5c 0d  tartFile)] && \.
8f90: 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65 6e  .          [llen
8fa0: 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28  gth $test_flags(
8fb0: 2d 73 74 61 72 74 46 69 6c 65 29 5d 20 3e 20 30  -startFile)] > 0
8fc0: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
8fd0: 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28      $test_flags(
8fe0: 2d 73 74 61 72 74 46 69 6c 65 29 20 3a 20 22 3c  -startFile) : "<
8ff0: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
9000: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9010: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9020: 73 20 5c 0d 0a 20 20 20 20 20 20 22 2d 2d 2d 2d  s \..      "----
9030: 20 73 74 6f 70 70 69 6e 67 20 61 66 74 65 72 20   stopping after 
9040: 74 65 73 74 20 66 69 6c 65 73 20 74 68 61 74 20  test files that 
9050: 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20 20  match: " \..    
9060: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
9070: 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73  xists test_flags
9080: 28 2d 73 74 6f 70 46 69 6c 65 29 5d 20 26 26 20  (-stopFile)] && 
9090: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c  \..          [ll
90a0: 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67  ength $test_flag
90b0: 73 28 2d 73 74 6f 70 46 69 6c 65 29 5d 20 3e 20  s(-stopFile)] > 
90c0: 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  0 ? \..         
90d0: 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73       $test_flags
90e0: 28 2d 73 74 6f 70 46 69 6c 65 29 20 3a 20 22 3c  (-stopFile) : "<
90f0: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
9100: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9110: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9120: 73 20 22 2d 2d 2d 2d 20 72 75 6e 6e 69 6e 67 20  s "---- running 
9130: 74 65 73 74 73 20 74 68 61 74 20 6d 61 74 63 68  tests that match
9140: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
9150: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
9160: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6d 61 74   test_flags(-mat
9170: 63 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ch)] && \..     
9180: 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74       [llength $t
9190: 65 73 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68  est_flags(-match
91a0: 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20  )] > 0 ? \..    
91b0: 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f            $test_
91c0: 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20 3a 20  flags(-match) : 
91d0: 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a  "<none>"}] \n]..
91e0: 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
91f0: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
9200: 72 67 73 20 22 2d 2d 2d 2d 20 73 6b 69 70 70 69  rgs "---- skippi
9210: 6e 67 20 74 65 73 74 73 20 74 68 61 74 20 6d 61  ng tests that ma
9220: 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  tch: " \..      
9230: 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
9240: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
9250: 73 6b 69 70 29 5d 20 26 26 20 5c 0d 0a 20 20 20  skip)] && \..   
9260: 20 20 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20         [llength 
9270: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69  $test_flags(-ski
9280: 70 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20  p)] > 0 ? \..   
9290: 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
92a0: 5f 66 6c 61 67 73 28 2d 73 6b 69 70 29 20 3a 20  _flags(-skip) : 
92b0: 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a  "<none>"}] \n]..
92c0: 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
92d0: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
92e0: 72 67 73 20 22 2d 2d 2d 2d 20 76 65 72 62 6f 73  rgs "---- verbos
92f0: 69 74 79 20 6c 65 76 65 6c 20 66 6f 72 20 74 65  ity level for te
9300: 73 74 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  sts: " \..      
9310: 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
9320: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
9330: 76 65 72 62 6f 73 65 29 5d 20 26 26 20 5c 0d 0a  verbose)] && \..
9340: 20 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e            [strin
9350: 67 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66  g length $test_f
9360: 6c 61 67 73 28 2d 76 65 72 62 6f 73 65 29 5d 20  lags(-verbose)] 
9370: 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  > 0 ? \..       
9380: 20 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61         $test_fla
9390: 67 73 28 2d 76 65 72 62 6f 73 65 29 20 3a 20 22  gs(-verbose) : "
93a0: 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d  <none>"}] \n]...
93b0: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
93c0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
93d0: 67 73 20 22 2d 2d 2d 2d 20 70 61 74 68 3a 20 22  gs "---- path: "
93e0: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
93f0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 70 61  {[info exists pa
9400: 74 68 5d 20 26 26 20 5b 73 74 72 69 6e 67 20 6c  th] && [string l
9410: 65 6e 67 74 68 20 24 70 61 74 68 5d 20 3e 20 30  ength $path] > 0
9420: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
9430: 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 24  [appendArgs \" $
9440: 70 61 74 68 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e  path \"] : "<non
9450: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
9460: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
9470: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
9480: 2d 2d 2d 2d 20 62 61 73 65 20 70 61 74 68 3a 20  ---- base path: 
9490: 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 24 62 61  \"" \..      $ba
94a0: 73 65 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d  se_path \"\n]...
94b0: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
94c0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
94d0: 67 73 20 22 2d 2d 2d 2d 20 6b 65 79 20 70 61 74  gs "---- key pat
94e0: 68 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20  h: \"" \..      
94f0: 24 6b 65 79 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d  $key_path \"\n].
9500: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
9510: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
9520: 41 72 67 73 20 22 2d 2d 2d 2d 20 72 6f 6f 74 20  Args "---- root 
9530: 70 61 74 68 3a 20 5c 22 22 20 5c 0d 0a 20 20 20  path: \"" \..   
9540: 20 20 20 24 72 6f 6f 74 5f 70 61 74 68 20 5c 22     $root_path \"
9550: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
9560: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
9570: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 62  pendArgs "---- b
9580: 69 6e 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20  inary path: \"" 
9590: 5c 0d 0a 20 20 20 20 20 20 24 62 69 6e 5f 70 61  \..      $bin_pa
95a0: 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  th \"\n]....  tp
95b0: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
95c0: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
95d0: 2d 2d 2d 20 6c 69 62 72 61 72 79 20 70 61 74 68  --- library path
95e0: 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 24  : \"" \..      $
95f0: 6c 69 62 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a  lib_path \"\n]..
9600: 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
9610: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
9620: 72 67 73 20 22 2d 2d 2d 2d 20 63 6f 72 65 20 62  rgs "---- core b
9630: 69 6e 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20  inary path: \"" 
9640: 5c 0d 0a 20 20 20 20 20 20 24 63 6f 72 65 5f 62  \..      $core_b
9650: 69 6e 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d  in_path \"\n]...
9660: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
9670: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
9680: 67 73 20 22 2d 2d 2d 2d 20 63 6f 72 65 20 6c 69  gs "---- core li
9690: 62 72 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20  brary path: \"" 
96a0: 5c 0d 0a 20 20 20 20 20 20 24 63 6f 72 65 5f 6c  \..      $core_l
96b0: 69 62 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d  ib_path \"\n]...
96c0: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
96d0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
96e0: 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 68 6f  gs "---- test ho
96f0: 6d 65 20 70 61 74 68 3a 20 5c 22 22 20 5c 0d 0a  me path: \"" \..
9700: 20 20 20 20 20 20 24 74 65 73 74 5f 68 6f 6d 65        $test_home
9710: 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20  _path \"\n].... 
9720: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
9730: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
9740: 20 22 2d 2d 2d 2d 20 74 65 73 74 20 73 75 69 74   "---- test suit
9750: 65 20 66 69 6c 65 73 20 6c 6f 63 61 74 65 64 20  e files located 
9760: 69 6e 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20  in: \"" \..     
9770: 20 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 20   $test_all_path 
9780: 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  \"\n]....  tputs
9790: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
97a0: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
97b0: 20 74 65 73 74 20 73 63 72 69 70 74 20 66 69 6c   test script fil
97c0: 65 73 20 6c 6f 63 61 74 65 64 20 69 6e 3a 20 5c  es located in: \
97d0: 22 22 20 5c 0d 0a 20 20 20 20 20 20 24 74 65 73  "" \..      $tes
97e0: 74 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a  t_path \"\n]....
97f0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9800: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9810: 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 64 61 74  s "---- test dat
9820: 61 20 66 69 6c 65 73 20 6c 6f 63 61 74 65 64 20  a files located 
9830: 69 6e 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20  in: \"" \..     
9840: 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
9850: 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74   \"\n]....  tput
9860: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
9870: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
9880: 2d 20 72 75 6e 6e 69 6e 67 20 69 6e 3a 20 5c 22  - running in: \"
9890: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 70 77 64 5d  " \..      [pwd]
98a0: 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74   \"\n]....  tput
98b0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
98c0: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
98d0: 2d 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  - temporary file
98e0: 73 20 73 74 6f 72 65 64 20 69 6e 3a 20 5c 22 22  s stored in: \""
98f0: 20 5c 0d 0a 20 20 20 20 20 20 5b 67 65 74 54 65   \..      [getTe
9900: 6d 70 6f 72 61 72 79 50 61 74 68 5d 20 5c 22 5c  mporaryPath] \"\
9910: 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74  n]....  tputs $t
9920: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
9930: 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6e 61  endArgs "---- na
9940: 74 69 76 65 20 54 63 6c 20 73 68 65 6c 6c 3a 20  tive Tcl shell: 
9950: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72  " \..      [expr
9960: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
9970: 65 73 74 5f 74 63 6c 73 68 5d 20 26 26 20 5b 73  est_tclsh] && [s
9980: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65  tring length $te
9990: 73 74 5f 74 63 6c 73 68 5d 20 3e 20 30 20 3f 20  st_tclsh] > 0 ? 
99a0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 61 70  \..          [ap
99b0: 70 65 6e 64 41 72 67 73 20 5c 22 20 24 74 65 73  pendArgs \" $tes
99c0: 74 5f 74 63 6c 73 68 20 5c 22 5d 20 3a 20 22 3c  t_tclsh \"] : "<
99d0: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
99e0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
99f0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9a00: 73 20 22 2d 2d 2d 2d 20 64 69 73 61 62 6c 65 64  s "---- disabled
9a10: 20 6f 70 74 69 6f 6e 73 3a 20 22 20 5c 0d 0a 20   options: " \.. 
9a20: 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74       [formatList
9a30: 20 5b 6c 73 6f 72 74 20 5b 61 72 72 61 79 20 6e   [lsort [array n
9a40: 61 6d 65 73 20 6e 6f 5d 5d 20 3c 6e 6f 6e 65 3e  ames no]] <none>
9a50: 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ] \n]....  #..  
9a60: 23 20 4e 4f 54 45 3a 20 49 73 20 74 68 65 20 75  # NOTE: Is the u
9a70: 73 65 20 6f 66 20 46 6f 73 73 69 6c 20 62 79 20  se of Fossil by 
9a80: 74 68 65 20 74 65 73 74 20 73 75 69 74 65 20 61  the test suite a
9a90: 6c 6c 6f 77 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  llowed?..  #..  
9aa0: 69 66 20 7b 5b 63 61 6e 45 78 65 63 46 6f 73 73  if {[canExecFoss
9ab0: 69 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  il]} then {..   
9ac0: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
9ad0: 47 65 74 20 74 68 65 20 73 6f 75 72 63 65 20 63  Get the source c
9ae0: 68 65 63 6b 6f 75 74 20 61 6e 64 20 74 61 67 73  heckout and tags
9af0: 20 28 69 2e 65 2e 20 6f 66 20 45 61 67 6c 65 20   (i.e. of Eagle 
9b00: 6f 72 20 77 68 61 74 65 76 65 72 0d 0a 20 20 20  or whatever..   
9b10: 20 23 20 20 20 20 20 20 20 70 72 6f 6a 65 63 74   #       project
9b20: 20 74 68 65 20 45 61 67 6c 65 20 62 69 6e 61 72   the Eagle binar
9b30: 69 65 73 20 61 72 65 20 62 65 69 6e 67 20 75 73  ies are being us
9b40: 65 64 20 62 79 29 20 75 73 69 6e 67 20 61 20 46  ed by) using a F
9b50: 6f 73 73 69 6c 0d 0a 20 20 20 20 23 20 20 20 20  ossil..    #    
9b60: 20 20 20 62 69 6e 61 72 79 20 69 6e 20 74 68 65     binary in the
9b70: 20 50 41 54 48 2c 20 69 66 20 61 76 61 69 6c 61   PATH, if availa
9b80: 62 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ble...    #..   
9b90: 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 65 78 65   if {[catch {exe
9ba0: 63 20 2d 2d 20 66 6f 73 73 69 6c 20 69 6e 66 6f  c -- fossil info
9bb0: 7d 20 65 78 65 63 5d 20 3d 3d 20 30 7d 20 74 68  } exec] == 0} th
9bc0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20  en {..      set 
9bd0: 70 61 74 74 65 72 6e 20 7b 5e 63 68 65 63 6b 6f  pattern {^checko
9be0: 75 74 3a 5c 73 2b 28 2e 2a 3f 29 24 7d 0d 0a 0d  ut:\s+(.*?)$}...
9bf0: 0a 20 20 20 20 20 20 69 66 20 7b 5b 72 65 67 65  .      if {[rege
9c00: 78 70 20 2d 6c 69 6e 65 20 2d 2d 20 24 70 61 74  xp -line -- $pat
9c10: 74 65 72 6e 20 24 65 78 65 63 20 64 75 6d 6d 79  tern $exec dummy
9c20: 20 63 68 65 63 6b 6f 75 74 5d 7d 20 74 68 65 6e   checkout]} then
9c30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
9c40: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 52         # NOTE: R
9c50: 65 6d 6f 76 65 20 61 6e 79 20 74 72 61 69 6c 69  emove any traili
9c60: 6e 67 20 6e 65 77 6c 69 6e 65 2e 0d 0a 20 20 20  ng newline...   
9c70: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
9c80: 73 65 74 20 63 68 65 63 6b 6f 75 74 20 5b 73 74  set checkout [st
9c90: 72 69 6e 67 20 74 72 69 6d 20 24 63 68 65 63 6b  ring trim $check
9ca0: 6f 75 74 5d 0d 0a 20 20 20 20 20 20 7d 20 65 6c  out]..      } el
9cb0: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  se {..        #.
9cc0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
9cd0: 20 57 65 20 63 6f 75 6c 64 20 6e 6f 74 20 71 75   We could not qu
9ce0: 65 72 79 20 74 68 65 20 73 6f 75 72 63 65 20 63  ery the source c
9cf0: 68 65 63 6b 6f 75 74 20 66 72 6f 6d 20 46 6f 73  heckout from Fos
9d00: 73 69 6c 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  sil...        #.
9d10: 0a 20 20 20 20 20 20 20 20 73 65 74 20 63 68 65  .        set che
9d20: 63 6b 6f 75 74 20 3c 6e 6f 6e 65 3e 0d 0a 20 20  ckout <none>..  
9d30: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73      }....      s
9d40: 65 74 20 70 61 74 74 65 72 6e 20 7b 5e 74 61 67  et pattern {^tag
9d50: 73 3a 5c 73 2b 28 2e 2a 3f 29 24 7d 0d 0a 0d 0a  s:\s+(.*?)$}....
9d60: 20 20 20 20 20 20 69 66 20 7b 5b 72 65 67 65 78        if {[regex
9d70: 70 20 2d 6c 69 6e 65 20 2d 2d 20 24 70 61 74 74  p -line -- $patt
9d80: 65 72 6e 20 24 65 78 65 63 20 64 75 6d 6d 79 20  ern $exec dummy 
9d90: 74 61 67 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  tags]} then {.. 
9da0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
9db0: 20 20 23 20 4e 4f 54 45 3a 20 52 65 6d 6f 76 65    # NOTE: Remove
9dc0: 20 61 6e 79 20 74 72 61 69 6c 69 6e 67 20 6e 65   any trailing ne
9dd0: 77 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20  wline...        
9de0: 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 74  #..        set t
9df0: 61 67 73 20 5b 73 74 72 69 6e 67 20 74 72 69 6d  ags [string trim
9e00: 20 24 74 61 67 73 5d 0d 0a 20 20 20 20 20 20 7d   $tags]..      }
9e10: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20   else {..       
9e20: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
9e30: 54 45 3a 20 57 65 20 63 6f 75 6c 64 20 6e 6f 74  TE: We could not
9e40: 20 71 75 65 72 79 20 74 68 65 20 74 61 67 73 20   query the tags 
9e50: 66 72 6f 6d 20 46 6f 73 73 69 6c 2e 0d 0a 20 20  from Fossil...  
9e60: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
9e70: 20 73 65 74 20 74 61 67 73 20 3c 6e 6f 6e 65 3e   set tags <none>
9e80: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
9e90: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 23   else {..      #
9ea0: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
9eb0: 57 65 20 63 6f 75 6c 64 20 6e 6f 74 20 71 75 65  We could not que
9ec0: 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66  ry information f
9ed0: 72 6f 6d 20 46 6f 73 73 69 6c 2e 0d 0a 20 20 20  rom Fossil...   
9ee0: 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20     #..      set 
9ef0: 63 68 65 63 6b 6f 75 74 20 3c 6e 6f 6e 65 3e 0d  checkout <none>.
9f00: 0a 20 20 20 20 20 20 73 65 74 20 74 61 67 73 20  .      set tags 
9f10: 3c 6e 6f 6e 65 3e 0d 0a 20 20 20 20 7d 0d 0a 0d  <none>..    }...
9f20: 0a 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  .    unset -noco
9f30: 6d 70 6c 61 69 6e 20 64 75 6d 6d 79 20 65 78 65  mplain dummy exe
9f40: 63 20 70 61 74 74 65 72 6e 0d 0a 20 20 7d 20 65  c pattern..  } e
9f50: 6c 73 65 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  lse {..    #..  
9f60: 20 20 23 20 4e 4f 54 45 3a 20 55 73 65 20 6f 66    # NOTE: Use of
9f70: 20 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20 74   Fossil by the t
9f80: 65 73 74 20 73 75 69 74 65 20 69 73 20 66 6f 72  est suite is for
9f90: 62 69 64 64 65 6e 2e 0d 0a 20 20 20 20 23 0d 0a  bidden...    #..
9fa0: 20 20 20 20 73 65 74 20 63 68 65 63 6b 6f 75 74      set checkout
9fb0: 20 3c 6e 6f 6e 65 3e 0d 0a 20 20 20 20 73 65 74   <none>..    set
9fc0: 20 74 61 67 73 20 3c 6e 6f 6e 65 3e 0d 0a 20 20   tags <none>..  
9fd0: 7d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  }....  tputs $te
9fe0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
9ff0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 63 68 65  ndArgs "---- che
a000: 63 6b 6f 75 74 3a 20 22 20 5c 0d 0a 20 20 20 20  ckout: " \..    
a010: 20 20 24 63 68 65 63 6b 6f 75 74 20 5c 6e 5d 0d    $checkout \n].
a020: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
a030: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
a040: 41 72 67 73 20 22 2d 2d 2d 2d 20 74 61 67 73 3a  Args "---- tags:
a050: 20 22 20 5c 0d 0a 20 20 20 20 20 20 24 74 61 67   " \..      $tag
a060: 73 20 5c 6e 5d 0d 0a 0d 0a 20 20 75 6e 73 65 74  s \n]....  unset
a070: 20 74 61 67 73 20 63 68 65 63 6b 6f 75 74 0d 0a   tags checkout..
a080: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
a090: 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20   Initialize the 
a0a0: 45 61 67 6c 65 20 74 65 73 74 20 63 6f 6e 73 74  Eagle test const
a0b0: 72 61 69 6e 74 73 2e 0d 0a 20 20 23 0d 0a 20 20  raints...  #..  
a0c0: 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74  if {[isEagle]} t
a0d0: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
a0e0: 20 20 23 20 4e 4f 54 45 3a 20 2a 57 41 52 4e 49    # NOTE: *WARNI
a0f0: 4e 47 2a 20 54 68 69 73 20 68 61 73 20 74 68 65  NG* This has the
a100: 20 65 66 66 65 63 74 20 6f 66 20 72 65 6d 6f 76   effect of remov
a110: 69 6e 67 20 74 65 73 74 20 63 6f 6e 73 74 72 61  ing test constra
a120: 69 6e 74 73 0d 0a 20 20 20 20 23 20 20 20 20 20  ints..    #     
a130: 20 20 61 64 64 65 64 20 70 72 69 6f 72 20 74 6f    added prior to
a140: 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20   this point...  
a150: 20 20 23 0d 0a 20 20 20 20 69 6e 69 74 69 61 6c    #..    initial
a160: 69 7a 65 54 65 73 74 73 3b 20 63 6f 6e 66 69 67  izeTests; config
a170: 75 72 65 54 63 6c 74 65 73 74 20 22 22 20 5b 6c  ureTcltest "" [l
a180: 69 73 74 5d 20 5b 6c 69 73 74 5d 20 5b 6c 69 73  ist] [list] [lis
a190: 74 5d 20 5b 6c 69 73 74 5d 20 66 61 6c 73 65 0d  t] [list] false.
a1a0: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
a1b0: 4e 4f 54 45 3a 20 49 66 20 74 68 65 20 22 6e 6f  NOTE: If the "no
a1c0: 28 6d 6f 6e 6f 29 22 20 76 61 72 69 61 62 6c 65  (mono)" variable
a1d0: 20 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79 74   is set (to anyt
a1e0: 68 69 6e 67 29 20 74 68 65 6e 20 61 6e 79 0d 0a  hing) then any..
a1f0: 20 20 20 20 23 20 20 20 20 20 20 20 73 70 65 63      #       spec
a200: 69 61 6c 20 74 65 73 74 20 73 75 69 74 65 20 68  ial test suite h
a210: 61 63 6b 73 20 66 6f 72 20 4d 6f 6e 6f 20 77 69  acks for Mono wi
a220: 6c 6c 20 62 65 20 64 69 73 61 62 6c 65 64 2e 20  ll be disabled. 
a230: 54 68 69 73 0d 0a 20 20 20 20 23 20 20 20 20 20  This..    #     
a240: 20 20 64 6f 65 73 20 6e 6f 74 20 63 6f 6e 74 72    does not contr
a250: 6f 6c 20 6f 72 20 63 68 61 6e 67 65 20 61 6e 79  ol or change any
a260: 20 68 61 63 6b 73 20 66 6f 72 20 4d 6f 6e 6f 20   hacks for Mono 
a270: 74 68 61 74 20 6d 61 79 0d 0a 20 20 20 20 23 20  that may..    # 
a280: 20 20 20 20 20 20 62 65 20 70 72 65 73 65 6e 74        be present
a290: 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20   in the library 
a2a0: 69 74 73 65 6c 66 2e 0d 0a 20 20 20 20 23 0d 0a  itself...    #..
a2b0: 20 20 20 20 23 20 69 66 20 7b 5b 69 73 4d 6f 6e      # if {[isMon
a2c0: 6f 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  o]} then {..    
a2d0: 23 20 20 20 73 65 74 20 6e 6f 28 6d 6f 6e 6f 29  #   set no(mono)
a2e0: 20 74 72 75 65 0d 0a 20 20 20 20 23 20 7d 0d 0a   true..    # }..
a2f0: 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
a300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a320: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a330: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a340: 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23  #..    #########
a350: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a360: 20 42 45 47 49 4e 20 45 61 67 6c 65 20 43 6f 6e   BEGIN Eagle Con
a370: 73 74 72 61 69 6e 74 73 20 23 23 23 23 23 23 23  straints #######
a380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a390: 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23  ##..    ########
a3a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a3b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a3c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a3d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a3e0: 23 23 23 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73  ###....    tputs
a3f0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c   $test_channel \
a400: 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20  ..        "---- 
a410: 73 74 61 72 74 20 6f 66 20 45 61 67 6c 65 20 73  start of Eagle s
a420: 70 65 63 69 66 69 63 20 74 65 73 74 20 63 6f 6e  pecific test con
a430: 73 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a  straints...\n"..
a440: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
a450: 4f 54 45 3a 20 2a 57 41 52 4e 49 4e 47 2a 20 48  OTE: *WARNING* H
a460: 61 73 20 71 75 69 65 74 20 74 65 73 74 69 6e 67  as quiet testing
a470: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
a480: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 20 20  sabled?..    #  
a490: 20 20 20 20 20 50 6c 65 61 73 65 20 64 6f 20 6e       Please do n
a4a0: 6f 74 20 6d 6f 76 65 20 74 68 69 73 20 22 71 75  ot move this "qu
a4b0: 69 65 74 6e 65 73 73 22 20 74 65 73 74 20 63 6f  ietness" test co
a4c0: 6e 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 23 20  nstraint..    # 
a4d0: 20 20 20 20 20 20 63 68 65 63 6b 20 61 73 20 73        check as s
a4e0: 75 62 73 65 71 75 65 6e 74 20 74 65 73 74 20 63  ubsequent test c
a4f0: 6f 6e 73 74 72 61 69 6e 74 73 20 6d 61 79 20 72  onstraints may r
a500: 65 6c 79 20 6f 6e 20 69 74 0d 0a 20 20 20 20 23  ely on it..    #
a510: 20 20 20 20 20 20 20 77 68 65 6e 20 64 65 74 65         when dete
a520: 72 6d 69 6e 69 6e 67 20 69 66 20 61 20 77 61 72  rmining if a war
a530: 6e 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 65  ning should be e
a540: 6d 69 74 74 65 64 2e 0d 0a 20 20 20 20 23 0d 0a  mitted...    #..
a550: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
a560: 78 69 73 74 73 20 6e 6f 28 71 75 69 65 74 29 5d  xists no(quiet)]
a570: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
a580: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
a590: 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69   For tests "basi
a5a0: 63 2d 31 2e 33 36 22 2c 20 22 62 65 6e 63 68 6d  c-1.36", "benchm
a5b0: 61 72 6b 2d 31 2e 2a 22 2c 20 22 64 65 62 75 67  ark-1.*", "debug
a5c0: 2d 31 2e 33 22 2c 0d 0a 20 20 20 20 20 20 23 20  -1.3",..      # 
a5d0: 20 20 20 20 20 20 22 64 65 62 75 67 2d 31 2e 34        "debug-1.4
a5e0: 2e 2a 22 2c 20 22 67 6c 6f 62 2d 39 39 2e 2a 22  .*", "glob-99.*"
a5f0: 2c 20 22 6f 62 6a 65 63 74 2d 31 30 2e 2a 22 2c  , "object-10.*",
a600: 20 22 70 65 72 66 2d 32 2e 32 22 2c 0d 0a 20 20   "perf-2.2",..  
a610: 20 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20      #       and 
a620: 76 61 72 69 6f 75 73 20 6f 74 68 65 72 20 70 6c  various other pl
a630: 61 63 65 73 20 77 69 74 68 69 6e 20 74 68 65 20  aces within the 
a640: 74 65 73 74 20 73 75 69 74 65 20 63 6f 64 65 0d  test suite code.
a650: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69  .      #       i
a660: 74 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 23 0d  tself...      #.
a670: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 51  .      checkForQ
a680: 75 69 65 74 20 24 74 65 73 74 5f 63 68 61 6e 6e  uiet $test_chann
a690: 65 6c 20 66 61 6c 73 65 0d 0a 20 20 20 20 7d 0d  el false..    }.
a6a0: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
a6b0: 4e 4f 54 45 3a 20 48 61 73 20 61 64 6d 69 6e 69  NOTE: Has admini
a6c0: 73 74 72 61 74 6f 72 20 64 65 74 65 63 74 69 6f  strator detectio
a6d0: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
a6e0: 69 73 61 62 6c 65 64 3f 20 20 57 65 20 64 6f 0d  isabled?  We do.
a6f0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 68 69  .    #       thi
a700: 73 20 63 68 65 63 6b 20 5b 6e 65 61 72 6c 79 5d  s check [nearly]
a710: 20 66 69 72 73 74 20 61 73 20 69 74 20 6d 61 79   first as it may
a720: 20 5b 65 76 65 6e 74 75 61 6c 6c 79 5d 20 62 65   [eventually] be
a730: 20 75 73 65 64 0d 0a 20 20 20 20 23 20 20 20 20   used..    #    
a740: 20 20 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72     to help deter
a750: 6d 69 6e 65 20 69 66 20 6f 74 68 65 72 20 63 6f  mine if other co
a760: 6e 73 74 72 61 69 6e 74 73 20 73 68 6f 75 6c 64  nstraints should
a770: 20 62 65 20 73 6b 69 70 70 65 64 2e 0d 0a 20 20   be skipped...  
a780: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
a790: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 61 64  nfo exists no(ad
a7a0: 6d 69 6e 69 73 74 72 61 74 6f 72 29 5d 7d 20 74  ministrator)]} t
a7b0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
a7c0: 63 6b 46 6f 72 41 64 6d 69 6e 69 73 74 72 61 74  ckForAdministrat
a7d0: 6f 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  or $test_channel
a7e0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
a7f0: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
a800: 73 20 68 6f 73 74 20 64 65 74 65 63 74 69 6f 6e  s host detection
a810: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
a820: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
a830: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
a840: 78 69 73 74 73 20 6e 6f 28 68 6f 73 74 29 5d 7d  xists no(host)]}
a850: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
a860: 68 65 63 6b 46 6f 72 48 6f 73 74 20 24 74 65 73  heckForHost $tes
a870: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
a880: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
a890: 20 4e 4f 54 45 3a 20 48 61 73 20 68 6f 73 74 20   NOTE: Has host 
a8a0: 74 79 70 65 20 64 65 74 65 63 74 69 6f 6e 20 73  type detection s
a8b0: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
a8c0: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
a8d0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
a8e0: 73 74 73 20 6e 6f 28 68 6f 73 74 54 79 70 65 29  sts no(hostType)
a8f0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
a900: 20 63 68 65 63 6b 46 6f 72 48 6f 73 74 54 79 70   checkForHostTyp
a910: 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  e $test_channel.
a920: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
a930: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
a940: 20 70 72 69 6d 61 72 79 20 74 68 72 65 61 64 20   primary thread 
a950: 64 65 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72  detection suppor
a960: 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
a970: 20 20 57 65 20 64 6f 0d 0a 20 20 20 20 23 20 20    We do..    #  
a980: 20 20 20 20 20 74 68 69 73 20 63 68 65 63 6b 20       this check 
a990: 5b 6e 65 61 72 6c 79 5d 20 66 69 72 73 74 20 61  [nearly] first a
a9a0: 73 20 69 74 20 6d 61 79 20 5b 65 76 65 6e 74 75  s it may [eventu
a9b0: 61 6c 6c 79 5d 20 62 65 20 75 73 65 64 0d 0a 20  ally] be used.. 
a9c0: 20 20 20 23 20 20 20 20 20 20 20 74 6f 20 68 65     #       to he
a9d0: 6c 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  lp determine if 
a9e0: 6f 74 68 65 72 20 63 6f 6e 73 74 72 61 69 6e 74  other constraint
a9f0: 73 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70  s should be skip
aa00: 70 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ped...    #..   
aa10: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
aa20: 74 73 20 6e 6f 28 70 72 69 6d 61 72 79 54 68 72  ts no(primaryThr
aa30: 65 61 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ead)]} then {.. 
aa40: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 50 72 69       checkForPri
aa50: 6d 61 72 79 54 68 72 65 61 64 20 24 74 65 73 74  maryThread $test
aa60: 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
aa70: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
aa80: 4e 4f 54 45 3a 20 48 61 73 20 64 65 66 61 75 6c  NOTE: Has defaul
aa90: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  t application do
aaa0: 6d 61 69 6e 20 64 65 74 65 63 74 69 6f 6e 20 73  main detection s
aab0: 75 70 70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20  upport been..   
aac0: 20 23 20 20 20 20 20 20 20 64 69 73 61 62 6c 65   #       disable
aad0: 64 3f 20 20 57 65 20 64 6f 20 74 68 69 73 20 63  d?  We do this c
aae0: 68 65 63 6b 20 5b 6e 65 61 72 6c 79 5d 20 66 69  heck [nearly] fi
aaf0: 72 73 74 20 61 73 20 69 74 20 6d 61 79 0d 0a 20  rst as it may.. 
ab00: 20 20 20 23 20 20 20 20 20 20 20 5b 65 76 65 6e     #       [even
ab10: 74 75 61 6c 6c 79 5d 20 62 65 20 75 73 65 64 20  tually] be used 
ab20: 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e  to help determin
ab30: 65 20 69 66 20 6f 74 68 65 72 0d 0a 20 20 20 20  e if other..    
ab40: 23 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69  #       constrai
ab50: 6e 74 73 20 73 68 6f 75 6c 64 20 62 65 20 73 6b  nts should be sk
ab60: 69 70 70 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20  ipped...    #.. 
ab70: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
ab80: 69 73 74 73 20 6e 6f 28 64 65 66 61 75 6c 74 41  ists no(defaultA
ab90: 70 70 44 6f 6d 61 69 6e 29 5d 7d 20 74 68 65 6e  ppDomain)]} then
aba0: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
abb0: 6f 72 44 65 66 61 75 6c 74 41 70 70 44 6f 6d 61  orDefaultAppDoma
abc0: 69 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  in $test_channel
abd0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
abe0: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
abf0: 73 20 72 75 6e 74 69 6d 65 20 64 65 74 65 63 74  s runtime detect
ac00: 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
ac10: 20 64 69 73 61 62 6c 65 64 3f 20 20 57 65 20 64   disabled?  We d
ac20: 6f 20 74 68 69 73 0d 0a 20 20 20 20 23 20 20 20  o this..    #   
ac30: 20 20 20 20 63 68 65 63 6b 69 6e 67 20 5b 6e 65      checking [ne
ac40: 61 72 6c 79 5d 20 66 69 72 73 74 20 61 73 20 69  arly] first as i
ac50: 74 20 6d 61 79 20 73 6b 69 70 20 6f 74 68 65 72  t may skip other
ac60: 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20   constraints... 
ac70: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
ac80: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72  info exists no(r
ac90: 75 6e 74 69 6d 65 29 5d 7d 20 74 68 65 6e 20 7b  untime)]} then {
aca0: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
acb0: 52 75 6e 74 69 6d 65 20 24 74 65 73 74 5f 63 68  Runtime $test_ch
acc0: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
acd0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
ace0: 45 3a 20 43 68 65 63 6b 20 74 68 65 20 76 61 72  E: Check the var
acf0: 69 61 6e 74 20 61 6e 64 2f 6f 72 20 76 65 72 73  iant and/or vers
ad00: 69 6f 6e 20 6f 66 20 74 68 65 20 43 4c 52 20 74  ion of the CLR t
ad10: 68 61 74 20 77 65 20 61 72 65 0d 0a 20 20 20 20  hat we are..    
ad20: 23 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 6c  #       currentl
ad30: 79 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e 0d 0a 20  y running on... 
ad40: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
ad50: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
ad60: 68 65 63 6b 46 6f 72 52 75 6e 74 69 6d 65 56 65  heckForRuntimeVe
ad70: 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d  rsion)]} then {.
ad80: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52  .      checkForR
ad90: 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 24 74  untimeVersion $t
ada0: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
adb0: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
adc0: 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74   # NOTE: Check t
add0: 68 65 20 66 72 61 6d 65 77 6f 72 6b 20 76 65 72  he framework ver
ade0: 73 69 6f 6e 20 28 69 2e 65 2e 20 72 65 67 61 72  sion (i.e. regar
adf0: 64 6c 65 73 73 20 6f 66 20 72 75 6e 74 69 6d 65  dless of runtime
ae00: 29 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20  ) that..    #   
ae10: 20 20 20 20 77 65 20 61 72 65 20 63 75 72 72 65      we are curre
ae20: 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e  ntly running on.
ae30: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
ae40: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
ae50: 6f 28 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69  o(frameworkVersi
ae60: 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  on)]} then {..  
ae70: 20 20 20 20 63 68 65 63 6b 46 6f 72 46 72 61 6d      checkForFram
ae80: 65 77 6f 72 6b 56 65 72 73 69 6f 6e 20 24 74 65  eworkVersion $te
ae90: 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
aea0: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
aeb0: 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68  # NOTE: Check th
aec0: 65 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20  e image runtime 
aed0: 76 65 72 73 69 6f 6e 20 28 69 2e 65 2e 20 74 68  version (i.e. th
aee0: 65 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f  e runtime versio
aef0: 6e 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20  n that..    #   
af00: 20 20 20 20 74 68 69 73 20 61 73 73 65 6d 62 6c      this assembl
af10: 79 20 63 6f 6d 70 69 6c 65 64 20 61 67 61 69 6e  y compiled again
af20: 73 74 29 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  st)...    #..   
af30: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
af40: 74 73 20 6e 6f 28 69 6d 61 67 65 52 75 6e 74 69  ts no(imageRunti
af50: 6d 65 56 65 72 73 69 6f 6e 29 5d 7d 20 74 68 65  meVersion)]} the
af60: 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
af70: 46 6f 72 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  ForImageRuntimeV
af80: 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ersion $test_cha
af90: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
afa0: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
afb0: 3a 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 69  : Check if the i
afc0: 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72  mage runtime ver
afd0: 73 69 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 65  sion matches the
afe0: 20 66 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20   framework...   
aff0: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
b000: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d 61 74  fo exists no(mat
b010: 63 68 69 6e 67 46 72 61 6d 65 77 6f 72 6b 56 65  chingFrameworkVe
b020: 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d  rsion)]} then {.
b030: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d  .      checkForM
b040: 61 74 63 68 69 6e 67 46 72 61 6d 65 77 6f 72 6b  atchingFramework
b050: 56 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68  Version $test_ch
b060: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
b070: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
b080: 45 3a 20 48 61 73 20 70 72 6f 63 65 73 73 20 62  E: Has process b
b090: 69 74 73 20 64 65 74 65 63 74 69 6f 6e 20 73 75  its detection su
b0a0: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
b0b0: 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
b0c0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
b0d0: 74 73 20 6e 6f 28 70 72 6f 63 65 73 73 42 69 74  ts no(processBit
b0e0: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
b0f0: 20 20 20 63 68 65 63 6b 46 6f 72 50 72 6f 63 65     checkForProce
b100: 73 73 42 69 74 73 20 24 74 65 73 74 5f 63 68 61  ssBits $test_cha
b110: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
b120: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
b130: 3a 20 48 61 73 20 6d 61 63 68 69 6e 65 20 64 65  : Has machine de
b140: 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  tection support 
b150: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
b160: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
b170: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
b180: 6d 61 63 68 69 6e 65 29 5d 7d 20 74 68 65 6e 20  machine)]} then 
b190: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
b1a0: 72 4d 61 63 68 69 6e 65 20 24 74 65 73 74 5f 63  rMachine $test_c
b1b0: 68 61 6e 6e 65 6c 20 33 32 20 69 6e 74 65 6c 3b  hannel 32 intel;
b1c0: 20 23 20 28 69 2e 65 2e 20 78 38 36 29 0d 0a 20   # (i.e. x86).. 
b1d0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 61 63       checkForMac
b1e0: 68 69 6e 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  hine $test_chann
b1f0: 65 6c 20 33 32 20 61 72 6d 3b 20 20 20 23 20 28  el 32 arm;   # (
b200: 69 2e 65 2e 20 61 72 6d 29 0d 0a 20 20 20 20 20  i.e. arm)..     
b210: 20 63 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65   checkForMachine
b220: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36   $test_channel 6
b230: 34 20 69 61 36 34 3b 20 20 23 20 28 69 2e 65 2e  4 ia64;  # (i.e.
b240: 20 69 74 61 6e 69 75 6d 29 0d 0a 20 20 20 20 20   itanium)..     
b250: 20 63 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65   checkForMachine
b260: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36   $test_channel 6
b270: 34 20 61 6d 64 36 34 3b 20 23 20 28 69 2e 65 2e  4 amd64; # (i.e.
b280: 20 78 36 34 29 0d 0a 20 20 20 20 20 20 63 68 65   x64)..      che
b290: 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20 24 74 65  ckForMachine $te
b2a0: 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34 20 61 72  st_channel 64 ar
b2b0: 6d 36 34 3b 20 23 20 28 69 2e 65 2e 20 61 72 6d  m64; # (i.e. arm
b2c0: 36 34 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  64)..    }....  
b2d0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
b2e0: 20 48 61 73 20 74 65 73 74 20 73 75 69 74 65 20   Has test suite 
b2f0: 63 61 6c 6c 20 73 74 61 63 6b 20 70 72 6f 62 69  call stack probi
b300: 6e 67 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  ng been disabled
b310: 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ?..    #..    if
b320: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
b330: 6e 6f 28 74 65 73 74 43 61 6c 6c 53 74 61 63 6b  no(testCallStack
b340: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
b350: 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74 43 61    checkForTestCa
b360: 6c 6c 53 74 61 63 6b 20 24 74 65 73 74 5f 63 68  llStack $test_ch
b370: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
b380: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
b390: 45 3a 20 48 61 73 20 63 75 6c 74 75 72 65 20 64  E: Has culture d
b3a0: 65 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74  etection support
b3b0: 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
b3c0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
b3d0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
b3e0: 28 63 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e  (culture)]} then
b3f0: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
b400: 6f 72 43 75 6c 74 75 72 65 20 24 74 65 73 74 5f  orCulture $test_
b410: 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
b420: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
b430: 4f 54 45 3a 20 48 61 73 20 74 68 72 65 61 64 20  OTE: Has thread 
b440: 63 75 6c 74 75 72 65 20 64 65 74 65 63 74 69 6f  culture detectio
b450: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
b460: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
b470: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
b480: 65 78 69 73 74 73 20 6e 6f 28 74 68 72 65 61 64  exists no(thread
b490: 43 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20  Culture)]} then 
b4a0: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
b4b0: 72 54 68 72 65 61 64 43 75 6c 74 75 72 65 20 24  rThreadCulture $
b4c0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
b4d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
b4e0: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 65    # NOTE: Has se
b4f0: 63 75 72 69 74 79 20 64 65 74 65 63 74 69 6f 6e  curity detection
b500: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
b510: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
b520: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
b530: 78 69 73 74 73 20 6e 6f 28 73 65 63 75 72 69 74  xists no(securit
b540: 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  y)]} then {..   
b550: 20 20 20 63 68 65 63 6b 46 6f 72 53 65 63 75 72     checkForSecur
b560: 69 74 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ity $test_channe
b570: 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  l..    }....    
b580: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
b590: 61 73 20 73 6f 66 74 77 61 72 65 20 75 70 64 61  as software upda
b5a0: 74 65 20 74 72 75 73 74 20 64 65 74 65 63 74 69  te trust detecti
b5b0: 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  on support been 
b5c0: 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
b5d0: 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
b5e0: 20 65 78 69 73 74 73 20 6e 6f 28 73 6f 66 74 77   exists no(softw
b5f0: 61 72 65 55 70 64 61 74 65 29 5d 7d 20 74 68 65  areUpdate)]} the
b600: 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
b610: 46 6f 72 53 6f 66 74 77 61 72 65 55 70 64 61 74  ForSoftwareUpdat
b620: 65 54 72 75 73 74 20 24 74 65 73 74 5f 63 68 61  eTrust $test_cha
b630: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
b640: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
b650: 3a 20 48 61 73 20 6c 69 62 72 61 72 79 20 61 73  : Has library as
b660: 73 65 6d 62 6c 79 20 6e 61 6d 65 20 64 65 74 65  sembly name dete
b670: 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65  ction support be
b680: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
b690: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
b6a0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6c 69  nfo exists no(li
b6b0: 62 72 61 72 79 41 73 73 65 6d 62 6c 79 4e 61 6d  braryAssemblyNam
b6c0: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
b6d0: 20 20 20 63 68 65 63 6b 46 6f 72 4c 69 62 72 61     checkForLibra
b6e0: 72 79 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 24  ryAssemblyName $
b6f0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
b700: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
b710: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 74    # NOTE: Has st
b720: 72 6f 6e 67 20 6e 61 6d 65 20 64 65 74 65 63 74  rong name detect
b730: 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
b740: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
b750: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
b760: 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 74 72 6f  o exists no(stro
b770: 6e 67 4e 61 6d 65 29 5d 7d 20 74 68 65 6e 20 7b  ngName)]} then {
b780: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
b790: 53 74 72 6f 6e 67 4e 61 6d 65 20 24 74 65 73 74  StrongName $test
b7a0: 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
b7b0: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
b7c0: 4e 4f 54 45 3a 20 48 61 73 20 73 74 72 6f 6e 67  NOTE: Has strong
b7d0: 20 6e 61 6d 65 20 6b 65 79 20 64 65 74 65 63 74   name key detect
b7e0: 69 6f 6e 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ion been disable
b7f0: 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  d?..    #..    i
b800: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
b810: 20 6e 6f 28 73 74 72 6f 6e 67 4e 61 6d 65 4b 65   no(strongNameKe
b820: 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  y)]} then {..   
b830: 20 20 20 63 68 65 63 6b 46 6f 72 53 74 72 6f 6e     checkForStron
b840: 67 4e 61 6d 65 4b 65 79 20 24 74 65 73 74 5f 63  gNameKey $test_c
b850: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
b860: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
b870: 54 45 3a 20 48 61 73 20 63 65 72 74 69 66 69 63  TE: Has certific
b880: 61 74 65 20 64 65 74 65 63 74 69 6f 6e 20 73 75  ate detection su
b890: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
b8a0: 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
b8b0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
b8c0: 74 73 20 6e 6f 28 63 65 72 74 69 66 69 63 61 74  ts no(certificat
b8d0: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
b8e0: 20 20 20 63 68 65 63 6b 46 6f 72 43 65 72 74 69     checkForCerti
b8f0: 66 69 63 61 74 65 20 24 74 65 73 74 5f 63 68 61  ficate $test_cha
b900: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
b910: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
b920: 3a 20 48 61 73 20 64 61 74 61 62 61 73 65 20 74  : Has database t
b930: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
b940: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
b950: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
b960: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
b970: 6f 72 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f 20  ore)] && ![info 
b980: 65 78 69 73 74 73 20 6e 6f 28 64 61 74 61 62 61  exists no(databa
b990: 73 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  se)]} then {..  
b9a0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
b9b0: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 73 65 72  OTE: Set the ser
b9c0: 76 65 72 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63  ver name, if nec
b9d0: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23  essary...      #
b9e0: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
b9f0: 66 6f 20 65 78 69 73 74 73 20 73 65 72 76 65 72  fo exists server
ba00: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
ba10: 20 20 20 73 65 74 20 73 65 72 76 65 72 20 2e 0d     set server ..
ba20: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
ba30: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
ba40: 45 3a 20 53 65 74 20 74 68 65 20 64 61 74 61 62  E: Set the datab
ba50: 61 73 65 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63  ase name, if nec
ba60: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23  essary...      #
ba70: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
ba80: 66 6f 20 65 78 69 73 74 73 20 64 61 74 61 62 61  fo exists databa
ba90: 73 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  se]} then {..   
baa0: 20 20 20 20 20 73 65 74 20 64 61 74 61 62 61 73       set databas
bab0: 65 20 6d 61 73 74 65 72 0d 0a 20 20 20 20 20 20  e master..      
bac0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
bad0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
bae0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  the connection t
baf0: 69 6d 65 6f 75 74 2c 20 69 66 20 6e 65 63 65 73  imeout, if neces
bb00: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  sary...      #..
bb10: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
bb20: 20 65 78 69 73 74 73 20 74 69 6d 65 6f 75 74 5d   exists timeout]
bb30: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
bb40: 20 20 73 65 74 20 74 69 6d 65 6f 75 74 20 5b 65    set timeout [e
bb50: 78 70 72 20 7b 24 74 65 73 74 5f 74 69 6d 65 6f  xpr {$test_timeo
bb60: 75 74 20 2f 20 31 30 30 30 7d 5d 3b 20 23 20 6d  ut / 1000}]; # m
bb70: 69 6c 6c 69 73 65 63 6f 6e 64 73 20 74 6f 20 73  illiseconds to s
bb80: 65 63 6f 6e 64 73 2e 0d 0a 20 20 20 20 20 20 7d  econds...      }
bb90: 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
bba0: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
bbb0: 68 65 20 74 65 73 74 20 75 73 65 72 20 6e 61 6d  he test user nam
bbc0: 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e  e, if necessary.
bbd0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
bbe0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
bbf0: 74 73 20 75 73 65 72 5d 7d 20 74 68 65 6e 20 7b  ts user]} then {
bc00: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 75 73  ..        set us
bc10: 65 72 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65  er [getEnvironme
bc20: 6e 74 56 61 72 69 61 62 6c 65 20 75 73 65 72 5d  ntVariable user]
bc30: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
bc40: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
bc50: 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74  TE: Set the test
bc60: 20 70 61 73 73 77 6f 72 64 2c 20 69 66 20 6e 65   password, if ne
bc70: 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
bc80: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
bc90: 6e 66 6f 20 65 78 69 73 74 73 20 70 61 73 73 77  nfo exists passw
bca0: 6f 72 64 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ord]} then {..  
bcb0: 20 20 20 20 20 20 73 65 74 20 70 61 73 73 77 6f        set passwo
bcc0: 72 64 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65  rd [getEnvironme
bcd0: 6e 74 56 61 72 69 61 62 6c 65 20 70 61 73 73 77  ntVariable passw
bce0: 6f 72 64 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ord]..      }...
bcf0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
bd00: 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20  # NOTE: Set the 
bd10: 74 65 73 74 20 64 61 74 61 62 61 73 65 20 63 6f  test database co
bd20: 6e 6e 65 63 74 69 6f 6e 20 74 79 70 65 2c 20 69  nnection type, i
bd30: 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
bd40: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
bd50: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
bd60: 65 73 74 5f 64 61 74 61 62 61 73 65 5f 74 79 70  est_database_typ
bd70: 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
bd80: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
bd90: 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64   NOTE: Use the d
bda0: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
bdb0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 79 70 65 2e  connection type.
bdc0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
bdd0: 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 64 61       set test_da
bde0: 74 61 62 61 73 65 5f 74 79 70 65 20 53 71 6c 3b  tabase_type Sql;
bdf0: 20 23 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 74 65   # TODO: Good te
be00: 73 74 20 64 65 66 61 75 6c 74 3f 0d 0a 20 20 20  st default?..   
be10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
be20: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53  .      # NOTE: S
be30: 65 74 20 74 68 65 20 74 65 73 74 20 64 61 74 61  et the test data
be40: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
be50: 73 74 72 69 6e 67 2c 20 69 66 20 6e 65 63 65 73  string, if neces
be60: 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  sary...      #..
be70: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
be80: 20 65 78 69 73 74 73 20 74 65 73 74 5f 64 61 74   exists test_dat
be90: 61 62 61 73 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  abase]} then {..
bea0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
beb0: 20 20 20 23 20 4e 4f 54 45 3a 20 4d 6f 6e 6f 20     # NOTE: Mono 
bec0: 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 73 75  does not have su
bed0: 70 70 6f 72 74 20 66 6f 72 20 22 74 72 75 73 74  pport for "trust
bee0: 65 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 22 3b  ed connections";
bef0: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
bf00: 20 20 74 68 65 72 65 66 6f 72 65 2c 20 77 65 20    therefore, we 
bf10: 6d 75 73 74 20 65 6d 69 74 20 61 20 64 69 66 66  must emit a diff
bf20: 65 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  erent connection
bf30: 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20   string..       
bf40: 20 23 20 20 20 20 20 20 20 77 68 65 6e 20 72 75   #       when ru
bf50: 6e 6e 69 6e 67 20 74 68 65 72 65 2e 0d 0a 20 20  nning there...  
bf60: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
bf70: 20 73 65 74 20 74 65 73 74 5f 64 61 74 61 62 61   set test_databa
bf80: 73 65 20 5b 73 75 62 73 74 20 5c 0d 0a 20 20 20  se [subst \..   
bf90: 20 20 20 20 20 20 20 20 20 7b 44 61 74 61 20 53           {Data S
bfa0: 6f 75 72 63 65 3d 24 7b 73 65 72 76 65 72 7d 3b  ource=${server};
bfb0: 49 6e 69 74 69 61 6c 20 43 61 74 61 6c 6f 67 3d  Initial Catalog=
bfc0: 24 7b 64 61 74 61 62 61 73 65 7d 3b 43 6f 6e 6e  ${database};Conn
bfd0: 65 63 74 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  ect\..          
bfe0: 20 20 54 69 6d 65 6f 75 74 3d 24 7b 74 69 6d 65    Timeout=${time
bff0: 6f 75 74 7d 3b 5b 65 78 70 72 20 7b 5b 69 73 4d  out};[expr {[isM
c000: 6f 6e 6f 5d 20 3f 20 5b 73 75 62 73 74 20 5c 0d  ono] ? [subst \.
c010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 55 73  .            {Us
c020: 65 72 20 49 64 3d 24 7b 75 73 65 72 7d 3b 50 61  er Id=${user};Pa
c030: 73 73 77 6f 72 64 3d 24 7b 70 61 73 73 77 6f 72  ssword=${passwor
c040: 64 7d 3b 7d 5d 20 3a 20 7b 49 6e 74 65 67 72 61  d};}] : {Integra
c050: 74 65 64 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  ted\..          
c060: 20 20 53 65 63 75 72 69 74 79 3d 53 53 50 49 3b    Security=SSPI;
c070: 7d 7d 5d 7d 5d 3b 20 23 20 4e 4f 54 45 3a 20 4d  }}]}]; # NOTE: M
c080: 69 63 72 6f 73 6f 66 74 20 53 51 4c 20 53 65 72  icrosoft SQL Ser
c090: 76 65 72 20 73 70 65 63 69 66 69 63 2e 0d 0a 20  ver specific... 
c0a0: 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 5b       } elseif {[
c0b0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
c0c0: 5f 64 61 74 61 62 61 73 65 5f 73 75 62 73 74 5d  _database_subst]
c0d0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
c0e0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
c0f0: 4f 54 45 3a 20 54 68 65 20 74 65 73 74 20 64 61  OTE: The test da
c100: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
c110: 6e 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65  n string must be
c120: 20 64 79 6e 61 6d 69 63 61 6c 6c 79 0d 0a 20 20   dynamically..  
c130: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 70 6f        #       po
c140: 73 74 2d 70 72 6f 63 65 73 73 65 64 20 75 73 69  st-processed usi
c150: 6e 67 20 5b 73 75 62 73 74 5d 2c 20 70 65 72 20  ng [subst], per 
c160: 72 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 61  request.  This a
c170: 6c 6c 6f 77 73 0d 0a 20 20 20 20 20 20 20 20 23  llows..        #
c180: 20 20 20 20 20 20 20 74 68 65 20 5b 63 75 73 74         the [cust
c190: 6f 6d 5d 20 74 65 73 74 20 64 61 74 61 62 61 73  om] test databas
c1a0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  e connection str
c1b0: 69 6e 67 20 74 6f 20 63 6f 6e 74 61 69 6e 0d 0a  ing to contain..
c1c0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
c1d0: 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20 74 68  references to th
c1e0: 65 20 6f 74 68 65 72 20 74 65 73 74 20 64 61 74  e other test dat
c1f0: 61 62 61 73 65 20 76 61 72 69 61 62 6c 65 73 20  abase variables 
c200: 73 65 74 75 70 0d 0a 20 20 20 20 20 20 20 20 23  setup..        #
c210: 20 20 20 20 20 20 20 62 79 20 74 68 69 73 20 74         by this t
c220: 65 73 74 20 70 72 6f 6c 6f 67 75 65 2e 0d 0a 20  est prologue... 
c230: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c240: 20 20 73 65 74 20 74 65 73 74 5f 64 61 74 61 62    set test_datab
c250: 61 73 65 20 5b 73 75 62 73 74 20 24 74 65 73 74  ase [subst $test
c260: 5f 64 61 74 61 62 61 73 65 5d 0d 0a 20 20 20 20  _database]..    
c270: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
c280: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65        # NOTE: Se
c290: 74 20 74 68 65 20 74 65 73 74 20 64 61 74 61 62  t the test datab
c2a0: 61 73 65 20 74 61 62 6c 65 2c 20 69 66 20 6e 65  ase table, if ne
c2b0: 63 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20  cessary...      
c2c0: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
c2d0: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
c2e0: 64 61 74 61 62 61 73 65 5f 74 61 62 6c 65 5d 7d  database_table]}
c2f0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
c300: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
c310: 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61  TE: Use the defa
c320: 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 61 62  ult database tab
c330: 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  le...        #..
c340: 20 20 20 20 20 20 20 20 73 65 74 20 74 65 73 74          set test
c350: 5f 64 61 74 61 62 61 73 65 5f 74 61 62 6c 65 20  _database_table 
c360: 65 61 67 6c 65 5f 73 71 6c 5f 74 65 73 74 5f 6f  eagle_sql_test_o
c370: 6b 5f 74 6f 5f 64 65 6c 65 74 65 0d 0a 20 20 20  k_to_delete..   
c380: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
c390: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 43  .      # NOTE: C
c3a0: 61 6e 20 77 65 20 61 63 63 65 73 73 20 74 68 65  an we access the
c3b0: 20 63 6f 6e 66 69 67 75 72 65 64 20 74 65 73 74   configured test
c3c0: 20 64 61 74 61 62 61 73 65 3f 0d 0a 20 20 20 20   database?..    
c3d0: 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
c3e0: 46 6f 72 44 61 74 61 62 61 73 65 20 24 74 65 73  ForDatabase $tes
c3f0: 74 5f 63 68 61 6e 6e 65 6c 20 24 74 65 73 74 5f  t_channel $test_
c400: 64 61 74 61 62 61 73 65 5f 74 79 70 65 20 24 74  database_type $t
c410: 65 73 74 5f 64 61 74 61 62 61 73 65 0d 0a 0d 0a  est_database....
c420: 20 20 20 20 20 20 75 6e 73 65 74 20 70 61 73 73        unset pass
c430: 77 6f 72 64 20 75 73 65 72 20 74 69 6d 65 6f 75  word user timeou
c440: 74 20 64 61 74 61 62 61 73 65 20 73 65 72 76 65  t database serve
c450: 72 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  r..    }....    
c460: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
c470: 61 73 20 73 79 6d 62 6f 6c 20 74 65 73 74 69 6e  as symbol testin
c480: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
c490: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
c4a0: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
c4b0: 65 78 69 73 74 73 20 6e 6f 28 61 73 73 65 6d 62  exists no(assemb
c4c0: 6c 79 53 79 6d 62 6f 6c 73 29 5d 7d 20 74 68 65  lySymbols)]} the
c4d0: 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
c4e0: 46 6f 72 53 79 6d 62 6f 6c 73 20 24 74 65 73 74  ForSymbols $test
c4f0: 5f 63 68 61 6e 6e 65 6c 20 5b 6c 69 6e 64 65 78  _channel [lindex
c500: 20 5b 69 6e 66 6f 20 61 73 73 65 6d 62 6c 79 5d   [info assembly]
c510: 20 65 6e 64 5d 20 61 73 73 65 6d 62 6c 79 0d 0a   end] assembly..
c520: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
c530: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
c540: 6f 62 6a 65 63 74 20 68 61 6e 64 6c 65 20 72 65  object handle re
c550: 66 65 72 65 6e 63 65 20 63 6f 75 6e 74 20 74 72  ference count tr
c560: 61 63 6b 69 6e 67 20 73 75 70 70 6f 72 74 20 62  acking support b
c570: 65 65 6e 20 64 69 73 61 62 6c 65 64 0d 0a 20 20  een disabled..  
c580: 20 20 23 20 20 20 20 20 20 20 28 61 74 20 63 6f    #       (at co
c590: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
c5a0: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
c5b0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65  nfo exists no(re
c5c0: 66 43 6f 75 6e 74 29 5d 7d 20 74 68 65 6e 20 7b  fCount)]} then {
c5d0: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
c5e0: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
c5f0: 74 73 20 22 65 78 63 65 6c 2d 2a 22 2c 20 22 6f  ts "excel-*", "o
c600: 62 6a 65 63 74 2d 32 2e 2a 22 2c 20 22 6f 62 6a  bject-2.*", "obj
c610: 65 63 74 2d 37 2e 31 22 2c 20 22 6f 62 6a 65 63  ect-7.1", "objec
c620: 74 2d 38 2e 2a 22 2c 0d 0a 20 20 20 20 20 20 23  t-8.*",..      #
c630: 20 20 20 20 20 20 20 61 6e 64 20 22 6f 62 6a 65         and "obje
c640: 63 74 2d 39 38 2e 2a 22 2e 0d 0a 20 20 20 20 20  ct-98.*"...     
c650: 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   #..      checkF
c660: 6f 72 52 65 66 65 72 65 6e 63 65 43 6f 75 6e 74  orReferenceCount
c670: 54 72 61 63 6b 69 6e 67 20 24 74 65 73 74 5f 63  Tracking $test_c
c680: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
c690: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
c6a0: 54 45 3a 20 48 61 73 20 63 6f 6d 70 69 6c 65 2f  TE: Has compile/
c6b0: 72 75 6e 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74  runtime option t
c6c0: 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
c6d0: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
c6e0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
c6f0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
c700: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 29 5d 7d  ompileOptions)]}
c710: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
c720: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
c730: 48 61 73 20 22 6b 6e 6f 77 6e 22 20 63 6f 6d 70  Has "known" comp
c740: 69 6c 65 20 6f 70 74 69 6f 6e 20 74 65 73 74 69  ile option testi
c750: 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
c760: 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
c770: 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
c780: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6b  info exists no(k
c790: 6e 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  nownCompileOptio
c7a0: 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ns)]} then {..  
c7b0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
c7c0: 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66   # NOTE: Check f
c7d0: 6f 72 20 61 6c 6c 20 22 6b 6e 6f 77 6e 22 20 63  or all "known" c
c7e0: 6f 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 73 2e 0d  ompile options..
c7f0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
c800: 20 20 20 20 63 68 65 63 6b 46 6f 72 4b 6e 6f 77      checkForKnow
c810: 6e 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 20  nCompileOptions 
c820: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
c830: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
c840: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c850: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 61    # NOTE: Has ca
c860: 6c 6c 62 61 63 6b 20 71 75 65 75 65 20 73 75 70  llback queue sup
c870: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
c880: 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  d (at compile-ti
c890: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
c8a0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
c8b0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
c8c0: 6d 70 69 6c 65 43 61 6c 6c 62 61 63 6b 51 75 65  mpileCallbackQue
c8d0: 75 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ue)]} then {..  
c8e0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
c8f0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
c900: 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e   tests "basic-1.
c910: 35 34 22 20 61 6e 64 20 22 63 6f 6d 6d 61 6e 64  54" and "command
c920: 73 2d 31 2e 34 22 2e 0d 0a 20 20 20 20 20 20 20  s-1.4"...       
c930: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
c940: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
c950: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
c960: 6e 65 6c 20 43 41 4c 4c 42 41 43 4b 5f 51 55 45  nel CALLBACK_QUE
c970: 55 45 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  UE..        }...
c980: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
c990: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
c9a0: 6c 65 67 61 63 79 20 43 41 53 20 70 6f 6c 69 63  legacy CAS polic
c9b0: 79 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  y support been e
c9c0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
c9d0: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
c9e0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
c9f0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
ca00: 6e 6f 28 63 6f 6d 70 69 6c 65 43 61 73 50 6f 6c  no(compileCasPol
ca10: 69 63 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  icy)]} then {.. 
ca20: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
ca30: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
ca40: 72 20 74 65 73 74 73 20 22 6c 6f 61 64 2d 31 2e  r tests "load-1.
ca50: 36 22 20 61 6e 64 20 22 6c 6f 61 64 2d 31 2e 37  6" and "load-1.7
ca60: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
ca70: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
ca80: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
ca90: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 43   $test_channel C
caa0: 41 53 5f 50 4f 4c 49 43 59 0d 0a 20 20 20 20 20  AS_POLICY..     
cab0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
cac0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
cad0: 45 3a 20 48 61 73 20 63 6f 6e 66 69 67 75 72 61  E: Has configura
cae0: 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65  tion support bee
caf0: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
cb00: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
cb10: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
cb20: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
cb30: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 43 6f 6e  ts no(compileCon
cb40: 66 69 67 75 72 61 74 69 6f 6e 29 5d 7d 20 74 68  figuration)]} th
cb50: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
cb60: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
cb70: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
cb80: 64 65 62 75 67 2d 31 2e 33 22 2c 20 22 6f 62 6a  debug-1.3", "obj
cb90: 65 63 74 2d 39 39 2e 31 22 2c 20 22 6f 62 6a 65  ect-99.1", "obje
cba0: 63 74 2d 31 31 2e 34 22 2c 0d 0a 20 20 20 20 20  ct-11.4",..     
cbb0: 20 20 20 20 20 23 20 20 20 20 20 20 20 61 6e 64       #       and
cbc0: 20 22 67 61 72 75 64 61 2d 31 2e 32 22 2e 0d 0a   "garuda-1.2"...
cbd0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
cbe0: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
cbf0: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
cc00: 73 74 5f 63 68 61 6e 6e 65 6c 20 43 4f 4e 46 49  st_channel CONFI
cc10: 47 55 52 41 54 49 4f 4e 0d 0a 20 20 20 20 20 20  GURATION..      
cc20: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
cc30: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
cc40: 3a 20 48 61 73 20 63 6f 6e 73 6f 6c 65 20 73 75  : Has console su
cc50: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
cc60: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
cc70: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
cc80: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
cc90: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
cca0: 6f 6d 70 69 6c 65 43 6f 6e 73 6f 6c 65 29 5d 7d  ompileConsole)]}
ccb0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
ccc0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
ccd0: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
cce0: 20 22 68 6f 73 74 2d 31 2e 32 22 2e 0d 0a 20 20   "host-1.2"...  
ccf0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
cd00: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
cd10: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
cd20: 5f 63 68 61 6e 6e 65 6c 20 43 4f 4e 53 4f 4c 45  _channel CONSOLE
cd30: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
cd40: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
cd50: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 64 61    # NOTE: Has da
cd60: 74 61 62 61 73 65 20 73 75 70 70 6f 72 74 20 62  tabase support b
cd70: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
cd80: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
cd90: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
cda0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
cdb0: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 44  ists no(compileD
cdc0: 61 74 61 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ata)]} then {.. 
cdd0: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
cde0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
cdf0: 72 20 74 65 73 74 73 20 22 73 71 6c 2d 31 2e 31  r tests "sql-1.1
ce00: 22 20 61 6e 64 20 22 75 70 76 61 72 2d 39 39 2e  " and "upvar-99.
ce10: 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  1"...          #
ce20: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
ce30: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
ce40: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
ce50: 44 41 54 41 0d 0a 20 20 20 20 20 20 20 20 7d 0d  DATA..        }.
ce60: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
ce70: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
ce80: 73 20 73 63 72 69 70 74 20 64 65 62 75 67 67 65  s script debugge
ce90: 72 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  r support been e
cea0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
ceb0: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
cec0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
ced0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
cee0: 6e 6f 28 63 6f 6d 70 69 6c 65 44 65 62 75 67 67  no(compileDebugg
cef0: 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  er)]} then {..  
cf00: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
cf10: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
cf20: 20 74 65 73 74 73 20 22 64 65 62 75 67 2d 31 2e   tests "debug-1.
cf30: 31 22 2c 20 22 64 65 62 75 67 2d 32 2e 31 22 2c  1", "debug-2.1",
cf40: 20 22 64 65 62 75 67 2d 33 2e 31 22 2c 0d 0a 20   "debug-3.1",.. 
cf50: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
cf60: 20 22 64 65 62 75 67 2d 34 2e 31 22 2c 20 61 6e   "debug-4.1", an
cf70: 64 20 22 70 72 6f 63 2d 32 2e 31 22 2e 0d 0a 20  d "proc-2.1"... 
cf80: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
cf90: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
cfa0: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
cfb0: 74 5f 63 68 61 6e 6e 65 6c 20 44 45 42 55 47 47  t_channel DEBUGG
cfc0: 45 52 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ER..        }...
cfd0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
cfe0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
cff0: 73 63 72 69 70 74 20 64 65 62 75 67 67 65 72 20  script debugger 
d000: 61 72 67 75 6d 65 6e 74 73 20 73 75 70 70 6f 72  arguments suppor
d010: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
d020: 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20  at..        #   
d030: 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65      compile-time
d040: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
d050: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
d060: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
d070: 69 6c 65 44 65 62 75 67 67 65 72 41 72 67 75 6d  ileDebuggerArgum
d080: 65 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ents)]} then {..
d090: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
d0a0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
d0b0: 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74  or tests "object
d0c0: 2d 35 2e 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  -5.1.*"...      
d0d0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
d0e0: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
d0f0: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
d100: 6e 6e 65 6c 20 44 45 42 55 47 47 45 52 5f 41 52  nnel DEBUGGER_AR
d110: 47 55 4d 45 4e 54 53 0d 0a 20 20 20 20 20 20 20  GUMENTS..       
d120: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
d130: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
d140: 20 48 61 73 20 73 63 72 69 70 74 20 62 72 65 61   Has script brea
d150: 6b 70 6f 69 6e 74 20 73 75 70 70 6f 72 74 20 62  kpoint support b
d160: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
d170: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
d180: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d190: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
d1a0: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 42  ists no(compileB
d1b0: 72 65 61 6b 70 6f 69 6e 74 73 29 5d 7d 20 74 68  reakpoints)]} th
d1c0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
d1d0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
d1e0: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 70  OTE: For test "p
d1f0: 72 6f 63 2d 32 2e 31 22 2e 0d 0a 20 20 20 20 20  roc-2.1"...     
d200: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
d210: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
d220: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
d230: 61 6e 6e 65 6c 20 42 52 45 41 4b 50 4f 49 4e 54  annel BREAKPOINT
d240: 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  S..        }....
d250: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d260: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 61     # NOTE: Has a
d270: 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d 61 69  pplication domai
d280: 6e 20 6d 61 6e 61 67 65 6d 65 6e 74 20 73 75 70  n management sup
d290: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
d2a0: 64 20 28 61 74 0d 0a 20 20 20 20 20 20 20 20 23  d (at..        #
d2b0: 20 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74         compile-t
d2c0: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
d2d0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
d2e0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
d2f0: 6f 6d 70 69 6c 65 41 70 70 44 6f 6d 61 69 6e 73  ompileAppDomains
d300: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
d310: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
d320: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
d330: 65 73 74 20 22 69 6e 74 65 72 70 2d 31 2e 32 37  est "interp-1.27
d340: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
d350: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
d360: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
d370: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 41   $test_channel A
d380: 50 50 44 4f 4d 41 49 4e 53 0d 0a 20 20 20 20 20  PPDOMAINS..     
d390: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d3a0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
d3b0: 45 3a 20 48 61 73 20 69 73 6f 6c 61 74 65 64 20  E: Has isolated 
d3c0: 69 6e 74 65 72 70 72 65 74 65 72 20 73 75 70 70  interpreter supp
d3d0: 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  ort been enabled
d3e0: 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   (at compile-tim
d3f0: 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e)?..        #..
d400: 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e          if {![in
d410: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d  fo exists no(com
d420: 70 69 6c 65 49 73 6f 6c 61 74 65 64 49 6e 74 65  pileIsolatedInte
d430: 72 70 72 65 74 65 72 73 29 5d 7d 20 74 68 65 6e  rpreters)]} then
d440: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
d450: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
d460: 45 3a 20 46 6f 72 20 74 65 73 74 20 22 78 61 6d  E: For test "xam
d470: 6c 2d 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20  l-1.2"...       
d480: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
d490: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
d4a0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
d4b0: 6e 65 6c 20 49 53 4f 4c 41 54 45 44 5f 49 4e 54  nel ISOLATED_INT
d4c0: 45 52 50 52 45 54 45 52 53 0d 0a 20 20 20 20 20  ERPRETERS..     
d4d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d4e0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
d4f0: 45 3a 20 48 61 73 20 65 78 70 72 65 73 73 69 6f  E: Has expressio
d500: 6e 20 66 6c 61 67 73 20 73 75 70 70 6f 72 74 20  n flags support 
d510: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
d520: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
d530: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
d540: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
d550: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
d560: 45 78 70 72 65 73 73 69 6f 6e 46 6c 61 67 73 29  ExpressionFlags)
d570: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
d580: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
d590: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
d5a0: 73 74 20 22 66 75 6e 63 74 69 6f 6e 2d 32 2e 31  st "function-2.1
d5b0: 36 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  6"...          #
d5c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
d5d0: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
d5e0: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
d5f0: 45 58 50 52 45 53 53 49 4f 4e 5f 46 4c 41 47 53  EXPRESSION_FLAGS
d600: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
d610: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
d620: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 69 73    # NOTE: Has is
d630: 6f 6c 61 74 65 64 20 70 6c 75 67 69 6e 20 73 75  olated plugin su
d640: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
d650: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
d660: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
d670: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
d680: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
d690: 6f 6d 70 69 6c 65 49 73 6f 6c 61 74 65 64 50 6c  ompileIsolatedPl
d6a0: 75 67 69 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  ugins)]} then {.
d6b0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
d6c0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
d6d0: 46 6f 72 20 74 65 73 74 20 22 6c 6f 61 64 2d 31  For test "load-1
d6e0: 2e 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20  .1.1"...        
d6f0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
d700: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
d710: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
d720: 65 6c 20 49 53 4f 4c 41 54 45 44 5f 50 4c 55 47  el ISOLATED_PLUG
d730: 49 4e 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  INS..        }..
d740: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
d750: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
d760: 20 50 6f 77 65 72 53 68 65 6c 6c 20 61 70 70 72   PowerShell appr
d770: 6f 76 65 64 2d 76 65 72 62 73 20 73 75 70 70 6f  oved-verbs suppo
d780: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
d790: 28 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20  (at..        #  
d7a0: 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d       compile-tim
d7b0: 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e)?..        #..
d7c0: 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e          if {![in
d7d0: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d  fo exists no(com
d7e0: 70 69 6c 65 41 70 70 72 6f 76 65 64 56 65 72 62  pileApprovedVerb
d7f0: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
d800: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
d810: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
d820: 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 34 2e 38  test "object-4.8
d830: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
d840: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
d850: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
d860: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 41   $test_channel A
d870: 50 50 52 4f 56 45 44 5f 56 45 52 42 53 0d 0a 20  PPROVED_VERBS.. 
d880: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
d890: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
d8a0: 20 4e 4f 54 45 3a 20 48 61 73 20 65 6d 62 65 64   NOTE: Has embed
d8b0: 64 65 64 20 6c 69 62 72 61 72 79 20 73 75 70 70  ded library supp
d8c0: 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  ort been enabled
d8d0: 20 28 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20   (at..        # 
d8e0: 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69        compile-ti
d8f0: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
d900: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
d910: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
d920: 6d 70 69 6c 65 45 6d 62 65 64 64 65 64 4c 69 62  mpileEmbeddedLib
d930: 72 61 72 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  rary)]} then {..
d940: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
d950: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
d960: 6f 72 20 74 65 73 74 20 22 69 6e 74 65 72 70 2d  or test "interp-
d970: 31 2e 34 30 30 22 2e 0d 0a 20 20 20 20 20 20 20  1.400"...       
d980: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
d990: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
d9a0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
d9b0: 6e 65 6c 20 45 4d 42 45 44 44 45 44 5f 4c 49 42  nel EMBEDDED_LIB
d9c0: 52 41 52 59 0d 0a 20 20 20 20 20 20 20 20 7d 0d  RARY..        }.
d9d0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
d9e0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
d9f0: 73 20 53 79 73 74 65 6d 2e 52 65 66 6c 65 63 74  s System.Reflect
da00: 69 6f 6e 2e 45 6d 69 74 20 73 75 70 70 6f 72 74  ion.Emit support
da10: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61   been enabled (a
da20: 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  t..        #    
da30: 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29     compile-time)
da40: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
da50: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
da60: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
da70: 6c 65 45 6d 69 74 29 5d 7d 20 74 68 65 6e 20 7b  leEmit)]} then {
da80: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
da90: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
daa0: 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f 6d 6d   For tests "comm
dab0: 61 6e 64 73 2d 31 2e 31 2e 2a 22 2c 20 22 64 65  ands-1.1.*", "de
dac0: 62 75 67 2d 39 2e 31 22 2c 20 22 6c 69 62 72 61  bug-9.1", "libra
dad0: 72 79 2d 2a 22 2c 0d 0a 20 20 20 20 20 20 20 20  ry-*",..        
dae0: 20 20 23 20 20 20 20 20 20 20 22 6f 62 6a 65 63    #       "objec
daf0: 74 2d 34 2e 31 30 22 2c 20 22 6f 62 6a 65 63 74  t-4.10", "object
db00: 2d 34 2e 31 31 22 2c 20 22 6f 62 6a 65 63 74 2d  -4.11", "object-
db10: 34 2e 31 32 22 2c 0d 0a 20 20 20 20 20 20 20 20  4.12",..        
db20: 20 20 23 20 20 20 20 20 20 20 22 6f 62 6a 65 63    #       "objec
db30: 74 2d 38 2e 31 3f 3f 22 2c 20 61 6e 64 20 22 70  t-8.1??", and "p
db40: 65 72 66 2d 31 30 31 2e 30 22 2e 0d 0a 20 20 20  erf-101.0"...   
db50: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
db60: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
db70: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
db80: 63 68 61 6e 6e 65 6c 20 45 4d 49 54 0d 0a 20 20  channel EMIT..  
db90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
dba0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
dbb0: 4e 4f 54 45 3a 20 48 61 73 20 2e 4e 45 54 20 53  NOTE: Has .NET S
dbc0: 74 61 6e 64 61 72 64 20 32 2e 30 20 73 75 70 70  tandard 2.0 supp
dbd0: 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  ort been enabled
dbe0: 20 28 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20   (at..        # 
dbf0: 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69        compile-ti
dc00: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
dc10: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
dc20: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
dc30: 6d 70 69 6c 65 4e 65 74 53 74 61 6e 64 61 72 64  mpileNetStandard
dc40: 32 30 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  20)]} then {..  
dc50: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
dc60: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
dc70: 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e   tests "basic-1.
dc80: 32 39 2e 2a 22 2c 20 22 62 61 73 69 63 2d 31 2e  29.*", "basic-1.
dc90: 33 30 2e 2a 22 2c 20 22 68 6f 73 74 2d 31 2e 31  30.*", "host-1.1
dca0: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20  ",..          # 
dcb0: 20 20 20 20 20 20 22 69 6e 74 65 72 70 2d 31 2e        "interp-1.
dcc0: 36 30 31 22 2c 20 22 72 65 64 65 66 69 6e 65 2d  601", "redefine-
dcd0: 36 2e 32 22 2c 20 61 6e 64 20 22 73 71 6c 2d 31  6.2", and "sql-1
dce0: 2e 31 37 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  .17"...         
dcf0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
dd00: 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
dd10: 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
dd20: 6c 20 4e 45 54 5f 53 54 41 4e 44 41 52 44 5f 32  l NET_STANDARD_2
dd30: 30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  0..        }....
dd40: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
dd50: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 4d     # NOTE: Has M
dd60: 6f 6e 6f 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ono support been
dd70: 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d   enabled (at com
dd80: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
dd90: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
dda0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
ddb0: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4d 6f 6e 6f  s no(compileMono
ddc0: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
ddd0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
dde0: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
ddf0: 65 73 74 20 22 6f 62 6a 65 63 74 2d 34 2e 31 33  est "object-4.13
de00: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
de10: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
de20: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
de30: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4d   $test_channel M
de40: 4f 4e 4f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ONO..        }..
de50: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
de60: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
de70: 20 57 69 6e 64 6f 77 73 20 73 75 70 70 6f 72 74   Windows support
de80: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61   been enabled (a
de90: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f  t compile-time)?
dea0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
deb0: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
dec0: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
ded0: 65 57 69 6e 64 6f 77 73 29 5d 7d 20 74 68 65 6e  eWindows)]} then
dee0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
def0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
df00: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 67 61  E: For tests "ga
df10: 72 75 64 61 2d 31 2e 31 22 20 61 6e 64 20 22 67  ruda-1.1" and "g
df20: 61 72 75 64 61 2d 31 2e 32 22 2e 0d 0a 20 20 20  aruda-1.2"...   
df30: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
df40: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
df50: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
df60: 63 68 61 6e 6e 65 6c 20 57 49 4e 44 4f 57 53 0d  channel WINDOWS.
df70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
df80: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
df90: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 57 69 6e   # NOTE: Has Win
dfa0: 64 6f 77 73 20 46 6f 72 6d 73 20 73 75 70 70 6f  dows Forms suppo
dfb0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
dfc0: 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  (at compile-time
dfd0: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
dfe0: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
dff0: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
e000: 69 6c 65 57 69 6e 46 6f 72 6d 73 29 5d 7d 20 74  ileWinForms)]} t
e010: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
e020: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
e030: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
e040: 22 6f 62 6a 65 63 74 2d 31 30 2e 32 31 22 2c 20  "object-10.21", 
e050: 22 74 63 6c 4c 6f 61 64 2d 31 2e 32 22 2c 20 22  "tclLoad-1.2", "
e060: 77 69 6e 46 6f 72 6d 73 2d 2a 2e 2a 22 2e 0d 0a  winForms-*.*"...
e070: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
e080: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
e090: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
e0a0: 73 74 5f 63 68 61 6e 6e 65 6c 20 57 49 4e 46 4f  st_channel WINFO
e0b0: 52 4d 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  RMS..        }..
e0c0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
e0d0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
e0e0: 20 6e 61 74 69 76 65 20 6c 69 62 72 61 72 79 20   native library 
e0f0: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
e100: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
e110: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
e120: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
e130: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
e140: 28 63 6f 6d 70 69 6c 65 4c 69 62 72 61 72 79 29  (compileLibrary)
e150: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
e160: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
e170: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
e180: 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31 2e  sts "commands-1.
e190: 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  *"...          #
e1a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
e1b0: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
e1c0: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
e1d0: 4c 49 42 52 41 52 59 0d 0a 20 20 20 20 20 20 20  LIBRARY..       
e1e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
e1f0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
e200: 20 48 61 73 20 6e 61 74 69 76 65 20 63 6f 64 65   Has native code
e210: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
e220: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
e230: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
e240: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
e250: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
e260: 6f 28 63 6f 6d 70 69 6c 65 4e 61 74 69 76 65 29  o(compileNative)
e270: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
e280: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
e290: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
e2a0: 73 74 73 20 22 64 65 62 75 67 2d 33 2e 32 22 2c  sts "debug-3.2",
e2b0: 20 22 65 78 70 72 2d 33 2e 32 22 2c 20 61 6e 64   "expr-3.2", and
e2c0: 20 22 68 6f 73 74 2d 31 2e 31 22 2e 0d 0a 20 20   "host-1.1"...  
e2d0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e2e0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
e2f0: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
e300: 5f 63 68 61 6e 6e 65 6c 20 4e 41 54 49 56 45 0d  _channel NATIVE.
e310: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
e320: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
e330: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74   # NOTE: Has nat
e340: 69 76 65 20 70 61 63 6b 61 67 65 20 73 75 70 70  ive package supp
e350: 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  ort been enabled
e360: 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   (at compile-tim
e370: 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e)?..        #..
e380: 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e          if {![in
e390: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d  fo exists no(com
e3a0: 70 69 6c 65 4e 61 74 69 76 65 50 61 63 6b 61 67  pileNativePackag
e3b0: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
e3c0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
e3d0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
e3e0: 74 65 73 74 73 20 22 67 61 72 75 64 61 2d 31 2e  tests "garuda-1.
e3f0: 31 22 20 61 6e 64 20 22 67 61 72 75 64 61 2d 31  1" and "garuda-1
e400: 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  .2"...          
e410: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65  #..          che
e420: 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69  ckForCompileOpti
e430: 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  on $test_channel
e440: 20 4e 41 54 49 56 45 5f 50 41 43 4b 41 47 45 0d   NATIVE_PACKAGE.
e450: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
e460: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
e470: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 65 74   # NOTE: Has net
e480: 77 6f 72 6b 20 73 75 70 70 6f 72 74 20 62 65 65  work support bee
e490: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
e4a0: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
e4b0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
e4c0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
e4d0: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e 65 74  ts no(compileNet
e4e0: 77 6f 72 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  work)]} then {..
e4f0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
e500: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
e510: 6f 72 20 74 65 73 74 73 20 22 63 6f 6d 6d 61 6e  or tests "comman
e520: 64 73 2d 31 2e 34 22 2c 20 22 73 6f 63 6b 65 74  ds-1.4", "socket
e530: 2d 31 2e 2a 22 2c 20 22 73 6f 63 6b 65 74 2d 32  -1.*", "socket-2
e540: 2e 31 22 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20  .1", and..      
e550: 20 20 20 20 23 20 20 20 20 20 20 20 22 73 6f 63      #       "soc
e560: 6b 65 74 2d 33 2e 31 22 2e 0d 0a 20 20 20 20 20  ket-3.1"...     
e570: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
e580: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
e590: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
e5a0: 61 6e 6e 65 6c 20 4e 45 54 57 4f 52 4b 0d 0a 20  annel NETWORK.. 
e5b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e5c0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e5d0: 20 4e 4f 54 45 3a 20 48 61 73 20 6e 6f 74 69 66   NOTE: Has notif
e5e0: 69 63 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  ication support 
e5f0: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
e600: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
e610: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
e620: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
e630: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
e640: 4e 6f 74 69 66 79 29 5d 7d 20 74 68 65 6e 20 7b  Notify)]} then {
e650: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
e660: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
e670: 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
e680: 2d 31 2e 37 35 22 2e 0d 0a 20 20 20 20 20 20 20  -1.75"...       
e690: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
e6a0: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
e6b0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
e6c0: 6e 65 6c 20 4e 4f 54 49 46 59 0d 0a 20 20 20 20  nel NOTIFY..    
e6d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e6e0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
e6f0: 54 45 3a 20 48 61 73 20 6e 6f 74 69 66 69 63 61  TE: Has notifica
e700: 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 20 73 75  tion argument su
e710: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
e720: 65 64 20 28 61 74 0d 0a 20 20 20 20 20 20 20 20  ed (at..        
e730: 23 20 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d  #       compile-
e740: 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20  time)?..        
e750: 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  #..        if {!
e760: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
e770: 63 6f 6d 70 69 6c 65 4e 6f 74 69 66 79 41 72 67  compileNotifyArg
e780: 75 6d 65 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b  uments)]} then {
e790: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
e7a0: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
e7b0: 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
e7c0: 2d 31 2e 37 35 22 2e 0d 0a 20 20 20 20 20 20 20  -1.75"...       
e7d0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
e7e0: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
e7f0: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
e800: 6e 65 6c 20 4e 4f 54 49 46 59 5f 41 52 47 55 4d  nel NOTIFY_ARGUM
e810: 45 4e 54 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ENTS..        }.
e820: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
e830: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
e840: 73 20 6e 61 74 69 76 65 20 54 63 6c 20 73 75 70  s native Tcl sup
e850: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
e860: 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  d (at compile-ti
e870: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
e880: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
e890: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
e8a0: 6d 70 69 6c 65 54 63 6c 29 5d 7d 20 74 68 65 6e  mpileTcl)]} then
e8b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
e8c0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
e8d0: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f  E: For tests "co
e8e0: 6d 6d 61 6e 64 73 2d 31 2e 31 2e 2a 22 2c 20 22  mmands-1.1.*", "
e8f0: 65 78 63 65 6c 2d 32 2e 32 22 2c 20 22 74 63 6c  excel-2.2", "tcl
e900: 43 61 6e 63 65 6c 2d 31 2e 31 22 2c 0d 0a 20 20  Cancel-1.1",..  
e910: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
e920: 22 74 63 6c 45 6e 63 6f 64 69 6e 67 2d 31 2e 2a  "tclEncoding-1.*
e930: 22 2c 20 22 74 63 6c 45 72 72 6f 72 49 6e 66 6f  ", "tclErrorInfo
e940: 2d 31 2e 2a 22 2c 20 22 74 63 6c 4c 6f 61 64 2d  -1.*", "tclLoad-
e950: 2a 2e 2a 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  *.*",..         
e960: 20 23 20 20 20 20 20 20 20 22 74 63 6c 52 65 73   #       "tclRes
e970: 65 74 43 61 6e 63 65 6c 2d 31 2e 31 22 2c 20 22  etCancel-1.1", "
e980: 74 63 6c 52 65 73 65 74 43 61 6e 63 65 6c 2d 32  tclResetCancel-2
e990: 2e 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  .1",..          
e9a0: 23 20 20 20 20 20 20 20 22 74 63 6c 52 65 73 65  #       "tclRese
e9b0: 74 43 61 6e 63 65 6c 2d 32 2e 32 22 2c 20 22 74  tCancel-2.2", "t
e9c0: 63 6c 52 65 73 65 74 43 61 6e 63 65 6c 2d 33 2e  clResetCancel-3.
e9d0: 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 23  1",..          #
e9e0: 20 20 20 20 20 20 20 22 74 63 6c 52 65 73 65 74         "tclReset
e9f0: 43 61 6e 63 65 6c 2d 34 2e 31 22 2c 20 22 74 63  Cancel-4.1", "tc
ea00: 6c 53 65 74 2d 31 2e 31 22 2c 20 61 6e 64 20 22  lSet-1.1", and "
ea10: 74 63 6c 53 75 62 73 74 2d 31 2e 31 22 2e 0d 0a  tclSubst-1.1"...
ea20: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
ea30: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
ea40: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
ea50: 73 74 5f 63 68 61 6e 6e 65 6c 20 54 43 4c 0d 0a  st_channel TCL..
ea60: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ea70: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
ea80: 23 20 4e 4f 54 45 3a 20 48 61 73 20 58 4d 4c 20  # NOTE: Has XML 
ea90: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
eaa0: 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65  bled (at compile
eab0: 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20  -time)?..       
eac0: 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b   #..        if {
ead0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
eae0: 28 63 6f 6d 70 69 6c 65 58 6d 6c 29 5d 7d 20 74  (compileXml)]} t
eaf0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
eb00: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
eb10: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
eb20: 22 63 6f 6d 6d 61 6e 64 73 2d 31 2e 34 22 2c 20  "commands-1.4", 
eb30: 22 6f 62 6a 65 63 74 2d 37 2e 33 22 20 61 6e 64  "object-7.3" and
eb40: 20 22 78 6d 6c 2d 31 2e 31 2e 2a 22 2e 0d 0a 20   "xml-1.1.*"... 
eb50: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
eb60: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
eb70: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
eb80: 74 5f 63 68 61 6e 6e 65 6c 20 58 4d 4c 0d 0a 20  t_channel XML.. 
eb90: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
eba0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
ebb0: 20 4e 4f 54 45 3a 20 48 61 73 20 73 65 72 69 61   NOTE: Has seria
ebc0: 6c 69 7a 61 74 69 6f 6e 20 73 75 70 70 6f 72 74  lization support
ebd0: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61   been enabled (a
ebe0: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f  t compile-time)?
ebf0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
ec00: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
ec10: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
ec20: 65 53 65 72 69 61 6c 69 7a 61 74 69 6f 6e 29 5d  eSerialization)]
ec30: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
ec40: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
ec50: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
ec60: 74 20 22 69 6e 74 65 72 70 2d 31 2e 31 30 22 2e  t "interp-1.10".
ec70: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
ec80: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
ec90: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
eca0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 53 45 52  test_channel SER
ecb0: 49 41 4c 49 5a 41 54 49 4f 4e 0d 0a 20 20 20 20  IALIZATION..    
ecc0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
ecd0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
ece0: 54 45 3a 20 48 61 73 20 72 65 6d 6f 74 69 6e 67  TE: Has remoting
ecf0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
ed00: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
ed10: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
ed20: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
ed30: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
ed40: 6f 28 63 6f 6d 70 69 6c 65 52 65 6d 6f 74 69 6e  o(compileRemotin
ed50: 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  g)]} then {..   
ed60: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ed70: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
ed80: 74 65 73 74 73 20 22 72 65 6d 6f 74 69 6e 67 53  tests "remotingS
ed90: 65 72 76 65 72 2d 31 2e 2a 22 2e 0d 0a 20 20 20  erver-1.*"...   
eda0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
edb0: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
edc0: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
edd0: 63 68 61 6e 6e 65 6c 20 52 45 4d 4f 54 49 4e 47  channel REMOTING
ede0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
edf0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
ee00: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 72 65    # NOTE: Has re
ee10: 73 75 6c 74 20 73 69 7a 65 20 6c 69 6d 69 74 20  sult size limit 
ee20: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61  support been ena
ee30: 62 6c 65 64 20 28 61 74 0d 0a 20 20 20 20 20 20  bled (at..      
ee40: 20 20 23 20 20 20 20 20 20 20 63 6f 6d 70 69 6c    #       compil
ee50: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
ee60: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
ee70: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
ee80: 6f 28 63 6f 6d 70 69 6c 65 52 65 73 75 6c 74 4c  o(compileResultL
ee90: 69 6d 69 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  imits)]} then {.
eea0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
eeb0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
eec0: 46 6f 72 20 74 65 73 74 73 20 22 69 6e 74 65 72  For tests "inter
eed0: 70 2d 31 2e 35 30 30 22 20 61 6e 64 20 22 69 6e  p-1.500" and "in
eee0: 74 65 72 70 2d 31 2e 35 30 31 22 2e 0d 0a 20 20  terp-1.501"...  
eef0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ef00: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
ef10: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
ef20: 5f 63 68 61 6e 6e 65 6c 20 52 45 53 55 4c 54 5f  _channel RESULT_
ef30: 4c 49 4d 49 54 53 0d 0a 20 20 20 20 20 20 20 20  LIMITS..        
ef40: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
ef50: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
ef60: 48 61 73 20 64 65 64 69 63 61 74 65 64 20 74 65  Has dedicated te
ef70: 73 74 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  st support been 
ef80: 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70  enabled (at comp
ef90: 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20  ile-time)?..    
efa0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69      #..        i
efb0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
efc0: 20 6e 6f 28 63 6f 6d 70 69 6c 65 54 65 73 74 29   no(compileTest)
efd0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
efe0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
eff0: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
f000: 73 74 73 20 22 62 61 73 69 63 2d 31 2e 32 30 22  sts "basic-1.20"
f010: 2c 20 22 62 61 73 69 63 2d 31 2e 32 31 22 2c 20  , "basic-1.21", 
f020: 22 66 75 6e 63 74 69 6f 6e 2d 31 2e 31 22 2c 0d  "function-1.1",.
f030: 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20  .          #    
f040: 20 20 20 22 6f 62 6a 65 63 74 2d 32 2e 31 22 2c     "object-2.1",
f050: 20 22 6f 62 6a 65 63 74 2d 33 2e 31 22 2c 20 22   "object-3.1", "
f060: 6f 62 6a 65 63 74 2d 34 2e 31 22 2c 20 22 6f 62  object-4.1", "ob
f070: 6a 65 63 74 2d 37 2e 31 22 2c 0d 0a 20 20 20 20  ject-7.1",..    
f080: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 22 6f        #       "o
f090: 62 6a 65 63 74 2d 37 2e 32 22 2c 20 22 6f 62 6a  bject-7.2", "obj
f0a0: 65 63 74 2d 37 2e 34 22 2c 20 22 6f 62 6a 65 63  ect-7.4", "objec
f0b0: 74 2d 31 34 2e 34 22 2c 20 22 6f 62 6a 65 63 74  t-14.4", "object
f0c0: 2d 31 34 2e 35 22 2c 0d 0a 20 20 20 20 20 20 20  -14.5",..       
f0d0: 20 20 20 23 20 20 20 20 20 20 20 22 6f 62 6a 65     #       "obje
f0e0: 63 74 2d 31 34 2e 36 22 2c 20 22 72 65 6d 6f 74  ct-14.6", "remot
f0f0: 69 6e 67 53 65 72 76 65 72 2d 31 2e 2a 22 2c 20  ingServer-1.*", 
f100: 61 6e 64 20 22 64 65 62 75 67 2d 35 2e 2a 22 2e  and "debug-5.*".
f110: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
f120: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
f130: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
f140: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 54 45 53  test_channel TES
f150: 54 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  T..        }....
f160: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
f170: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 74     # NOTE: Has t
f180: 68 72 65 61 64 69 6e 67 20 73 75 70 70 6f 72 74  hreading support
f190: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61   been enabled (a
f1a0: 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f  t compile-time)?
f1b0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
f1c0: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
f1d0: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
f1e0: 65 54 68 72 65 61 64 69 6e 67 29 5d 7d 20 74 68  eThreading)]} th
f1f0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
f200: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
f210: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
f220: 6f 62 6a 65 63 74 2d 31 30 2e 32 22 20 61 6e 64  object-10.2" and
f230: 20 22 6f 62 6a 65 63 74 2d 31 30 2e 33 22 2e 0d   "object-10.3"..
f240: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
f250: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
f260: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74  CompileOption $t
f270: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 54 48 52 45  est_channel THRE
f280: 41 44 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 7d  ADING..        }
f290: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
f2a0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48         # NOTE: H
f2b0: 61 73 20 54 63 6c 20 74 68 72 65 61 64 69 6e 67  as Tcl threading
f2c0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
f2d0: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
f2e0: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
f2f0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
f300: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
f310: 6f 28 63 6f 6d 70 69 6c 65 54 63 6c 54 68 72 65  o(compileTclThre
f320: 61 64 65 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  aded)]} then {..
f330: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
f340: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
f350: 6f 72 20 74 65 73 74 73 20 22 74 63 6c 4c 6f 61  or tests "tclLoa
f360: 64 2d 33 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20  d-3.*"...       
f370: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
f380: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
f390: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
f3a0: 6e 65 6c 20 54 43 4c 5f 54 48 52 45 41 44 45 44  nel TCL_THREADED
f3b0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
f3c0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
f3d0: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 54 63    # NOTE: Has Tc
f3e0: 6c 20 69 73 6f 6c 61 74 65 64 20 69 6e 74 65 72  l isolated inter
f3f0: 70 72 65 74 65 72 20 74 68 72 65 61 64 20 73 75  preter thread su
f400: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
f410: 65 64 20 28 61 74 0d 0a 20 20 20 20 20 20 20 20  ed (at..        
f420: 23 20 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d  #       compile-
f430: 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20  time)?..        
f440: 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  #..        if {!
f450: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
f460: 63 6f 6d 70 69 6c 65 54 63 6c 54 68 72 65 61 64  compileTclThread
f470: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
f480: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
f490: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
f4a0: 74 65 73 74 73 20 22 74 63 6c 4c 6f 61 64 2d 33  tests "tclLoad-3
f4b0: 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  .*"...          
f4c0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65  #..          che
f4d0: 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69  ckForCompileOpti
f4e0: 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  on $test_channel
f4f0: 20 54 43 4c 5f 54 48 52 45 41 44 53 0d 0a 20 20   TCL_THREADS..  
f500: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f510: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
f520: 4e 4f 54 45 3a 20 48 61 73 20 47 44 49 2b 20 64  NOTE: Has GDI+ d
f530: 72 61 77 69 6e 67 20 73 75 70 70 6f 72 74 20 62  rawing support b
f540: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
f550: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
f560: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
f570: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
f580: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 44  ists no(compileD
f590: 72 61 77 69 6e 67 29 5d 7d 20 74 68 65 6e 20 7b  rawing)]} then {
f5a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
f5b0: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
f5c0: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
f5d0: 44 52 41 57 49 4e 47 0d 0a 20 20 20 20 20 20 20  DRAWING..       
f5e0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
f5f0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
f600: 20 48 61 73 20 72 75 6e 74 69 6d 65 20 6c 69 63   Has runtime lic
f610: 65 6e 73 65 20 63 68 65 63 6b 69 6e 67 20 73 75  ense checking su
f620: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
f630: 6c 65 64 20 28 61 74 0d 0a 20 20 20 20 20 20 20  led (at..       
f640: 20 23 20 20 20 20 20 20 20 63 6f 6d 70 69 6c 65   #       compile
f650: 2d 74 69 6d 65 29 3f 20 20 54 68 69 73 20 6f 6e  -time)?  This on
f660: 6c 79 20 61 70 70 6c 69 65 73 20 74 6f 20 74 68  ly applies to th
f670: 69 72 64 2d 70 61 72 74 79 20 70 6c 75 67 69 6e  ird-party plugin
f680: 73 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  s..        #    
f690: 20 20 20 61 6e 64 20 61 70 70 6c 69 63 61 74 69     and applicati
f6a0: 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  ons...        #.
f6b0: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
f6c0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
f6d0: 6d 70 69 6c 65 4c 69 63 65 6e 73 69 6e 67 29 5d  mpileLicensing)]
f6e0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
f6f0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
f700: 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73   # NOTE: This is
f710: 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
f720: 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73  sed by any tests
f730: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
f740: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
f750: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
f760: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4c 49  $test_channel LI
f770: 43 45 4e 53 49 4e 47 0d 0a 20 20 20 20 20 20 20  CENSING..       
f780: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
f790: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
f7a0: 20 48 61 73 20 72 75 6e 74 69 6d 65 20 22 6c 69   Has runtime "li
f7b0: 6d 69 74 65 64 20 65 64 69 74 69 6f 6e 22 20 63  mited edition" c
f7c0: 68 65 63 6b 69 6e 67 20 73 75 70 70 6f 72 74 20  hecking support 
f7d0: 62 65 65 6e 0d 0a 20 20 20 20 20 20 20 20 23 20  been..        # 
f7e0: 20 20 20 20 20 20 64 69 73 61 62 6c 65 64 20 28        disabled (
f7f0: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
f800: 3f 20 20 54 68 69 73 20 6f 6e 6c 79 20 61 70 70  ?  This only app
f810: 6c 69 65 73 20 74 6f 0d 0a 20 20 20 20 20 20 20  lies to..       
f820: 20 23 20 20 20 20 20 20 20 74 68 69 72 64 2d 70   #       third-p
f830: 61 72 74 79 20 70 6c 75 67 69 6e 73 20 61 6e 64  arty plugins and
f840: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0d 0a   applications...
f850: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
f860: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
f870: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4c  ists no(compileL
f880: 69 6d 69 74 65 64 45 64 69 74 69 6f 6e 29 5d 7d  imitedEdition)]}
f890: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
f8a0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
f8b0: 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20  # NOTE: This is 
f8c0: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73  not currently us
f8d0: 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e  ed by any tests.
f8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
f8f0: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
f900: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
f910: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4c 49 4d  test_channel LIM
f920: 49 54 45 44 5f 45 44 49 54 49 4f 4e 0d 0a 20 20  ITED_EDITION..  
f930: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
f940: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
f950: 4e 4f 54 45 3a 20 48 61 73 20 72 75 6e 74 69 6d  NOTE: Has runtim
f960: 65 20 22 64 65 6d 6f 20 65 64 69 74 69 6f 6e 22  e "demo edition"
f970: 20 63 68 65 63 6b 69 6e 67 20 73 75 70 70 6f 72   checking suppor
f980: 74 20 62 65 65 6e 0d 0a 20 20 20 20 20 20 20 20  t been..        
f990: 23 20 20 20 20 20 20 20 64 69 73 61 62 6c 65 64  #       disabled
f9a0: 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   (at compile-tim
f9b0: 65 29 3f 20 20 54 68 69 73 20 6f 6e 6c 79 20 61  e)?  This only a
f9c0: 70 70 6c 69 65 73 20 74 6f 0d 0a 20 20 20 20 20  pplies to..     
f9d0: 20 20 20 23 20 20 20 20 20 20 20 74 68 69 72 64     #       third
f9e0: 2d 70 61 72 74 79 20 70 6c 75 67 69 6e 73 20 61  -party plugins a
f9f0: 6e 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e  nd applications.
fa00: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
fa10: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
fa20: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
fa30: 65 44 65 6d 6f 45 64 69 74 69 6f 6e 29 5d 7d 20  eDemoEdition)]} 
fa40: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
fa50: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
fa60: 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6e   NOTE: This is n
fa70: 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65  ot currently use
fa80: 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e 0d  d by any tests..
fa90: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
faa0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
fab0: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74  CompileOption $t
fac0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 44 45 4d 4f  est_channel DEMO
fad0: 5f 45 44 49 54 49 4f 4e 0d 0a 20 20 20 20 20 20  _EDITION..      
fae0: 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20    }..      }..  
faf0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
fb00: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 74 65    # NOTE: Has te
fb10: 73 74 69 6e 67 20 75 73 69 6e 67 20 74 68 65 20  sting using the 
fb20: 43 23 20 63 6f 6d 70 69 6c 65 72 20 62 65 65 6e  C# compiler been
fb30: 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
fb40: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
fb50: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63  o exists no(chec
fb60: 6b 46 6f 72 43 6f 6d 70 69 6c 65 43 53 68 61 72  kForCompileCShar
fb70: 70 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  p)]} then {..   
fb80: 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69     checkForCompi
fb90: 6c 65 43 53 68 61 72 70 20 24 74 65 73 74 5f 63  leCSharp $test_c
fba0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
fbb0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
fbc0: 54 45 3a 20 48 61 73 20 64 79 6e 61 6d 69 63 20  TE: Has dynamic 
fbd0: 6c 6f 61 64 69 6e 67 20 74 65 73 74 69 6e 67 20  loading testing 
fbe0: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
fbf0: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
fc00: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
fc10: 69 73 74 73 20 6e 6f 28 64 79 6e 61 6d 69 63 29  ists no(dynamic)
fc20: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
fc30: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
fc40: 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f 6d  : For tests "com
fc50: 6d 61 6e 64 73 2d 31 2e 31 2e 2a 22 2c 20 22 6c  mands-1.1.*", "l
fc60: 69 62 72 61 72 79 2d 33 2e 2a 22 2c 20 61 6e 64  ibrary-3.*", and
fc70: 20 22 74 63 6c 2a 2d 2a 2e 2a 22 2e 0d 0a 20 20   "tcl*-*.*"...  
fc80: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65      #..      che
fc90: 63 6b 46 6f 72 44 79 6e 61 6d 69 63 4c 6f 61 64  ckForDynamicLoad
fca0: 69 6e 67 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ing $test_channe
fcb0: 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  l..    }....    
fcc0: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
fcd0: 61 73 20 54 63 6c 20 74 65 73 74 69 6e 67 20 73  as Tcl testing s
fce0: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
fcf0: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
fd00: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
fd10: 73 74 73 20 6e 6f 28 74 63 6c 29 5d 7d 20 74 68  sts no(tcl)]} th
fd20: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b  en {..      if {
fd30: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
fd40: 28 74 63 6c 49 6e 73 74 61 6c 6c 73 29 5d 7d 20  (tclInstalls)]} 
fd50: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
fd60: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
fd70: 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63 6f  E: For tests "co
fd80: 6d 6d 61 6e 64 73 2d 31 2e 31 2e 2a 22 2c 20 22  mmands-1.1.*", "
fd90: 6c 69 62 72 61 72 79 2d 33 2e 2a 22 2c 20 61 6e  library-3.*", an
fda0: 64 20 22 74 63 6c 2a 2d 2a 2e 2a 22 2e 0d 0a 20  d "tcl*-*.*"... 
fdb0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
fdc0: 20 20 63 68 65 63 6b 46 6f 72 54 63 6c 49 6e 73    checkForTclIns
fdd0: 74 61 6c 6c 73 20 24 74 65 73 74 5f 63 68 61 6e  talls $test_chan
fde0: 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  nel..      }....
fdf0: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
fe00: 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 52 65   exists no(tclRe
fe10: 61 64 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ady)]} then {.. 
fe20: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54         checkForT
fe30: 63 6c 52 65 61 64 79 20 24 74 65 73 74 5f 63 68  clReady $test_ch
fe40: 61 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a  annel..      }..
fe50: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
fe60: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c  fo exists no(tcl
fe70: 53 65 6c 65 63 74 29 5d 7d 20 74 68 65 6e 20 7b  Select)]} then {
fe80: 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
fe90: 6f 72 54 63 6c 53 65 6c 65 63 74 20 24 74 65 73  orTclSelect $tes
fea0: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 20  t_channel..     
feb0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b   }....      if {
fec0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
fed0: 28 74 63 6c 53 68 65 6c 6c 29 5d 7d 20 74 68 65  (tclShell)]} the
fee0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
fef0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
ff00: 46 6f 72 20 74 65 73 74 20 22 67 61 72 75 64 61  For test "garuda
ff10: 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20  -1.1"...        
ff20: 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
ff30: 46 6f 72 54 63 6c 53 68 65 6c 6c 20 24 74 65 73  ForTclShell $tes
ff40: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 20  t_channel..     
ff50: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b   }....      if {
ff60: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
ff70: 28 74 6b 50 61 63 6b 61 67 65 29 5d 7d 20 74 68  (tkPackage)]} th
ff80: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
ff90: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
ffa0: 20 46 6f 72 20 74 65 73 74 20 22 74 63 6c 4c 6f   For test "tclLo
ffb0: 61 64 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20  ad-1.1"...      
ffc0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
ffd0: 63 6b 46 6f 72 54 6b 50 61 63 6b 61 67 65 20 24  ckForTkPackage $
ffe0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
fff0: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
10000 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
10010 45 3a 20 48 61 73 20 63 75 73 74 6f 6d 20 74 65  E: Has custom te
10020 73 74 20 6d 65 74 68 6f 64 20 73 75 70 70 6f 72  st method suppor
10030 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
10040 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
10050 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
10060 6f 28 63 6f 72 65 29 5d 20 26 26 20 21 5b 69 6e  o(core)] && ![in
10070 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
10080 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
10090 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
100a0 54 45 3a 20 48 61 73 20 50 61 63 6b 61 67 65 43  TE: Has PackageC
100b0 61 6c 6c 62 61 63 6b 20 74 65 73 74 69 6e 67 20  allback testing 
100c0 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
100d0 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
100e0 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
100f0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
10100 50 61 63 6b 61 67 65 43 61 6c 6c 62 61 63 6b 29  PackageCallback)
10110 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
10120 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
10130 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
10140 70 61 63 6b 61 67 65 2d 32 2e 31 22 2e 0d 0a 20  package-2.1"... 
10150 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
10160 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
10170 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
10180 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
10190 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
101a0 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53 65           *TestSe
101b0 74 50 61 63 6b 61 67 65 46 61 6c 6c 62 61 63 6b  tPackageFallback
101c0 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20 20 20  Callback*..     
101d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
101e0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
101f0 20 45 78 65 63 75 74 65 43 61 6c 6c 62 61 63 6b   ExecuteCallback
10200 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
10210 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
10220 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
10230 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
10240 73 20 6e 6f 28 74 65 73 74 45 78 65 63 75 74 65  s no(testExecute
10250 43 61 6c 6c 62 61 63 6b 29 5d 7d 20 74 68 65 6e  Callback)]} then
10260 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
10270 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
10280 6f 72 20 74 65 73 74 73 20 22 65 78 65 63 75 74  or tests "execut
10290 65 43 61 6c 6c 62 61 63 6b 2d 31 2e 2a 22 2e 0d  eCallback-1.*"..
102a0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
102b0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
102c0 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
102d0 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
102e0 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
102f0 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
10300 41 64 64 45 78 65 63 75 74 65 43 61 6c 6c 62 61  AddExecuteCallba
10310 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  ck*....        c
10320 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
10330 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
10340 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
10350 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
10360 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63 75        *TestExecu
10370 74 65 43 61 6c 6c 62 61 63 6b 31 2a 0d 0a 0d 0a  teCallback1*....
10380 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
10390 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
103a0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
103b0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
103c0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
103d0 54 65 73 74 45 78 65 63 75 74 65 43 61 6c 6c 62  TestExecuteCallb
103e0 61 63 6b 32 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  ack2*..      }..
103f0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
10400 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 57 72 69   # NOTE: Has Wri
10410 74 65 48 65 61 64 65 72 20 74 65 73 74 69 6e 67  teHeader testing
10420 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
10430 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
10440 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
10450 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
10460 74 57 72 69 74 65 48 65 61 64 65 72 29 5d 7d 20  tWriteHeader)]} 
10470 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
10480 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
10490 45 3a 20 46 6f 72 20 74 65 73 74 20 22 68 6f 73  E: For test "hos
104a0 74 2d 31 2e 35 22 2e 0d 0a 20 20 20 20 20 20 20  t-1.5"...       
104b0 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
104c0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
104d0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
104e0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
104f0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
10500 20 20 20 2a 54 65 73 74 44 69 73 70 6f 73 65 64     *TestDisposed
10510 57 72 69 74 65 48 65 61 64 65 72 2a 0d 0a 20 20  WriteHeader*..  
10520 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
10530 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
10540 48 61 73 20 6f 70 74 69 6f 6e 61 6c 20 70 61 72  Has optional par
10550 61 6d 65 74 65 72 20 74 65 73 74 69 6e 67 20 73  ameter testing s
10560 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
10570 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
10580 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
10590 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 4f   exists no(testO
105a0 70 74 69 6f 6e 61 6c 50 61 72 61 6d 65 74 65 72  ptionalParameter
105b0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
105c0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
105d0 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
105e0 20 22 6f 62 6a 65 63 74 2d 32 2e 38 31 22 2c 20   "object-2.81", 
105f0 22 6f 62 6a 65 63 74 2d 32 2e 38 32 22 2c 20 22  "object-2.82", "
10600 6f 62 6a 65 63 74 2d 32 2e 38 33 22 2c 0d 0a 20  object-2.83",.. 
10610 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 61         #       a
10620 6e 64 20 22 6f 62 6a 65 63 74 2d 32 2e 38 34 22  nd "object-2.84"
10630 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
10640 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
10650 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
10660 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
10670 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
10680 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
10690 73 74 4f 70 74 69 6f 6e 61 6c 50 61 72 61 6d 65  stOptionalParame
106a0 74 65 72 30 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  ter0*....       
106b0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
106c0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
106d0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
106e0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
106f0 20 20 20 20 20 20 20 20 2a 54 65 73 74 4f 70 74          *TestOpt
10700 69 6f 6e 61 6c 50 61 72 61 6d 65 74 65 72 31 2a  ionalParameter1*
10710 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
10720 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
10730 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
10740 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
10750 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
10760 20 20 20 2a 54 65 73 74 4f 70 74 69 6f 6e 61 6c     *TestOptional
10770 50 61 72 61 6d 65 74 65 72 32 2a 0d 0a 0d 0a 20  Parameter2*.... 
10780 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
10790 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
107a0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
107b0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
107c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
107d0 65 73 74 4f 70 74 69 6f 6e 61 6c 50 61 72 61 6d  estOptionalParam
107e0 65 74 65 72 5a 2a 0d 0a 20 20 20 20 20 20 7d 0d  eterZ*..      }.
107f0 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
10800 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 70 6c    # NOTE: Has pl
10810 75 67 69 6e 20 70 6f 6c 69 63 79 20 74 65 73 74  ugin policy test
10820 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
10830 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
10840 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
10850 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
10860 74 65 73 74 50 6c 75 67 69 6e 50 6f 6c 69 63 79  testPluginPolicy
10870 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
10880 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
10890 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
108a0 20 22 6c 6f 61 64 2d 32 2e 30 22 20 61 6e 64 20   "load-2.0" and 
108b0 22 6c 6f 61 64 2d 32 2e 31 22 2e 0d 0a 20 20 20  "load-2.1"...   
108c0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
108d0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
108e0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
108f0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
10900 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
10910 20 20 20 20 20 20 20 2a 54 65 73 74 41 64 64 4c         *TestAddL
10920 6f 61 64 50 6c 75 67 69 6e 50 6f 6c 69 63 79 2a  oadPluginPolicy*
10930 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
10940 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
10950 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
10960 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
10970 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
10980 20 20 20 2a 54 65 73 74 4c 6f 61 64 50 6c 75 67     *TestLoadPlug
10990 69 6e 50 6f 6c 69 63 79 2a 0d 0a 20 20 20 20 20  inPolicy*..     
109a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
109b0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
109c0 20 73 63 72 69 70 74 20 73 74 72 65 61 6d 20 74   script stream t
109d0 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
109e0 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
109f0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
10a00 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
10a10 6e 6f 28 74 65 73 74 53 63 72 69 70 74 53 74 72  no(testScriptStr
10a20 65 61 6d 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  eam)]} then {.. 
10a30 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
10a40 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
10a50 73 74 73 20 22 62 61 73 69 63 2d 31 2e 34 36 22  sts "basic-1.46"
10a60 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 34 37   and "basic-1.47
10a70 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
10a80 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
10a90 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
10aa0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
10ab0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
10ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
10ad0 65 73 74 53 63 72 69 70 74 53 74 72 65 61 6d 2a  estScriptStream*
10ae0 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
10af0 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
10b00 54 45 3a 20 48 61 73 20 63 6f 6d 70 6c 61 69 6e  TE: Has complain
10b10 74 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  t testing suppor
10b20 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
10b30 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
10b40 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
10b50 74 73 20 6e 6f 28 74 65 73 74 43 6f 6d 70 6c 61  ts no(testCompla
10b60 69 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  in)]} then {..  
10b70 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
10b80 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
10b90 74 73 20 22 64 65 62 75 67 2d 31 2e 39 38 22 20  ts "debug-1.98" 
10ba0 61 6e 64 20 22 64 65 62 75 67 2d 31 2e 39 39 22  and "debug-1.99"
10bb0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
10bc0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
10bd0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
10be0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
10bf0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
10c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
10c10 73 74 53 65 74 43 6f 6d 70 6c 61 69 6e 43 61 6c  stSetComplainCal
10c20 6c 62 61 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20  lback*....      
10c30 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
10c40 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
10c50 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
10c60 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
10c70 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 43 6f           *TestCo
10c80 6d 70 6c 61 69 6e 43 61 6c 6c 62 61 63 6b 54 68  mplainCallbackTh
10c90 72 6f 77 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  row*....        
10ca0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
10cb0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
10cc0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
10cd0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
10ce0 20 20 20 20 20 20 20 2a 54 65 73 74 43 6f 6d 70         *TestComp
10cf0 6c 61 69 6e 43 61 6c 6c 62 61 63 6b 4e 6f 54 68  lainCallbackNoTh
10d00 72 6f 77 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  row*..      }...
10d10 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
10d20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 65 77 20  # NOTE: Has new 
10d30 69 6e 74 65 72 70 72 65 74 65 72 20 63 61 6c 6c  interpreter call
10d40 62 61 63 6b 20 74 65 73 74 69 6e 67 20 73 75 70  back testing sup
10d50 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
10d60 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ed?..      #..  
10d70 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
10d80 78 69 73 74 73 20 6e 6f 28 74 65 73 74 4e 65 77  xists no(testNew
10d90 49 6e 74 65 72 70 72 65 74 65 72 29 5d 7d 20 74  Interpreter)]} t
10da0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
10db0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
10dc0 3a 20 46 6f 72 20 74 65 73 74 73 20 22 69 6e 74  : For tests "int
10dd0 65 72 70 2d 31 2e 31 30 31 22 20 61 6e 64 20 22  erp-1.101" and "
10de0 69 6e 74 65 72 70 2d 31 2e 31 30 32 22 2e 0d 0a  interp-1.102"...
10df0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
10e00 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
10e10 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
10e20 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
10e30 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
10e40 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
10e50 65 74 4e 65 77 49 6e 74 65 72 70 72 65 74 65 72  etNewInterpreter
10e60 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a 20 20 20  Callback*....   
10e70 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
10e80 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
10e90 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
10ea0 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
10eb0 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
10ec0 74 4e 65 77 49 6e 74 65 72 70 72 65 74 65 72 43  tNewInterpreterC
10ed0 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20 20 20 20  allback*..      
10ee0 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
10ef0 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
10f00 75 73 65 20 69 6e 74 65 72 70 72 65 74 65 72 20  use interpreter 
10f10 63 61 6c 6c 62 61 63 6b 20 74 65 73 74 69 6e 67  callback testing
10f20 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
10f30 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
10f40 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
10f50 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
10f60 74 55 73 65 49 6e 74 65 72 70 72 65 74 65 72 29  tUseInterpreter)
10f70 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
10f80 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
10f90 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
10fa0 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
10fb0 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
10fc0 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
10fd0 65 74 55 73 65 49 6e 74 65 72 70 72 65 74 65 72  etUseInterpreter
10fe0 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a 20 20 20  Callback*....   
10ff0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
11000 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
11010 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
11020 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
11030 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
11040 74 55 73 65 49 6e 74 65 72 70 72 65 74 65 72 43  tUseInterpreterC
11050 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20 20 20 20  allback*..      
11060 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
11070 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
11080 63 75 73 74 6f 6d 20 6d 61 74 63 68 20 6d 6f 64  custom match mod
11090 65 20 74 65 73 74 69 6e 67 20 62 65 65 6e 20 64  e testing been d
110a0 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
110b0 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
110c0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
110d0 73 74 4d 61 74 63 68 4d 6f 64 65 29 5d 7d 20 74  stMatchMode)]} t
110e0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
110f0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
11100 3a 20 46 6f 72 20 74 65 73 74 20 22 73 74 72 69  : For test "stri
11110 6e 67 4d 61 74 63 68 2d 31 30 31 2e 31 22 2e 0d  ngMatch-101.1"..
11120 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
11130 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
11140 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
11150 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
11160 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
11170 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
11180 53 65 74 4d 61 74 63 68 43 61 6c 6c 62 61 63 6b  SetMatchCallback
11190 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  *..      }....  
111a0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
111b0 4f 54 45 3a 20 48 61 73 20 77 65 62 20 63 6c 69  OTE: Has web cli
111c0 65 6e 74 20 74 65 73 74 69 6e 67 20 62 65 65 6e  ent testing been
111d0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
111e0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
111f0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
11200 74 65 73 74 57 65 62 43 6c 69 65 6e 74 29 5d 7d  testWebClient)]}
11210 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
11220 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
11230 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 73 6f  TE: For test "so
11240 63 6b 65 74 2d 33 2e 35 30 22 2e 0d 0a 20 20 20  cket-3.50"...   
11250 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
11260 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
11270 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
11280 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
11290 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
112a0 20 20 20 20 20 20 20 2a 54 65 73 74 48 61 73 53         *TestHasS
112b0 63 72 69 70 74 4e 65 77 57 65 62 43 6c 69 65 6e  criptNewWebClien
112c0 74 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a 20 20  tCallback*....  
112d0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
112e0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
112f0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
11300 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
11310 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
11320 73 74 48 61 73 45 72 72 6f 72 4e 65 77 57 65 62  stHasErrorNewWeb
11330 43 6c 69 65 6e 74 43 61 6c 6c 62 61 63 6b 2a 0d  ClientCallback*.
11340 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
11350 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
11360 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
11370 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
11380 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
11390 20 20 2a 54 65 73 74 53 65 74 53 63 72 69 70 74    *TestSetScript
113a0 4e 65 77 57 65 62 43 6c 69 65 6e 74 43 61 6c 6c  NewWebClientCall
113b0 62 61 63 6b 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  back*..      }..
113c0 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
113d0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73  fo exists no(tes
113e0 74 4c 6f 61 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  tLoad)]} then {.
113f0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
11400 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
11410 74 65 73 74 73 20 22 6c 6f 61 64 2d 31 2e 36 22  tests "load-1.6"
11420 20 61 6e 64 20 22 6c 6f 61 64 2d 31 2e 37 22 2e   and "load-1.7".
11430 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
11440 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
11450 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
11460 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
11470 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
11480 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
11490 74 4c 6f 61 64 50 6c 75 67 69 6e 56 69 61 42 79  tLoadPluginViaBy
114a0 74 65 73 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  tes*..      }...
114b0 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
114c0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
114d0 50 65 72 6d 75 74 65 29 5d 7d 20 74 68 65 6e 20  Permute)]} then 
114e0 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
114f0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
11500 72 20 74 65 73 74 73 20 22 6c 70 65 72 6d 75 74  r tests "lpermut
11510 65 2d 31 2e 33 22 20 61 6e 64 20 22 6c 70 65 72  e-1.3" and "lper
11520 6d 75 74 65 2d 31 2e 34 22 2e 0d 0a 20 20 20 20  mute-1.4"...    
11530 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
11540 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
11550 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
11560 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
11570 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
11580 20 20 20 20 20 20 2a 54 65 73 74 50 65 72 6d 75        *TestPermu
11590 74 65 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  te*..      }....
115a0 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
115b0 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 44   exists no(testD
115c0 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 29 5d  ynamicCallback)]
115d0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
115e0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
115f0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
11600 6f 62 6a 65 63 74 2d 38 2e 31 3f 3f 22 2e 0d 0a  object-8.1??"...
11610 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
11620 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
11630 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
11640 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
11650 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
11660 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 43            *TestC
11670 61 6c 6c 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61  allDynamicCallba
11680 63 6b 30 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ck0*....        
11690 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
116a0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
116b0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
116c0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
116d0 20 20 20 20 20 20 20 2a 54 65 73 74 43 61 6c 6c         *TestCall
116e0 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 31  DynamicCallback1
116f0 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
11700 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
11710 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
11720 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
11730 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
11740 20 20 20 20 2a 54 65 73 74 43 61 6c 6c 44 79 6e      *TestCallDyn
11750 61 6d 69 63 43 61 6c 6c 62 61 63 6b 32 2a 0d 0a  amicCallback2*..
11760 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
11770 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
11780 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
11790 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
117a0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
117b0 20 2a 54 65 73 74 43 61 6c 6c 44 79 6e 61 6d 69   *TestCallDynami
117c0 63 43 61 6c 6c 62 61 63 6b 33 2a 0d 0a 0d 0a 20  cCallback3*.... 
117d0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
117e0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
117f0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
11800 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
11810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
11820 65 73 74 43 61 6c 6c 44 79 6e 61 6d 69 63 43 61  estCallDynamicCa
11830 6c 6c 62 61 63 6b 34 2a 0d 0a 0d 0a 20 20 20 20  llback4*....    
11840 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
11850 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
11860 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
11870 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
11880 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
11890 47 65 74 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61  GetDynamicCallba
118a0 63 6b 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  cks*....        
118b0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
118c0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
118d0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
118e0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
118f0 20 20 20 20 20 20 20 2a 54 65 73 74 43 61 6c 6c         *TestCall
11900 53 74 61 74 69 63 44 79 6e 61 6d 69 63 43 61 6c  StaticDynamicCal
11910 6c 62 61 63 6b 30 2a 0d 0a 0d 0a 20 20 20 20 20  lback0*....     
11920 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
11930 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
11940 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
11950 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
11960 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 43            *TestC
11970 61 6c 6c 53 74 61 74 69 63 44 79 6e 61 6d 69 63  allStaticDynamic
11980 43 61 6c 6c 62 61 63 6b 31 2a 0d 0a 0d 0a 20 20  Callback1*....  
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 54 65  .            *Te
119e0 73 74 43 61 6c 6c 53 74 61 74 69 63 44 79 6e 61  stCallStaticDyna
119f0 6d 69 63 43 61 6c 6c 62 61 63 6b 32 2a 0d 0a 0d  micCallback2*...
11a00 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
11a10 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
11a20 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
11a30 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
11a40 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
11a50 2a 54 65 73 74 43 61 6c 6c 53 74 61 74 69 63 44  *TestCallStaticD
11a60 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 33 2a  ynamicCallback3*
11a70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
11a80 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
11a90 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
11aa0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
11ab0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
11ac0 20 20 20 2a 54 65 73 74 43 61 6c 6c 53 74 61 74     *TestCallStat
11ad0 69 63 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63  icDynamicCallbac
11ae0 6b 34 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  k4*....        c
11af0 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
11b00 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
11b10 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
11b20 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
11b30 20 20 20 20 20 20 2a 54 65 73 74 47 65 74 53 74        *TestGetSt
11b40 61 74 69 63 44 79 6e 61 6d 69 63 43 61 6c 6c 62  aticDynamicCallb
11b50 61 63 6b 73 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  acks*..      }..
11b60 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
11b70 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 44 61 74   # NOTE: Has Dat
11b80 65 54 69 6d 65 20 74 65 73 74 69 6e 67 20 73 75  eTime testing su
11b90 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
11ba0 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20  led?..      #.. 
11bb0 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
11bc0 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 44 61  exists no(testDa
11bd0 74 65 54 69 6d 65 29 5d 7d 20 74 68 65 6e 20 7b  teTime)]} then {
11be0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
11bf0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
11c00 20 74 65 73 74 20 22 76 77 61 69 74 2d 31 2e 31   test "vwait-1.1
11c10 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  1"...        #..
11c20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
11c30 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
11c40 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
11c50 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
11c60 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
11c70 54 65 73 74 53 65 74 44 61 74 65 54 69 6d 65 4e  TestSetDateTimeN
11c80 6f 77 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20  owCallback*..   
11c90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
11ca0 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
11cb0 61 73 20 72 65 6d 6f 74 69 6e 67 20 74 65 73 74  as remoting test
11cc0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
11cd0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
11ce0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
11cf0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
11d00 74 65 73 74 52 65 6d 6f 74 69 6e 67 29 5d 7d 20  testRemoting)]} 
11d10 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
11d20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
11d30 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 72 65  E: For tests "re
11d40 6d 6f 74 69 6e 67 53 65 72 76 65 72 2d 31 2e 2a  motingServer-1.*
11d50 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
11d60 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
11d70 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
11d80 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
11d90 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
11da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
11db0 65 73 74 52 65 6d 6f 74 69 6e 67 2a 0d 0a 0d 0a  estRemoting*....
11dc0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
11dd0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
11de0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
11df0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
11e00 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
11e10 54 65 73 74 52 65 6d 6f 74 69 6e 67 48 61 76 65  TestRemotingHave
11e20 43 68 61 6e 6e 65 6c 2a 0d 0a 0d 0a 20 20 20 20  Channel*....    
11e30 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
11e40 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
11e50 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
11e60 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
11e70 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
11e80 52 65 6d 6f 74 69 6e 67 54 72 79 47 65 74 43 68  RemotingTryGetCh
11e90 61 6e 6e 65 6c 2a 0d 0a 20 20 20 20 20 20 7d 0d  annel*..      }.
11ea0 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
11eb0 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 65 6d    # NOTE: Has em
11ec0 62 65 64 64 65 64 20 72 65 73 6f 75 72 63 65 20  bedded resource 
11ed0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
11ee0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
11ef0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
11f00 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
11f10 20 6e 6f 28 74 65 73 74 52 65 73 6f 75 72 63 65   no(testResource
11f20 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
11f30 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
11f40 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
11f50 20 22 69 6e 74 65 72 70 2d 31 2e 34 30 30 22 2e   "interp-1.400".
11f60 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
11f70 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
11f80 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
11f90 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
11fa0 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
11fb0 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
11fc0 74 47 65 74 52 65 73 6f 75 72 63 65 53 74 72 69  tGetResourceStri
11fd0 6e 67 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ng*..      }....
11fe0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
11ff0 20 4e 4f 54 45 3a 20 48 61 73 20 61 73 79 6e 63   NOTE: Has async
12000 68 72 6f 6e 6f 75 73 20 74 65 73 74 69 6e 67 20  hronous testing 
12010 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
12020 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
12030 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
12040 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
12050 41 73 79 6e 63 68 72 6f 6e 6f 75 73 29 5d 7d 20  Asynchronous)]} 
12060 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
12070 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
12080 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61  E: For tests "ba
12090 73 69 63 2d 31 2e 32 30 22 20 61 6e 64 20 22 62  sic-1.20" and "b
120a0 61 73 69 63 2d 31 2e 32 31 22 2e 0d 0a 20 20 20  asic-1.21"...   
120b0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
120c0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
120d0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
120e0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
120f0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
12100 20 20 20 20 20 20 20 2a 54 65 73 74 45 76 61 6c         *TestEval
12110 75 61 74 65 41 73 79 6e 63 2a 0d 0a 20 20 20 20  uateAsync*..    
12120 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
12130 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
12140 73 20 63 75 73 74 6f 6d 20 66 75 6e 63 74 69 6f  s custom functio
12150 6e 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  n testing suppor
12160 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
12170 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
12180 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
12190 74 73 20 6e 6f 28 74 65 73 74 46 75 6e 63 74 69  ts no(testFuncti
121a0 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  on)]} then {..  
121b0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
121c0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
121d0 74 20 22 66 75 6e 63 74 69 6f 6e 2d 31 2e 31 22  t "function-1.1"
121e0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
121f0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12200 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12210 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12220 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12230 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12240 73 74 41 64 64 46 75 6e 63 74 69 6f 6e 2a 0d 0a  stAddFunction*..
12250 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
12260 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
12270 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
12280 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
12290 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
122a0 20 2a 54 65 73 74 52 65 6d 6f 76 65 46 75 6e 63   *TestRemoveFunc
122b0 74 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  tion*....       
122c0 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
122d0 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 66  TE: For tests "f
122e0 75 6e 63 74 69 6f 6e 2d 35 2e 2a 22 2e 0d 0a 20  unction-5.*"... 
122f0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
12300 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
12310 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
12320 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
12330 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
12340 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 41 64           *TestAd
12350 64 4e 61 6d 65 64 46 75 6e 63 74 69 6f 6e 2a 0d  dNamedFunction*.
12360 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
12370 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
12380 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
12390 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
123a0 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
123b0 20 20 2a 54 65 73 74 52 65 6d 6f 76 65 4e 61 6d    *TestRemoveNam
123c0 65 64 46 75 6e 63 74 69 6f 6e 2a 0d 0a 0d 0a 20  edFunction*.... 
123d0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
123e0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
123f0 73 74 20 22 69 6e 74 65 72 70 2d 31 2e 31 39 22  st "interp-1.19"
12400 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
12410 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12420 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12430 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12440 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12450 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12460 73 74 41 64 64 4e 61 6d 65 64 46 75 6e 63 74 69  stAddNamedFuncti
12470 6f 6e 32 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  on2*....        
12480 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
12490 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 66 75  E: For tests "fu
124a0 6e 63 74 69 6f 6e 2d 35 2e 2a 22 2e 0d 0a 20 20  nction-5.*"...  
124b0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
124c0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
124d0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
124e0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
124f0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
12500 20 20 20 20 20 20 20 20 2a 54 65 73 74 41 64 64          *TestAdd
12510 4e 61 6d 65 64 46 75 6e 63 74 69 6f 6e 33 2a 0d  NamedFunction3*.
12520 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
12530 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
12540 45 3a 20 48 61 73 20 77 72 69 74 65 2d 62 6f 78  E: Has write-box
12550 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
12560 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
12570 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
12580 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
12590 73 20 6e 6f 28 74 65 73 74 57 72 69 74 65 42 6f  s no(testWriteBo
125a0 78 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  x)]} then {..   
125b0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
125c0 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
125d0 73 20 22 64 65 62 75 67 2d 35 2e 2a 22 2e 0d 0a  s "debug-5.*"...
125e0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
125f0 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
12600 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
12610 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
12620 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
12630 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 57            *TestW
12640 72 69 74 65 42 6f 78 2a 0d 0a 20 20 20 20 20 20  riteBox*..      
12650 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
12660 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
12670 73 68 65 6c 6c 20 74 65 73 74 69 6e 67 20 73 75  shell testing su
12680 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
12690 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20  led?..      #.. 
126a0 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
126b0 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 68  exists no(testSh
126c0 65 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ell)]} then {.. 
126d0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
126e0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
126f0 73 74 20 22 64 65 62 75 67 2d 31 2e 33 22 2e 0d  st "debug-1.3"..
12700 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
12710 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
12720 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
12730 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
12740 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
12750 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
12760 53 68 65 6c 6c 4d 61 69 6e 43 6f 72 65 2a 0d 0a  ShellMainCore*..
12770 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12780 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
12790 3a 20 48 61 73 20 71 75 69 65 74 20 70 72 6f 70  : Has quiet prop
127a0 65 72 74 79 20 74 65 73 74 69 6e 67 20 73 75 70  erty testing sup
127b0 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
127c0 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ed?..      #..  
127d0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
127e0 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 65 74  xists no(testSet
127f0 51 75 69 65 74 29 5d 7d 20 74 68 65 6e 20 7b 0d  Quiet)]} then {.
12800 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
12810 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
12820 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e 33  tests "basic-1.3
12830 36 22 20 61 6e 64 20 22 64 65 62 75 67 2d 31 2e  6" and "debug-1.
12840 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  3"...        #..
12850 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
12860 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
12870 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
12880 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
12890 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
128a0 54 65 73 74 53 65 74 51 75 69 65 74 2a 0d 0a 20  TestSetQuiet*.. 
128b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
128c0 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
128d0 20 48 61 73 20 63 6f 6d 70 6c 61 69 6e 74 20 74   Has complaint t
128e0 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
128f0 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
12900 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
12910 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
12920 6e 6f 28 74 65 73 74 53 65 74 43 6f 6d 70 6c 61  no(testSetCompla
12930 69 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  in)]} then {..  
12940 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
12950 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73   # NOTE: This is
12960 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
12970 73 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73  sed by any tests
12980 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
12990 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
129a0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
129b0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
129c0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
129d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
129e0 73 74 53 65 74 43 6f 6d 70 6c 61 69 6e 2a 0d 0a  stSetComplain*..
129f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12a00 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
12a10 3a 20 48 61 73 20 73 70 65 63 69 61 6c 20 76 61  : Has special va
12a20 72 69 61 62 6c 65 20 74 65 73 74 69 6e 67 20 73  riable testing s
12a30 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
12a40 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
12a50 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
12a60 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53   exists no(testS
12a70 65 74 56 61 72 69 61 62 6c 65 29 5d 7d 20 74 68  etVariable)]} th
12a80 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
12a90 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
12aa0 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
12ab0 2d 31 2e 31 30 37 22 2e 0d 0a 20 20 20 20 20 20  -1.107"...      
12ac0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
12ad0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
12ae0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
12af0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
12b00 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
12b10 20 20 20 20 2a 54 65 73 74 53 65 74 56 61 72 69      *TestSetVari
12b20 61 62 6c 65 57 69 74 68 54 79 70 65 64 56 61 6c  ableWithTypedVal
12b30 75 65 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ue*..      }....
12b40 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
12b50 20 4e 4f 54 45 3a 20 48 61 73 20 65 6e 75 6d 65   NOTE: Has enume
12b60 72 61 62 6c 65 20 76 61 72 69 61 62 6c 65 20 74  rable variable t
12b70 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
12b80 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
12b90 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
12ba0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
12bb0 6e 6f 28 74 65 73 74 45 6e 75 6d 65 72 61 62 6c  no(testEnumerabl
12bc0 65 56 61 72 69 61 62 6c 65 73 29 5d 7d 20 74 68  eVariables)]} th
12bd0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
12be0 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
12bf0 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
12c00 2d 31 2e 31 30 35 22 2e 0d 0a 20 20 20 20 20 20  -1.105"...      
12c10 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
12c20 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
12c30 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
12c40 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
12c50 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
12c60 20 20 20 20 2a 54 65 73 74 53 65 74 75 70 49 6e      *TestSetupIn
12c70 74 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20 20  tArray*....     
12c80 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
12c90 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
12ca0 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
12cb0 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
12cc0 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
12cd0 65 74 56 61 72 69 61 62 6c 65 45 6e 75 6d 65 72  etVariableEnumer
12ce0 61 62 6c 65 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  able*....       
12cf0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
12d00 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
12d10 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
12d20 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
12d30 20 20 20 20 20 20 20 20 2a 54 65 73 74 55 6e 73          *TestUns
12d40 65 74 56 61 72 69 61 62 6c 65 45 6e 75 6d 65 72  etVariableEnumer
12d50 61 62 6c 65 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  able*..      }..
12d60 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
12d70 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6c 69 6e   # NOTE: Has lin
12d80 6b 65 64 20 76 61 72 69 61 62 6c 65 20 74 65 73  ked variable tes
12d90 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
12da0 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
12db0 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
12dc0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
12dd0 28 74 65 73 74 4c 69 6e 6b 65 64 56 61 72 69 61  (testLinkedVaria
12de0 62 6c 65 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  bles)]} then {..
12df0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
12e00 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
12e10 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e 33 39  ests "basic-1.39
12e20 22 2c 20 22 62 61 73 69 63 2d 31 2e 34 30 22 2c  ", "basic-1.40",
12e30 20 22 62 61 73 69 63 2d 31 2e 34 31 22 2c 0d 0a   "basic-1.41",..
12e40 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
12e50 22 62 61 73 69 63 2d 31 2e 34 32 22 2c 20 61 6e  "basic-1.42", an
12e60 64 20 22 62 61 73 69 63 2d 31 2e 34 33 22 2e 0d  d "basic-1.43"..
12e70 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
12e80 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
12e90 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
12ea0 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
12eb0 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
12ec0 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
12ed0 53 65 74 56 61 72 69 61 62 6c 65 4c 69 6e 6b 73  SetVariableLinks
12ee0 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
12ef0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
12f00 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
12f10 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
12f20 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
12f30 20 20 20 20 2a 54 65 73 74 55 6e 73 65 74 56 61      *TestUnsetVa
12f40 72 69 61 62 6c 65 4c 69 6e 6b 73 2a 0d 0a 20 20  riableLinks*..  
12f50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
12f60 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
12f70 48 61 73 20 73 79 73 74 65 6d 20 61 72 72 61 79  Has system array
12f80 20 76 61 72 69 61 62 6c 65 20 74 65 73 74 69 6e   variable testin
12f90 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
12fa0 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
12fb0 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
12fc0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
12fd0 73 74 53 79 73 74 65 6d 41 72 72 61 79 56 61 72  stSystemArrayVar
12fe0 69 61 62 6c 65 73 29 5d 7d 20 74 68 65 6e 20 7b  iables)]} then {
12ff0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
13000 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
13010 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e   tests "basic-1.
13020 36 32 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 33  62", "basic-1.63
13030 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 34 22 2c  ", "basic-1.64",
13040 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
13050 20 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 36    and "basic-1.6
13060 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  5"...        #..
13070 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
13080 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
13090 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
130a0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
130b0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
130c0 54 65 73 74 49 6e 74 50 74 72 43 68 61 6e 67 65  TestIntPtrChange
130d0 54 79 70 65 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d  TypeCallback*...
130e0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
130f0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
13100 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
13110 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
13120 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
13130 2a 54 65 73 74 53 65 74 56 61 72 69 61 62 6c 65  *TestSetVariable
13140 53 79 73 74 65 6d 41 72 72 61 79 2a 0d 0a 0d 0a  SystemArray*....
13150 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
13160 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
13170 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
13180 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
13190 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
131a0 54 65 73 74 55 6e 73 65 74 56 61 72 69 61 62 6c  TestUnsetVariabl
131b0 65 53 79 73 74 65 6d 41 72 72 61 79 2a 0d 0a 20  eSystemArray*.. 
131c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
131d0 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
131e0 20 48 61 73 20 66 69 65 6c 64 20 74 65 73 74 69   Has field testi
131f0 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
13200 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
13210 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
13220 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
13230 65 73 74 46 69 65 6c 64 73 29 5d 7d 20 74 68 65  estFields)]} the
13240 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
13250 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
13260 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63  For tests "basic
13270 2d 31 2e 33 39 22 2c 20 22 62 61 73 69 63 2d 31  -1.39", "basic-1
13280 2e 34 30 22 2c 20 22 62 61 73 69 63 2d 31 2e 34  .40", "basic-1.4
13290 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 23 20 20  1",..        #  
132a0 20 20 20 20 20 22 62 61 73 69 63 2d 31 2e 34 32       "basic-1.42
132b0 22 2c 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e  ", and "basic-1.
132c0 34 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  43"...        #.
132d0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
132e0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
132f0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
13300 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
13310 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
13320 2a 70 72 69 76 61 74 65 46 69 65 6c 64 2a 0d 0a  *privateField*..
13330 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
13340 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
13350 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
13360 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
13370 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
13380 20 2a 6f 62 6a 65 63 74 46 69 65 6c 64 2a 0d 0a   *objectField*..
13390 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
133a0 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
133b0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
133c0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
133d0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
133e0 20 2a 69 6e 74 46 69 65 6c 64 2a 0d 0a 20 20 20   *intField*..   
133f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
13400 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
13410 61 73 20 70 72 6f 70 65 72 74 79 20 74 65 73 74  as property test
13420 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
13430 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
13440 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
13450 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
13460 74 65 73 74 50 72 6f 70 65 72 74 69 65 73 29 5d  testProperties)]
13470 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
13480 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
13490 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
134a0 62 61 73 69 63 2d 31 2e 33 39 22 2c 20 22 62 61  basic-1.39", "ba
134b0 73 69 63 2d 31 2e 34 30 22 2c 20 22 62 61 73 69  sic-1.40", "basi
134c0 63 2d 31 2e 34 31 22 2c 0d 0a 20 20 20 20 20 20  c-1.41",..      
134d0 20 20 23 20 20 20 20 20 20 20 22 62 61 73 69 63    #       "basic
134e0 2d 31 2e 34 32 22 2c 20 61 6e 64 20 22 62 61 73  -1.42", and "bas
134f0 69 63 2d 31 2e 34 33 22 2e 0d 0a 20 20 20 20 20  ic-1.43"...     
13500 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
13510 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
13520 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
13530 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
13540 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
13550 20 20 20 20 20 2a 67 65 74 5f 53 69 6d 70 6c 65       *get_Simple
13560 49 6e 74 50 72 6f 70 65 72 74 79 2a 0d 0a 0d 0a  IntProperty*....
13570 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13580 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
13590 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 22  est "object-3.1"
135a0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
135b0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
135c0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
135d0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
135e0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
135f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 67 65  .            *ge
13600 74 5f 49 74 65 6d 2a 0d 0a 0d 0a 20 20 20 20 20  t_Item*....     
13610 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13620 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13630 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13640 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13650 20 20 20 20 20 20 20 20 20 20 2a 73 65 74 5f 49            *set_I
13660 74 65 6d 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  tem*..      }...
13670 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
13680 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 72 65  # NOTE: Has core
13690 20 6d 61 72 73 68 61 6c 6c 65 72 20 74 65 73 74   marshaller test
136a0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
136b0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
136c0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
136d0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
136e0 74 65 73 74 4d 61 72 73 68 61 6c 6c 65 72 29 5d  testMarshaller)]
136f0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
13700 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
13710 4f 54 45 3a 20 54 68 65 73 65 20 61 72 65 20 6e  OTE: These are n
13720 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65  ot currently use
13730 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e 0d  d by any tests..
13740 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
13750 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
13760 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
13770 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
13780 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
13790 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
137a0 53 61 76 65 4f 62 6a 65 63 74 73 2a 0d 0a 0d 0a  SaveObjects*....
137b0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
137c0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
137d0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
137e0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
137f0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
13800 54 65 73 74 52 65 73 74 6f 72 65 4f 62 6a 65 63  TestRestoreObjec
13810 74 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ts*....        #
13820 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
13830 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
13840 63 2d 31 2e 32 39 2e 2a 22 2e 0d 0a 20 20 20 20  c-1.29.*"...    
13850 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
13860 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
13870 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
13880 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
13890 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
138a0 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63 75        *TestExecu
138b0 74 65 53 74 61 74 69 63 44 65 6c 65 67 61 74 65  teStaticDelegate
138c0 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  s*....        #.
138d0 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
138e0 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69   For tests "basi
138f0 63 2d 31 2e 33 30 2e 2a 22 20 61 6e 64 20 22 62  c-1.30.*" and "b
13900 61 73 69 63 2d 31 2e 33 31 22 2e 0d 0a 20 20 20  asic-1.31"...   
13910 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
13920 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
13930 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
13940 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
13950 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
13960 20 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63         *TestExec
13970 75 74 65 44 65 6c 65 67 61 74 65 43 6f 6d 6d 61  uteDelegateComma
13980 6e 64 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nds*....        
13990 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
139a0 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6e 61 6d  E: For test "nam
139b0 65 73 70 61 63 65 2d 39 37 2e 31 30 22 2e 0d 0a  espace-97.10"...
139c0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
139d0 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
139e0 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
139f0 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13a00 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13a10 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52            *TestR
13a20 65 6e 61 6d 65 4e 61 6d 65 73 70 61 63 65 2a 0d  enameNamespace*.
13a30 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
13a40 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
13a50 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 32  r test "object-2
13a60 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .1"...        #.
13a70 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
13a80 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
13a90 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
13aa0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
13ab0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
13ac0 2a 54 65 73 74 43 6f 6d 70 6c 65 78 4d 65 74 68  *TestComplexMeth
13ad0 6f 64 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  od*....        #
13ae0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
13af0 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
13b00 63 74 2d 32 2e 31 32 22 2e 0d 0a 20 20 20 20 20  ct-2.12"...     
13b10 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
13b20 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
13b30 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
13b40 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
13b50 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
13b60 20 20 20 20 20 2a 54 65 73 74 4d 6f 72 65 43 6f       *TestMoreCo
13b70 6d 70 6c 65 78 4d 65 74 68 6f 64 2a 0d 0a 0d 0a  mplexMethod*....
13b80 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13b90 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
13ba0 65 73 74 20 22 6f 62 6a 65 63 74 2d 32 2e 33 22  est "object-2.3"
13bb0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
13bc0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
13bd0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
13be0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
13bf0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
13c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
13c10 73 74 54 6f 48 65 78 61 64 65 63 69 6d 61 6c 53  stToHexadecimalS
13c20 74 72 69 6e 67 2a 0d 0a 0d 0a 20 20 20 20 20 20  tring*....      
13c30 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
13c40 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
13c50 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
13c60 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
13c70 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 4d 75           *TestMu
13c80 6c 74 69 32 41 72 72 61 79 2a 0d 0a 0d 0a 20 20  lti2Array*....  
13c90 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
13ca0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
13cb0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
13cc0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
13cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
13ce0 73 74 4d 75 6c 74 69 33 41 72 72 61 79 2a 0d 0a  stMulti3Array*..
13cf0 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
13d00 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
13d10 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
13d20 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
13d30 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
13d40 20 2a 54 65 73 74 4e 65 73 74 65 64 41 72 72 61   *TestNestedArra
13d50 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  y*....        #.
13d60 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
13d70 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
13d80 74 2d 32 2e 31 31 22 2e 0d 0a 20 20 20 20 20 20  t-2.11"...      
13d90 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
13da0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
13db0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
13dc0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
13dd0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
13de0 20 20 20 20 2a 54 65 73 74 4f 62 6a 65 63 74 41      *TestObjectA
13df0 73 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20 20  sArray*....     
13e00 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
13e10 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
13e20 22 6f 62 6a 65 63 74 2d 33 2e 36 22 20 61 6e 64  "object-3.6" and
13e30 20 22 6f 62 6a 65 63 74 2d 33 2e 37 22 2e 0d 0a   "object-3.7"...
13e40 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13e50 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13e60 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13e70 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13e80 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13e90 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
13ea0 74 72 69 6e 67 49 4c 69 73 74 52 65 74 75 72 6e  tringIListReturn
13eb0 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20  Value*....      
13ec0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
13ed0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
13ee0 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
13ef0 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
13f00 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53 74           *TestSt
13f10 72 69 6e 67 49 4c 69 73 74 49 4c 69 73 74 49 4c  ringIListIListIL
13f20 69 73 74 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d  istReturnValue*.
13f30 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
13f40 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
13f50 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33  r test "object-3
13f60 2e 38 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .8"...        #.
13f70 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
13f80 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
13f90 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
13fa0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
13fb0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
13fc0 2a 54 65 73 74 42 79 74 65 4c 69 73 74 2a 0d 0a  *TestByteList*..
13fd0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
13fe0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
13ff0 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e   test "object-3.
14000 39 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  9"...        #..
14010 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14020 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14030 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14040 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14050 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14060 54 65 73 74 49 6e 74 4c 69 73 74 2a 0d 0a 0d 0a  TestIntList*....
14070 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
14080 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
14090 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 30  est "object-3.10
140a0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
140b0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
140c0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
140d0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
140e0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
140f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
14100 65 73 74 4c 6f 6e 67 4c 69 73 74 2a 0d 0a 0d 0a  estLongList*....
14110 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
14120 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
14130 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 31  est "object-3.11
14140 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
14150 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
14160 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
14170 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
14180 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
14190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
141a0 65 73 74 44 65 72 69 76 65 64 4c 69 73 74 2a 0d  estDerivedList*.
141b0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
141c0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
141d0 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d  r tests "object-
141e0 33 2e 31 32 22 20 61 6e 64 20 22 6f 62 6a 65 63  3.12" and "objec
141f0 74 2d 33 2e 31 33 22 2e 0d 0a 20 20 20 20 20 20  t-3.13"...      
14200 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
14210 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
14220 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
14230 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
14240 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
14250 20 20 20 20 2a 54 65 73 74 53 74 72 69 6e 67 49      *TestStringI
14260 44 69 63 74 69 6f 6e 61 72 79 52 65 74 75 72 6e  DictionaryReturn
14270 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20  Value*....      
14280 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
14290 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
142a0 6f 62 6a 65 63 74 2d 33 2e 31 34 22 20 61 6e 64  object-3.14" and
142b0 20 22 6f 62 6a 65 63 74 2d 33 2e 31 35 22 2e 0d   "object-3.15"..
142c0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
142d0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
142e0 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
142f0 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
14300 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
14310 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
14320 52 65 74 75 72 6e 4f 66 53 65 6c 66 2a 0d 0a 0d  ReturnOfSelf*...
14330 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
14340 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
14350 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31  test "object-3.1
14360 37 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  7"...        #..
14370 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14380 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14390 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
143a0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
143b0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
143c0 54 65 73 74 42 79 52 65 66 42 79 74 65 41 72 72  TestByRefByteArr
143d0 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ay*....        #
143e0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
143f0 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
14400 63 74 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20 20  ct-4.1"...      
14410 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
14420 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
14430 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
14440 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
14450 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
14460 20 20 20 20 2a 54 65 73 74 45 78 70 72 2a 0d 0a      *TestExpr*..
14470 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
14480 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
14490 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e   tests "basic-1.
144a0 36 36 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 37  66", "basic-1.67
144b0 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 38 22 2c  ", "basic-1.68",
144c0 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
144d0 20 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 36    and "basic-1.6
144e0 39 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  9"...        #..
144f0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14500 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14510 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14520 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14530 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14540 54 65 73 74 54 61 6b 65 45 76 65 6e 74 48 61 6e  TestTakeEventHan
14550 64 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  dler*....       
14560 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
14570 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
14580 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
14590 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
145a0 20 20 20 20 20 20 20 20 2a 54 65 73 74 54 61 6b          *TestTak
145b0 65 47 65 6e 65 72 69 63 45 76 65 6e 74 48 61 6e  eGenericEventHan
145c0 64 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  dler*....       
145d0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
145e0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
145f0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
14600 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
14610 20 20 20 20 20 20 20 20 2a 54 65 73 74 54 61 6b          *TestTak
14620 65 52 65 73 6f 6c 76 65 45 76 65 6e 74 48 61 6e  eResolveEventHan
14630 64 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  dler*....       
14640 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
14650 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 61 72  TE: For test "ar
14660 72 61 79 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20  ray-4.1"...     
14670 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
14680 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
14690 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
146a0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
146b0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
146c0 20 20 20 20 20 2a 54 65 73 74 54 77 6f 42 79 74       *TestTwoByt
146d0 65 41 72 72 61 79 73 2a 0d 0a 0d 0a 20 20 20 20  eArrays*....    
146e0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
146f0 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
14700 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
14710 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
14720 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
14730 52 65 74 75 72 6e 42 79 74 65 41 72 72 61 79 2a  ReturnByteArray*
14740 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
14750 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
14760 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d  or test "object-
14770 37 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  7.1"...        #
14780 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
14790 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
147a0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
147b0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
147c0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
147d0 20 2a 54 65 73 74 42 79 52 65 66 56 61 6c 75 65   *TestByRefValue
147e0 54 79 70 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20  TypeMethod*.... 
147f0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
14800 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
14810 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
14820 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
14830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
14840 65 73 74 4e 75 6c 6c 61 62 6c 65 56 61 6c 75 65  estNullableValue
14850 54 79 70 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20  TypeMethod*.... 
14860 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
14870 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
14880 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
14890 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
148a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
148b0 65 73 74 42 79 52 65 66 4e 75 6c 6c 61 62 6c 65  estByRefNullable
148c0 56 61 6c 75 65 54 79 70 65 4d 65 74 68 6f 64 2a  ValueTypeMethod*
148d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
148e0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
148f0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
14900 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
14910 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
14920 20 20 20 2a 54 65 73 74 49 6e 74 41 72 72 61 79     *TestIntArray
14930 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a  ReturnValue*....
14940 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14950 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14960 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14970 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14980 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14990 54 65 73 74 53 74 72 69 6e 67 41 72 72 61 79 52  TestStringArrayR
149a0 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20  eturnValue*.... 
149b0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
149c0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
149d0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
149e0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
149f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
14a00 65 73 74 53 74 72 69 6e 67 4c 69 73 74 52 65 74  estStringListRet
14a10 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20  urnValue*....   
14a20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
14a30 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
14a40 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
14a50 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
14a60 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
14a70 74 53 74 72 69 6e 67 4c 69 73 74 41 72 72 61 79  tStringListArray
14a80 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a  ReturnValue*....
14a90 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14aa0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14ab0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14ac0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14ad0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14ae0 54 65 73 74 42 79 52 65 66 53 74 72 69 6e 67 4c  TestByRefStringL
14af0 69 73 74 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20  istArray*....   
14b00 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
14b10 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
14b20 73 20 22 6f 62 6a 65 63 74 2d 37 2e 32 22 20 61  s "object-7.2" a
14b30 6e 64 20 22 6f 62 6a 65 63 74 2d 37 2e 34 22 2e  nd "object-7.4".
14b40 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
14b50 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
14b60 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
14b70 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
14b80 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
14b90 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
14ba0 74 4e 75 6c 6c 41 72 72 61 79 2a 0d 0a 0d 0a 20  tNullArray*.... 
14bb0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
14bc0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
14bd0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
14be0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
14bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
14c00 65 73 74 4f 75 74 41 72 72 61 79 2a 0d 0a 0d 0a  estOutArray*....
14c10 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
14c20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
14c30 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 37 2e 36  ests "object-7.6
14c40 22 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 37 2e  " and "object-7.
14c50 37 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  7"...        #..
14c60 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14c70 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14c80 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14c90 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14ca0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14cb0 54 65 73 74 42 79 52 65 66 41 72 72 61 79 2a 0d  TestByRefArray*.
14cc0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
14cd0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
14ce0 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 37  r test "object-7
14cf0 2e 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .5"...        #.
14d00 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
14d10 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
14d20 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
14d30 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
14d40 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
14d50 2a 54 65 73 74 45 6e 75 6d 2a 0d 0a 0d 0a 20 20  *TestEnum*....  
14d60 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
14d70 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
14d80 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
14d90 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
14da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
14db0 73 74 42 79 52 65 66 45 6e 75 6d 2a 0d 0a 0d 0a  stByRefEnum*....
14dc0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14dd0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14de0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14df0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14e00 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14e10 54 65 73 74 4e 75 6c 6c 61 62 6c 65 45 6e 75 6d  TestNullableEnum
14e20 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
14e30 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
14e40 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
14e50 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
14e60 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
14e70 20 20 20 20 2a 54 65 73 74 42 79 52 65 66 4e 75      *TestByRefNu
14e80 6c 6c 61 62 6c 65 45 6e 75 6d 2a 0d 0a 0d 0a 20  llableEnum*.... 
14e90 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
14ea0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
14eb0 73 74 73 20 22 6f 62 6a 65 63 74 2d 31 34 2e 34  sts "object-14.4
14ec0 22 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 31 34  " and "object-14
14ed0 2e 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .5"...        #.
14ee0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
14ef0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
14f00 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
14f10 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
14f20 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
14f30 2a 53 74 61 74 69 63 4f 62 6a 65 63 74 50 72 6f  *StaticObjectPro
14f40 70 65 72 74 79 2a 0d 0a 0d 0a 20 20 20 20 20 20  perty*....      
14f50 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
14f60 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
14f70 62 6a 65 63 74 2d 31 34 2e 36 22 2e 0d 0a 20 20  bject-14.6"...  
14f80 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
14f90 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
14fa0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
14fb0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
14fc0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
14fd0 20 20 20 20 20 20 20 20 2a 54 79 70 65 50 72 6f          *TypePro
14fe0 70 65 72 74 79 2a 0d 0a 20 20 20 20 20 20 7d 0d  perty*..      }.
14ff0 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
15000 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 49 44    # NOTE: Has ID
15010 69 73 70 6f 73 61 62 6c 65 20 74 65 73 74 69 6e  isposable testin
15020 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
15030 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
15040 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
15050 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
15060 73 74 44 69 73 70 6f 73 61 62 6c 65 29 5d 7d 20  stDisposable)]} 
15070 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
15080 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
15090 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a  E: For test "obj
150a0 65 63 74 2d 32 2e 38 22 2e 0d 0a 20 20 20 20 20  ect-2.8"...     
150b0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
150c0 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
150d0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
150e0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
150f0 66 61 75 6c 74 2b 44 69 73 70 6f 73 61 62 6c 65  fault+Disposable
15100 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
15110 2a 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c 65  *ToString* Eagle
15120 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e  ._Tests.Default.
15130 44 69 73 70 6f 73 61 62 6c 65 2e 54 6f 53 74 72  Disposable.ToStr
15140 69 6e 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ing..      }....
15150 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
15160 20 4e 4f 54 45 3a 20 48 61 73 20 49 53 75 62 43   NOTE: Has ISubC
15170 6f 6d 6d 61 6e 64 20 74 65 73 74 69 6e 67 20 73  ommand testing s
15180 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
15190 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
151a0 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
151b0 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53   exists no(testS
151c0 75 62 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65  ubCommand)]} the
151d0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
151e0 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
151f0 46 6f 72 20 74 65 73 74 73 20 22 72 65 64 65 66  For tests "redef
15200 69 6e 65 2d 32 2e 2a 22 2e 0d 0a 20 20 20 20 20  ine-2.*"...     
15210 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
15220 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
15230 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
15240 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15250 66 61 75 6c 74 2b 53 75 62 43 6f 6d 6d 61 6e 64  fault+SubCommand
15260 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
15270 2a 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c 65  *ToString* Eagle
15280 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e  ._Tests.Default.
15290 53 75 62 43 6f 6d 6d 61 6e 64 2e 54 6f 53 74 72  SubCommand.ToStr
152a0 69 6e 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ing..      }....
152b0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
152c0 20 4e 4f 54 45 3a 20 48 61 73 20 49 52 65 73 6f   NOTE: Has IReso
152d0 6c 76 65 20 74 65 73 74 69 6e 67 20 73 75 70 70  lve testing supp
152e0 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
152f0 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
15300 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
15310 69 73 74 73 20 6e 6f 28 74 65 73 74 52 65 73 6f  ists no(testReso
15320 6c 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  lve)]} then {.. 
15330 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
15340 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
15350 73 74 73 20 22 72 65 73 6f 6c 76 65 72 2d 31 2e  sts "resolver-1.
15360 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *"...        #..
15370 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
15380 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
15390 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
153a0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b  ._Tests.Default+
153b0 52 65 73 6f 6c 76 65 20 5c 0d 0a 20 20 20 20 20  Resolve \..     
153c0 20 20 20 20 20 20 20 2a 54 6f 53 74 72 69 6e 67         *ToString
153d0 2a 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  * Eagle._Tests.D
153e0 65 66 61 75 6c 74 2e 52 65 73 6f 6c 76 65 2e 54  efault.Resolve.T
153f0 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 7d  oString..      }
15400 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
15410 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73     # NOTE: Has s
15420 63 72 69 70 74 20 6c 69 6d 69 74 65 72 20 74 65  cript limiter te
15430 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
15440 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
15450 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
15460 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
15470 6f 28 74 65 73 74 4c 69 6d 69 74 65 72 29 5d 7d  o(testLimiter)]}
15480 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
15490 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
154a0 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 69  TE: For tests "i
154b0 6e 74 65 72 70 2d 31 2e 39 30 3f 22 2e 0d 0a 20  nterp-1.90?"... 
154c0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
154d0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
154e0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
154f0 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20  nnel \..        
15500 20 20 20 20 45 61 67 6c 65 2e 5f 54 65 73 74 73      Eagle._Tests
15510 2e 44 65 66 61 75 6c 74 2b 53 63 72 69 70 74 4c  .Default+ScriptL
15520 69 6d 69 74 65 72 20 2a 54 6f 53 74 72 69 6e 67  imiter *ToString
15530 2a 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  * \..           
15540 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15550 66 61 75 6c 74 2e 53 63 72 69 70 74 4c 69 6d 69  fault.ScriptLimi
15560 74 65 72 2e 54 6f 53 74 72 69 6e 67 0d 0a 20 20  ter.ToString..  
15570 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
15580 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
15590 48 61 73 20 54 72 61 63 65 4c 69 73 74 65 6e 65  Has TraceListene
155a0 72 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  r testing suppor
155b0 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
155c0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
155d0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
155e0 74 73 20 6e 6f 28 74 65 73 74 54 72 61 63 65 4c  ts no(testTraceL
155f0 69 73 74 65 6e 65 72 29 5d 7d 20 74 68 65 6e 20  istener)]} then 
15600 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
15610 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
15620 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e  r test "basic-1.
15630 37 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  74"...        #.
15640 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
15650 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
15660 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
15670 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
15680 2b 4c 69 73 74 65 6e 65 72 20 5c 0d 0a 20 20 20  +Listener \..   
15690 20 20 20 20 20 20 20 20 20 2a 57 72 69 74 65 4c           *WriteL
156a0 69 6e 65 2a 20 45 61 67 6c 65 2e 5f 54 65 73 74  ine* Eagle._Test
156b0 73 2e 44 65 66 61 75 6c 74 2e 4c 69 73 74 65 6e  s.Default.Listen
156c0 65 72 2e 57 72 69 74 65 4c 69 6e 65 0d 0a 0d 0a  er.WriteLine....
156d0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
156e0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
156f0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
15700 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b  ._Tests.Default+
15710 4c 69 73 74 65 6e 65 72 20 5c 0d 0a 20 20 20 20  Listener \..    
15720 20 20 20 20 20 20 20 20 2a 46 6c 75 73 68 2a 20          *Flush* 
15730 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
15740 61 75 6c 74 2e 4c 69 73 74 65 6e 65 72 2e 46 6c  ault.Listener.Fl
15750 75 73 68 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ush....        #
15760 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
15770 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
15780 63 2d 31 2e 37 35 22 2e 0d 0a 20 20 20 20 20 20  c-1.75"...      
15790 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
157a0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
157b0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
157c0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
157d0 61 75 6c 74 2b 4c 69 73 74 65 6e 65 72 20 5c 0d  ault+Listener \.
157e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 45  .            * E
157f0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
15800 75 6c 74 2e 4c 69 73 74 65 6e 65 72 0d 0a 20 20  ult.Listener..  
15810 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
15820 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
15830 48 61 73 20 73 63 72 69 70 74 20 65 76 65 6e 74  Has script event
15840 20 74 68 72 65 61 64 20 74 65 73 74 69 6e 67 20   thread testing 
15850 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
15860 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
15870 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
15880 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
15890 53 63 72 69 70 74 45 76 65 6e 74 54 68 72 65 61  ScriptEventThrea
158a0 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
158b0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
158c0 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
158d0 20 22 69 6e 74 65 72 70 2d 31 2e 38 30 31 22 2e   "interp-1.801".
158e0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
158f0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
15900 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
15910 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20  channel \..     
15920 20 20 20 20 20 20 20 45 61 67 6c 65 2e 5f 54 65         Eagle._Te
15930 73 74 73 2e 44 65 66 61 75 6c 74 2b 53 63 72 69  sts.Default+Scri
15940 70 74 45 76 65 6e 74 53 74 61 74 65 20 5c 0d 0a  ptEventState \..
15950 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 6f 53              *ToS
15960 74 72 69 6e 67 2a 20 45 61 67 6c 65 2e 5f 54 65  tring* Eagle._Te
15970 73 74 73 2e 44 65 66 61 75 6c 74 2e 53 63 72 69  sts.Default.Scri
15980 70 74 45 76 65 6e 74 53 74 61 74 65 2e 54 6f 53  ptEventState.ToS
15990 74 72 69 6e 67 0d 0a 0d 0a 20 20 20 20 20 20 20  tring....       
159a0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
159b0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
159c0 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  nel \..         
159d0 20 20 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e     Eagle._Tests.
159e0 44 65 66 61 75 6c 74 2b 53 63 72 69 70 74 45 76  Default+ScriptEv
159f0 65 6e 74 54 68 72 65 61 64 20 5c 0d 0a 20 20 20  entThread \..   
15a00 20 20 20 20 20 20 20 20 20 2a 54 6f 53 74 72 69           *ToStri
15a10 6e 67 2a 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  ng* Eagle._Tests
15a20 2e 44 65 66 61 75 6c 74 2e 53 63 72 69 70 74 45  .Default.ScriptE
15a30 76 65 6e 74 54 68 72 65 61 64 2e 54 6f 53 74 72  ventThread.ToStr
15a40 69 6e 67 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  ing....        c
15a50 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
15a60 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
15a70 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l \..           
15a80 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15a90 66 61 75 6c 74 2b 53 63 72 69 70 74 54 68 72 65  fault+ScriptThre
15aa0 61 64 43 6c 69 65 6e 74 44 61 74 61 20 5c 0d 0a  adClientData \..
15ab0 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 6f 53              *ToS
15ac0 74 72 69 6e 67 2a 20 45 61 67 6c 65 2e 5f 54 65  tring* Eagle._Te
15ad0 73 74 73 2e 44 65 66 61 75 6c 74 2e 53 63 72 69  sts.Default.Scri
15ae0 70 74 54 68 72 65 61 64 43 6c 69 65 6e 74 44 61  ptThreadClientDa
15af0 74 61 2e 54 6f 53 74 72 69 6e 67 0d 0a 0d 0a 20  ta.ToString.... 
15b00 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
15b10 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
15b20 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20  t_channel \..   
15b30 20 20 20 20 20 20 20 20 20 45 61 67 6c 65 2e 5f           Eagle._
15b40 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b 53 63  Tests.Default+Sc
15b50 72 69 70 74 54 69 6d 65 6f 75 74 54 68 72 65 61  riptTimeoutThrea
15b60 64 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d \..           
15b70 20 2a 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c   *ToString* Eagl
15b80 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
15b90 2e 53 63 72 69 70 74 54 69 6d 65 6f 75 74 54 68  .ScriptTimeoutTh
15ba0 72 65 61 64 2e 54 6f 53 74 72 69 6e 67 0d 0a 20  read.ToString.. 
15bb0 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
15bc0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
15bd0 54 45 3a 20 48 61 73 20 4d 53 42 75 69 6c 64 20  TE: Has MSBuild 
15be0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
15bf0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
15c00 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
15c10 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
15c20 6d 73 42 75 69 6c 64 29 5d 7d 20 74 68 65 6e 20  msBuild)]} then 
15c30 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
15c40 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
15c50 73 74 20 22 6f 62 6a 65 63 74 2d 34 2e 31 33 22  st "object-4.13"
15c60 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
15c70 20 20 63 68 65 63 6b 46 6f 72 41 73 73 65 6d 62    checkForAssemb
15c80 6c 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ly $test_channel
15c90 20 4d 69 63 72 6f 73 6f 66 74 2e 42 75 69 6c 64   Microsoft.Build
15ca0 2e 46 72 61 6d 65 77 6f 72 6b 0d 0a 0d 0a 20 20  .Framework....  
15cb0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
15cc0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
15cd0 62 6a 65 63 74 2d 36 2e 31 22 2e 0d 0a 20 20 20  bject-6.1"...   
15ce0 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
15cf0 6b 46 6f 72 41 73 73 65 6d 62 6c 79 20 24 74 65  kForAssembly $te
15d00 73 74 5f 63 68 61 6e 6e 65 6c 20 4d 69 63 72 6f  st_channel Micro
15d10 73 6f 66 74 2e 42 75 69 6c 64 2e 45 6e 67 69 6e  soft.Build.Engin
15d20 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  e..    }....    
15d30 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
15d40 61 73 20 45 78 63 65 6c 20 74 65 73 74 69 6e 67  as Excel testing
15d50 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
15d60 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
15d70 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
15d80 78 69 73 74 73 20 6e 6f 28 65 78 63 65 6c 29 5d  xists no(excel)]
15d90 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
15da0 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
15db0 20 46 6f 72 20 74 65 73 74 73 20 22 65 78 63 65   For tests "exce
15dc0 6c 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23  l-*.*"...      #
15dd0 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
15de0 41 73 73 65 6d 62 6c 79 20 24 74 65 73 74 5f 63  Assembly $test_c
15df0 68 61 6e 6e 65 6c 20 4d 69 63 72 6f 73 6f 66 74  hannel Microsoft
15e00 2e 4f 66 66 69 63 65 2e 49 6e 74 65 72 6f 70 2e  .Office.Interop.
15e10 45 78 63 65 6c 0d 0a 0d 0a 20 20 20 20 20 20 23  Excel....      #
15e20 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
15e30 48 61 73 20 45 78 63 65 6c 20 75 73 61 62 69 6c  Has Excel usabil
15e40 69 74 79 20 74 65 73 74 69 6e 67 20 62 65 65 6e  ity testing been
15e50 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
15e60 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
15e70 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
15e80 65 78 63 65 6c 55 73 61 62 6c 65 29 5d 7d 20 74  excelUsable)]} t
15e90 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
15ea0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
15eb0 3a 20 46 6f 72 20 74 65 73 74 73 20 22 65 78 63  : For tests "exc
15ec0 65 6c 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  el-*.*"...      
15ed0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
15ee0 63 6b 46 6f 72 45 78 63 65 6c 55 73 61 62 6c 65  ckForExcelUsable
15ef0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
15f00 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
15f10 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
15f20 4f 54 45 3a 20 48 61 73 20 73 70 65 65 63 68 20  OTE: Has speech 
15f30 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
15f40 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
15f50 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
15f60 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
15f70 73 70 65 65 63 68 29 5d 7d 20 74 68 65 6e 20 7b  speech)]} then {
15f80 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
15f90 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
15fa0 20 61 75 64 69 6f 20 76 6f 6c 75 6d 65 2c 20 69   audio volume, i
15fb0 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
15fc0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
15fd0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
15fe0 65 73 74 5f 76 6f 6c 75 6d 65 5d 7d 20 74 68 65  est_volume]} the
15ff0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65 74  n {..        set
16000 20 74 65 73 74 5f 76 6f 6c 75 6d 65 20 30 3b 20   test_volume 0; 
16010 23 20 69 6e 20 70 65 72 63 65 6e 74 2c 20 30 20  # in percent, 0 
16020 69 73 20 73 69 6c 65 6e 74 2e 0d 0a 20 20 20 20  is silent...    
16030 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
16040 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
16050 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 34  r test "object-4
16060 2e 35 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .5"...      #.. 
16070 20 20 20 20 20 63 68 65 63 6b 46 6f 72 41 73 73       checkForAss
16080 65 6d 62 6c 79 20 24 74 65 73 74 5f 63 68 61 6e  embly $test_chan
16090 6e 65 6c 20 53 79 73 74 65 6d 2e 53 70 65 65 63  nel System.Speec
160a0 68 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  h..    }....    
160b0 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
160c0 61 73 20 57 69 6e 46 6f 72 6d 73 20 74 65 73 74  as WinForms test
160d0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
160e0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
160f0 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
16100 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 69 6e 46  o exists no(winF
16110 6f 72 6d 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  orms)]} then {..
16120 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
16130 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
16140 20 22 6f 62 6a 65 63 74 2d 31 33 2e 31 2e 2a 22   "object-13.1.*"
16150 2c 20 22 6f 62 6a 65 63 74 2d 31 33 2e 32 2e 2a  , "object-13.2.*
16160 22 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 23 20  ", and..      # 
16170 20 20 20 20 20 20 22 77 69 6e 46 6f 72 6d 73 2d        "winForms-
16180 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  *.*"...      #..
16190 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 57 69        checkForWi
161a0 6e 64 6f 77 73 46 6f 72 6d 73 20 24 74 65 73 74  ndowsForms $test
161b0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
161c0 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
161d0 4e 4f 54 45 3a 20 41 72 65 20 77 65 20 72 75 6e  NOTE: Are we run
161e0 6e 69 6e 67 20 69 6e 20 61 20 57 6f 57 36 34 20  ning in a WoW64 
161f0 70 72 6f 63 65 73 73 3f 0d 0a 20 20 20 20 23 0d  process?..    #.
16200 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
16210 65 78 69 73 74 73 20 6e 6f 28 77 6f 77 36 34 29  exists no(wow64)
16220 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
16230 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
16240 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63 75  : This is not cu
16250 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79 20  rrently used by 
16260 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20 20  any tests...    
16270 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
16280 46 6f 72 57 6f 57 36 34 20 24 74 65 73 74 5f 63  ForWoW64 $test_c
16290 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
162a0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
162b0 54 45 3a 20 41 72 65 20 77 65 20 72 75 6e 6e 69  TE: Are we runni
162c0 6e 67 20 69 6e 20 61 6e 20 53 54 41 20 74 68 72  ng in an STA thr
162d0 65 61 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ead?..    #..   
162e0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
162f0 74 73 20 6e 6f 28 73 74 61 54 68 72 65 61 64 29  ts no(staThread)
16300 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
16310 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
16320 3a 20 46 6f 72 20 74 65 73 74 73 20 22 78 61 6d  : For tests "xam
16330 6c 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23  l-1.*"...      #
16340 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
16350 53 74 61 54 68 72 65 61 64 20 24 74 65 73 74 5f  StaThread $test_
16360 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
16370 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
16380 4f 54 45 3a 20 48 61 73 20 57 50 46 20 74 65 73  OTE: Has WPF tes
16390 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
163a0 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
163b0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
163c0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 70 66  fo exists no(wpf
163d0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
163e0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
163f0 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 78 61  E: For tests "xa
16400 6d 6c 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  ml-1.*"...      
16410 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  #..      checkFo
16420 72 57 69 6e 64 6f 77 73 50 72 65 73 65 6e 74 61  rWindowsPresenta
16430 74 69 6f 6e 46 6f 75 6e 64 61 74 69 6f 6e 20 24  tionFoundation $
16440 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
16450 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
16460 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 50 6f    # NOTE: Has Po
16470 77 65 72 53 68 65 6c 6c 20 74 65 73 74 69 6e 67  werShell testing
16480 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
16490 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
164a0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
164b0 78 69 73 74 73 20 6e 6f 28 70 6f 77 65 72 53 68  xists no(powerSh
164c0 65 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ell)]} then {.. 
164d0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
164e0 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
164f0 22 6f 62 6a 65 63 74 2d 34 2e 37 22 2c 20 22 6f  "object-4.7", "o
16500 62 6a 65 63 74 2d 34 2e 38 22 2c 20 61 6e 64 20  bject-4.8", and 
16510 22 6f 62 6a 65 63 74 2d 34 2e 39 22 2e 0d 0a 20  "object-4.9"... 
16520 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
16530 65 63 6b 46 6f 72 50 6f 77 65 72 53 68 65 6c 6c  eckForPowerShell
16540 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
16550 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
16560 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
16570 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 32  .NET Framework 2
16580 2e 30 20 53 65 72 76 69 63 65 20 50 61 63 6b 20  .0 Service Pack 
16590 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
165a0 62 65 65 6e 0d 0a 20 20 20 20 23 20 20 20 20 20  been..    #     
165b0 20 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20    disabled?..   
165c0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
165d0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74  fo exists no(net
165e0 46 78 32 30 53 70 29 5d 7d 20 74 68 65 6e 20 7b  Fx20Sp)]} then {
165f0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
16600 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
16610 74 20 22 68 61 73 68 2d 31 2e 31 22 2e 0d 0a 20  t "hash-1.1"... 
16620 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
16630 65 63 6b 46 6f 72 4e 65 74 46 78 32 30 53 65 72  eckForNetFx20Ser
16640 76 69 63 65 50 61 63 6b 20 24 74 65 73 74 5f 63  vicePack $test_c
16650 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
16660 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16670 54 45 3a 20 48 61 73 20 2e 4e 45 54 20 46 72 61  TE: Has .NET Fra
16680 6d 65 77 6f 72 6b 20 34 2e 78 20 74 65 73 74 69  mework 4.x testi
16690 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
166a0 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
166b0 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
166c0 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74 46 78   exists no(netFx
166d0 34 78 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  4x)]} then {..  
166e0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
166f0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
16700 62 6a 65 63 74 2d 31 32 2e 31 2e 2a 22 2e 0d 0a  bject-12.1.*"...
16710 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63        #..      c
16720 68 65 63 6b 46 6f 72 4e 65 74 46 78 34 78 20 24  heckForNetFx4x $
16730 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
16740 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
16750 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 74 61    # NOTE: Has ta
16760 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 74  rget framework t
16770 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
16780 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
16790 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
167a0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
167b0 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 5d  argetFramework)]
167c0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
167d0 63 68 65 63 6b 46 6f 72 54 61 72 67 65 74 46 72  checkForTargetFr
167e0 61 6d 65 77 6f 72 6b 20 24 74 65 73 74 5f 63 68  amework $test_ch
167f0 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
16800 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
16810 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 75 74  E: Has native ut
16820 69 6c 69 74 79 20 74 65 73 74 69 6e 67 20 73 75  ility testing su
16830 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
16840 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
16850 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
16860 74 73 20 6e 6f 28 6e 61 74 69 76 65 55 74 69 6c  ts no(nativeUtil
16870 69 74 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ity)]} then {.. 
16880 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 61 74       checkForNat
16890 69 76 65 55 74 69 6c 69 74 79 20 24 74 65 73 74  iveUtility $test
168a0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
168b0 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
168c0 4e 4f 54 45 3a 20 48 61 73 20 56 69 73 75 61 6c  NOTE: Has Visual
168d0 20 53 74 75 64 69 6f 20 74 65 73 74 69 6e 67 20   Studio testing 
168e0 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
168f0 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
16900 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
16910 69 73 74 73 20 6e 6f 28 76 69 73 75 61 6c 53 74  ists no(visualSt
16920 75 64 69 6f 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  udio)]} then {..
16930 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 56 69        checkForVi
16940 73 75 61 6c 53 74 75 64 69 6f 56 69 61 52 65 67  sualStudioViaReg
16950 69 73 74 72 79 20 24 74 65 73 74 5f 63 68 61 6e  istry $test_chan
16960 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
16970 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
16980 20 48 61 73 20 57 69 58 20 74 65 73 74 69 6e 67   Has WiX testing
16990 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
169a0 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
169b0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
169c0 78 69 73 74 73 20 6e 6f 28 77 69 78 29 5d 7d 20  xists no(wix)]} 
169d0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
169e0 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  .      # NOTE: F
169f0 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d  or test "object-
16a00 34 2e 31 30 22 2e 0d 0a 20 20 20 20 20 20 23 0d  4.10"...      #.
16a10 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 57  .      checkForW
16a20 69 78 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ix $test_channel
16a30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
16a40 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
16a50 73 20 6e 61 74 69 76 65 20 64 65 62 75 67 67 65  s native debugge
16a60 72 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  r testing suppor
16a70 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
16a80 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
16a90 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
16aa0 6f 28 6e 61 74 69 76 65 44 65 62 75 67 67 65 72  o(nativeDebugger
16ab0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
16ac0 20 20 63 68 65 63 6b 46 6f 72 4e 61 74 69 76 65    checkForNative
16ad0 44 65 62 75 67 67 65 72 20 24 74 65 73 74 5f 63  Debugger $test_c
16ae0 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
16af0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16b00 54 45 3a 20 48 61 73 20 6d 61 6e 61 67 65 64 20  TE: Has managed 
16b10 64 65 62 75 67 67 65 72 20 74 65 73 74 69 6e 67  debugger testing
16b20 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
16b30 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
16b40 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
16b50 78 69 73 74 73 20 6e 6f 28 6d 61 6e 61 67 65 64  xists no(managed
16b60 44 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e  Debugger)]} then
16b70 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
16b80 6f 72 4d 61 6e 61 67 65 64 44 65 62 75 67 67 65  orManagedDebugge
16b90 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  r $test_channel.
16ba0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
16bb0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
16bc0 20 6d 61 6e 61 67 65 64 20 64 65 62 75 67 67 69   managed debuggi
16bd0 6e 67 20 61 73 73 69 73 74 61 6e 74 73 20 74 65  ng assistants te
16be0 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
16bf0 65 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  en..    #       
16c00 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
16c10 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
16c20 20 65 78 69 73 74 73 20 6e 6f 28 6d 61 6e 61 67   exists no(manag
16c30 65 64 44 65 62 75 67 67 69 6e 67 41 73 73 69 73  edDebuggingAssis
16c40 74 61 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  tants)]} then {.
16c50 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d  .      checkForM
16c60 61 6e 61 67 65 64 44 65 62 75 67 67 69 6e 67 41  anagedDebuggingA
16c70 73 73 69 73 74 61 6e 74 73 20 24 74 65 73 74 5f  ssistants $test_
16c80 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
16c90 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
16ca0 4f 54 45 3a 20 48 61 73 20 73 63 72 69 70 74 20  OTE: Has script 
16cb0 64 65 62 75 67 67 65 72 20 74 65 73 74 69 6e 67  debugger testing
16cc0 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
16cd0 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
16ce0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
16cf0 78 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74 44  xists no(scriptD
16d00 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e 20  ebugger)]} then 
16d10 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
16d20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
16d30 73 74 73 20 22 64 65 62 75 67 2d 31 2e 31 22 2c  sts "debug-1.1",
16d40 20 22 64 65 62 75 67 2d 32 2e 31 22 2c 20 22 64   "debug-2.1", "d
16d50 65 62 75 67 2d 33 2e 31 22 2c 20 61 6e 64 0d 0a  ebug-3.1", and..
16d60 20 20 20 20 20 20 23 20 20 20 20 20 20 20 22 64        #       "d
16d70 65 62 75 67 2d 34 2e 31 22 2e 0d 0a 20 20 20 20  ebug-4.1"...    
16d80 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
16d90 46 6f 72 53 63 72 69 70 74 44 65 62 75 67 67 65  ForScriptDebugge
16da0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  r $test_channel.
16db0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
16dc0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
16dd0 20 73 63 72 69 70 74 20 64 65 62 75 67 67 65 72   script debugger
16de0 20 69 6e 74 65 72 70 72 65 74 65 72 20 74 65 73   interpreter tes
16df0 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
16e00 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 64  n..    #       d
16e10 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
16e20 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
16e30 65 78 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74  exists no(script
16e40 44 65 62 75 67 67 65 72 49 6e 74 65 72 70 72 65  DebuggerInterpre
16e50 74 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ter)]} then {.. 
16e60 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
16e70 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
16e80 64 65 62 75 67 2d 32 2e 31 22 2e 0d 0a 20 20 20  debug-2.1"...   
16e90 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
16ea0 6b 46 6f 72 53 63 72 69 70 74 44 65 62 75 67 67  kForScriptDebugg
16eb0 65 72 49 6e 74 65 72 70 72 65 74 65 72 20 24 74  erInterpreter $t
16ec0 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
16ed0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
16ee0 20 23 20 4e 4f 54 45 3a 20 41 72 65 20 77 65 20   # NOTE: Are we 
16ef0 72 75 6e 6e 69 6e 67 20 75 6e 64 65 72 20 74 68  running under th
16f00 65 20 4d 6f 6e 6f 20 64 65 62 75 67 67 65 72 3f  e Mono debugger?
16f10 20 20 49 66 20 73 6f 2c 20 73 65 76 65 72 61 6c    If so, several
16f20 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 65  ..    #       te
16f30 73 74 73 20 77 69 6c 6c 20 68 61 76 65 20 74 6f  sts will have to
16f40 20 62 65 20 64 69 73 61 62 6c 65 64 20 62 65 63   be disabled bec
16f50 61 75 73 65 20 74 68 65 79 20 64 6f 20 6e 6f 74  ause they do not
16f60 20 61 70 70 65 61 72 0d 0a 20 20 20 20 23 20 20   appear..    #  
16f70 20 20 20 20 20 74 6f 20 77 6f 72 6b 20 74 68 65       to work the
16f80 72 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  re...    #..    
16f90 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
16fa0 73 20 6e 6f 28 6d 6f 6e 6f 44 65 62 75 67 67 65  s no(monoDebugge
16fb0 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  r)]} then {..   
16fc0 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
16fd0 68 61 6e 6e 65 6c 20 22 2d 2d 2d 2d 20 63 68 65  hannel "---- che
16fe0 63 6b 69 6e 67 20 66 6f 72 20 4d 6f 6e 6f 20 64  cking for Mono d
16ff0 65 62 75 67 67 65 72 2e 2e 2e 20 22 0d 0a 0d 0a  ebugger... "....
17000 20 20 20 20 20 20 69 66 20 7b 5b 68 61 76 65 43        if {[haveC
17010 6f 6e 73 74 72 61 69 6e 74 20 6d 6f 6e 6f 5d 20  onstraint mono] 
17020 26 26 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69  && [haveConstrai
17030 6e 74 20 6d 61 6e 61 67 65 64 44 65 62 75 67 67  nt managedDebugg
17040 65 72 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  er]} then {..   
17050 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
17060 23 20 4e 4f 54 45 3a 20 41 64 64 20 61 20 73 70  # NOTE: Add a sp
17070 65 63 69 61 6c 20 74 65 73 74 20 63 6f 6e 73 74  ecial test const
17080 72 61 69 6e 74 20 74 6f 20 73 69 6d 70 6c 69 66  raint to simplif
17090 79 20 74 68 65 20 4d 6f 6e 6f 20 64 65 62 75 67  y the Mono debug
170a0 67 65 72 0d 0a 20 20 20 20 20 20 20 20 23 20 20  ger..        #  
170b0 20 20 20 20 20 74 65 73 74 20 63 6f 6e 73 74 72       test constr
170c0 61 69 6e 74 20 63 68 65 63 6b 69 6e 67 20 66 6f  aint checking fo
170d0 72 20 74 68 65 20 74 65 73 74 73 20 74 68 61 74  r the tests that
170e0 20 6e 65 65 64 20 69 74 2e 0d 0a 20 20 20 20 20   need it...     
170f0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 61 64     #..        ad
17100 64 43 6f 6e 73 74 72 61 69 6e 74 20 6d 6f 6e 6f  dConstraint mono
17110 44 65 62 75 67 67 65 72 0d 0a 0d 0a 20 20 20 20  Debugger....    
17120 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
17130 63 68 61 6e 6e 65 6c 20 79 65 73 5c 6e 0d 0a 20  channel yes\n.. 
17140 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
17150 20 20 20 20 20 20 20 74 70 75 74 73 20 24 74 65         tputs $te
17160 73 74 5f 63 68 61 6e 6e 65 6c 20 6e 6f 5c 6e 0d  st_channel no\n.
17170 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d  .      }..    }.
17180 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
17190 4e 4f 54 45 3a 20 48 61 73 20 47 61 72 75 64 61  NOTE: Has Garuda
171a0 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
171b0 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
171c0 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
171d0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
171e0 28 67 61 72 75 64 61 44 6c 6c 29 5d 7d 20 74 68  (garudaDll)]} th
171f0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
17200 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
17210 20 74 65 73 74 73 20 22 67 61 72 75 64 61 2d 31   tests "garuda-1
17220 2e 31 22 20 61 6e 64 20 22 67 61 72 75 64 61 2d  .1" and "garuda-
17230 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  1.2"...      #..
17240 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 47 61        checkForGa
17250 72 75 64 61 44 6c 6c 20 24 74 65 73 74 5f 63 68  rudaDll $test_ch
17260 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
17270 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
17280 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17290 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
172a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
172b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
172c0 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
172d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 20  ############### 
172e0 45 4e 44 20 45 61 67 6c 65 20 43 6f 6e 73 74 72  END Eagle Constr
172f0 61 69 6e 74 73 20 23 23 23 23 23 23 23 23 23 23  aints ##########
17300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17310 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
17320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17330 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17350 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17360 23 0d 0a 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20  #..  } else {.. 
17370 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
17380 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 61 74  : Make sure that
17390 20 54 63 6c 20 68 6f 6e 6f 72 73 20 74 68 65 20   Tcl honors the 
173a0 45 61 67 6c 65 20 74 65 73 74 20 63 6f 6e 73 74  Eagle test const
173b0 72 61 69 6e 74 73 2e 0d 0a 20 20 20 20 23 0d 0a  raints...    #..
173c0 20 20 20 20 63 6f 6e 66 69 67 75 72 65 54 63 6c      configureTcl
173d0 74 65 73 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  test \..        
173e0 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
173f0 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
17400 76 65 72 62 6f 73 65 29 5d 20 3f 20 5c 0d 0a 20  verbose)] ? \.. 
17410 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
17420 5f 66 6c 61 67 73 28 2d 76 65 72 62 6f 73 65 29  _flags(-verbose)
17430 20 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20   : ""}] \..     
17440 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
17450 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67  exists test_flag
17460 73 28 2d 6d 61 74 63 68 29 5d 20 3f 20 5c 0d 0a  s(-match)] ? \..
17470 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73              $tes
17480 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20  t_flags(-match) 
17490 3a 20 5b 6c 69 73 74 5d 7d 5d 20 5c 0d 0a 20 20  : [list]}] \..  
174a0 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
174b0 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66  fo exists test_f
174c0 6c 61 67 73 28 2d 73 6b 69 70 29 5d 20 3f 20 5c  lags(-skip)] ? \
174d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74  ..            $t
174e0 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69 70 29  est_flags(-skip)
174f0 20 3a 20 5b 6c 69 73 74 5d 7d 5d 20 5c 0d 0a 20   : [list]}] \.. 
17500 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69         [expr {[i
17510 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
17520 66 6c 61 67 73 28 2d 63 6f 6e 73 74 72 61 69 6e  flags(-constrain
17530 74 73 29 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20  ts)] ? \..      
17540 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67        $test_flag
17550 73 28 2d 63 6f 6e 73 74 72 61 69 6e 74 73 29 20  s(-constraints) 
17560 3a 20 5b 6c 69 73 74 5d 7d 5d 20 5c 0d 0a 20 20  : [list]}] \..  
17570 20 20 20 20 20 20 5b 6c 69 73 74 5d 20 66 61 6c        [list] fal
17580 73 65 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  se....    #..   
17590 20 23 20 48 41 43 4b 3a 20 52 65 73 65 74 20 74   # HACK: Reset t
175a0 68 65 20 74 65 73 74 20 63 6f 75 6e 74 73 20 66  he test counts f
175b0 6f 72 20 74 63 6c 74 65 73 74 2e 0d 0a 20 20 20  or tcltest...   
175c0 20 23 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74 63   #..    set ::tc
175d0 6c 74 65 73 74 3a 3a 6e 75 6d 54 65 73 74 73 28  ltest::numTests(
175e0 54 6f 74 61 6c 29 20 30 0d 0a 20 20 20 20 73 65  Total) 0..    se
175f0 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75 6d  t ::tcltest::num
17600 54 65 73 74 73 28 53 6b 69 70 70 65 64 29 20 30  Tests(Skipped) 0
17610 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74 63 6c 74  ..    set ::tclt
17620 65 73 74 3a 3a 6e 75 6d 54 65 73 74 73 28 50 61  est::numTests(Pa
17630 73 73 65 64 29 20 30 0d 0a 20 20 20 20 73 65 74  ssed) 0..    set
17640 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75 6d 54   ::tcltest::numT
17650 65 73 74 73 28 46 61 69 6c 65 64 29 20 30 0d 0a  ests(Failed) 0..
17660 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 48  ..    #..    # H
17670 41 43 4b 3a 20 52 65 73 65 74 20 74 68 65 20 6c  ACK: Reset the l
17680 69 73 74 20 6f 66 20 66 61 69 6c 65 64 20 66 69  ist of failed fi
17690 6c 65 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  les...    #..   
176a0 20 73 65 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a   set ::tcltest::
176b0 66 61 69 6c 46 69 6c 65 73 20 5b 6c 69 73 74 5d  failFiles [list]
176c0 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23  ....    ########
176d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
176e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
176f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17700 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17710 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23  ###..    #######
17720 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17730 23 23 23 20 42 45 47 49 4e 20 54 63 6c 20 43 6f  ### BEGIN Tcl Co
17740 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23 23  nstraints ######
17750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17760 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23  ####..    ######
17770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17780 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17790 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
177a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
177b0 23 23 23 23 23 0d 0a 0d 0a 20 20 20 20 74 70 75  #####....    tpu
177c0 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
177d0 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
177e0 2d 20 73 74 61 72 74 20 6f 66 20 54 63 6c 20 73  - start of Tcl s
177f0 70 65 63 69 66 69 63 20 74 65 73 74 20 63 6f 6e  pecific test con
17800 73 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a  straints...\n"..
17810 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
17820 4f 54 45 3a 20 48 61 73 20 63 6f 6d 70 69 6c 65  OTE: Has compile
17830 2f 72 75 6e 74 69 6d 65 20 6f 70 74 69 6f 6e 20  /runtime option 
17840 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
17850 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
17860 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
17870 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
17880 63 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 29 5d  compileOptions)]
17890 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
178a0 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
178b0 20 48 61 73 20 22 6b 6e 6f 77 6e 22 20 63 6f 6d   Has "known" com
178c0 70 69 6c 65 20 6f 70 74 69 6f 6e 20 74 65 73 74  pile option test
178d0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
178e0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
178f0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
17900 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
17910 6b 6e 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69  knownCompileOpti
17920 6f 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ons)]} then {.. 
17930 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
17940 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20    # NOTE: Check 
17950 66 6f 72 20 61 6c 6c 20 22 6b 6e 6f 77 6e 22 20  for all "known" 
17960 63 6f 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 73 2e  compile options.
17970 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
17980 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4b 6e 6f       checkForKno
17990 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73  wnCompileOptions
179a0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
179b0 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
179c0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
179d0 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 64     # NOTE: Has d
179e0 65 64 69 63 61 74 65 64 20 74 65 73 74 20 73 75  edicated test su
179f0 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
17a00 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
17a10 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
17a20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
17a30 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
17a40 6f 6d 70 69 6c 65 54 65 73 74 29 5d 7d 20 74 68  ompileTest)]} th
17a50 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
17a60 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
17a70 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
17a80 74 63 6c 4c 6f 61 64 2d 31 33 2e 31 2e 31 22 20  tclLoad-13.1.1" 
17a90 61 6e 64 20 22 74 63 6c 4c 6f 61 64 2d 31 33 2e  and "tclLoad-13.
17aa0 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  1.2"...         
17ab0 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
17ac0 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
17ad0 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
17ae0 6c 20 54 45 53 54 0d 0a 20 20 20 20 20 20 20 20  l TEST..        
17af0 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
17b00 7d 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23 23  }....    #######
17b10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17b30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17b40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17b50 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23  ####..    ######
17b60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17b70 23 23 23 23 23 20 45 4e 44 20 54 63 6c 20 43 6f  ##### END Tcl Co
17b80 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23 23  nstraints ######
17b90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ba0 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23  #####..    #####
17bb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17bc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17bd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17be0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17bf0 23 23 23 23 23 23 0d 0a 20 20 7d 0d 0a 0d 0a 20  ######..  }.... 
17c00 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
17c10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17c20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17c30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17c40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
17c50 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
17c60 23 23 23 23 23 23 23 23 23 20 42 45 47 49 4e 20  ######### BEGIN 
17c70 54 63 6c 20 26 20 45 61 67 6c 65 20 43 6f 6e 73  Tcl & Eagle Cons
17c80 74 72 61 69 6e 74 73 20 23 23 23 23 23 23 23 23  traints ########
17c90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
17ca0 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
17cb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17cc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17cd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ce0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17cf0 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
17d00 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20  t_channel \..   
17d10 20 20 20 22 2d 2d 2d 2d 20 73 74 61 72 74 20 6f     "---- start o
17d20 66 20 63 6f 6d 6d 6f 6e 20 28 54 63 6c 20 26 20  f common (Tcl & 
17d30 45 61 67 6c 65 29 20 74 65 73 74 20 63 6f 6e 73  Eagle) test cons
17d40 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a 0d  traints...\n"...
17d50 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
17d60 46 6f 72 63 65 20 74 65 73 74 73 20 74 68 61 74  Force tests that
17d70 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 62 6c   are normally bl
17d80 6f 63 6b 65 64 20 62 79 20 4d 6f 6e 6f 20 69 73  ocked by Mono is
17d90 73 75 65 73 20 74 6f 20 72 75 6e 3f 0d 0a 20 20  sues to run?..  
17da0 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65  #..  if {[info e
17db0 78 69 73 74 73 20 6e 6f 28 6d 6f 6e 6f 48 61 63  xists no(monoHac
17dc0 6b 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ks)]} then {..  
17dd0 20 20 61 64 64 4b 6e 6f 77 6e 4d 6f 6e 6f 43 6f    addKnownMonoCo
17de0 6e 73 74 72 61 69 6e 74 73 20 74 72 75 65 0d 0a  nstraints true..
17df0 20 20 20 20 61 64 64 4b 6e 6f 77 6e 4d 6f 6e 6f      addKnownMono
17e00 43 6f 6e 73 74 72 61 69 6e 74 73 20 66 61 6c 73  Constraints fals
17e10 65 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  e....    tputs $
17e20 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a  test_channel \..
17e30 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 61 64          "---- ad
17e40 64 65 64 20 61 6c 6c 20 6b 6e 6f 77 6e 20 4d 6f  ded all known Mo
17e50 6e 6f 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69  no test constrai
17e60 6e 74 73 20 28 66 6f 72 63 65 64 29 5c 6e 22 0d  nts (forced)\n".
17e70 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
17e80 20 4e 4f 54 45 3a 20 48 61 73 20 56 69 73 75 61   NOTE: Has Visua
17e90 6c 20 53 74 75 64 69 6f 20 74 65 73 74 69 6e 67  l Studio testing
17ea0 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
17eb0 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  sabled?..  #..  
17ec0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
17ed0 73 20 6e 6f 28 76 69 73 75 61 6c 53 74 75 64 69  s no(visualStudi
17ee0 6f 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  o)]} then {..   
17ef0 20 63 68 65 63 6b 46 6f 72 56 69 73 75 61 6c 53   checkForVisualS
17f00 74 75 64 69 6f 56 69 61 56 73 57 68 65 72 65 20  tudioViaVsWhere 
17f10 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
17f20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
17f30 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 45  OTE: Check for E
17f40 61 67 6c 65 20 63 6f 72 65 20 6c 69 62 72 61 72  agle core librar
17f50 79 20 70 61 63 6b 61 67 65 20 6e 61 6d 65 73 2e  y package names.
17f60 2e 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  ....  #..  if {!
17f70 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
17f80 63 6f 72 65 50 61 63 6b 61 67 65 4e 61 6d 65 73  corePackageNames
17f90 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
17fa0 63 68 65 63 6b 46 6f 72 50 61 63 6b 61 67 65 20  checkForPackage 
17fb0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e  $test_channel {^
17fc0 45 61 67 6c 65 5c 2e 5f 50 6c 75 67 69 6e 73 5c  Eagle\._Plugins\
17fd0 2e 43 6f 72 65 2c 20 2e 2a 24 7d 0d 0a 20 20 20  .Core, .*$}..   
17fe0 20 63 68 65 63 6b 46 6f 72 50 61 63 6b 61 67 65   checkForPackage
17ff0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b   $test_channel {
18000 5e 45 61 67 6c 65 5c 2e 5f 50 6c 75 67 69 6e 73  ^Eagle\._Plugins
18010 5c 2e 4f 62 6a 65 63 74 2c 20 2e 2a 24 7d 0d 0a  \.Object, .*$}..
18020 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61 63 6b      checkForPack
18030 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  age $test_channe
18040 6c 20 7b 5e 45 61 67 6c 65 5c 2e 5f 50 6c 75 67  l {^Eagle\._Plug
18050 69 6e 73 5c 2e 54 65 73 74 2c 20 2e 2a 24 7d 0d  ins\.Test, .*$}.
18060 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61 63  .    checkForPac
18070 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  kage $test_chann
18080 65 6c 20 7b 5e 45 61 67 6c 65 5c 2e 5f 50 6c 75  el {^Eagle\._Plu
18090 67 69 6e 73 5c 2e 54 72 61 63 65 2c 20 2e 2a 24  gins\.Trace, .*$
180a0 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  }..  }....  #.. 
180b0 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66   # NOTE: Check f
180c0 6f 72 20 45 61 67 6c 65 20 45 6e 74 65 72 70 72  or Eagle Enterpr
180d0 69 73 65 20 45 64 69 74 69 6f 6e 20 70 61 63 6b  ise Edition pack
180e0 61 67 65 20 6e 61 6d 65 73 2e 2e 2e 0d 0a 20 20  age names.....  
180f0 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
18100 65 78 69 73 74 73 20 6e 6f 28 65 6e 74 65 72 70  exists no(enterp
18110 72 69 73 65 50 61 63 6b 61 67 65 4e 61 6d 65 73  risePackageNames
18120 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
18130 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54  #..    # NOTE: T
18140 68 65 73 65 20 61 72 65 20 66 72 6f 6d 20 76 61  hese are from va
18150 72 69 6f 75 73 20 53 4b 55 73 20 6f 66 20 74 68  rious SKUs of th
18160 65 20 48 61 72 70 79 20 70 6c 75 67 69 6e 2e 0d  e Harpy plugin..
18170 0a 20 20 20 20 23 0d 0a 20 20 20 20 63 68 65 63  .    #..    chec
18180 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65 73  kForPackage $tes
18190 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 4c 69 63 65  t_channel {^Lice
181a0 6e 73 69 6e 67 5c 2e 43 6f 72 65 2c 20 2e 2a 24  nsing\.Core, .*$
181b0 7d 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50  }..    checkForP
181c0 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61  ackage $test_cha
181d0 6e 6e 65 6c 20 7b 5e 4c 69 63 65 6e 73 69 6e 67  nnel {^Licensing
181e0 5c 2e 53 74 61 6e 64 61 72 64 2c 20 2e 2a 24 7d  \.Standard, .*$}
181f0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61  ..    checkForPa
18200 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e  ckage $test_chan
18210 6e 65 6c 20 7b 5e 4c 69 63 65 6e 73 69 6e 67 5c  nel {^Licensing\
18220 2e 45 6e 74 65 72 70 72 69 73 65 2c 20 2e 2a 24  .Enterprise, .*$
18230 7d 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50  }..    checkForP
18240 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61  ackage $test_cha
18250 6e 6e 65 6c 20 7b 5e 53 65 63 75 72 69 74 79 5c  nnel {^Security\
18260 2e 43 6f 72 65 2c 20 2e 2a 24 7d 0d 0a 0d 0a 20  .Core, .*$}.... 
18270 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
18280 3a 20 54 68 65 73 65 20 61 72 65 20 66 72 6f 6d  : These are from
18290 20 76 61 72 69 6f 75 73 20 53 4b 55 73 20 6f 66   various SKUs of
182a0 20 74 68 65 20 42 61 64 67 65 20 70 6c 75 67 69   the Badge plugi
182b0 6e 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 63  n...    #..    c
182c0 68 65 63 6b 46 6f 72 50 61 63 6b 61 67 65 20 24  heckForPackage $
182d0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 42  test_channel {^B
182e0 61 64 67 65 5c 2e 45 6e 74 65 72 70 72 69 73 65  adge\.Enterprise
182f0 2c 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68 65 63  , .*$}..    chec
18300 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65 73  kForPackage $tes
18310 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 53 65 63 75  t_channel {^Secu
18320 72 69 74 79 5c 2e 43 65 72 74 69 66 69 63 61 74  rity\.Certificat
18330 65 73 2c 20 2e 2a 24 7d 0d 0a 20 20 7d 0d 0a 0d  es, .*$}..  }...
18340 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
18350 43 68 65 63 6b 20 66 6f 72 20 74 68 65 20 74 65  Check for the te
18360 73 74 20 73 75 69 74 65 20 69 6e 66 72 61 73 74  st suite infrast
18370 72 75 63 74 75 72 65 20 66 69 6c 65 73 2e 2e 2e  ructure files...
18380 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
18390 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
183a0 73 74 53 75 69 74 65 46 69 6c 65 73 29 5d 7d 20  stSuiteFiles)]} 
183b0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
183c0 6b 46 6f 72 54 65 73 74 53 75 69 74 65 46 69 6c  kForTestSuiteFil
183d0 65 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  es $test_channel
183e0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
183f0 23 20 4e 4f 54 45 3a 20 48 61 73 20 61 6c 6c 20  # NOTE: Has all 
18400 75 73 65 20 6f 66 20 5b 65 78 65 63 5d 20 66 6f  use of [exec] fo
18410 72 20 74 65 73 74 73 20 62 65 65 6e 20 64 69 73  r tests been dis
18420 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69  abled?..  #..  i
18430 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
18440 20 6e 6f 28 63 68 65 63 6b 46 6f 72 54 65 73 74   no(checkForTest
18450 45 78 65 63 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Exec)]} then {..
18460 20 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74      checkForTest
18470 45 78 65 63 20 24 74 65 73 74 5f 63 68 61 6e 6e  Exec $test_chann
18480 65 6c 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69  el [haveConstrai
18490 6e 74 20 71 75 69 65 74 5d 0d 0a 20 20 7d 0d 0a  nt quiet]..  }..
184a0 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
184b0 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20 66 6f   Has checking fo
184c0 72 20 74 68 65 20 74 65 73 74 20 6d 61 63 68 69  r the test machi
184d0 6e 65 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  ne been disabled
184e0 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ?..  #..  if {![
184f0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
18500 65 73 74 4d 61 63 68 69 6e 65 29 5d 7d 20 74 68  estMachine)]} th
18510 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
18520 6f 72 54 65 73 74 4d 61 63 68 69 6e 65 20 24 74  orTestMachine $t
18530 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
18540 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
18550 45 3a 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20  E: Has checking 
18560 66 6f 72 20 74 68 65 20 74 65 73 74 20 70 6c 61  for the test pla
18570 74 66 6f 72 6d 20 62 65 65 6e 20 64 69 73 61 62  tform been disab
18580 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20  led?..  #..  if 
18590 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
185a0 6f 28 74 65 73 74 50 6c 61 74 66 6f 72 6d 29 5d  o(testPlatform)]
185b0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
185c0 65 63 6b 46 6f 72 54 65 73 74 50 6c 61 74 66 6f  eckForTestPlatfo
185d0 72 6d 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  rm $test_channel
185e0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
185f0 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63  # NOTE: Has chec
18600 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73  king for the tes
18610 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  t configuration 
18620 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
18630 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
18640 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
18650 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 5d 7d  Configuration)]}
18660 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
18670 63 6b 46 6f 72 54 65 73 74 43 6f 6e 66 69 67 75  ckForTestConfigu
18680 72 61 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ration $test_cha
18690 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
186a0 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
186b0 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65  checking for the
186c0 20 74 65 73 74 20 6e 61 6d 65 20 70 72 65 66 69   test name prefi
186d0 78 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  x been disabled?
186e0 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
186f0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
18700 73 74 4e 61 6d 65 50 72 65 66 69 78 29 5d 7d 20  stNamePrefix)]} 
18710 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
18720 6b 46 6f 72 54 65 73 74 4e 61 6d 65 50 72 65 66  kForTestNamePref
18730 69 78 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ix $test_channel
18740 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
18750 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63  # NOTE: Has chec
18760 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73  king for the tes
18770 74 20 73 75 66 66 69 78 20 62 65 65 6e 20 64 69  t suffix been di
18780 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  sabled?..  #..  
18790 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
187a0 73 20 6e 6f 28 74 65 73 74 53 75 66 66 69 78 29  s no(testSuffix)
187b0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
187c0 68 65 63 6b 46 6f 72 54 65 73 74 53 75 66 66 69  heckForTestSuffi
187d0 78 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  x $test_channel.
187e0 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
187f0 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63 6b   NOTE: Has check
18800 69 6e 67 20 66 6f 72 20 74 68 65 20 65 78 74 72  ing for the extr
18810 61 20 66 69 6c 65 73 20 6e 65 65 64 65 64 20 62  a files needed b
18820 79 20 76 61 72 69 6f 75 73 20 74 65 73 74 73 20  y various tests 
18830 69 6e 20 74 68 65 0d 0a 20 20 23 20 20 20 20 20  in the..  #     
18840 20 20 45 61 67 6c 65 20 63 6f 72 65 20 74 65 73    Eagle core tes
18850 74 20 73 75 69 74 65 20 62 65 65 6e 20 64 69 73  t suite been dis
18860 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69  abled?..  #..  i
18870 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
18880 20 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 21 5b   no(core)] && ![
18890 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
188a0 68 65 63 6b 46 6f 72 46 69 6c 65 29 5d 7d 20 74  heckForFile)]} t
188b0 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
188c0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
188d0 73 74 73 20 22 62 65 6e 63 68 6d 61 72 6b 2d 31  sts "benchmark-1
188e0 2e 33 5b 38 39 5d 22 20 61 6e 64 20 22 62 65 6e  .3[89]" and "ben
188f0 63 68 6d 61 72 6b 2d 31 2e 34 30 22 2e 0d 0a 20  chmark-1.40"... 
18900 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
18910 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 62  info exists no(b
18920 65 6e 63 68 6d 61 72 6b 2e 74 78 74 29 5d 7d 20  enchmark.txt)]} 
18930 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68  then {..      ch
18940 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74  eckForFile $test
18950 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a  _channel [file j
18960 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70  oin $test_data_p
18970 61 74 68 20 62 65 6e 63 68 6d 61 72 6b 2e 74 78  ath benchmark.tx
18980 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t]..    }....   
18990 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
189a0 46 6f 72 20 74 65 73 74 20 22 62 65 6e 63 68 6d  For test "benchm
189b0 61 72 6b 2d 31 2e 34 32 22 2e 0d 0a 20 20 20 20  ark-1.42"...    
189c0 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
189d0 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 6e 67 44  o exists no(pngD
189e0 75 6d 70 2e 74 78 74 29 5d 7d 20 74 68 65 6e 20  ump.txt)]} then 
189f0 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
18a00 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
18a10 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
18a20 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 70  test_data_path p
18a30 6e 67 44 75 6d 70 2e 74 78 74 5d 0d 0a 20 20 20  ngDump.txt]..   
18a40 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
18a50 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
18a60 74 20 22 67 61 72 75 64 61 2d 31 2e 31 22 2e 0d  t "garuda-1.1"..
18a70 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
18a80 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
18a90 28 70 6b 67 41 6c 6c 2e 74 63 6c 29 5d 7d 20 74  (pkgAll.tcl)]} t
18aa0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
18ab0 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
18ac0 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
18ad0 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 4e 61  in $base_path Na
18ae0 74 69 76 65 20 50 61 63 6b 61 67 65 20 5c 0d 0a  tive Package \..
18af0 20 20 20 20 20 20 20 20 20 20 54 65 73 74 73 20            Tests 
18b00 61 6c 6c 2e 74 63 6c 5d 20 70 6b 67 41 6c 6c 2e  all.tcl] pkgAll.
18b10 74 63 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  tcl..    }....  
18b20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
18b30 20 46 6f 72 20 74 65 73 74 73 20 22 73 75 62 73   For tests "subs
18b40 74 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a  t-1.*"...    #..
18b50 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
18b60 78 69 73 74 73 20 6e 6f 28 62 61 64 5f 73 75 62  xists no(bad_sub
18b70 73 74 2e 74 78 74 29 5d 7d 20 74 68 65 6e 20 7b  st.txt)]} then {
18b80 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
18b90 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
18ba0 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74  el [file join $t
18bb0 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 62 61  est_data_path ba
18bc0 64 5f 73 75 62 73 74 2e 74 78 74 5d 0d 0a 20 20  d_subst.txt]..  
18bd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
18be0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
18bf0 73 74 20 22 70 72 6f 63 65 73 73 49 73 6f 6c 61  st "processIsola
18c00 74 69 6f 6e 2d 31 2e 31 22 2e 0d 0a 20 20 20 20  tion-1.1"...    
18c10 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
18c20 6f 20 65 78 69 73 74 73 20 6e 6f 28 69 73 6f 6c  o exists no(isol
18c30 61 74 65 64 2e 65 61 67 6c 65 29 5d 7d 20 74 68  ated.eagle)]} th
18c40 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
18c50 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
18c60 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
18c70 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
18c80 68 20 69 73 6f 6c 61 74 65 64 2e 65 61 67 6c 65  h isolated.eagle
18c90 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ]..    }....    
18ca0 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  #..    # NOTE: F
18cb0 6f 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31  or test "basic-1
18cc0 2e 37 33 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  .73"...    #..  
18cd0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
18ce0 73 74 73 20 6e 6f 28 63 61 6c 6c 53 74 61 63 6b  sts no(callStack
18cf0 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b  .eagle)]} then {
18d00 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
18d10 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
18d20 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74  el [file join $t
18d30 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 63 61  est_data_path ca
18d40 6c 6c 53 74 61 63 6b 2e 65 61 67 6c 65 5d 0d 0a  llStack.eagle]..
18d50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
18d60 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73      # NOTE: This
18d70 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c   is not currentl
18d80 79 20 75 73 65 64 20 62 79 20 61 6e 79 20 74 65  y used by any te
18d90 73 74 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69  sts.  However, i
18da0 74 20 69 73 0d 0a 20 20 20 20 23 20 20 20 20 20  t is..    #     
18db0 20 20 75 73 65 64 20 62 79 20 74 68 65 20 73 61    used by the sa
18dc0 6d 70 6c 65 20 74 61 72 67 65 74 73 20 66 69 6c  mple targets fil
18dd0 65 20 22 45 61 67 6c 65 2e 53 61 6d 70 6c 65 2e  e "Eagle.Sample.
18de0 74 61 72 67 65 74 73 22 2e 0d 0a 20 20 20 20 23  targets"...    #
18df0 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
18e00 20 65 78 69 73 74 73 20 6e 6f 28 65 76 61 6c 75   exists no(evalu
18e10 61 74 65 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65  ate.eagle)]} the
18e20 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
18e30 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
18e40 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
18e50 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
18e60 20 65 76 61 6c 75 61 74 65 2e 65 61 67 6c 65 5d   evaluate.eagle]
18e70 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
18e80 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68  ..    # NOTE: Th
18e90 69 73 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e  is is not curren
18ea0 74 6c 79 20 75 73 65 64 20 62 79 20 61 6e 79 20  tly used by any 
18eb0 74 65 73 74 73 2e 20 20 48 6f 77 65 76 65 72 2c  tests.  However,
18ec0 20 69 74 20 69 73 0d 0a 20 20 20 20 23 20 20 20   it is..    #   
18ed0 20 20 20 20 75 73 65 64 20 62 79 20 74 68 65 20      used by the 
18ee0 73 61 6d 70 6c 65 20 74 61 72 67 65 74 73 20 66  sample targets f
18ef0 69 6c 65 20 22 45 61 67 6c 65 2e 53 61 6d 70 6c  ile "Eagle.Sampl
18f00 65 2e 74 61 72 67 65 74 73 22 2e 0d 0a 20 20 20  e.targets"...   
18f10 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
18f20 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 75 62  fo exists no(sub
18f30 73 74 69 74 75 74 65 2e 65 61 67 6c 65 29 5d 7d  stitute.eagle)]}
18f40 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
18f50 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
18f60 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
18f70 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
18f80 70 61 74 68 20 73 75 62 73 74 69 74 75 74 65 2e  path substitute.
18f90 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  eagle]..    }...
18fa0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
18fb0 54 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20  TE: This is not 
18fc0 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62  currently used b
18fd0 79 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20  y any tests...  
18fe0 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
18ff0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e  nfo exists no(un
19000 69 63 6f 64 65 5f 62 6f 6d 2e 74 78 74 29 5d 7d  icode_bom.txt)]}
19010 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
19020 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
19030 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
19040 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
19050 70 61 74 68 20 75 6e 69 63 6f 64 65 5f 62 6f 6d  path unicode_bom
19060 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .txt]..    }....
19070 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
19080 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63  E: This is not c
19090 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79  urrently used by
190a0 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20   any tests...   
190b0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
190c0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e 69  fo exists no(uni
190d0 63 6f 64 65 5f 6e 6f 5f 62 6f 6d 2e 74 78 74 29  code_no_bom.txt)
190e0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
190f0 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
19100 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
19110 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74  e join $test_dat
19120 61 5f 70 61 74 68 20 75 6e 69 63 6f 64 65 5f 6e  a_path unicode_n
19130 6f 5f 62 6f 6d 2e 74 78 74 5d 0d 0a 20 20 20 20  o_bom.txt]..    
19140 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
19150 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20  # NOTE: This is 
19160 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73  not currently us
19170 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e  ed by any tests.
19180 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
19190 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
191a0 6f 28 75 74 66 38 2e 74 78 74 29 5d 7d 20 74 68  o(utf8.txt)]} th
191b0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
191c0 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
191d0 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
191e0 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
191f0 68 20 75 74 66 38 2e 74 78 74 5d 0d 0a 20 20 20  h utf8.txt]..   
19200 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
19210 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
19220 74 73 20 22 66 69 6c 65 49 4f 2d 31 2e 2a 22 2e  ts "fileIO-1.*".
19230 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
19240 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
19250 6f 28 66 69 6c 65 2e 64 61 74 29 5d 7d 20 74 68  o(file.dat)]} th
19260 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
19270 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
19280 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
19290 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
192a0 68 20 66 69 6c 65 2e 64 61 74 5d 0d 0a 20 20 20  h file.dat]..   
192b0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
192c0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
192d0 74 73 20 22 66 69 6c 65 49 4f 2d 35 2e 36 2e 2a  ts "fileIO-5.6.*
192e0 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
192f0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
19300 20 6e 6f 28 48 6f 6d 65 44 6f 63 75 6d 65 6e 74   no(HomeDocument
19310 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
19320 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
19330 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
19340 69 6c 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20 20 20  ile join \..    
19350 20 20 20 20 20 20 24 74 65 73 74 5f 68 6f 6d 65        $test_home
19360 5f 70 61 74 68 20 44 6f 63 75 6d 65 6e 74 73 5d  _path Documents]
19370 20 48 6f 6d 65 44 6f 63 75 6d 65 6e 74 73 0d 0a   HomeDocuments..
19380 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
19390 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
193a0 74 65 73 74 20 22 67 61 72 62 61 67 65 2d 31 2e  test "garbage-1.
193b0 31 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  1"...    #..    
193c0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
193d0 73 20 6e 6f 28 67 61 72 62 61 67 65 2e 74 78 74  s no(garbage.txt
193e0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
193f0 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
19400 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
19410 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61  le join $test_da
19420 74 61 5f 70 61 74 68 20 67 61 72 62 61 67 65 2e  ta_path garbage.
19430 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  txt]..    }.... 
19440 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
19450 3a 20 46 6f 72 20 74 65 73 74 73 20 22 78 61 6d  : For tests "xam
19460 6c 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a  l-1.*"...    #..
19470 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
19480 78 69 73 74 73 20 6e 6f 28 74 65 73 74 2e 70 6e  xists no(test.pn
19490 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  g)]} then {..   
194a0 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
194b0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
194c0 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64  ile join $test_d
194d0 61 74 61 5f 70 61 74 68 20 74 65 73 74 2e 70 6e  ata_path test.pn
194e0 67 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  g]..    }....   
194f0 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
19500 46 6f 72 20 74 65 73 74 20 22 73 6f 63 6b 65 74  For test "socket
19510 2d 31 2e 32 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.2"...    #.. 
19520 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
19530 69 73 74 73 20 6e 6f 28 63 6c 69 65 6e 74 2e 74  ists no(client.t
19540 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  cl)]} then {..  
19550 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65      checkForFile
19560 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
19570 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
19580 64 61 74 61 5f 70 61 74 68 20 63 6c 69 65 6e 74  data_path client
19590 2e 74 63 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .tcl]..    }....
195a0 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
195b0 45 3a 20 46 6f 72 20 74 65 73 74 20 22 74 63 6c  E: For test "tcl
195c0 4c 6f 61 64 2d 31 2e 32 22 2e 0d 0a 20 20 20 20  Load-1.2"...    
195d0 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
195e0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 5f  o exists no(tcl_
195f0 75 6e 6c 6f 61 64 2e 74 63 6c 29 5d 7d 20 74 68  unload.tcl)]} th
19600 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
19610 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
19620 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
19630 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
19640 68 20 74 63 6c 5f 75 6e 6c 6f 61 64 2e 74 63 6c  h tcl_unload.tcl
19650 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ]..    }....    
19660 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  #..    # NOTE: F
19670 6f 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31  or test "basic-1
19680 2e 34 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .4"...    #..   
19690 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
196a0 74 73 20 6e 6f 28 72 65 61 64 2e 65 61 67 6c 65  ts no(read.eagle
196b0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
196c0 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
196d0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
196e0 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61  le join $test_da
196f0 74 61 5f 70 61 74 68 20 72 65 61 64 2e 65 61 67  ta_path read.eag
19700 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  le]..    }....  
19710 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
19720 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
19730 2d 31 2e 35 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.5"...    #.. 
19740 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
19750 69 73 74 73 20 6e 6f 28 72 65 61 64 32 2e 65 61  ists no(read2.ea
19760 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
19770 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
19780 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
19790 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74  [file join $test
197a0 5f 64 61 74 61 5f 70 61 74 68 20 72 65 61 64 32  _data_path read2
197b0 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a  .eagle]..    }..
197c0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
197d0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62  OTE: For test "b
197e0 61 73 69 63 2d 31 2e 36 22 2e 0d 0a 20 20 20 20  asic-1.6"...    
197f0 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
19800 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65 61 64  o exists no(read
19810 33 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20  3.eagle)]} then 
19820 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
19830 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
19840 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
19850 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 72  test_data_path r
19860 65 61 64 33 2e 65 61 67 6c 65 5d 0d 0a 20 20 20  ead3.eagle]..   
19870 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
19880 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
19890 74 20 22 62 61 73 69 63 2d 31 2e 37 22 2e 0d 0a  t "basic-1.7"...
198a0 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
198b0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
198c0 72 65 61 64 34 2e 65 61 67 6c 65 29 5d 7d 20 74  read4.eagle)]} t
198d0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
198e0 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
198f0 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
19900 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61  in $test_data_pa
19910 74 68 20 72 65 61 64 34 2e 65 61 67 6c 65 5d 0d  th read4.eagle].
19920 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
19930 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
19940 20 74 65 73 74 20 22 69 6e 66 6f 53 63 72 69 70   test "infoScrip
19950 74 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 23 0d 0a  t-1.1"...    #..
19960 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
19970 78 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74 2e  xists no(script.
19980 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  eagle)]} then {.
19990 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
199a0 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
199b0 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
199c0 73 74 5f 64 61 74 61 5f 70 61 74 68 20 73 63 72  st_data_path scr
199d0 69 70 74 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20  ipt.eagle]..    
199e0 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
199f0 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
19a00 20 22 62 61 73 69 63 2d 31 2e 31 22 2e 0d 0a 20   "basic-1.1"... 
19a10 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
19a20 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73  info exists no(s
19a30 6f 75 72 63 65 2e 65 61 67 6c 65 29 5d 7d 20 74  ource.eagle)]} t
19a40 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
19a50 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
19a60 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
19a70 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61  in $test_data_pa
19a80 74 68 20 73 6f 75 72 63 65 2e 65 61 67 6c 65 5d  th source.eagle]
19a90 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
19aa0 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f  ..    # NOTE: Fo
19ab0 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e  r test "basic-1.
19ac0 32 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  2"...    #..    
19ad0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19ae0 73 20 6e 6f 28 75 6e 62 61 6c 61 6e 63 65 64 5f  s no(unbalanced_
19af0 62 72 61 63 65 2e 65 61 67 6c 65 29 5d 7d 20 74  brace.eagle)]} t
19b00 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
19b10 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
19b20 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
19b30 69 6e 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  in \..          
19b40 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
19b50 75 6e 62 61 6c 61 6e 63 65 64 5f 62 72 61 63 65  unbalanced_brace
19b60 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a  .eagle]..    }..
19b70 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
19b80 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62  OTE: For test "b
19b90 61 73 69 63 2d 31 2e 33 22 2e 0d 0a 20 20 20 20  asic-1.3"...    
19ba0 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
19bb0 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e 62 61  o exists no(unba
19bc0 6c 61 6e 63 65 64 5f 62 72 61 63 65 32 2e 65 61  lanced_brace2.ea
19bd0 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
19be0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
19bf0 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
19c00 5b 66 69 6c 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20  [file join \..  
19c10 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 64 61          $test_da
19c20 74 61 5f 70 61 74 68 20 75 6e 62 61 6c 61 6e 63  ta_path unbalanc
19c30 65 64 5f 62 72 61 63 65 32 2e 65 61 67 6c 65 5d  ed_brace2.eagle]
19c40 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
19c50 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f  ..    # NOTE: Fo
19c60 72 20 74 65 73 74 73 20 22 65 78 63 65 6c 2d 32  r tests "excel-2
19c70 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .*"...    #..   
19c80 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
19c90 74 73 20 6e 6f 28 74 65 73 74 2e 78 6c 73 29 5d  ts no(test.xls)]
19ca0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
19cb0 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
19cc0 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
19cd0 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61   join $test_data
19ce0 5f 70 61 74 68 20 74 65 73 74 2e 78 6c 73 5d 0d  _path test.xls].
19cf0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
19d00 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
19d10 20 74 65 73 74 20 22 70 72 6f 63 2d 31 2e 39 22   test "proc-1.9"
19d20 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
19d30 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
19d40 6e 6f 28 74 65 73 74 50 72 6f 63 73 2e 74 63 6c  no(testProcs.tcl
19d50 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
19d60 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
19d70 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
19d80 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61  le join $test_da
19d90 74 61 5f 70 61 74 68 20 74 65 73 74 50 72 6f 63  ta_path testProc
19da0 73 2e 74 63 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  s.tcl]..    }...
19db0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
19dc0 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69 6e  TE: For test "in
19dd0 74 65 72 70 2d 31 2e 31 30 22 2e 0d 0a 20 20 20  terp-1.10"...   
19de0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
19df0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 65 74  fo exists no(set
19e00 74 69 6e 67 73 2e 78 6d 6c 29 5d 7d 20 74 68 65  tings.xml)]} the
19e10 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
19e20 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
19e30 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
19e40 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
19e50 20 73 65 74 74 69 6e 67 73 2e 78 6d 6c 5d 0d 0a   settings.xml]..
19e60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
19e70 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
19e80 74 65 73 74 73 20 22 6c 6f 61 64 2d 31 2e 31 2e  tests "load-1.1.
19e90 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  *"...    #..    
19ea0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19eb0 73 20 6e 6f 28 50 6c 75 67 69 6e 2e 64 6c 6c 29  s no(Plugin.dll)
19ec0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
19ed0 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
19ee0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
19ef0 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20 20 20 20 20  e join \..      
19f00 20 20 20 20 24 63 6f 72 65 5f 6c 69 62 5f 70 61      $core_lib_pa
19f10 74 68 20 50 6c 75 67 69 6e 31 2e 30 20 5b 67 65  th Plugin1.0 [ge
19f20 74 44 6f 74 4e 65 74 43 6f 72 65 4c 69 62 50 61  tDotNetCoreLibPa
19f30 74 68 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 4f  thDirectoryNameO
19f40 6e 6c 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  nly \..         
19f50 20 50 6c 75 67 69 6e 31 2e 30 5d 20 50 6c 75 67   Plugin1.0] Plug
19f60 69 6e 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a  in.dll]..    }..
19f70 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
19f80 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
19f90 62 6a 65 63 74 2d 36 2e 31 22 2e 0d 0a 20 20 20  bject-6.1"...   
19fa0 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
19fb0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 53 61 6d  fo exists no(Sam
19fc0 70 6c 65 2e 65 78 65 29 5d 7d 20 74 68 65 6e 20  ple.exe)]} then 
19fd0 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
19fe0 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
19ff0 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
1a000 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20 53 61  core_bin_path Sa
1a010 6d 70 6c 65 2e 65 78 65 5d 0d 0a 20 20 20 20 7d  mple.exe]..    }
1a020 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
1a030 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
1a040 22 6f 62 6a 65 63 74 2d 34 2e 38 22 2e 0d 0a 20  "object-4.8"... 
1a050 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
1a060 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 45  info exists no(E
1a070 61 67 6c 65 43 6d 64 6c 65 74 73 2e 64 6c 6c 29  agleCmdlets.dll)
1a080 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
1a090 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
1a0a0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
1a0b0 65 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62 69 6e  e join $core_bin
1a0c0 5f 70 61 74 68 20 45 61 67 6c 65 43 6d 64 6c 65  _path EagleCmdle
1a0d0 74 73 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a  ts.dll]..    }..
1a0e0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1a0f0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
1a100 62 6a 65 63 74 2d 34 2e 31 30 22 2e 0d 0a 20 20  bject-4.10"...  
1a110 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
1a120 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 45 61  nfo exists no(Ea
1a130 67 6c 65 45 78 74 65 6e 73 69 6f 6e 73 2e 64 6c  gleExtensions.dl
1a140 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
1a150 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
1a160 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
1a170 69 6c 65 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62  ile join $core_b
1a180 69 6e 5f 70 61 74 68 20 45 61 67 6c 65 45 78 74  in_path EagleExt
1a190 65 6e 73 69 6f 6e 73 2e 64 6c 6c 5d 0d 0a 20 20  ensions.dll]..  
1a1a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
1a1b0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
1a1c0 73 74 20 22 6f 62 6a 65 63 74 2d 34 2e 31 30 22  st "object-4.10"
1a1d0 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
1a1e0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1a1f0 6e 6f 28 74 65 73 74 2e 77 78 73 29 5d 7d 20 74  no(test.wxs)]} t
1a200 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
1a210 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
1a220 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
1a230 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 49 6e  in $base_path In
1a240 73 74 61 6c 6c 65 72 20 54 65 73 74 73 20 74 65  staller Tests te
1a250 73 74 2e 77 78 73 5d 0d 0a 20 20 20 20 7d 0d 0a  st.wxs]..    }..
1a260 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1a270 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
1a280 73 71 6c 2d 31 2e 32 22 2c 20 22 73 71 6c 2d 31  sql-1.2", "sql-1
1a290 2e 34 22 2c 20 22 73 71 6c 2d 31 2e 35 22 2c 20  .4", "sql-1.5", 
1a2a0 22 73 71 6c 2d 31 2e 36 22 2c 20 22 73 71 6c 2d  "sql-1.6", "sql-
1a2b0 31 2e 37 22 2c 0d 0a 20 20 20 20 23 20 20 20 20  1.7",..    #    
1a2c0 20 20 20 22 73 71 6c 2d 31 2e 38 22 2c 20 61 6e     "sql-1.8", an
1a2d0 64 20 22 73 71 6c 2d 31 2e 39 22 2e 0d 0a 20 20  d "sql-1.9"...  
1a2e0 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
1a2f0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 71  nfo exists no(sq
1a300 6c 69 74 65 33 2e 64 6c 6c 29 5d 7d 20 74 68 65  lite3.dll)]} the
1a310 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
1a320 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
1a330 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
1a340 20 24 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20   $core_bin_path 
1a350 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 0d 0a 0d 0a  sqlite3.dll]....
1a360 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
1a370 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20 6d 61   NOTE: Did we ma
1a380 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74 68 65  nage to find the
1a390 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
1a3a0 69 62 72 61 72 79 20 79 65 74 3f 20 20 49 66 20  ibrary yet?  If 
1a3b0 6e 6f 74 2c 0d 0a 20 20 20 20 20 20 23 20 20 20  not,..      #   
1a3c0 20 20 20 20 74 72 79 20 74 6f 20 63 68 65 63 6b      try to check
1a3d0 20 75 73 69 6e 67 20 74 68 65 20 6d 61 63 68 69   using the machi
1a3e0 6e 65 20 74 79 70 65 20 61 73 20 61 20 73 75 62  ne type as a sub
1a3f0 2d 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20  -directory...   
1a400 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
1a410 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74  ![haveConstraint
1a420 20 66 69 6c 65 5f 73 71 6c 69 74 65 33 2e 64 6c   file_sqlite3.dl
1a430 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  l]} then {..    
1a440 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
1a450 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74   NOTE: Ok, now t
1a460 72 79 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 20  ry to check for 
1a470 74 68 65 20 6d 61 63 68 69 6e 65 20 73 70 65 63  the machine spec
1a480 69 66 69 63 20 6e 61 74 69 76 65 0d 0a 20 20 20  ific native..   
1a490 20 20 20 20 20 23 20 20 20 20 20 20 20 53 51 4c       #       SQL
1a4a0 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
1a4b0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1a4c0 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
1a4d0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
1a4e0 65 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62 69 6e  e join $core_bin
1a4f0 5f 70 61 74 68 20 5c 0d 0a 20 20 20 20 20 20 20  _path \..       
1a500 20 20 20 20 20 5b 6d 61 63 68 69 6e 65 54 6f 50       [machineToP
1a510 6c 61 74 66 6f 72 6d 20 24 74 65 73 74 5f 6d 61  latform $test_ma
1a520 63 68 69 6e 65 20 74 72 75 65 5d 20 73 71 6c 69  chine true] sqli
1a530 74 65 33 2e 64 6c 6c 5d 0d 0a 0d 0a 20 20 20 20  te3.dll]....    
1a540 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
1a550 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20 6d 61   NOTE: Did we ma
1a560 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74 68 65  nage to find the
1a570 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
1a580 69 62 72 61 72 79 20 79 65 74 3f 0d 0a 20 20 20  ibrary yet?..   
1a590 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1a5a0 69 66 20 7b 21 5b 68 61 76 65 43 6f 6e 73 74 72  if {![haveConstr
1a5b0 61 69 6e 74 20 66 69 6c 65 5f 73 71 6c 69 74 65  aint file_sqlite
1a5c0 33 2e 64 6c 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a  3.dll]} then {..
1a5d0 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
1a5e0 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f         # NOTE: O
1a5f0 6b 2c 20 6e 6f 77 20 74 72 79 20 74 6f 20 63 68  k, now try to ch
1a600 65 63 6b 20 66 6f 72 20 74 68 65 20 70 6c 61 74  eck for the plat
1a610 66 6f 72 6d 20 73 70 65 63 69 66 69 63 20 6e 61  form specific na
1a620 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
1a630 23 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c  #       SQLite l
1a640 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
1a650 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1a660 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
1a670 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
1a680 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62 69 6e 5f   join $core_bin_
1a690 70 61 74 68 20 5c 0d 0a 20 20 20 20 20 20 20 20  path \..        
1a6a0 20 20 20 20 20 20 5b 6d 61 63 68 69 6e 65 54 6f        [machineTo
1a6b0 50 6c 61 74 66 6f 72 6d 20 24 74 65 73 74 5f 6d  Platform $test_m
1a6c0 61 63 68 69 6e 65 20 66 61 6c 73 65 5d 20 73 71  achine false] sq
1a6d0 6c 69 74 65 33 2e 64 6c 6c 5d 0d 0a 20 20 20 20  lite3.dll]..    
1a6e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1a6f0 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 73 45  ..      if {[isE
1a700 61 67 6c 65 5d 20 26 26 20 21 5b 69 73 57 69 6e  agle] && ![isWin
1a710 64 6f 77 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  dows]} then {.. 
1a720 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1a730 20 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65    # NOTE: Did we
1a740 20 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20   manage to find 
1a750 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
1a760 65 20 6c 69 62 72 61 72 79 20 79 65 74 3f 20 20  e library yet?  
1a770 49 66 20 6e 6f 74 2c 0d 0a 20 20 20 20 20 20 20  If not,..       
1a780 20 23 20 20 20 20 20 20 20 74 72 79 20 74 6f 20   #       try to 
1a790 63 68 65 63 6b 20 75 73 69 6e 67 20 74 68 65 20  check using the 
1a7a0 6d 61 63 68 69 6e 65 20 74 79 70 65 20 61 73 20  machine type as 
1a7b0 61 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20  a sub-directory 
1a7c0 2d 41 4e 44 2d 0d 0a 20 20 20 20 20 20 20 20 23  -AND-..        #
1a7d0 20 20 20 20 20 20 20 75 73 69 6e 67 20 74 68 65         using the
1a7e0 20 55 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e   Unix file name.
1a7f0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
1a800 20 20 20 20 20 69 66 20 7b 21 5b 68 61 76 65 43       if {![haveC
1a810 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c 65 5f 73  onstraint file_s
1a820 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20 74 68 65  qlite3.dll]} the
1a830 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
1a840 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
1a850 54 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20  TE: Ok, now try 
1a860 74 6f 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65  to check for the
1a870 20 6d 61 63 68 69 6e 65 20 73 70 65 63 69 66 69   machine specifi
1a880 63 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  c native..      
1a890 20 20 20 20 23 20 20 20 20 20 20 20 53 51 4c 69      #       SQLi
1a8a0 74 65 20 6c 69 62 72 61 72 79 2c 20 6e 65 61 72  te library, near
1a8b0 20 74 68 65 20 62 69 6e 61 72 79 2c 20 75 73 69   the binary, usi
1a8c0 6e 67 20 74 68 65 20 55 6e 69 78 20 6e 61 6d 65  ng the Unix name
1a8d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
1a8e0 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
1a8f0 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
1a900 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
1a910 24 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20 5c  $core_bin_path \
1a920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a930 5b 6d 61 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f  [machineToPlatfo
1a940 72 6d 20 24 74 65 73 74 5f 6d 61 63 68 69 6e 65  rm $test_machine
1a950 20 74 72 75 65 5d 20 5b 61 70 70 65 6e 64 41 72   true] [appendAr
1a960 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
1a970 20 20 20 20 6c 69 62 73 71 6c 69 74 65 33 20 5b      libsqlite3 [
1a980 69 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65 78  info sharedlibex
1a990 74 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c 69 74  tension]]] sqlit
1a9a0 65 33 2e 64 6c 6c 0d 0a 0d 0a 20 20 20 20 20 20  e3.dll....      
1a9b0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1a9c0 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20   # NOTE: Did we 
1a9d0 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74  manage to find t
1a9e0 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1a9f0 20 6c 69 62 72 61 72 79 20 79 65 74 3f 0d 0a 20   library yet?.. 
1aa00 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1aa10 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61 76 65        if {![have
1aa20 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c 65 5f  Constraint file_
1aa30 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20 74 68  sqlite3.dll]} th
1aa40 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
1aa50 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20    #..           
1aa60 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6e 6f 77   # NOTE: Ok, now
1aa70 20 74 72 79 20 74 6f 20 63 68 65 63 6b 20 66 6f   try to check fo
1aa80 72 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 73  r the platform s
1aa90 70 65 63 69 66 69 63 20 6e 61 74 69 76 65 0d 0a  pecific native..
1aaa0 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1aab0 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
1aac0 72 79 2c 20 6e 65 61 72 20 74 68 65 20 62 69 6e  ry, near the bin
1aad0 61 72 79 2c 20 75 73 69 6e 67 20 74 68 65 20 55  ary, using the U
1aae0 6e 69 78 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  nix name...     
1aaf0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1ab00 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69        checkForFi
1ab10 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  le $test_channel
1ab20 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 63 6f 72   [file join $cor
1ab30 65 5f 62 69 6e 5f 70 61 74 68 20 5c 0d 0a 20 20  e_bin_path \..  
1ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6d                [m
1ab50 61 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f 72 6d  achineToPlatform
1ab60 20 24 74 65 73 74 5f 6d 61 63 68 69 6e 65 20 66   $test_machine f
1ab70 61 6c 73 65 5d 20 5b 61 70 70 65 6e 64 41 72 67  alse] [appendArg
1ab80 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s \..           
1ab90 20 20 20 20 20 6c 69 62 73 71 6c 69 74 65 33 20       libsqlite3 
1aba0 5b 69 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65  [info sharedlibe
1abb0 78 74 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c 69  xtension]]] sqli
1abc0 74 65 33 2e 64 6c 6c 0d 0a 20 20 20 20 20 20 20  te3.dll..       
1abd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1abe0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
1abf0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 44 69        # NOTE: Di
1ac00 64 20 77 65 20 6d 61 6e 61 67 65 20 74 6f 20 66  d we manage to f
1ac10 69 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  ind the native S
1ac20 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 79 65  QLite library ye
1ac30 74 3f 20 20 49 66 20 6e 6f 74 2c 0d 0a 20 20 20  t?  If not,..   
1ac40 20 20 20 20 20 23 20 20 20 20 20 20 20 74 72 79       #       try
1ac50 20 74 6f 20 63 68 65 63 6b 20 75 73 69 6e 67 20   to check using 
1ac60 74 68 65 20 55 6e 69 78 20 6c 69 62 72 61 72 79  the Unix library
1ac70 20 64 69 72 65 63 74 6f 72 69 65 73 20 2d 41 4e   directories -AN
1ac80 44 2d 20 75 73 69 6e 67 0d 0a 20 20 20 20 20 20  D- using..      
1ac90 20 20 23 20 20 20 20 20 20 20 74 68 65 20 55 6e    #       the Un
1aca0 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20  ix file name... 
1acb0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1acc0 20 20 69 66 20 7b 21 5b 68 61 76 65 43 6f 6e 73    if {![haveCons
1acd0 74 72 61 69 6e 74 20 66 69 6c 65 5f 73 71 6c 69  traint file_sqli
1ace0 74 65 33 2e 64 6c 6c 5d 7d 20 74 68 65 6e 20 7b  te3.dll]} then {
1acf0 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
1ad00 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
1ad10 20 41 74 74 65 6d 70 74 20 74 6f 20 6f 62 74 61   Attempt to obta
1ad20 69 6e 20 74 68 65 20 70 61 74 68 20 69 6e 66 6f  in the path info
1ad30 72 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  rmation for the 
1ad40 55 6e 69 78 0d 0a 20 20 20 20 20 20 20 20 20 20  Unix..          
1ad50 23 20 20 20 20 20 20 20 6c 6f 63 61 6c 20 6c 69  #       local li
1ad60 62 72 61 72 79 20 64 69 72 65 63 74 6f 72 79 2e  brary directory.
1ad70 20 20 54 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20    This will not 
1ad80 77 6f 72 6b 20 66 6f 72 0d 0a 20 20 20 20 20 20  work for..      
1ad90 20 20 20 20 23 20 20 20 20 20 20 20 6e 61 74 69      #       nati
1ada0 76 65 20 54 63 6c 2e 0d 0a 20 20 20 20 20 20 20  ve Tcl...       
1adb0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1adc0 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d 0a 20 20  if {[catch {..  
1add0 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 70            info p
1ade0 61 74 68 20 22 3d 4e 61 74 69 76 65 4c 69 62 72  ath "=NativeLibr
1adf0 61 72 79 20 2b 4c 6f 63 61 6c 22 0d 0a 20 20 20  ary +Local"..   
1ae00 20 20 20 20 20 20 20 7d 20 6c 69 62 5f 64 69 72         } lib_dir
1ae10 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
1ae20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1ae30 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
1ae40 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20 74  E: Ok, now try t
1ae50 6f 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65 20  o check for the 
1ae60 6d 61 63 68 69 6e 65 20 73 70 65 63 69 66 69 63  machine specific
1ae70 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
1ae80 20 20 20 20 20 23 20 20 20 20 20 20 20 53 51 4c       #       SQL
1ae90 69 74 65 20 6c 69 62 72 61 72 79 2c 20 69 6e 20  ite library, in 
1aea0 74 68 65 20 55 6e 69 78 20 6c 6f 63 61 6c 20 6c  the Unix local l
1aeb0 69 62 72 61 72 79 20 64 69 72 65 63 74 6f 72 79  ibrary directory
1aec0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ,..            #
1aed0 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 55         and the U
1aee0 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  nix file name...
1aef0 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1af00 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b             check
1af10 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
1af20 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
1af30 20 24 6c 69 62 5f 64 69 72 20 5b 61 70 70 65 6e   $lib_dir [appen
1af40 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20  dArgs \..       
1af50 20 20 20 20 20 20 20 20 20 6c 69 62 73 71 6c 69           libsqli
1af60 74 65 33 20 5b 69 6e 66 6f 20 73 68 61 72 65 64  te3 [info shared
1af70 6c 69 62 65 78 74 65 6e 73 69 6f 6e 5d 5d 5d 20  libextension]]] 
1af80 73 71 6c 69 74 65 33 2e 64 6c 6c 0d 0a 20 20 20  sqlite3.dll..   
1af90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1afa0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1afb0 20 20 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77     # NOTE: Did w
1afc0 65 20 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64  e manage to find
1afd0 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
1afe0 74 65 20 6c 69 62 72 61 72 79 20 79 65 74 3f 0d  te library yet?.
1aff0 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
1b000 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61          if {![ha
1b010 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c  veConstraint fil
1b020 65 5f 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20  e_sqlite3.dll]} 
1b030 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1b040 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1b050 20 20 20 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d     # NOTE: Attem
1b060 70 74 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65  pt to obtain the
1b070 20 70 61 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   path informatio
1b080 6e 20 66 6f 72 20 74 68 65 20 55 6e 69 78 0d 0a  n for the Unix..
1b090 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1b0a0 20 20 20 20 67 6c 6f 62 61 6c 20 6c 69 62 72 61      global libra
1b0b0 72 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54  ry directory.  T
1b0c0 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20 77 6f 72  his will not wor
1b0d0 6b 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  k for..         
1b0e0 20 20 20 23 20 20 20 20 20 20 20 6e 61 74 69 76     #       nativ
1b0f0 65 20 54 63 6c 2e 0d 0a 20 20 20 20 20 20 20 20  e Tcl...        
1b100 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1b110 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d     if {[catch {.
1b120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1b130 6e 66 6f 20 70 61 74 68 20 22 3d 4e 61 74 69 76  nfo path "=Nativ
1b140 65 4c 69 62 72 61 72 79 20 2d 4c 6f 63 61 6c 22  eLibrary -Local"
1b150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
1b160 6c 69 62 5f 64 69 72 5d 20 3d 3d 20 30 7d 20 74  lib_dir] == 0} t
1b170 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
1b180 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1b190 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f 6b        # NOTE: Ok
1b1a0 2c 20 6e 6f 77 20 74 72 79 20 74 6f 20 63 68 65  , now try to che
1b1b0 63 6b 20 66 6f 72 20 74 68 65 20 6d 61 63 68 69  ck for the machi
1b1c0 6e 65 20 73 70 65 63 69 66 69 63 20 6e 61 74 69  ne specific nati
1b1d0 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
1b1e0 20 20 23 20 20 20 20 20 20 20 53 51 4c 69 74 65    #       SQLite
1b1f0 20 6c 69 62 72 61 72 79 2c 20 69 6e 20 74 68 65   library, in the
1b200 20 55 6e 69 78 20 67 6c 6f 62 61 6c 20 6c 69 62   Unix global lib
1b210 72 61 72 79 20 64 69 72 65 63 74 6f 72 79 2c 0d  rary directory,.
1b220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23  .              #
1b230 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 55         and the U
1b240 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  nix file name...
1b250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d                #.
1b260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
1b270 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
1b280 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
1b290 6a 6f 69 6e 20 24 6c 69 62 5f 64 69 72 20 5b 61  join $lib_dir [a
1b2a0 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20  ppendArgs \..   
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1b2c0 69 62 73 71 6c 69 74 65 33 20 5b 69 6e 66 6f 20  ibsqlite3 [info 
1b2d0 73 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69  sharedlibextensi
1b2e0 6f 6e 5d 5d 5d 20 73 71 6c 69 74 65 33 2e 64 6c  on]]] sqlite3.dl
1b2f0 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  l..            }
1b300 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
1b310 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73 65 74  .          unset
1b320 20 6c 69 62 5f 64 69 72 0d 0a 20 20 20 20 20 20   lib_dir..      
1b330 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
1b340 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
1b350 3a 20 44 69 64 20 77 65 20 6d 61 6e 61 67 65 20  : Did we manage 
1b360 74 6f 20 66 69 6e 64 20 74 68 65 20 6e 61 74 69  to find the nati
1b370 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
1b380 79 20 79 65 74 3f 20 20 49 66 20 6e 6f 74 2c 0d  y yet?  If not,.
1b390 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
1b3a0 20 74 72 79 20 74 6f 20 63 68 65 63 6b 20 75 73   try to check us
1b3b0 69 6e 67 20 74 68 65 20 55 6e 69 78 20 6c 69 62  ing the Unix lib
1b3c0 72 61 72 79 20 64 69 72 65 63 74 6f 72 69 65 73  rary directories
1b3d0 20 2d 41 4e 44 2d 20 75 73 69 6e 67 0d 0a 20 20   -AND- using..  
1b3e0 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68        #       th
1b3f0 65 20 55 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65  e Unix file name
1b400 2c 20 77 69 74 68 6f 75 74 20 75 73 69 6e 67 20  , without using 
1b410 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 6e 61  the processor na
1b420 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  me...        #..
1b430 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61          if {![ha
1b440 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c  veConstraint fil
1b450 65 5f 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20  e_sqlite3.dll]} 
1b460 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1b470 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
1b480 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
1b490 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 70 61 74  o obtain the pat
1b4a0 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f  h information fo
1b4b0 72 20 74 68 65 20 55 6e 69 78 0d 0a 20 20 20 20  r the Unix..    
1b4c0 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6c 6f        #       lo
1b4d0 63 61 6c 20 6c 69 62 72 61 72 79 20 64 69 72 65  cal library dire
1b4e0 63 74 6f 72 79 20 77 69 74 68 6f 75 74 20 74 68  ctory without th
1b4f0 65 20 70 72 6f 63 65 73 73 6f 72 20 6e 61 6d 65  e processor name
1b500 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  ...          #  
1b510 20 20 20 20 20 54 68 69 73 20 77 69 6c 6c 20 6e       This will n
1b520 6f 74 20 77 6f 72 6b 20 66 6f 72 20 6e 61 74 69  ot work for nati
1b530 76 65 20 54 63 6c 2e 0d 0a 20 20 20 20 20 20 20  ve Tcl...       
1b540 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1b550 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d 0a 20 20  if {[catch {..  
1b560 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 70            info p
1b570 61 74 68 20 22 3d 4e 61 74 69 76 65 4c 69 62 72  ath "=NativeLibr
1b580 61 72 79 20 2b 4c 6f 63 61 6c 20 2b 4e 6f 50 72  ary +Local +NoPr
1b590 6f 63 65 73 73 6f 72 22 0d 0a 20 20 20 20 20 20  ocessor"..      
1b5a0 20 20 20 20 7d 20 6c 69 62 5f 64 69 72 5d 20 3d      } lib_dir] =
1b5b0 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  = 0} then {..   
1b5c0 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1b5d0 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
1b5e0 4f 6b 2c 20 6e 6f 77 20 74 72 79 20 74 6f 20 63  Ok, now try to c
1b5f0 68 65 63 6b 20 66 6f 72 20 74 68 65 20 6d 61 63  heck for the mac
1b600 68 69 6e 65 20 73 70 65 63 69 66 69 63 20 6e 61  hine specific na
1b610 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
1b620 20 20 23 20 20 20 20 20 20 20 53 51 4c 69 74 65    #       SQLite
1b630 20 6c 69 62 72 61 72 79 2c 20 69 6e 20 74 68 65   library, in the
1b640 20 55 6e 69 78 20 6c 6f 63 61 6c 20 6c 69 62 72   Unix local libr
1b650 61 72 79 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ary directory,..
1b660 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1b670 20 20 20 20 61 6e 64 20 74 68 65 20 55 6e 69 78      and the Unix
1b680 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20   file name...   
1b690 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1b6a0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
1b6b0 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
1b6c0 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6c  el [file join $l
1b6d0 69 62 5f 64 69 72 20 5b 61 70 70 65 6e 64 41 72  ib_dir [appendAr
1b6e0 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
1b6f0 20 20 20 20 20 20 6c 69 62 73 71 6c 69 74 65 33        libsqlite3
1b700 20 5b 69 6e 66 6f 20 73 68 61 72 65 64 6c 69 62   [info sharedlib
1b710 65 78 74 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c  extension]]] sql
1b720 69 74 65 33 2e 64 6c 6c 0d 0a 20 20 20 20 20 20  ite3.dll..      
1b730 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b740 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1b750 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20 6d  # NOTE: Did we m
1b760 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74 68  anage to find th
1b770 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
1b780 6c 69 62 72 61 72 79 20 79 65 74 3f 0d 0a 20 20  library yet?..  
1b790 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
1b7a0 20 20 20 20 20 69 66 20 7b 21 5b 68 61 76 65 43       if {![haveC
1b7b0 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c 65 5f 73  onstraint file_s
1b7c0 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20 74 68 65  qlite3.dll]} the
1b7d0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n {..           
1b7e0 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1b7f0 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  # NOTE: Attempt 
1b800 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 70 61  to obtain the pa
1b810 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66  th information f
1b820 6f 72 20 74 68 65 20 55 6e 69 78 0d 0a 20 20 20  or the Unix..   
1b830 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
1b840 20 67 6c 6f 62 61 6c 20 6c 69 62 72 61 72 79 20   global library 
1b850 64 69 72 65 63 74 6f 72 79 20 77 69 74 68 6f 75  directory withou
1b860 74 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  t the processor 
1b870 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
1b880 20 20 20 23 20 20 20 20 20 20 20 54 68 69 73 20     #       This 
1b890 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b 20 66 6f  will not work fo
1b8a0 72 20 6e 61 74 69 76 65 20 54 63 6c 2e 0d 0a 20  r native Tcl... 
1b8b0 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20             #..  
1b8c0 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63            if {[c
1b8d0 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
1b8e0 20 20 20 20 20 20 69 6e 66 6f 20 70 61 74 68 20        info path 
1b8f0 22 3d 4e 61 74 69 76 65 4c 69 62 72 61 72 79 20  "=NativeLibrary 
1b900 2d 4c 6f 63 61 6c 20 2b 4e 6f 50 72 6f 63 65 73  -Local +NoProces
1b910 73 6f 72 22 0d 0a 20 20 20 20 20 20 20 20 20 20  sor"..          
1b920 20 20 7d 20 6c 69 62 5f 64 69 72 5d 20 3d 3d 20    } lib_dir] == 
1b930 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
1b940 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1b950 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
1b960 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20 74 6f  : Ok, now try to
1b970 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65 20 6d   check for the m
1b980 61 63 68 69 6e 65 20 73 70 65 63 69 66 69 63 20  achine specific 
1b990 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
1b9a0 20 20 20 20 20 20 23 20 20 20 20 20 20 20 53 51        #       SQ
1b9b0 4c 69 74 65 20 6c 69 62 72 61 72 79 2c 20 69 6e  Lite library, in
1b9c0 20 74 68 65 20 55 6e 69 78 20 67 6c 6f 62 61 6c   the Unix global
1b9d0 20 6c 69 62 72 61 72 79 20 64 69 72 65 63 74 6f   library directo
1b9e0 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
1b9f0 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 74     #       and t
1ba00 68 65 20 55 6e 69 78 20 66 69 6c 65 20 6e 61 6d  he Unix file nam
1ba10 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
1ba20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20    #..           
1ba30 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
1ba40 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
1ba50 69 6c 65 20 6a 6f 69 6e 20 24 6c 69 62 5f 64 69  ile join $lib_di
1ba60 72 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d  r [appendArgs \.
1ba70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ba80 20 20 20 6c 69 62 73 71 6c 69 74 65 33 20 5b 69     libsqlite3 [i
1ba90 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65 78 74  nfo sharedlibext
1baa0 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c 69 74 65  ension]]] sqlite
1bab0 33 2e 64 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20  3.dll..         
1bac0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1bad0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 75  }....          u
1bae0 6e 73 65 74 20 6c 69 62 5f 64 69 72 0d 0a 20 20  nset lib_dir..  
1baf0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1bb00 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
1bb10 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1bb20 20 6e 6f 28 53 79 73 74 65 6d 2e 44 61 74 61 2e   no(System.Data.
1bb30 53 51 4c 69 74 65 2e 64 6c 6c 29 5d 7d 20 74 68  SQLite.dll)]} th
1bb40 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
1bb50 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
1bb60 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
1bb70 6e 20 24 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68  n $core_bin_path
1bb80 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 79   \..          Sy
1bb90 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
1bba0 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .dll]..    }....
1bbb0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
1bbc0 78 69 73 74 73 20 6e 6f 28 74 65 73 74 2e 73 71  xists no(test.sq
1bbd0 6c 69 74 65 33 29 5d 7d 20 74 68 65 6e 20 7b 0d  lite3)]} then {.
1bbe0 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
1bbf0 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
1bc00 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
1bc10 73 74 5f 64 61 74 61 5f 70 61 74 68 20 74 65 73  st_data_path tes
1bc20 74 2e 73 71 6c 69 74 65 33 5d 0d 0a 20 20 20 20  t.sqlite3]..    
1bc30 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  }..  }....  #.. 
1bc40 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74   # NOTE: Check t
1bc50 68 65 20 63 6f 72 65 20 74 65 73 74 20 63 6f 6e  he core test con
1bc60 73 74 72 61 69 6e 74 73 20 75 6e 6c 65 73 73 20  straints unless 
1bc70 74 68 65 79 20 68 61 76 65 20 62 65 65 6e 0d 0a  they have been..
1bc80 20 20 23 20 20 20 20 20 20 20 65 78 70 6c 69 63    #       explic
1bc90 69 74 6c 79 20 64 69 73 61 62 6c 65 64 2e 0d 0a  itly disabled...
1bca0 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
1bcb0 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 6c 61 74  o exists no(plat
1bcc0 66 6f 72 6d 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  form)]} then {..
1bcd0 20 20 20 20 63 68 65 63 6b 46 6f 72 50 6c 61 74      checkForPlat
1bce0 66 6f 72 6d 20 24 74 65 73 74 5f 63 68 61 6e 6e  form $test_chann
1bcf0 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
1bd00 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1bd10 6f 28 77 69 6e 64 6f 77 73 56 65 72 73 69 6f 6e  o(windowsVersion
1bd20 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1bd30 63 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77 73 56  checkForWindowsV
1bd40 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ersion $test_cha
1bd50 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1bd60 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1bd70 20 6e 6f 28 6f 70 65 72 61 74 69 6e 67 53 79 73   no(operatingSys
1bd80 74 65 6d 55 70 64 61 74 65 73 29 5d 7d 20 74 68  temUpdates)]} th
1bd90 65 6e 20 7b 0d 0a 20 20 20 20 69 66 20 7b 5b 69  en {..    if {[i
1bda0 73 45 61 67 6c 65 5d 20 26 26 20 5b 69 6e 66 6f  sEagle] && [info
1bdb0 20 65 78 69 73 74 73 20 74 63 6c 5f 70 6c 61 74   exists tcl_plat
1bdc0 66 6f 72 6d 28 6f 73 45 78 74 72 61 29 5d 7d 20  form(osExtra)]} 
1bdd0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 76 77  then {..      vw
1bde0 61 69 74 57 69 74 68 54 69 6d 65 6f 75 74 20 74  aitWithTimeout t
1bdf0 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 6f 73 45 78  cl_platform(osEx
1be00 74 72 61 29 20 24 74 65 73 74 5f 74 69 6d 65 6f  tra) $test_timeo
1be10 75 74 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ut..    }....   
1be20 20 63 68 65 63 6b 46 6f 72 4f 70 65 72 61 74 69   checkForOperati
1be30 6e 67 53 79 73 74 65 6d 55 70 64 61 74 65 20 24  ngSystemUpdate $
1be40 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4b 42 39  test_channel KB9
1be50 33 36 39 32 39 0d 0a 20 20 20 20 63 68 65 63 6b  36929..    check
1be60 46 6f 72 4f 70 65 72 61 74 69 6e 67 53 79 73 74  ForOperatingSyst
1be70 65 6d 55 70 64 61 74 65 20 24 74 65 73 74 5f 63  emUpdate $test_c
1be80 68 61 6e 6e 65 6c 20 4b 42 39 37 36 39 33 32 0d  hannel KB976932.
1be90 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 70 65  .    checkForOpe
1bea0 72 61 74 69 6e 67 53 79 73 74 65 6d 55 70 64 61  ratingSystemUpda
1beb0 74 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  te $test_channel
1bec0 20 22 4e 6f 76 65 6d 62 65 72 20 55 70 64 61 74   "November Updat
1bed0 65 22 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72  e"..    checkFor
1bee0 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65 6d 55  OperatingSystemU
1bef0 70 64 61 74 65 20 24 74 65 73 74 5f 63 68 61 6e  pdate $test_chan
1bf00 6e 65 6c 20 22 41 6e 6e 69 76 65 72 73 61 72 79  nel "Anniversary
1bf10 20 55 70 64 61 74 65 22 0d 0a 20 20 20 20 63 68   Update"..    ch
1bf20 65 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e 67 53  eckForOperatingS
1bf30 79 73 74 65 6d 55 70 64 61 74 65 20 24 74 65 73  ystemUpdate $tes
1bf40 74 5f 63 68 61 6e 6e 65 6c 20 22 43 72 65 61 74  t_channel "Creat
1bf50 6f 72 73 20 55 70 64 61 74 65 22 0d 0a 20 20 20  ors Update"..   
1bf60 20 63 68 65 63 6b 46 6f 72 4f 70 65 72 61 74 69   checkForOperati
1bf70 6e 67 53 79 73 74 65 6d 55 70 64 61 74 65 20 24  ngSystemUpdate $
1bf80 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 22 46 61  test_channel "Fa
1bf90 6c 6c 20 43 72 65 61 74 6f 72 73 20 55 70 64 61  ll Creators Upda
1bfa0 74 65 22 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  te"..    checkFo
1bfb0 72 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65 6d  rOperatingSystem
1bfc0 55 70 64 61 74 65 20 24 74 65 73 74 5f 63 68 61  Update $test_cha
1bfd0 6e 6e 65 6c 20 22 41 70 72 69 6c 20 32 30 31 38  nnel "April 2018
1bfe0 20 55 70 64 61 74 65 22 0d 0a 20 20 20 20 63 68   Update"..    ch
1bff0 65 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e 67 53  eckForOperatingS
1c000 79 73 74 65 6d 55 70 64 61 74 65 20 24 74 65 73  ystemUpdate $tes
1c010 74 5f 63 68 61 6e 6e 65 6c 20 22 4f 63 74 6f 62  t_channel "Octob
1c020 65 72 20 32 30 31 38 20 55 70 64 61 74 65 22 0d  er 2018 Update".
1c030 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1c040 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73  info exists no(s
1c050 63 72 69 70 74 4c 69 62 72 61 72 79 29 5d 7d 20  criptLibrary)]} 
1c060 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1c070 6b 46 6f 72 53 63 72 69 70 74 4c 69 62 72 61 72  kForScriptLibrar
1c080 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  y $test_channel.
1c090 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1c0a0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
1c0b0 63 6c 4f 70 74 69 6f 6e 73 29 5d 7d 20 74 68 65  clOptions)]} the
1c0c0 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
1c0d0 72 54 63 6c 4f 70 74 69 6f 6e 73 20 24 74 65 73  rTclOptions $tes
1c0e0 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
1c0f0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
1c100 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f  xists no(checkFo
1c110 72 42 69 67 4c 69 73 74 73 29 5d 7d 20 74 68 65  rBigLists)]} the
1c120 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
1c130 72 42 69 67 4c 69 73 74 73 20 24 74 65 73 74 5f  rBigLists $test_
1c140 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
1c150 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1c160 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 50  sts no(checkForP
1c170 72 6f 63 65 73 73 6f 72 49 6e 74 65 6e 73 69 76  rocessorIntensiv
1c180 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
1c190 20 63 68 65 63 6b 46 6f 72 50 72 6f 63 65 73 73   checkForProcess
1c1a0 6f 72 49 6e 74 65 6e 73 69 76 65 20 24 74 65 73  orIntensive $tes
1c1b0 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
1c1c0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
1c1d0 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f  xists no(checkFo
1c1e0 72 54 69 6d 65 49 6e 74 65 6e 73 69 76 65 29 5d  rTimeIntensive)]
1c1f0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1c200 65 63 6b 46 6f 72 54 69 6d 65 49 6e 74 65 6e 73  eckForTimeIntens
1c210 69 76 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ive $test_channe
1c220 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  l..  }....  if {
1c230 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1c240 28 63 68 65 63 6b 46 6f 72 46 75 6c 6c 54 65 73  (checkForFullTes
1c250 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  t)]} then {..   
1c260 20 63 68 65 63 6b 46 6f 72 46 75 6c 6c 54 65 73   checkForFullTes
1c270 74 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  t $test_channel.
1c280 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1c290 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
1c2a0 68 65 63 6b 46 6f 72 4d 65 6d 6f 72 79 49 6e 74  heckForMemoryInt
1c2b0 65 6e 73 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b  ensive)]} then {
1c2c0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 65  ..    checkForMe
1c2d0 6d 6f 72 79 49 6e 74 65 6e 73 69 76 65 20 24 74  moryIntensive $t
1c2e0 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
1c2f0 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
1c300 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b   exists no(check
1c310 46 6f 72 53 74 61 63 6b 49 6e 74 65 6e 73 69 76  ForStackIntensiv
1c320 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
1c330 20 63 68 65 63 6b 46 6f 72 53 74 61 63 6b 49 6e   checkForStackIn
1c340 74 65 6e 73 69 76 65 20 24 74 65 73 74 5f 63 68  tensive $test_ch
1c350 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
1c360 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1c370 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 53 74 61  s no(checkForSta
1c380 63 6b 53 69 7a 65 29 5d 7d 20 74 68 65 6e 20 7b  ckSize)]} then {
1c390 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 53 74  ..    checkForSt
1c3a0 61 63 6b 53 69 7a 65 20 24 74 65 73 74 5f 63 68  ackSize $test_ch
1c3b0 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
1c3c0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1c3d0 73 20 6e 6f 28 77 69 6e 64 6f 77 73 43 6f 6d 6d  s no(windowsComm
1c3e0 61 6e 64 50 72 6f 63 65 73 73 6f 72 29 5d 7d 20  andProcessor)]} 
1c3f0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1c400 6b 46 6f 72 57 69 6e 64 6f 77 73 43 6f 6d 6d 61  kForWindowsComma
1c410 6e 64 50 72 6f 63 65 73 73 6f 72 20 24 74 65 73  ndProcessor $tes
1c420 74 5f 63 68 61 6e 6e 65 6c 20 63 6d 64 2e 65 78  t_channel cmd.ex
1c430 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  e..  }....  if {
1c440 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1c450 28 66 6f 73 73 69 6c 29 5d 7d 20 74 68 65 6e 20  (fossil)]} then 
1c460 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 46  {..    checkForF
1c470 6f 73 73 69 6c 20 24 74 65 73 74 5f 63 68 61 6e  ossil $test_chan
1c480 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  nel..  }....  if
1c490 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1c4a0 6e 6f 28 74 65 73 74 52 65 70 6f 73 69 74 6f 72  no(testRepositor
1c4b0 79 55 72 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  yUrl)]} then {..
1c4c0 20 20 20 20 63 68 65 63 6b 46 6f 72 56 61 72 69      checkForVari
1c4d0 61 62 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  able $test_chann
1c4e0 65 6c 20 74 65 73 74 5f 72 65 70 6f 73 69 74 6f  el test_reposito
1c4f0 72 79 5f 75 72 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  ry_url..  }.... 
1c500 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1c510 74 73 20 6e 6f 28 74 65 73 74 52 65 70 6f 73 69  ts no(testReposi
1c520 74 6f 72 79 46 69 6c 65 29 5d 7d 20 74 68 65 6e  toryFile)]} then
1c530 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1c540 56 61 72 69 61 62 6c 65 20 24 74 65 73 74 5f 63  Variable $test_c
1c550 68 61 6e 6e 65 6c 20 74 65 73 74 5f 72 65 70 6f  hannel test_repo
1c560 73 69 74 6f 72 79 5f 66 69 6c 65 0d 0a 20 20 7d  sitory_file..  }
1c570 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
1c580 20 65 78 69 73 74 73 20 6e 6f 28 76 65 72 73 69   exists no(versi
1c590 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  on)]} then {..  
1c5a0 20 20 63 68 65 63 6b 46 6f 72 56 65 72 73 69 6f    checkForVersio
1c5b0 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  n $test_channel.
1c5c0 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1c5d0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 65  info exists no(e
1c5e0 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  agle)]} then {..
1c5f0 20 20 20 20 63 68 65 63 6b 46 6f 72 45 61 67 6c      checkForEagl
1c600 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  e $test_channel.
1c610 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1c620 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e  info exists no(n
1c630 6f 4c 6f 67 46 69 6c 65 29 5d 7d 20 74 68 65 6e  oLogFile)]} then
1c640 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1c650 4c 6f 67 46 69 6c 65 20 24 74 65 73 74 5f 63 68  LogFile $test_ch
1c660 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  annel..  }....  
1c670 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1c680 73 20 6e 6f 28 65 78 65 63 75 74 61 62 6c 65 53  s no(executableS
1c690 79 6d 62 6f 6c 73 29 5d 7d 20 74 68 65 6e 20 7b  ymbols)]} then {
1c6a0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 53 79  ..    checkForSy
1c6b0 6d 62 6f 6c 73 20 24 74 65 73 74 5f 63 68 61 6e  mbols $test_chan
1c6c0 6e 65 6c 20 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66  nel [info nameof
1c6d0 65 78 65 63 75 74 61 62 6c 65 5d 20 65 78 65 63  executable] exec
1c6e0 75 74 61 62 6c 65 0d 0a 20 20 7d 0d 0a 0d 0a 20  utable..  }.... 
1c6f0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1c700 74 73 20 6e 6f 28 67 61 72 75 64 61 29 5d 7d 20  ts no(garuda)]} 
1c710 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1c720 6b 46 6f 72 47 61 72 75 64 61 20 24 74 65 73 74  kForGaruda $test
1c730 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1c740 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1c750 69 73 74 73 20 6e 6f 28 73 68 65 6c 6c 29 5d 7d  ists no(shell)]}
1c760 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1c770 63 6b 46 6f 72 53 68 65 6c 6c 20 24 74 65 73 74  ckForShell $test
1c780 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1c790 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1c7a0 69 73 74 73 20 6e 6f 28 6f 66 66 69 63 69 61 6c  ists no(official
1c7b0 53 74 61 62 6c 65 52 65 6c 65 61 73 65 49 6e 50  StableReleaseInP
1c7c0 72 6f 67 72 65 73 73 29 5d 7d 20 74 68 65 6e 20  rogress)]} then 
1c7d0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4f  {..    checkForO
1c7e0 66 66 69 63 69 61 6c 53 74 61 62 6c 65 52 65 6c  fficialStableRel
1c7f0 65 61 73 65 49 6e 50 72 6f 67 72 65 73 73 20 24  easeInProgress $
1c800 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1c810 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1c820 6f 20 65 78 69 73 74 73 20 6e 6f 28 64 65 62 75  o exists no(debu
1c830 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  g)]} then {..   
1c840 20 63 68 65 63 6b 46 6f 72 44 65 62 75 67 20 24   checkForDebug $
1c850 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1c860 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1c870 54 45 3a 20 48 61 73 20 54 6b 20 74 65 73 74 69  TE: Has Tk testi
1c880 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
1c890 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a  disabled?..  #..
1c8a0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1c8b0 73 74 73 20 6e 6f 28 74 6b 29 5d 7d 20 74 68 65  sts no(tk)]} the
1c8c0 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
1c8d0 72 54 6b 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  rTk $test_channe
1c8e0 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  l..  }....  #.. 
1c8f0 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74   # NOTE: Has nat
1c900 69 76 65 20 63 6f 64 65 20 64 65 74 65 63 74 69  ive code detecti
1c910 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  on support been 
1c920 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a  disabled?..  #..
1c930 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1c940 73 74 73 20 6e 6f 28 6e 61 74 69 76 65 29 5d 7d  sts no(native)]}
1c950 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1c960 63 6b 46 6f 72 4e 61 74 69 76 65 43 6f 64 65 20  ckForNativeCode 
1c970 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
1c980 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
1c990 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 76  OTE: Check for v
1c9a0 61 72 69 6f 75 73 20 65 78 74 72 61 20 63 6f 6d  arious extra com
1c9b0 6d 61 6e 64 73 20 74 68 61 74 20 6d 61 79 20 62  mands that may b
1c9c0 65 20 70 72 65 73 65 6e 74 2e 0d 0a 20 20 23 0d  e present...  #.
1c9d0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1c9e0 69 73 74 73 20 6e 6f 28 62 61 73 65 36 34 43 6f  ists no(base64Co
1c9f0 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
1ca00 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
1ca10 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
1ca20 65 6c 20 62 61 73 65 36 34 0d 0a 20 20 7d 0d 0a  el base64..  }..
1ca30 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
1ca40 78 69 73 74 73 20 6e 6f 28 62 67 65 72 72 6f 72  xists no(bgerror
1ca50 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
1ca60 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
1ca70 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
1ca80 6e 6e 65 6c 20 62 67 65 72 72 6f 72 0d 0a 20 20  nnel bgerror..  
1ca90 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1caa0 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 61 6c 6c  o exists no(call
1cab0 62 61 63 6b 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74  backCommand)]} t
1cac0 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1cad0 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74  ForCommand $test
1cae0 5f 63 68 61 6e 6e 65 6c 20 63 61 6c 6c 62 61 63  _channel callbac
1caf0 6b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  k..  }....  if {
1cb00 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1cb10 28 64 65 62 75 67 43 6f 6d 6d 61 6e 64 29 5d 7d  (debugCommand)]}
1cb20 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1cb30 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65  ckForCommand $te
1cb40 73 74 5f 63 68 61 6e 6e 65 6c 20 64 65 62 75 67  st_channel debug
1cb50 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1cb60 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1cb70 64 6f 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65  doCommand)]} the
1cb80 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
1cb90 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63  rCommand $test_c
1cba0 68 61 6e 6e 65 6c 20 64 6f 0d 0a 20 20 7d 0d 0a  hannel do..  }..
1cbb0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
1cbc0 78 69 73 74 73 20 6e 6f 28 64 6f 77 6e 6c 65 76  xists no(downlev
1cbd0 65 6c 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65  elCommand)]} the
1cbe0 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f  n {..    checkFo
1cbf0 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63  rCommand $test_c
1cc00 68 61 6e 6e 65 6c 20 64 6f 77 6e 6c 65 76 65 6c  hannel downlevel
1cc10 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1cc20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1cc30 67 75 69 64 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74  guidCommand)]} t
1cc40 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1cc50 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74  ForCommand $test
1cc60 5f 63 68 61 6e 6e 65 6c 20 67 75 69 64 0d 0a 20  _channel guid.. 
1cc70 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
1cc80 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 68 61 73  fo exists no(has
1cc90 68 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  hCommand)]} then
1cca0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1ccb0 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
1ccc0 61 6e 6e 65 6c 20 68 61 73 68 0d 0a 20 20 7d 0d  annel hash..  }.
1ccd0 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
1cce0 65 78 69 73 74 73 20 6e 6f 28 68 6f 73 74 43 6f  exists no(hostCo
1ccf0 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
1cd00 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
1cd10 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
1cd20 65 6c 20 68 6f 73 74 0d 0a 20 20 7d 0d 0a 0d 0a  el host..  }....
1cd30 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1cd40 73 74 73 20 6e 6f 28 69 6e 76 6f 6b 65 43 6f 6d  sts no(invokeCom
1cd50 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  mand)]} then {..
1cd60 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d      checkForComm
1cd70 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  and $test_channe
1cd80 6c 20 69 6e 76 6f 6b 65 0d 0a 20 20 7d 0d 0a 0d  l invoke..  }...
1cd90 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1cda0 69 73 74 73 20 6e 6f 28 6b 69 6c 6c 43 6f 6d 6d  ists no(killComm
1cdb0 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
1cdc0 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
1cdd0 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
1cde0 20 6b 69 6c 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20   kill..  }....  
1cdf0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1ce00 73 20 6e 6f 28 6c 67 65 74 43 6f 6d 6d 61 6e 64  s no(lgetCommand
1ce10 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1ce20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
1ce30 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6c 67  $test_channel lg
1ce40 65 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  et..  }....  if 
1ce50 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1ce60 6f 28 6c 69 62 72 61 72 79 43 6f 6d 6d 61 6e 64  o(libraryCommand
1ce70 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1ce80 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
1ce90 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6c 69  $test_channel li
1cea0 62 72 61 72 79 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  brary..  }....  
1ceb0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1cec0 73 20 6e 6f 28 6c 72 65 6d 6f 76 65 43 6f 6d 6d  s no(lremoveComm
1ced0 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
1cee0 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
1cef0 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
1cf00 20 6c 72 65 6d 6f 76 65 0d 0a 20 20 7d 0d 0a 0d   lremove..  }...
1cf10 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1cf20 69 73 74 73 20 6e 6f 28 6e 6f 70 43 6f 6d 6d 61  ists no(nopComma
1cf30 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
1cf40 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
1cf50 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
1cf60 6e 6f 70 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  nop..  }....  if
1cf70 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1cf80 6e 6f 28 6f 62 6a 65 63 74 43 6f 6d 6d 61 6e 64  no(objectCommand
1cf90 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1cfa0 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
1cfb0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6f 62  $test_channel ob
1cfc0 6a 65 63 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  ject..  }....  i
1cfd0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1cfe0 20 6e 6f 28 70 61 72 73 65 43 6f 6d 6d 61 6e 64   no(parseCommand
1cff0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1d000 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
1d010 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 70 61  $test_channel pa
1d020 72 73 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  rse..  }....  if
1d030 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1d040 6e 6f 28 73 63 6f 70 65 43 6f 6d 6d 61 6e 64 29  no(scopeCommand)
1d050 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
1d060 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24  heckForCommand $
1d070 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 73 63 6f  test_channel sco
1d080 70 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  pe..  }....  if 
1d090 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1d0a0 6f 28 73 6f 63 6b 65 74 43 6f 6d 6d 61 6e 64 29  o(socketCommand)
1d0b0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
1d0c0 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24  heckForCommand $
1d0d0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 73 6f 63  test_channel soc
1d0e0 6b 65 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  ket..  }....  if
1d0f0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1d100 6e 6f 28 73 71 6c 43 6f 6d 6d 61 6e 64 29 5d 7d  no(sqlCommand)]}
1d110 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1d120 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65  ckForCommand $te
1d130 73 74 5f 63 68 61 6e 6e 65 6c 20 73 71 6c 0d 0a  st_channel sql..
1d140 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1d150 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63  nfo exists no(tc
1d160 6c 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  lCommand)]} then
1d170 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1d180 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
1d190 61 6e 6e 65 6c 20 74 63 6c 0d 0a 20 20 7d 0d 0a  annel tcl..  }..
1d1a0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
1d1b0 78 69 73 74 73 20 6e 6f 28 74 68 72 6f 77 43 6f  xists no(throwCo
1d1c0 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
1d1d0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
1d1e0 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
1d1f0 65 6c 20 74 68 72 6f 77 0d 0a 20 20 7d 0d 0a 0d  el throw..  }...
1d200 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1d210 69 73 74 73 20 6e 6f 28 74 72 75 6e 63 61 74 65  ists no(truncate
1d220 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
1d230 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
1d240 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
1d250 6e 6e 65 6c 20 74 72 75 6e 63 61 74 65 0d 0a 20  nnel truncate.. 
1d260 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
1d270 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 72 79  fo exists no(try
1d280 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
1d290 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
1d2a0 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
1d2b0 6e 6e 65 6c 20 74 72 79 0d 0a 20 20 7d 0d 0a 0d  nnel try..  }...
1d2c0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1d2d0 69 73 74 73 20 6e 6f 28 75 72 69 43 6f 6d 6d 61  ists no(uriComma
1d2e0 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
1d2f0 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
1d300 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
1d310 75 72 69 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66  uri..  }....  if
1d320 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1d330 6e 6f 28 76 65 72 73 69 6f 6e 43 6f 6d 6d 61 6e  no(versionComman
1d340 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
1d350 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64   checkForCommand
1d360 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 76   $test_channel v
1d370 65 72 73 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20  ersion..  }.... 
1d380 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1d390 74 73 20 6e 6f 28 78 6d 6c 43 6f 6d 6d 61 6e 64  ts no(xmlCommand
1d3a0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1d3b0 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
1d3c0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 78 6d  $test_channel xm
1d3d0 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  l..  }....  #.. 
1d3e0 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 22 65 66   # NOTE: Has "ef
1d3f0 6f 72 6d 61 74 22 20 64 65 74 65 63 74 69 6f 6e  ormat" detection
1d400 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
1d410 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  sabled?..  #..  
1d420 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1d430 73 20 6e 6f 28 65 66 6f 72 6d 61 74 29 5d 7d 20  s no(eformat)]} 
1d440 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1d450 6b 46 6f 72 45 46 6f 72 6d 61 74 20 24 74 65 73  kForEFormat $tes
1d460 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
1d470 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
1d480 20 48 61 73 20 6e 61 6d 65 73 70 61 63 65 20 64   Has namespace d
1d490 65 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74  etection support
1d4a0 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
1d4b0 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
1d4c0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e 61 6d  fo exists no(nam
1d4d0 65 73 70 61 63 65 73 29 5d 7d 20 74 68 65 6e 20  espaces)]} then 
1d4e0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4e  {..    checkForN
1d4f0 61 6d 65 73 70 61 63 65 73 20 24 74 65 73 74 5f  amespaces $test_
1d500 63 68 61 6e 6e 65 6c 20 5b 68 61 76 65 43 6f 6e  channel [haveCon
1d510 73 74 72 61 69 6e 74 20 71 75 69 65 74 5d 0d 0a  straint quiet]..
1d520 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
1d530 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20  NOTE: Check for 
1d540 76 61 72 69 6f 75 73 20 6e 61 74 69 76 65 20 54  various native T
1d550 63 6c 20 66 65 61 74 75 72 65 73 20 74 68 61 74  cl features that
1d560 20 77 65 72 65 20 61 64 64 65 64 0d 0a 20 20 23   were added..  #
1d570 20 20 20 20 20 20 20 28 6f 72 20 73 69 6d 70 6c         (or simpl
1d580 79 20 70 72 6f 70 6f 73 65 64 29 20 74 68 72 6f  y proposed) thro
1d590 75 67 68 20 74 68 65 20 54 49 50 20 70 72 6f 63  ugh the TIP proc
1d5a0 65 73 73 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ess...  #..  if 
1d5b0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1d5c0 6f 28 74 69 70 31 32 37 29 5d 7d 20 74 68 65 6e  o(tip127)]} then
1d5d0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1d5e0 54 69 70 31 32 37 20 24 74 65 73 74 5f 63 68 61  Tip127 $test_cha
1d5f0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1d600 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1d610 20 6e 6f 28 74 69 70 31 39 34 29 5d 7d 20 74 68   no(tip194)]} th
1d620 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1d630 6f 72 54 69 70 31 39 34 20 24 74 65 73 74 5f 63  orTip194 $test_c
1d640 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
1d650 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1d660 74 73 20 6e 6f 28 74 69 70 32 30 37 29 5d 7d 20  ts no(tip207)]} 
1d670 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1d680 6b 46 6f 72 54 69 70 32 30 37 20 24 74 65 73 74  kForTip207 $test
1d690 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1d6a0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1d6b0 69 73 74 73 20 6e 6f 28 74 69 70 32 34 31 29 5d  ists no(tip241)]
1d6c0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1d6d0 65 63 6b 46 6f 72 54 69 70 32 34 31 20 24 74 65  eckForTip241 $te
1d6e0 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
1d6f0 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
1d700 65 78 69 73 74 73 20 6e 6f 28 74 69 70 32 38 35  exists no(tip285
1d710 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1d720 63 68 65 63 6b 46 6f 72 54 69 70 32 38 35 20 24  checkForTip285 $
1d730 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1d740 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1d750 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70 34  o exists no(tip4
1d760 30 35 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  05)]} then {..  
1d770 20 20 63 68 65 63 6b 46 6f 72 54 69 70 34 30 35    checkForTip405
1d780 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1d790 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1d7a0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69  nfo exists no(ti
1d7b0 70 34 32 31 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  p421)]} then {..
1d7c0 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70 34      checkForTip4
1d7d0 32 31 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  21 $test_channel
1d7e0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1d7f0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1d800 74 69 70 34 32 36 29 5d 7d 20 74 68 65 6e 20 7b  tip426)]} then {
1d810 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69  ..    checkForTi
1d820 70 34 32 36 20 24 74 65 73 74 5f 63 68 61 6e 6e  p426 $test_chann
1d830 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
1d840 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1d850 6f 28 74 69 70 34 32 39 29 5d 7d 20 74 68 65 6e  o(tip429)]} then
1d860 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1d870 54 69 70 34 32 39 20 24 74 65 73 74 5f 63 68 61  Tip429 $test_cha
1d880 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1d890 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1d8a0 20 6e 6f 28 74 69 70 34 34 30 29 5d 7d 20 74 68   no(tip440)]} th
1d8b0 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1d8c0 6f 72 54 69 70 34 34 30 20 24 74 65 73 74 5f 63  orTip440 $test_c
1d8d0 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
1d8e0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1d8f0 74 73 20 6e 6f 28 74 69 70 34 36 31 29 5d 7d 20  ts no(tip461)]} 
1d900 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1d910 6b 46 6f 72 54 69 70 34 36 31 20 24 74 65 73 74  kForTip461 $test
1d920 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1d930 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1d940 69 73 74 73 20 6e 6f 28 74 69 70 34 36 33 29 5d  ists no(tip463)]
1d950 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1d960 65 63 6b 46 6f 72 54 69 70 34 36 33 20 24 74 65  eckForTip463 $te
1d970 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
1d980 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
1d990 65 78 69 73 74 73 20 6e 6f 28 74 69 70 34 37 31  exists no(tip471
1d9a0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1d9b0 63 68 65 63 6b 46 6f 72 54 69 70 34 37 31 20 24  checkForTip471 $
1d9c0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1d9d0 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1d9e0 54 45 3a 20 48 61 73 20 70 65 72 66 6f 72 6d 61  TE: Has performa
1d9f0 6e 63 65 20 74 65 73 74 69 6e 67 20 62 65 65 6e  nce testing been
1da00 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
1da10 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1da20 69 73 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26  ists no(core)] &
1da30 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66  & \..      ![inf
1da40 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63  o exists no(chec
1da50 6b 46 6f 72 50 65 72 66 6f 72 6d 61 6e 63 65 29  kForPerformance)
1da60 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
1da70 68 65 63 6b 46 6f 72 50 65 72 66 6f 72 6d 61 6e  heckForPerforman
1da80 63 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ce $test_channel
1da90 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
1daa0 23 20 4e 4f 54 45 3a 20 48 61 76 65 20 61 6e 79  # NOTE: Have any
1dab0 20 74 69 6d 69 6e 67 20 72 65 6c 61 74 65 64 20   timing related 
1dac0 63 6f 6e 73 74 72 61 69 6e 74 73 20 62 65 65 6e  constraints been
1dad0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d   disabled?..  #.
1dae0 0a 20 20 23 20 42 55 47 42 55 47 3a 20 49 6e 20  .  # BUGBUG: In 
1daf0 45 61 67 6c 65 2c 20 74 68 65 73 65 20 63 68 65  Eagle, these che
1db00 63 6b 73 20 66 6f 72 20 22 70 72 65 63 69 73 69  cks for "precisi
1db10 6f 6e 22 20 74 69 6d 69 6e 67 20 61 72 65 20 6e  on" timing are n
1db20 6f 74 20 6f 76 65 72 6c 79 0d 0a 20 20 23 20 20  ot overly..  #  
1db30 20 20 20 20 20 20 20 72 65 6c 69 61 62 6c 65 2e         reliable.
1db40 20 20 54 68 69 73 20 6d 61 79 20 62 65 20 64 75    This may be du
1db50 65 20 74 6f 20 74 68 65 20 73 65 6d 69 2d 72 61  e to the semi-ra
1db60 6e 64 6f 6d 20 6e 61 74 75 72 65 20 6f 66 20 74  ndom nature of t
1db70 68 65 0d 0a 20 20 23 20 20 20 20 20 20 20 20 20  he..  #         
1db80 67 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 69  garbage collecti
1db90 6f 6e 2e 20 20 4d 6f 72 65 20 72 65 73 65 61 72  on.  More resear
1dba0 63 68 20 69 6e 74 6f 20 74 68 65 20 70 72 65 63  ch into the prec
1dbb0 69 73 65 20 63 61 75 73 65 20 6f 66 0d 0a 20 20  ise cause of..  
1dbc0 23 20 20 20 20 20 20 20 20 20 74 69 6d 69 6e 67  #         timing
1dbd0 20 69 73 73 75 65 73 20 69 73 20 63 65 72 74 61   issues is certa
1dbe0 69 6e 6c 79 20 77 61 72 72 61 6e 74 65 64 2e 0d  inly warranted..
1dbf0 0a 20 20 23 0d 0a 20 20 23 0d 0a 20 20 69 66 20  .  #..  #..  if 
1dc00 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1dc10 6f 28 63 6f 72 65 29 5d 20 26 26 20 5c 0d 0a 20  o(core)] && \.. 
1dc20 20 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73       ![info exis
1dc30 74 73 20 6e 6f 28 74 69 6d 69 6e 67 29 5d 7d 20  ts no(timing)]} 
1dc40 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1dc50 6b 46 6f 72 54 69 6d 69 6e 67 20 24 74 65 73 74  kForTiming $test
1dc60 5f 63 68 61 6e 6e 65 6c 20 35 30 3b 20 23 20 31  _channel 50; # 1
1dc70 2f 32 30 74 68 20 73 65 63 6f 6e 64 2e 0d 0a 20  /20th second... 
1dc80 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
1dc90 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72  fo exists no(cor
1dca0 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
1dcb0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1dcc0 28 70 72 65 63 69 73 65 54 69 6d 69 6e 67 29 5d  (preciseTiming)]
1dcd0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d  } then {..    #.
1dce0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 4e 6f 72  .    # NOTE: Nor
1dcf0 6d 61 6c 6c 79 2c 20 74 68 65 20 22 70 72 65 63  mally, the "prec
1dd00 69 73 65 54 69 6d 69 6e 67 22 20 63 6f 6e 73 74  iseTiming" const
1dd10 72 61 69 6e 74 20 69 6d 70 6c 69 63 69 74 6c 79  raint implicitly
1dd20 20 72 65 71 75 69 72 65 73 20 74 68 61 74 0d 0a   requires that..
1dd30 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20      #       the 
1dd40 22 74 69 6d 69 6e 67 22 20 63 6f 6e 73 74 72 61  "timing" constra
1dd50 69 6e 74 20 62 65 20 70 72 65 73 65 6e 74 20 61  int be present a
1dd60 73 20 77 65 6c 6c 3b 20 68 6f 77 65 76 65 72 2c  s well; however,
1dd70 20 74 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20   that can be..  
1dd80 20 20 23 20 20 20 20 20 20 20 6f 76 65 72 72 69    #       overri
1dd90 64 64 65 6e 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  dden...    #..  
1dda0 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73    if {[info exis
1ddb0 74 73 20 6e 6f 28 72 65 71 75 69 72 65 54 69 6d  ts no(requireTim
1ddc0 69 6e 67 29 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20  ing)] || \..    
1ddd0 20 20 20 20 5b 68 61 76 65 43 6f 6e 73 74 72 61      [haveConstra
1dde0 69 6e 74 20 74 69 6d 69 6e 67 5d 7d 20 74 68 65  int timing]} the
1ddf0 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
1de00 46 6f 72 54 69 6d 69 6e 67 20 24 74 65 73 74 5f  ForTiming $test_
1de10 63 68 61 6e 6e 65 6c 20 32 35 20 70 72 65 63 69  channel 25 preci
1de20 73 65 54 69 6d 69 6e 67 3b 20 23 20 31 2f 34 30  seTiming; # 1/40
1de30 74 68 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 20 20  th second...    
1de40 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  }..  }....  #.. 
1de50 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 69 6e 74   # NOTE: Has int
1de60 65 72 61 63 74 69 76 65 20 74 65 73 74 69 6e 67  eractive testing
1de70 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
1de80 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
1de90 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 69 6e 74  fo exists no(int
1dea0 65 72 61 63 74 69 76 65 29 5d 7d 20 74 68 65 6e  eractive)]} then
1deb0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1dec0 49 6e 74 65 72 61 63 74 69 76 65 20 24 74 65 73  Interactive $tes
1ded0 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a  t_channel..  }..
1dee0 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
1def0 20 48 61 73 20 69 6e 74 65 72 61 63 74 69 76 65   Has interactive
1df00 20 63 6f 6d 6d 61 6e 64 20 74 65 73 74 69 6e 67   command testing
1df10 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
1df20 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
1df30 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72  fo exists no(cor
1df40 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
1df50 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1df60 28 69 6e 74 65 72 61 63 74 69 76 65 43 6f 6d 6d  (interactiveComm
1df70 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
1df80 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
1df90 3a 20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75  : For test "debu
1dfa0 67 2d 31 2e 38 22 2e 0d 0a 20 20 20 20 23 0d 0a  g-1.8"...    #..
1dfb0 20 20 20 20 63 68 65 63 6b 46 6f 72 49 6e 74 65      checkForInte
1dfc0 72 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64 20 24  ractiveCommand $
1dfd0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 67 6f 0d  test_channel go.
1dfe0 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
1dff0 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
1e000 64 65 62 75 67 2d 31 2e 39 22 2e 0d 0a 20 20 20  debug-1.9"...   
1e010 20 23 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   #..    checkFor
1e020 49 6e 74 65 72 61 63 74 69 76 65 43 6f 6d 6d 61  InteractiveComma
1e030 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
1e040 20 64 6f 6e 65 0d 0a 0d 0a 20 20 20 20 23 0d 0a   done....    #..
1e050 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
1e060 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 31 35 2e  test "object-15.
1e070 39 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  9"...    #..    
1e080 63 68 65 63 6b 46 6f 72 49 6e 74 65 72 61 63 74  checkForInteract
1e090 69 76 65 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74  iveCommand $test
1e0a0 5f 63 68 61 6e 6e 65 6c 20 61 72 67 73 0d 0a 20  _channel args.. 
1e0b0 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e   }....  if {![in
1e0c0 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 73 65  fo exists no(use
1e0d0 72 49 6e 74 65 72 61 63 74 69 6f 6e 29 5d 7d 20  rInteraction)]} 
1e0e0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1e0f0 6b 46 6f 72 55 73 65 72 49 6e 74 65 72 61 63 74  kForUserInteract
1e100 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
1e110 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  l..  }....  #.. 
1e120 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66   # NOTE: Check f
1e130 6f 72 20 6e 65 74 77 6f 72 6b 20 63 6f 6e 6e 65  or network conne
1e140 63 74 69 76 69 74 79 20 74 6f 20 6f 75 72 20 74  ctivity to our t
1e150 65 73 74 20 68 6f 73 74 20 28 69 2e 65 2e 0d 0a  est host (i.e...
1e160 20 20 23 20 20 20 20 20 20 20 74 68 65 20 45 61    #       the Ea
1e170 67 6c 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e  gle distribution
1e180 20 73 69 74 65 29 2e 0d 0a 20 20 23 0d 0a 20 20   site)...  #..  
1e190 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1e1a0 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 21  s no(core)] && !
1e1b0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1e1c0 6e 65 74 77 6f 72 6b 29 5d 7d 20 74 68 65 6e 20  network)]} then 
1e1d0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4e  {..    checkForN
1e1e0 65 74 77 6f 72 6b 20 24 74 65 73 74 5f 63 68 61  etwork $test_cha
1e1f0 6e 6e 65 6c 20 24 74 65 73 74 5f 68 6f 73 74 20  nnel $test_host 
1e200 24 74 65 73 74 5f 74 69 6d 65 6f 75 74 0d 0a 20  $test_timeout.. 
1e210 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23 23   }....  ########
1e220 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e230 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e240 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e250 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e260 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20  #####....  #..  
1e270 23 20 4e 4f 54 45 3a 20 46 69 67 75 72 65 20 6f  # NOTE: Figure o
1e280 75 74 20 74 68 65 20 61 70 70 72 6f 78 69 6d 61  ut the approxima
1e290 74 65 20 72 65 6c 61 74 69 76 65 20 70 65 72 66  te relative perf
1e2a0 6f 72 6d 61 6e 63 65 20 6f 66 20 74 68 69 73 20  ormance of this 
1e2b0 6d 61 63 68 69 6e 65 2e 0d 0a 20 20 23 0d 0a 20  machine...  #.. 
1e2c0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1e2d0 74 73 20 6e 6f 28 62 6f 67 6f 43 6f 70 73 29 5d  ts no(bogoCops)]
1e2e0 20 26 26 20 5b 68 61 76 65 43 6f 6e 73 74 72 61   && [haveConstra
1e2f0 69 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 5d  int performance]
1e300 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70  } then {..    tp
1e310 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
1e320 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d  l \..        "--
1e330 2d 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20  -- checking for 
1e340 62 61 73 65 6c 69 6e 65 20 42 6f 67 6f 43 6f 70  baseline BogoCop
1e350 73 20 28 63 6f 6d 6d 61 6e 64 73 2d 70 65 72 2d  s (commands-per-
1e360 73 65 63 6f 6e 64 29 2e 2e 2e 20 22 0d 0a 0d 0a  second)... "....
1e370 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
1e380 78 69 73 74 73 20 74 65 73 74 5f 62 61 73 65 5f  xists test_base_
1e390 63 6f 70 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  cops]} then {.. 
1e3a0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
1e3b0 4e 4f 54 45 3a 20 54 68 65 20 65 78 70 65 63 74  NOTE: The expect
1e3c0 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6e  ed performance n
1e3d0 75 6d 62 65 72 73 20 66 6f 72 20 61 6c 6c 20 74  umbers for all t
1e3e0 68 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  he..      #     
1e3f0 20 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 74 65    performance te
1e400 73 74 73 20 77 69 6c 6c 20 62 65 20 63 61 6c 69  sts will be cali
1e410 62 72 61 74 65 64 20 62 61 73 65 64 20 6f 6e 0d  brated based on.
1e420 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74  .      #       t
1e430 68 69 73 20 6e 75 6d 62 65 72 20 28 77 68 69 63  his number (whic
1e440 68 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68  h is based on th
1e450 65 20 6d 65 61 73 75 72 65 64 0d 0a 20 20 20 20  e measured..    
1e460 20 20 23 20 20 20 20 20 20 20 70 65 72 66 6f 72    #       perfor
1e470 6d 61 6e 63 65 20 6f 66 20 74 68 65 20 61 63 74  mance of the act
1e480 75 61 6c 20 6d 61 63 68 69 6e 65 20 74 68 61 74  ual machine that
1e490 20 77 61 73 0d 0a 20 20 20 20 20 20 23 20 20 20   was..      #   
1e4a0 20 20 20 20 75 73 65 64 20 74 6f 20 64 65 74 65      used to dete
1e4b0 72 6d 69 6e 65 20 74 68 6f 73 65 20 65 78 70 65  rmine those expe
1e4c0 63 74 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65  cted performance
1e4d0 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
1e4e0 6e 75 6d 62 65 72 73 29 2e 0d 0a 20 20 20 20 20  numbers)...     
1e4f0 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69   #..      if {[i
1e500 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d  sEagle]} then {.
1e510 0a 20 20 20 20 20 20 20 20 73 65 74 20 74 65 73  .        set tes
1e520 74 5f 62 61 73 65 5f 63 6f 70 73 20 33 36 30 30  t_base_cops 3600
1e530 30 2e 30 3b 20 23 20 4e 4f 54 45 3a 20 45 61 67  0.0; # NOTE: Eag
1e540 6c 65 20 31 2e 30 20 57 69 6e 33 32 0d 0a 20 20  le 1.0 Win32..  
1e550 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
1e560 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 62        set test_b
1e570 61 73 65 5f 63 6f 70 73 20 31 35 37 30 30 30 30  ase_cops 1570000
1e580 2e 30 3b 20 23 20 4e 4f 54 45 3a 20 54 63 6c 20  .0; # NOTE: Tcl 
1e590 38 2e 34 2e 31 39 20 57 69 6e 33 32 0d 0a 20 20  8.4.19 Win32..  
1e5a0 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
1e5b0 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
1e5c0 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
1e5d0 72 67 73 20 24 74 65 73 74 5f 62 61 73 65 5f 63  rgs $test_base_c
1e5e0 6f 70 73 20 5c 6e 5d 0d 0a 20 20 20 20 74 70 75  ops \n]..    tpu
1e5f0 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
1e600 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
1e610 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 62  - checking for b
1e620 61 73 65 6c 69 6e 65 20 42 6f 67 6f 43 6f 70 73  aseline BogoCops
1e630 20 6d 75 6c 74 69 70 6c 69 65 72 73 2e 2e 2e 20   multipliers... 
1e640 22 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69  "....    if {![i
1e650 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
1e660 62 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69 70  base_cops_multip
1e670 6c 69 65 72 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a  liers]} then {..
1e680 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 62        set test_b
1e690 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69 70 6c  ase_cops_multipl
1e6a0 69 65 72 73 20 5b 6c 69 73 74 20 5c 0d 0a 20 20  iers [list \..  
1e6b0 20 20 20 20 20 20 20 20 32 20 34 20 38 20 31 30          2 4 8 10
1e6c0 20 31 36 20 32 30 20 33 32 20 35 30 20 36 34 20   16 20 32 50 64 
1e6d0 31 30 30 20 31 30 30 30 20 31 30 30 30 30 20 31  100 1000 10000 1
1e6e0 30 30 30 30 30 20 31 30 30 30 30 30 30 5d 0d 0a  00000 1000000]..
1e6f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75      }....    tpu
1e700 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
1e710 20 5b 61 70 70 65 6e 64 41 72 67 73 20 24 74 65   [appendArgs $te
1e720 73 74 5f 62 61 73 65 5f 63 6f 70 73 5f 6d 75 6c  st_base_cops_mul
1e730 74 69 70 6c 69 65 72 73 20 5c 6e 5d 0d 0a 20 20  tipliers \n]..  
1e740 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
1e750 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20  annel \..       
1e760 20 22 2d 2d 2d 2d 20 63 68 65 63 6b 69 6e 67 20   "---- checking 
1e770 66 6f 72 20 63 75 72 72 65 6e 74 20 42 6f 67 6f  for current Bogo
1e780 43 6f 70 73 20 28 63 6f 6d 6d 61 6e 64 73 2d 70  Cops (commands-p
1e790 65 72 2d 73 65 63 6f 6e 64 29 2e 2e 2e 20 22 0d  er-second)... ".
1e7a0 0a 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  ...    if {![inf
1e7b0 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 63 6f  o exists test_co
1e7c0 70 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ps]} then {..   
1e7d0 20 20 20 73 65 74 20 74 65 73 74 5f 63 6f 70 73     set test_cops
1e7e0 20 5b 63 61 6c 63 75 6c 61 74 65 42 6f 67 6f 43   [calculateBogoC
1e7f0 6f 70 73 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ops]..    }.... 
1e800 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
1e810 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
1e820 67 73 20 5b 66 6f 72 6d 61 74 44 65 63 69 6d 61  gs [formatDecima
1e830 6c 20 24 74 65 73 74 5f 63 6f 70 73 5d 20 5c 6e  l $test_cops] \n
1e840 5d 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ]..    tputs $te
1e850 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20  st_channel \..  
1e860 20 20 20 20 20 20 22 2d 2d 2d 2d 20 63 68 65 63        "---- chec
1e870 6b 69 6e 67 20 66 6f 72 20 63 75 72 72 65 6e 74  king for current
1e880 20 42 6f 67 6f 43 6f 70 73 20 61 67 61 69 6e 73   BogoCops agains
1e890 74 20 62 61 73 65 6c 69 6e 65 20 42 6f 67 6f 43  t baseline BogoC
1e8a0 6f 70 73 2e 2e 2e 20 22 0d 0a 0d 0a 20 20 20 20  ops... "....    
1e8b0 69 66 20 7b 24 74 65 73 74 5f 63 6f 70 73 20 3e  if {$test_cops >
1e8c0 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73   $test_base_cops
1e8d0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
1e8e0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1e8f0 73 20 6e 6f 28 66 61 73 74 65 72 42 6f 67 6f 43  s no(fasterBogoC
1e900 6f 70 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ops)]} then {.. 
1e910 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72         addConstr
1e920 61 69 6e 74 20 73 61 6d 65 4f 72 46 61 73 74 65  aint sameOrFaste
1e930 72 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20 20  rBogoCops..     
1e940 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74     addConstraint
1e950 20 66 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 0d   fasterBogoCops.
1e960 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  ...        if {!
1e970 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1e980 62 6f 67 6f 43 6f 70 73 4d 75 6c 74 69 70 6c 69  bogoCopsMultipli
1e990 65 72 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ers)]} then {.. 
1e9a0 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
1e9b0 20 6d 75 6c 74 69 70 6c 69 65 72 20 24 74 65 73   multiplier $tes
1e9c0 74 5f 62 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74  t_base_cops_mult
1e9d0 69 70 6c 69 65 72 73 20 7b 0d 0a 20 20 20 20 20  ipliers {..     
1e9e0 20 20 20 20 20 20 20 69 66 20 7b 24 74 65 73 74         if {$test
1e9f0 5f 63 6f 70 73 20 3e 3d 20 24 74 65 73 74 5f 62  _cops >= $test_b
1ea00 61 73 65 5f 63 6f 70 73 20 2a 20 24 6d 75 6c 74  ase_cops * $mult
1ea10 69 70 6c 69 65 72 7d 20 74 68 65 6e 20 7b 0d 0a  iplier} then {..
1ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64                ad
1ea30 64 43 6f 6e 73 74 72 61 69 6e 74 20 5b 61 70 70  dConstraint [app
1ea40 65 6e 64 41 72 67 73 20 66 61 73 74 65 72 42 6f  endArgs fasterBo
1ea50 67 6f 43 6f 70 73 42 79 20 24 6d 75 6c 74 69 70  goCopsBy $multip
1ea60 6c 69 65 72 20 58 5d 0d 0a 20 20 20 20 20 20 20  lier X]..       
1ea70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ea80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1ea90 20 75 6e 73 65 74 20 6d 75 6c 74 69 70 6c 69 65   unset multiplie
1eaa0 72 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  r..        }..  
1eab0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 74      }....      t
1eac0 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
1ead0 65 6c 20 66 61 73 74 65 72 5c 6e 0d 0a 20 20 20  el faster\n..   
1eae0 20 7d 20 65 6c 73 65 69 66 20 7b 24 74 65 73 74   } elseif {$test
1eaf0 5f 63 6f 70 73 20 3c 20 24 74 65 73 74 5f 62 61  _cops < $test_ba
1eb00 73 65 5f 63 6f 70 73 7d 20 74 68 65 6e 20 7b 0d  se_cops} then {.
1eb10 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
1eb20 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 6c 6f 77  o exists no(slow
1eb30 65 72 42 6f 67 6f 43 6f 70 73 29 5d 7d 20 74 68  erBogoCops)]} th
1eb40 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 61 64  en {..        ad
1eb50 64 43 6f 6e 73 74 72 61 69 6e 74 20 73 61 6d 65  dConstraint same
1eb60 4f 72 53 6c 6f 77 65 72 42 6f 67 6f 43 6f 70 73  OrSlowerBogoCops
1eb70 0d 0a 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e  ..        addCon
1eb80 73 74 72 61 69 6e 74 20 73 6c 6f 77 65 72 42 6f  straint slowerBo
1eb90 67 6f 43 6f 70 73 0d 0a 0d 0a 20 20 20 20 20 20  goCops....      
1eba0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1ebb0 73 74 73 20 6e 6f 28 62 6f 67 6f 43 6f 70 73 4d  sts no(bogoCopsM
1ebc0 75 6c 74 69 70 6c 69 65 72 73 29 5d 7d 20 74 68  ultipliers)]} th
1ebd0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
1ebe0 66 6f 72 65 61 63 68 20 6d 75 6c 74 69 70 6c 69  foreach multipli
1ebf0 65 72 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f  er $test_base_co
1ec00 70 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73 20 7b  ps_multipliers {
1ec10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
1ec20 20 7b 24 6d 75 6c 74 69 70 6c 69 65 72 20 21 3d   {$multiplier !=
1ec30 20 30 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20   0 && \..       
1ec40 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 63           $test_c
1ec50 6f 70 73 20 3c 3d 20 24 74 65 73 74 5f 62 61 73  ops <= $test_bas
1ec60 65 5f 63 6f 70 73 20 2a 20 28 31 2e 30 20 2f 20  e_cops * (1.0 / 
1ec70 24 6d 75 6c 74 69 70 6c 69 65 72 29 7d 20 74 68  $multiplier)} th
1ec80 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
1ec90 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e      addConstrain
1eca0 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20 73 6c  t [appendArgs sl
1ecb0 6f 77 65 72 42 6f 67 6f 43 6f 70 73 42 79 20 24  owerBogoCopsBy $
1ecc0 6d 75 6c 74 69 70 6c 69 65 72 20 58 5d 0d 0a 20  multiplier X].. 
1ecd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ece0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1ecf0 20 20 20 20 20 20 20 75 6e 73 65 74 20 6d 75 6c         unset mul
1ed00 74 69 70 6c 69 65 72 0d 0a 20 20 20 20 20 20 20  tiplier..       
1ed10 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20   }..      }.... 
1ed20 20 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74       tputs $test
1ed30 5f 63 68 61 6e 6e 65 6c 20 73 6c 6f 77 65 72 5c  _channel slower\
1ed40 6e 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d  n..    } else {.
1ed50 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
1ed60 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 61 6d 65  o exists no(same
1ed70 42 6f 67 6f 43 6f 70 73 29 5d 7d 20 74 68 65 6e  BogoCops)]} then
1ed80 20 7b 0d 0a 20 20 20 20 20 20 20 20 61 64 64 43   {..        addC
1ed90 6f 6e 73 74 72 61 69 6e 74 20 73 61 6d 65 4f 72  onstraint sameOr
1eda0 46 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 0d 0a  FasterBogoCops..
1edb0 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74          addConst
1edc0 72 61 69 6e 74 20 73 61 6d 65 4f 72 53 6c 6f 77  raint sameOrSlow
1edd0 65 72 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20  erBogoCops..    
1ede0 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e      addConstrain
1edf0 74 20 73 61 6d 65 42 6f 67 6f 43 6f 70 73 0d 0a  t sameBogoCops..
1ee00 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ee10 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
1ee20 6e 6e 65 6c 20 73 61 6d 65 5c 6e 0d 0a 20 20 20  nnel same\n..   
1ee30 20 7d 0d 0a 0d 0a 20 20 20 20 73 65 74 20 70 65   }....    set pe
1ee40 72 63 65 6e 74 20 5b 65 78 70 72 20 7b 5b 63 61  rcent [expr {[ca
1ee50 6c 63 75 6c 61 74 65 52 65 6c 61 74 69 76 65 50  lculateRelativeP
1ee60 65 72 66 6f 72 6d 61 6e 63 65 20 69 74 65 72 61  erformance itera
1ee70 74 69 6f 6e 73 20 31 5d 20 2a 20 31 30 30 7d 5d  tions 1] * 100}]
1ee80 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74  ....    tputs $t
1ee90 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
1eea0 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20  endArgs \..     
1eeb0 20 20 20 22 2d 2d 2d 2d 20 63 75 72 72 65 6e 74     "---- current
1eec0 20 42 6f 67 6f 43 6f 70 73 20 28 63 6f 6d 6d 61   BogoCops (comma
1eed0 6e 64 73 2d 70 65 72 2d 73 65 63 6f 6e 64 29 20  nds-per-second) 
1eee0 69 73 20 22 20 5b 66 6f 72 6d 61 74 44 65 63 69  is " [formatDeci
1eef0 6d 61 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  mal \..        [
1ef00 65 78 70 72 20 7b 24 70 65 72 63 65 6e 74 20 3e  expr {$percent >
1ef10 20 31 30 30 20 3f 20 24 70 65 72 63 65 6e 74 20   100 ? $percent 
1ef20 2d 20 31 30 30 20 3a 20 24 70 65 72 63 65 6e 74  - 100 : $percent
1ef30 7d 5d 20 32 5d 20 22 25 20 22 20 5c 0d 0a 20 20  }] 2] "% " \..  
1ef40 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 70 65        [expr {$pe
1ef50 72 63 65 6e 74 20 3e 20 31 30 30 20 3f 20 22 66  rcent > 100 ? "f
1ef60 61 73 74 65 72 20 74 68 61 6e 22 20 3a 20 22 61  aster than" : "a
1ef70 73 20 66 61 73 74 20 61 73 22 7d 5d 20 5c 0d 0a  s fast as"}] \..
1ef80 20 20 20 20 20 20 20 20 22 20 74 68 65 20 62 61          " the ba
1ef90 73 65 6c 69 6e 65 5c 6e 22 5d 0d 0a 0d 0a 20 20  seline\n"]....  
1efa0 20 20 75 6e 73 65 74 20 70 65 72 63 65 6e 74 0d    unset percent.
1efb0 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23  .  }....  ######
1efc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1efd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1efe0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1eff0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f000 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a  #######....  #..
1f010 20 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 74 65    # NOTE: The te
1f020 73 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 73  st constraints s
1f030 68 6f 75 6c 64 20 6e 6f 77 20 62 65 20 66 75 6c  hould now be ful
1f040 6c 79 20 62 75 69 6c 74 2c 20 63 61 63 68 65 20  ly built, cache 
1f050 74 68 65 6d 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  them...  #..  if
1f060 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1f070 74 65 73 74 5f 63 6f 6e 73 74 72 61 69 6e 74 73  test_constraints
1f080 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73  ]} then {..    s
1f090 65 74 20 74 65 73 74 5f 63 6f 6e 73 74 72 61 69  et test_constrai
1f0a0 6e 74 73 20 5b 67 65 74 43 6f 6e 73 74 72 61 69  nts [getConstrai
1f0b0 6e 74 73 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nts]..  }....  #
1f0c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f0d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f0e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f0f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f100 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20  ############..  
1f110 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f120 23 23 23 23 23 23 23 23 20 45 4e 44 20 45 61 67  ######## END Eag
1f130 6c 65 20 26 20 54 63 6c 20 43 6f 6e 73 74 72 61  le & Tcl Constra
1f140 69 6e 74 73 20 23 23 23 23 23 23 23 23 23 23 23  ints ###########
1f150 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20  #############.. 
1f160 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
1f170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f180 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f190 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f1a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
1f1b0 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
1f1c0 20 46 6f 72 20 45 61 67 6c 65 2c 20 64 75 6d 70   For Eagle, dump
1f1d0 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 69 6e   the platform in
1f1e0 66 6f 72 6d 61 74 69 6f 6e 2c 20 69 6e 63 6c 75  formation, inclu
1f1f0 64 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 65  ding the compile
1f200 0d 0a 20 20 23 20 20 20 20 20 20 20 6f 70 74 69  ..  #       opti
1f210 6f 6e 73 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ons...  #..  if 
1f220 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e  {[isEagle]} then
1f230 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 69 6d 65   {..    set time
1f240 53 74 61 6d 70 20 5b 67 65 74 50 6c 61 74 66 6f  Stamp [getPlatfo
1f250 72 6d 49 6e 66 6f 20 74 69 6d 65 53 74 61 6d 70  rmInfo timeStamp
1f260 20 22 22 5d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b   ""]....    if {
1f270 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
1f280 74 69 6d 65 53 74 61 6d 70 5d 20 3e 20 30 7d 20  timeStamp] > 0} 
1f290 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 23  then {..      ##
1f2a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f2b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f2c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f2d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f2e0 23 23 23 23 23 23 23 0d 0a 20 20 20 20 20 20 23  #######..      #
1f2f0 20 4d 4f 4e 4f 3a 20 42 75 67 2c 20 73 65 65 3a   MONO: Bug, see:
1f300 20 68 74 74 70 73 3a 2f 2f 62 75 67 7a 69 6c 6c   https://bugzill
1f310 61 2e 6e 6f 76 65 6c 6c 2e 63 6f 6d 2f 73 68 6f  a.novell.com/sho
1f320 77 5f 62 75 67 2e 63 67 69 3f 69 64 3d 34 37 39  w_bug.cgi?id=479
1f330 30 36 31 0d 0a 20 20 20 20 20 20 23 23 23 23 23  061..      #####
1f340 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f350 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f360 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f370 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f380 23 23 23 23 0d 0a 0d 0a 20 20 20 20 20 20 69 66  ####....      if
1f390 20 7b 5b 69 73 4d 6f 6e 6f 5d 7d 20 74 68 65 6e   {[isMono]} then
1f3a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
1f3b0 20 20 20 20 20 20 20 23 20 48 41 43 4b 3a 20 57         # HACK: W
1f3c0 65 20 6e 65 65 64 20 73 6f 6d 65 74 68 69 6e 67  e need something
1f3d0 20 74 6f 20 67 6f 20 69 6e 74 6f 20 74 68 65 20   to go into the 
1f3e0 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20  log file...     
1f3f0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73 65     #..        se
1f400 74 20 74 69 6d 65 53 74 61 6d 70 20 5b 6c 69 6e  t timeStamp [lin
1f410 64 65 78 20 24 74 69 6d 65 53 74 61 6d 70 20 30  dex $timeStamp 0
1f420 5d 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20  ]..      } else 
1f430 7b 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 74  {..        set t
1f440 69 6d 65 53 74 61 6d 70 20 5b 66 6f 72 6d 61 74  imeStamp [format
1f450 54 69 6d 65 53 74 61 6d 70 20 5b 63 6c 6f 63 6b  TimeStamp [clock
1f460 20 73 63 61 6e 20 24 74 69 6d 65 53 74 61 6d 70   scan $timeStamp
1f470 5d 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  ]]..      }..   
1f480 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
1f490 20 73 65 74 20 74 69 6d 65 53 74 61 6d 70 20 3c   set timeStamp <
1f4a0 6e 6f 6e 65 3e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  none>..    }....
1f4b0 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
1f4c0 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
1f4d0 72 67 73 20 22 2d 2d 2d 2d 20 62 75 69 6c 64 3a  rgs "---- build:
1f4e0 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c   " \..        [l
1f4f0 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d  ist [getPlatform
1f500 49 6e 66 6f 20 65 6e 67 69 6e 65 20 3c 6e 6f 6e  Info engine <non
1f510 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20  e>]] " " \..    
1f520 20 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c      [list [getPl
1f530 61 74 66 6f 72 6d 49 6e 66 6f 20 70 61 74 63 68  atformInfo patch
1f540 4c 65 76 65 6c 20 3c 6e 6f 6e 65 3e 5d 5d 20 22  Level <none>]] "
1f550 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c   " \..        [l
1f560 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d  ist [getPlatform
1f570 49 6e 66 6f 20 74 61 67 20 3c 6e 6f 6e 65 3e 5d  Info tag <none>]
1f580 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  ] " " \..       
1f590 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61 74 66   [list [getPlatf
1f5a0 6f 72 6d 49 6e 66 6f 20 72 65 6c 65 61 73 65 20  ormInfo release 
1f5b0 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a  <none>]] " " \..
1f5c0 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67          [list [g
1f5d0 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 74  etPlatformInfo t
1f5e0 65 78 74 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22  ext <none>]] " "
1f5f0 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73   \..        [lis
1f600 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e  t [getPlatformIn
1f610 66 6f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  fo configuration
1f620 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d   <none>]] " " \.
1f630 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b  .        [list [
1f640 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20  getPlatformInfo 
1f650 73 75 66 66 69 78 20 3c 6e 6f 6e 65 3e 5d 5d 20  suffix <none>]] 
1f660 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  " " \..        [
1f670 6c 69 73 74 20 24 74 69 6d 65 53 74 61 6d 70 5d  list $timeStamp]
1f680 20 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20   " " \..        
1f690 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f  [list [getPlatfo
1f6a0 72 6d 49 6e 66 6f 20 73 6f 75 72 63 65 49 64 20  rmInfo sourceId 
1f6b0 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a  <none>]] " " \..
1f6c0 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67          [list [g
1f6d0 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 73  etPlatformInfo s
1f6e0 6f 75 72 63 65 54 69 6d 65 53 74 61 6d 70 20 3c  ourceTimeStamp <
1f6f0 6e 6f 6e 65 3e 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  none>]] \n].... 
1f700 20 20 20 75 6e 73 65 74 20 74 69 6d 65 53 74 61     unset timeSta
1f710 6d 70 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  mp....    tputs 
1f720 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
1f730 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
1f740 6f 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  os: " \..       
1f750 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
1f760 6f 20 6f 73 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d  o os <none>] \n]
1f770 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74  ....    tputs $t
1f780 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
1f790 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 67 6c  endArgs "---- gl
1f7a0 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68  obalAssemblyCach
1f7b0 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20  e: " \..        
1f7c0 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f  [getPlatformInfo
1f7d0 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43   globalAssemblyC
1f7e0 61 63 68 65 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d  ache <none>] \n]
1f7f0 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74  ....    tputs $t
1f800 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
1f810 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6d 6f  endArgs "---- mo
1f820 64 75 6c 65 56 65 72 73 69 6f 6e 49 64 3a 20 22  duleVersionId: "
1f830 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65 74   \..        [get
1f840 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 6d 6f 64  PlatformInfo mod
1f850 75 6c 65 56 65 72 73 69 6f 6e 49 64 20 3c 6e 6f  uleVersionId <no
1f860 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20  ne>] \n]....    
1f870 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
1f880 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
1f890 22 2d 2d 2d 2d 20 63 6f 6d 70 69 6c 65 4f 70 74  "---- compileOpt
1f8a0 69 6f 6e 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20  ions: " \..     
1f8b0 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 20 5b     [formatList [
1f8c0 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20  getPlatformInfo 
1f8d0 63 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 20 3c  compileOptions <
1f8e0 6e 6f 6e 65 3e 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  none>]] \n].... 
1f8f0 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
1f900 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
1f910 67 73 20 22 2d 2d 2d 2d 20 73 74 72 6f 6e 67 4e  gs "---- strongN
1f920 61 6d 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ame: " \..      
1f930 20 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e    [getPlatformIn
1f940 66 6f 20 73 74 72 6f 6e 67 4e 61 6d 65 20 3c 6e  fo strongName <n
1f950 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20  one>] \n]....   
1f960 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
1f970 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
1f980 20 22 2d 2d 2d 2d 20 63 65 72 74 69 66 69 63 61   "---- certifica
1f990 74 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  te: " \..       
1f9a0 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
1f9b0 6f 20 63 65 72 74 69 66 69 63 61 74 65 20 3c 6e  o certificate <n
1f9c0 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20  one>] \n]....   
1f9d0 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
1f9e0 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
1f9f0 20 22 2d 2d 2d 2d 20 74 61 72 67 65 74 46 72 61   "---- targetFra
1fa00 6d 65 77 6f 72 6b 3a 20 22 20 5c 0d 0a 20 20 20  mework: " \..   
1fa10 20 20 20 20 20 5b 67 65 74 50 6c 61 74 66 6f 72       [getPlatfor
1fa20 6d 49 6e 66 6f 20 74 61 72 67 65 74 46 72 61 6d  mInfo targetFram
1fa30 65 77 6f 72 6b 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e  ework <none>] \n
1fa40 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  ]..  }....  #.. 
1fa50 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68   # NOTE: Show th
1fa60 65 20 63 75 72 72 65 6e 74 20 74 65 73 74 20 66  e current test f
1fa70 69 6c 65 20 6e 61 6d 65 2c 20 69 66 20 61 6e 79  ile name, if any
1fa80 2e 0d 0a 20 20 23 0d 0a 20 20 74 70 75 74 73 20  ...  #..  tputs 
1fa90 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
1faa0 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
1fab0 74 65 73 74 20 66 69 6c 65 3a 20 22 20 5c 0d 0a  test file: " \..
1fac0 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
1fad0 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66  fo exists test_f
1fae0 69 6c 65 5d 20 26 26 20 5b 73 74 72 69 6e 67 20  ile] && [string 
1faf0 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 69 6c  length $test_fil
1fb00 65 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20  e] > 0 ? \..    
1fb10 20 20 24 74 65 73 74 5f 66 69 6c 65 20 3a 20 22    $test_file : "
1fb20 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d  <none>"}] \n]...
1fb30 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
1fb40 53 68 6f 77 20 74 68 65 20 61 63 74 69 76 65 20  Show the active 
1fb50 61 6e 64 20 63 61 63 68 65 64 20 74 65 73 74 20  and cached test 
1fb60 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20 20  constraints...  
1fb70 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  #..  tputs $test
1fb80 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
1fb90 41 72 67 73 20 22 2d 2d 2d 2d 20 61 63 74 69 76  Args "---- activ
1fba0 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a 20 22  e constraints: "
1fbb0 20 5c 0d 0a 20 20 20 20 20 20 5b 66 6f 72 6d 61   \..      [forma
1fbc0 74 4c 69 73 74 20 5b 6c 73 6f 72 74 20 5b 67 65  tList [lsort [ge
1fbd0 74 43 6f 6e 73 74 72 61 69 6e 74 73 5d 5d 20 3c  tConstraints]] <
1fbe0 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  none>] \n]....  
1fbf0 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
1fc00 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
1fc10 22 2d 2d 2d 2d 20 63 61 63 68 65 64 20 63 6f 6e  "---- cached con
1fc20 73 74 72 61 69 6e 74 73 3a 20 22 20 5c 0d 0a 20  straints: " \.. 
1fc30 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74       [formatList
1fc40 20 5b 6c 73 6f 72 74 20 5b 67 65 74 43 61 63 68   [lsort [getCach
1fc50 65 64 43 6f 6e 73 74 72 61 69 6e 74 73 5d 5d 20  edConstraints]] 
1fc60 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20  <none>] \n].... 
1fc70 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68   #..  # NOTE: Sh
1fc80 6f 77 20 74 68 65 20 73 74 61 72 74 69 6e 67 20  ow the starting 
1fc90 63 6f 6d 6d 61 6e 64 20 63 6f 75 6e 74 20 28 66  command count (f
1fca0 6f 72 20 62 6f 74 68 20 54 63 6c 20 61 6e 64 20  or both Tcl and 
1fcb0 45 61 67 6c 65 29 2e 0d 0a 20 20 23 0d 0a 20 20  Eagle)...  #..  
1fcc0 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
1fcd0 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
1fce0 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e 67 20 63  "---- starting c
1fcf0 6f 6d 6d 61 6e 64 20 63 6f 75 6e 74 3a 20 22 20  ommand count: " 
1fd00 5c 0d 0a 20 20 20 20 20 20 5b 69 6e 66 6f 20 63  \..      [info c
1fd10 6d 64 63 6f 75 6e 74 5d 20 5c 6e 5d 0d 0a 0d 0a  mdcount] \n]....
1fd20 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d    if {[isEagle]}
1fd30 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a   then {..    #..
1fd40 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77      # NOTE: Show
1fd50 20 74 68 65 20 73 74 61 72 74 69 6e 67 20 6f 70   the starting op
1fd60 65 72 61 74 69 6f 6e 20 63 6f 75 6e 74 20 28 66  eration count (f
1fd70 6f 72 20 45 61 67 6c 65 20 6f 6e 6c 79 29 2e 0d  or Eagle only)..
1fd80 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
1fd90 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f 20 63  [llength [info c
1fda0 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74 5d 5d  ommands object]]
1fdb0 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20   > 0} then {..  
1fdc0 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20      catch {..   
1fdd0 20 20 20 20 20 6f 62 6a 65 63 74 20 69 6e 76 6f       object invo
1fde0 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50 75  ke -flags +NonPu
1fdf0 62 6c 69 63 20 49 6e 74 65 72 70 72 65 74 65 72  blic Interpreter
1fe00 2e 47 65 74 41 63 74 69 76 65 20 4f 70 65 72 61  .GetActive Opera
1fe10 74 69 6f 6e 43 6f 75 6e 74 0d 0a 20 20 20 20 20  tionCount..     
1fe20 20 7d 20 6f 70 65 72 61 74 69 6f 6e 43 6f 75 6e   } operationCoun
1fe30 74 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d  t..    } else {.
1fe40 0a 20 20 20 20 20 20 73 65 74 20 6f 70 65 72 61  .      set opera
1fe50 74 69 6f 6e 43 6f 75 6e 74 20 75 6e 61 76 61 69  tionCount unavai
1fe60 6c 61 62 6c 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lable..    }....
1fe70 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
1fe80 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
1fe90 72 67 73 20 22 2d 2d 2d 2d 20 73 74 61 72 74 69  rgs "---- starti
1fea0 6e 67 20 6f 70 65 72 61 74 69 6f 6e 20 63 6f 75  ng operation cou
1feb0 6e 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  nt: " \..       
1fec0 20 24 6f 70 65 72 61 74 69 6f 6e 43 6f 75 6e 74   $operationCount
1fed0 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65   \n]....    unse
1fee0 74 20 6f 70 65 72 61 74 69 6f 6e 43 6f 75 6e 74  t operationCount
1fef0 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
1ff00 20 4e 4f 54 45 3a 20 52 65 63 6f 72 64 20 74 68   NOTE: Record th
1ff10 65 20 72 61 77 20 73 74 61 72 74 69 6e 67 20 70  e raw starting p
1ff20 65 72 66 6f 72 6d 61 6e 63 65 20 63 6f 75 6e 74  erformance count
1ff30 2c 20 66 6f 72 20 6c 61 74 65 72 20 75 73 65 20  , for later use 
1ff40 69 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  in..    #       
1ff50 63 61 6c 63 75 6c 61 74 69 6e 67 20 74 68 65 20  calculating the 
1ff60 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75 6d 62  approximate numb
1ff70 65 72 20 6f 66 20 6d 69 63 72 6f 73 65 63 6f 6e  er of microsecon
1ff80 64 73 20 65 6c 61 70 73 65 64 2e 0d 0a 20 20 20  ds elapsed...   
1ff90 20 23 0d 0a 20 20 20 20 63 61 74 63 68 20 7b 73   #..    catch {s
1ffa0 65 74 20 74 65 73 74 5f 74 69 6d 65 73 74 61 6d  et test_timestam
1ffb0 70 28 73 74 61 72 74 43 6f 75 6e 74 29 20 5b 63  p(startCount) [c
1ffc0 6c 6f 63 6b 20 73 74 61 72 74 5d 7d 0d 0a 20 20  lock start]}..  
1ffd0 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1ffe0 54 45 3a 20 53 68 6f 77 20 77 68 65 6e 20 74 68  TE: Show when th
1fff0 65 20 74 65 73 74 73 20 61 63 74 75 61 6c 6c 79  e tests actually
20000 20 62 65 67 61 6e 20 28 6e 6f 77 29 2e 0d 0a 20   began (now)... 
20010 20 23 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73   #..  tputs $tes
20020 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
20030 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65 73 74  dArgs "---- test
20040 73 20 73 74 61 72 74 65 64 20 61 74 20 22 20 5c  s started at " \
20050 0d 0a 20 20 20 20 20 20 5b 66 6f 72 6d 61 74 54  ..      [formatT
20060 69 6d 65 53 74 61 6d 70 20 5b 73 65 74 20 74 65  imeStamp [set te
20070 73 74 5f 74 69 6d 65 73 74 61 6d 70 28 73 74 61  st_timestamp(sta
20080 72 74 53 65 63 6f 6e 64 73 29 20 5c 0d 0a 20 20  rtSeconds) \..  
20090 20 20 20 20 5b 63 6c 6f 63 6b 20 73 65 63 6f 6e      [clock secon
200a0 64 73 5d 5d 5d 20 5c 6e 5d 0d 0a 7d 0d 0a        ds]]] \n]..}..