System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 25ea81a3e454875044bbb0b9bbaec546ed1c1474:


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 70 72 69 6d 61 72 79 20 74  of the primary t
05d0: 65 73 74 20 73 75 69 74 65 20 66 69 6c 65 2c 20  est suite file, 
05e0: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
05f0: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
0600: 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 75 69   exists test_sui
0610: 74 65 5f 66 69 6c 65 5d 7d 20 74 68 65 6e 20 7b  te_file]} then {
0620: 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 73  ..    set test_s
0630: 75 69 74 65 5f 66 69 6c 65 20 5b 66 69 6c 65 20  uite_file [file 
0640: 6e 6f 72 6d 61 6c 69 7a 65 20 5b 69 6e 66 6f 20  normalize [info 
0650: 73 63 72 69 70 74 5d 5d 0d 0a 20 20 7d 0d 0a 0d  script]]..  }...
0660: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
0670: 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e  Set the location
0680: 20 6f 66 20 74 68 65 20 74 65 73 74 20 73 75 69   of the test sui
0690: 74 65 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  te, if necessary
06a0: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
06b0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
06c0: 5f 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a  _path]} then {..
06d0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
06e0: 45 3a 20 42 75 69 6c 64 20 61 20 72 65 75 73 61  E: Build a reusa
06f0: 62 6c 65 20 65 78 70 72 65 73 73 69 6f 6e 20 74  ble expression t
0700: 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20  hat can be used 
0710: 74 6f 20 76 65 72 69 66 79 20 74 68 65 0d 0a 20  to verify the.. 
0720: 20 20 20 23 20 20 20 20 20 20 20 63 61 6e 64 69     #       candi
0730: 64 61 74 65 20 70 61 74 68 73 2e 20 20 54 68 69  date paths.  Thi
0740: 73 20 69 73 20 64 6f 6e 65 20 74 6f 20 61 76 6f  s is done to avo
0750: 69 64 20 64 75 70 6c 69 63 61 74 69 6f 6e 20 6f  id duplication o
0760: 66 20 74 68 69 73 0d 0a 20 20 20 20 23 20 20 20  f this..    #   
0770: 20 20 20 20 28 71 75 69 74 65 20 63 6f 6d 70 6c      (quite compl
0780: 65 78 29 20 65 78 70 72 65 73 73 69 6f 6e 20 73  ex) expression s
0790: 65 76 65 72 61 6c 20 74 69 6d 65 73 20 28 6a 75  everal times (ju
07a0: 73 74 20 62 65 6c 6f 77 29 2e 0d 0a 20 20 20 20  st below)...    
07b0: 23 0d 0a 20 20 20 20 73 65 74 20 65 78 70 72 20  #..    set expr 
07c0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
07d0: 65 73 74 5f 70 61 74 68 5d 20 7c 7c 20 21 5b 66  est_path] || ![f
07e0: 69 6c 65 20 65 78 69 73 74 73 20 24 74 65 73 74  ile exists $test
07f0: 5f 70 61 74 68 5d 20 7c 7c 20 5c 0d 0a 20 20 20  _path] || \..   
0800: 20 20 20 20 20 21 5b 66 69 6c 65 20 69 73 64 69       ![file isdi
0810: 72 65 63 74 6f 72 79 20 24 74 65 73 74 5f 70 61  rectory $test_pa
0820: 74 68 5d 20 7c 7c 20 28 5b 6c 6c 65 6e 67 74 68  th] || ([llength
0830: 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20   [info commands 
0840: 5c 0d 0a 20 20 20 20 20 20 20 20 67 6c 6f 62 5d  \..        glob]
0850: 5d 20 3e 20 30 20 26 26 20 5b 6c 6c 65 6e 67 74  ] > 0 && [llengt
0860: 68 20 5b 67 6c 6f 62 20 2d 64 69 72 65 63 74 6f  h [glob -directo
0870: 72 79 20 24 74 65 73 74 5f 70 61 74 68 20 2d 74  ry $test_path -t
0880: 79 70 65 73 20 7b 66 20 72 7d 20 5c 0d 0a 20 20  ypes {f r} \..  
0890: 20 20 20 20 20 20 2d 6e 6f 63 6f 6d 70 6c 61 69        -nocomplai
08a0: 6e 20 2d 2d 20 2a 5d 5d 20 3d 3d 20 30 29 7d 0d  n -- *]] == 0)}.
08b0: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
08c0: 4e 4f 54 45 3a 20 53 65 61 72 63 68 20 66 6f 72  NOTE: Search for
08d0: 20 74 68 65 20 22 4c 69 62 72 61 72 79 2f 54 65   the "Library/Te
08e0: 73 74 73 22 20 2d 4f 52 2d 20 22 54 65 73 74 73  sts" -OR- "Tests
08f0: 22 20 73 75 62 2d 64 69 72 65 63 74 6f 72 69 65  " sub-directorie
0900: 73 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 77  s..    #       w
0910: 69 74 68 69 6e 20 74 68 65 20 73 75 62 2d 64 69  ithin the sub-di
0920: 72 65 63 74 6f 72 79 20 6f 6e 65 20 6c 65 76 65  rectory one leve
0930: 6c 20 75 70 20 61 6e 64 20 74 68 65 6e 20 74 77  l up and then tw
0940: 6f 20 6c 65 76 65 6c 73 20 75 70 0d 0a 20 20 20  o levels up..   
0950: 20 23 20 20 20 20 20 20 20 66 72 6f 6d 20 74 68   #       from th
0960: 65 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20  e sub-directory 
0970: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 22  containing the "
0980: 61 6c 6c 2e 65 61 67 6c 65 22 20 66 69 6c 65 20  all.eagle" file 
0990: 66 72 6f 6d 0d 0a 20 20 20 20 23 20 20 20 20 20  from..    #     
09a0: 20 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65    the test suite
09b0: 20 70 61 63 6b 61 67 65 2e 0d 0a 20 20 20 20 23   package...    #
09c0: 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74 5f 70  ..    set test_p
09d0: 61 74 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c  ath [file normal
09e0: 69 7a 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  ize \..        [
09f0: 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20  file join [file 
0a00: 64 69 72 6e 61 6d 65 20 24 74 65 73 74 5f 61 6c  dirname $test_al
0a10: 6c 5f 70 61 74 68 5d 20 4c 69 62 72 61 72 79 20  l_path] Library 
0a20: 54 65 73 74 73 5d 5d 0d 0a 0d 0a 20 20 20 20 69  Tests]]....    i
0a30: 66 20 7b 5b 65 78 70 72 20 24 65 78 70 72 5d 7d  f {[expr $expr]}
0a40: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73   then {..      s
0a50: 65 74 20 74 65 73 74 5f 70 61 74 68 20 5b 66 69  et test_path [fi
0a60: 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5c 0d 0a  le normalize \..
0a70: 20 20 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20            [file 
0a80: 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61  join [file dirna
0a90: 6d 65 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  me [file dirname
0aa0: 20 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 5d   $test_all_path]
0ab0: 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 4c  ] \..          L
0ac0: 69 62 72 61 72 79 20 54 65 73 74 73 5d 5d 0d 0a  ibrary Tests]]..
0ad0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20      }....    if 
0ae0: 7b 5b 65 78 70 72 20 24 65 78 70 72 5d 7d 20 74  {[expr $expr]} t
0af0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74  hen {..      set
0b00: 20 74 65 73 74 5f 70 61 74 68 20 5b 66 69 6c 65   test_path [file
0b10: 20 6e 6f 72 6d 61 6c 69 7a 65 20 5c 0d 0a 20 20   normalize \..  
0b20: 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20 6a 6f          [file jo
0b30: 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  in [file dirname
0b40: 20 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 5d   $test_all_path]
0b50: 20 54 65 73 74 73 5d 5d 0d 0a 20 20 20 20 7d 0d   Tests]]..    }.
0b60: 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 65 78 70 72  ...    if {[expr
0b70: 20 24 65 78 70 72 5d 7d 20 74 68 65 6e 20 7b 0d   $expr]} then {.
0b80: 0a 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f  .      set test_
0b90: 70 61 74 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61  path [file norma
0ba0: 6c 69 7a 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  lize \..        
0bb0: 20 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69    [file join [fi
0bc0: 6c 65 20 64 69 72 6e 61 6d 65 20 5b 66 69 6c 65  le dirname [file
0bd0: 20 64 69 72 6e 61 6d 65 20 24 74 65 73 74 5f 61   dirname $test_a
0be0: 6c 6c 5f 70 61 74 68 5d 5d 20 5c 0d 0a 20 20 20  ll_path]] \..   
0bf0: 20 20 20 20 20 20 20 54 65 73 74 73 5d 5d 0d 0a         Tests]]..
0c00: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73      }....    uns
0c10: 65 74 20 65 78 70 72 0d 0a 20 20 7d 0d 0a 0d 0a  et expr..  }....
0c20: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
0c30: 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20  et the location 
0c40: 6f 66 20 74 68 65 20 68 6f 6d 65 20 64 69 72 65  of the home dire
0c50: 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20 63 75  ctory for the cu
0c60: 72 72 65 6e 74 0d 0a 20 20 23 20 20 20 20 20 20  rrent..  #      
0c70: 20 75 73 65 72 2e 0d 0a 20 20 23 0d 0a 20 20 69   user...  #..  i
0c80: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
0c90: 20 74 65 73 74 5f 68 6f 6d 65 5f 70 61 74 68 5d   test_home_path]
0ca0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65  } then {..    se
0cb0: 74 20 74 65 73 74 5f 68 6f 6d 65 5f 70 61 74 68  t test_home_path
0cc0: 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65   [file normalize
0cd0: 20 7e 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d   ~]..  }....  #.
0ce0: 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74  .  # NOTE: Set t
0cf0: 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74  he location of t
0d00: 68 65 20 74 65 73 74 20 73 75 69 74 65 20 64 61  he test suite da
0d10: 74 61 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79  ta, if necessary
0d20: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
0d30: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
0d40: 5f 64 61 74 61 5f 70 61 74 68 5d 7d 20 74 68 65  _data_path]} the
0d50: 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73  n {..    set tes
0d60: 74 5f 64 61 74 61 5f 70 61 74 68 20 5b 66 69 6c  t_data_path [fil
0d70: 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 70 61 74  e join $test_pat
0d80: 68 20 64 61 74 61 5d 0d 0a 20 20 7d 0d 0a 0d 0a  h data]..  }....
0d90: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
0da0: 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20  et the location 
0db0: 6f 66 20 74 68 65 20 62 61 73 65 20 45 61 67 6c  of the base Eagl
0dc0: 65 20 64 69 72 65 63 74 6f 72 79 2c 20 69 66 0d  e directory, if.
0dd0: 0a 20 20 23 20 20 20 20 20 20 20 6e 65 63 65 73  .  #       neces
0de0: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
0df0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
0e00: 62 61 73 65 5f 70 61 74 68 5d 7d 20 74 68 65 6e  base_path]} then
0e10: 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23   {..    #..    #
0e20: 20 4e 4f 54 45 3a 20 53 74 61 72 74 20 6f 75 74   NOTE: Start out
0e30: 20 67 6f 69 6e 67 20 75 70 20 6f 6e 65 20 6c 65   going up one le
0e40: 76 65 6c 20 61 6e 64 20 63 68 65 63 6b 20 66 6f  vel and check fo
0e50: 72 20 61 20 22 6c 69 62 22 0d 0a 20 20 20 20 23  r a "lib"..    #
0e60: 20 20 20 20 20 20 20 73 75 62 2d 64 69 72 65 63         sub-direc
0e70: 74 6f 72 79 2e 20 20 49 66 20 6e 6f 74 20 66 6f  tory.  If not fo
0e80: 75 6e 64 2c 20 67 6f 20 75 70 20 61 6e 6f 74 68  und, go up anoth
0e90: 65 72 20 6c 65 76 65 6c 0d 0a 20 20 20 20 23 20  er level..    # 
0ea0: 20 20 20 20 20 20 62 65 63 61 75 73 65 20 77 65        because we
0eb0: 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20   will always be 
0ec0: 74 77 6f 20 6c 65 76 65 6c 73 20 64 6f 77 6e 20  two levels down 
0ed0: 66 72 6f 6d 20 74 68 65 0d 0a 20 20 20 20 23 20  from the..    # 
0ee0: 20 20 20 20 20 20 62 61 73 65 20 64 69 72 65 63        base direc
0ef0: 74 6f 72 79 20 77 68 65 6e 20 72 75 6e 6e 69 6e  tory when runnin
0f00: 67 20 69 6e 73 69 64 65 20 74 68 65 20 73 6f 75  g inside the sou
0f10: 72 63 65 20 74 72 65 65 2e 0d 0a 20 20 20 20 23  rce tree...    #
0f20: 0d 0a 20 20 20 20 73 65 74 20 62 61 73 65 5f 70  ..    set base_p
0f30: 61 74 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c  ath [file normal
0f40: 69 7a 65 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d  ize [file dirnam
0f50: 65 20 24 74 65 73 74 5f 70 61 74 68 5d 5d 0d 0a  e $test_path]]..
0f60: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 48  ..    #..    # H
0f70: 41 43 4b 3a 20 57 65 20 6d 75 73 74 20 76 65 72  ACK: We must ver
0f80: 69 66 79 20 74 68 61 74 20 74 68 65 20 22 69 6e  ify that the "in
0f90: 69 74 2e 65 61 67 6c 65 22 20 66 69 6c 65 20 63  it.eagle" file c
0fa0: 61 6e 20 65 76 65 6e 74 75 61 6c 6c 79 0d 0a 20  an eventually.. 
0fb0: 20 20 20 23 20 20 20 20 20 20 20 62 65 20 66 6f     #       be fo
0fc0: 75 6e 64 20 75 6e 64 65 72 20 74 68 65 20 22 6c  und under the "l
0fd0: 69 62 22 20 64 69 72 65 63 74 6f 72 79 20 73 69  ib" directory si
0fe0: 6e 63 65 20 56 69 73 75 61 6c 20 53 74 75 64 69  nce Visual Studi
0ff0: 6f 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 69  o..    #       i
1000: 6e 73 69 73 74 73 20 6f 6e 20 63 72 65 61 74 69  nsists on creati
1010: 6e 67 20 61 20 73 75 70 65 72 66 6c 75 6f 75 73  ng a superfluous
1020: 20 28 61 6e 64 20 65 6d 70 74 79 29 20 22 6c 69   (and empty) "li
1030: 62 5c 45 61 67 6c 65 31 2e 30 22 0d 0a 20 20 20  b\Eagle1.0"..   
1040: 20 23 20 20 20 20 20 20 20 73 75 62 2d 64 69 72   #       sub-dir
1050: 65 63 74 6f 72 79 20 69 6e 73 69 64 65 20 6f 66  ectory inside of
1060: 20 74 68 65 20 22 4c 69 62 72 61 72 79 22 20 70   the "Library" p
1070: 72 6f 6a 65 63 74 20 64 69 72 65 63 74 6f 72 79  roject directory
1080: 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 73 69  ..    #       si
1090: 6d 70 6c 79 20 64 75 65 20 74 6f 20 74 68 65 20  mply due to the 
10a0: 6c 69 6e 6b 73 20 63 6f 6e 74 61 69 6e 65 64 20  links contained 
10b0: 69 6e 20 74 68 65 20 70 72 6f 6a 65 63 74 20 66  in the project f
10c0: 69 6c 65 20 74 68 61 74 0d 0a 20 20 20 20 23 20  ile that..    # 
10d0: 20 20 20 20 20 20 61 63 74 75 61 6c 6c 79 20 70        actually p
10e0: 6f 69 6e 74 20 74 6f 20 74 68 65 20 22 6c 69 62  oint to the "lib
10f0: 5c 45 61 67 6c 65 31 2e 30 22 20 73 75 62 2d 64  \Eagle1.0" sub-d
1100: 69 72 65 63 74 6f 72 79 20 75 6e 64 65 72 20 74  irectory under t
1110: 68 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  he..    #       
1120: 73 6f 6c 75 74 69 6f 6e 20 64 69 72 65 63 74 6f  solution directo
1130: 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ry...    #..    
1140: 23 20 57 41 52 4e 49 4e 47 3a 20 54 68 65 20 45  # WARNING: The E
1150: 61 67 6c 65 20 70 61 63 6b 61 67 65 20 6e 61 6d  agle package nam
1160: 65 20 61 6e 64 20 76 65 72 73 69 6f 6e 20 61 72  e and version ar
1170: 65 20 68 61 72 64 2d 63 6f 64 65 64 20 68 65 72  e hard-coded her
1180: 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73  e...    #..    s
1190: 65 74 20 70 6b 67 5f 64 69 72 20 45 61 67 6c 65  et pkg_dir Eagle
11a0: 31 2e 30 3b 20 23 20 54 4f 44 4f 3a 20 43 68 61  1.0; # TODO: Cha
11b0: 6e 67 65 20 6d 65 2e 0d 0a 0d 0a 20 20 20 20 69  nge me.....    i
11c0: 66 20 7b 21 5b 66 69 6c 65 20 65 78 69 73 74 73  f {![file exists
11d0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73   [file join $bas
11e0: 65 5f 70 61 74 68 20 6c 69 62 5d 5d 20 7c 7c 20  e_path lib]] || 
11f0: 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69 6c  \..        ![fil
1200: 65 20 69 73 64 69 72 65 63 74 6f 72 79 20 5b 66  e isdirectory [f
1210: 69 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70  ile join $base_p
1220: 61 74 68 20 6c 69 62 5d 5d 20 7c 7c 20 5c 0d 0a  ath lib]] || \..
1230: 20 20 20 20 20 20 20 20 21 5b 66 69 6c 65 20 65          ![file e
1240: 78 69 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e  xists [file join
1250: 20 24 62 61 73 65 5f 70 61 74 68 20 6c 69 62 20   $base_path lib 
1260: 24 70 6b 67 5f 64 69 72 5d 5d 20 7c 7c 20 5c 0d  $pkg_dir]] || \.
1270: 0a 20 20 20 20 20 20 20 20 21 5b 66 69 6c 65 20  .        ![file 
1280: 69 73 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c  isdirectory [fil
1290: 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61 74  e join $base_pat
12a0: 68 20 6c 69 62 20 24 70 6b 67 5f 64 69 72 5d 5d  h lib $pkg_dir]]
12b0: 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20 20 20 21   || \..        !
12c0: 5b 66 69 6c 65 20 65 78 69 73 74 73 20 5b 66 69  [file exists [fi
12d0: 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 70 61  le join $base_pa
12e0: 74 68 20 6c 69 62 20 24 70 6b 67 5f 64 69 72 20  th lib $pkg_dir 
12f0: 69 6e 69 74 2e 65 61 67 6c 65 5d 5d 20 7c 7c 20  init.eagle]] || 
1300: 5c 0d 0a 20 20 20 20 20 20 20 20 21 5b 66 69 6c  \..        ![fil
1310: 65 20 69 73 66 69 6c 65 20 5b 66 69 6c 65 20 6a  e isfile [file j
1320: 6f 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 6c  oin $base_path l
1330: 69 62 20 24 70 6b 67 5f 64 69 72 20 69 6e 69 74  ib $pkg_dir init
1340: 2e 65 61 67 6c 65 5d 5d 7d 20 74 68 65 6e 20 7b  .eagle]]} then {
1350: 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
1360: 20 23 20 4e 4f 54 45 3a 20 57 65 20 64 6f 20 6e   # NOTE: We do n
1370: 6f 74 20 62 6f 74 68 65 72 20 74 6f 20 63 68 65  ot bother to che
1380: 63 6b 20 69 66 20 74 68 65 20 22 6c 69 62 22 20  ck if the "lib" 
1390: 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20 61 63  sub-directory ac
13a0: 74 75 61 6c 6c 79 0d 0a 20 20 20 20 20 20 23 20  tually..      # 
13b0: 20 20 20 20 20 20 65 78 69 73 74 73 20 61 73 20        exists as 
13c0: 61 20 63 68 69 6c 64 20 6f 66 20 74 68 69 73 20  a child of this 
13d0: 6f 6e 65 2e 20 20 54 68 69 73 20 69 73 20 74 68  one.  This is th
13e0: 65 20 70 72 65 76 69 6f 75 73 20 28 6c 65 67 61  e previous (lega
13f0: 63 79 29 0d 0a 20 20 20 20 20 20 23 20 20 20 20  cy)..      #    
1400: 20 20 20 62 65 68 61 76 69 6f 72 20 28 69 2e 65     behavior (i.e
1410: 2e 20 77 68 65 72 65 20 77 65 20 61 6c 77 61 79  . where we alway
1420: 73 20 77 65 6e 74 20 75 70 20 74 77 6f 20 6c 65  s went up two le
1430: 76 65 6c 73 20 74 6f 20 74 68 65 20 62 61 73 65  vels to the base
1440: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
1450: 64 69 72 65 63 74 6f 72 79 29 2e 0d 0a 20 20 20  directory)...   
1460: 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20     #..      set 
1470: 62 61 73 65 5f 70 61 74 68 20 5b 66 69 6c 65 20  base_path [file 
1480: 64 69 72 6e 61 6d 65 20 24 62 61 73 65 5f 70 61  dirname $base_pa
1490: 74 68 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  th]..    }....  
14a0: 20 20 75 6e 73 65 74 20 70 6b 67 5f 64 69 72 0d    unset pkg_dir.
14b0: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23  .  }....  ######
14c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1500: 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a  #######....  #..
1510: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
1520: 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68  e location of th
1530: 65 20 45 61 67 6c 65 20 6d 61 69 6e 20 73 74 72  e Eagle main str
1540: 6f 6e 67 20 6e 61 6d 65 20 6b 65 79 73 20 64 69  ong name keys di
1550: 72 65 63 74 6f 72 79 2c 0d 0a 20 20 23 20 20 20  rectory,..  #   
1560: 20 20 20 20 69 66 20 6e 65 63 65 73 73 61 72 79      if necessary
1570: 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ...  #..  if {![
1580: 69 6e 66 6f 20 65 78 69 73 74 73 20 6b 65 79 5f  info exists key_
1590: 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  path]} then {.. 
15a0: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
15b0: 3a 20 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 65 72  : Normally, ther
15c0: 65 20 73 68 6f 75 6c 64 20 62 65 20 61 20 22 4b  e should be a "K
15d0: 65 79 73 22 20 73 75 62 2d 64 69 72 65 63 74 6f  eys" sub-directo
15e0: 72 79 20 6a 75 73 74 20 77 69 74 68 69 6e 0d 0a  ry just within..
15f0: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20      #       the 
1600: 62 61 73 65 20 64 69 72 65 63 74 6f 72 79 2e 0d  base directory..
1610: 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20  .    #..    set 
1620: 6b 65 79 5f 70 61 74 68 20 5b 66 69 6c 65 20 6a  key_path [file j
1630: 6f 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 4b  oin $base_path K
1640: 65 79 73 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  eys]..  }....  #
1650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1670: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1680: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1690: 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
16a0: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
16b0: 65 74 20 74 68 65 20 65 78 65 63 75 74 61 62 6c  et the executabl
16c0: 65 20 66 69 6c 65 20 6e 61 6d 65 20 66 6f 72 20  e file name for 
16d0: 74 68 65 20 70 72 6f 63 65 73 73 2c 20 69 66 0d  the process, if.
16e0: 0a 20 20 23 20 20 20 20 20 20 20 6e 65 63 65 73  .  #       neces
16f0: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
1700: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1710: 62 69 6e 5f 66 69 6c 65 5d 7d 20 74 68 65 6e 20  bin_file]} then 
1720: 7b 0d 0a 20 20 20 20 73 65 74 20 62 69 6e 5f 66  {..    set bin_f
1730: 69 6c 65 20 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66  ile [info nameof
1740: 65 78 65 63 75 74 61 62 6c 65 5d 0d 0a 20 20 7d  executable]..  }
1750: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
1760: 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74  E: Set the locat
1770: 69 6f 6e 20 6f 66 20 74 68 65 20 64 69 72 65 63  ion of the direc
1780: 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20  tory containing 
1790: 74 68 65 0d 0a 20 20 23 20 20 20 20 20 20 20 65  the..  #       e
17a0: 78 65 63 75 74 61 62 6c 65 20 66 69 6c 65 20 66  xecutable file f
17b0: 6f 72 20 74 68 65 20 70 72 6f 63 65 73 73 2c 20  or the process, 
17c0: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
17d0: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
17e0: 20 65 78 69 73 74 73 20 62 69 6e 5f 70 61 74 68   exists bin_path
17f0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73  ]} then {..    s
1800: 65 74 20 62 69 6e 5f 70 61 74 68 20 5b 66 69 6c  et bin_path [fil
1810: 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5b 66 69 6c  e normalize [fil
1820: 65 20 64 69 72 6e 61 6d 65 20 24 62 69 6e 5f 66  e dirname $bin_f
1830: 69 6c 65 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  ile]]..  }....  
1840: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74  #..  # NOTE: Set
1850: 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66   the location of
1860: 20 74 68 65 20 5b 6e 6f 6e 2d 73 63 72 69 70 74   the [non-script
1870: 5d 20 6c 69 62 72 61 72 79 20 64 69 72 65 63 74  ] library direct
1880: 6f 72 79 0d 0a 20 20 23 20 20 20 20 20 20 20 28  ory..  #       (
1890: 69 2e 65 2e 20 74 68 65 20 64 69 72 65 63 74 6f  i.e. the directo
18a0: 72 79 20 77 68 65 72 65 20 74 68 65 20 70 6c 75  ry where the plu
18b0: 67 69 6e 73 20 61 72 65 20 6c 6f 63 61 74 65 64  gins are located
18c0: 29 2c 20 69 66 0d 0a 20 20 23 20 20 20 20 20 20  ), if..  #      
18d0: 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 69   necessary.  Thi
18e0: 73 20 76 61 72 69 61 6e 74 20 69 73 20 62 61 73  s variant is bas
18f0: 65 64 20 6f 6e 20 77 68 65 72 65 20 74 68 65 20  ed on where the 
1900: 70 72 6f 63 65 73 73 0d 0a 20 20 23 20 20 20 20  process..  #    
1910: 20 20 20 65 78 65 63 75 74 61 62 6c 65 20 69 73     executable is
1920: 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 23 0d 0a   located...  #..
1930: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1940: 73 74 73 20 6c 69 62 5f 70 61 74 68 5d 7d 20 74  sts lib_path]} t
1950: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
1960: 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 73    # NOTE: This s
1970: 68 6f 75 6c 64 20 67 6f 20 6f 6e 65 20 64 69 72  hould go one dir
1980: 65 63 74 6f 72 79 20 75 70 20 66 72 6f 6d 20 74  ectory up from t
1990: 68 65 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20  he directory..  
19a0: 20 20 23 20 20 20 20 20 20 20 63 6f 6e 74 61 69    #       contai
19b0: 6e 69 6e 67 20 74 68 65 20 65 78 65 63 75 74 61  ning the executa
19c0: 62 6c 65 20 66 69 6c 65 20 66 6f 72 20 74 68 65  ble file for the
19d0: 20 70 72 6f 63 65 73 73 20 28 65 2e 67 2e 0d 0a   process (e.g...
19e0: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20      #       the 
19f0: 73 68 65 6c 6c 29 20 61 6e 64 20 74 68 65 6e 20  shell) and then 
1a00: 69 6e 74 6f 20 74 68 65 20 22 6c 69 62 22 20 64  into the "lib" d
1a10: 69 72 65 63 74 6f 72 79 20 6a 75 73 74 0d 0a 20  irectory just.. 
1a20: 20 20 20 23 20 20 20 20 20 20 20 62 65 6e 65 61     #       benea
1a30: 74 68 20 74 68 61 74 2e 0d 0a 20 20 20 20 23 0d  th that...    #.
1a40: 0a 20 20 20 20 73 65 74 20 6c 69 62 5f 70 61 74  .    set lib_pat
1a50: 68 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a  h [file normaliz
1a60: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69  e [file join [fi
1a70: 6c 65 20 64 69 72 6e 61 6d 65 20 24 62 69 6e 5f  le dirname $bin_
1a80: 70 61 74 68 5d 20 6c 69 62 5d 5d 0d 0a 20 20 7d  path] lib]]..  }
1a90: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
1aa0: 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74  E: Set the locat
1ab0: 69 6f 6e 20 6f 66 20 74 68 65 20 45 61 67 6c 65  ion of the Eagle
1ac0: 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 2d 4f   core library -O
1ad0: 52 2d 20 54 63 6c 20 63 6f 72 65 0d 0a 20 20 23  R- Tcl core..  #
1ae0: 20 20 20 20 20 20 20 6c 69 62 72 61 72 79 20 66         library f
1af0: 69 6c 65 20 69 73 20 6c 6f 63 61 74 65 64 2e 20  ile is located. 
1b00: 20 54 68 69 73 20 6d 61 79 20 62 65 20 64 69 66   This may be dif
1b10: 66 65 72 65 6e 74 20 74 68 61 6e 20 74 68 65 0d  ferent than the.
1b20: 0a 20 20 23 20 20 20 20 20 20 20 6c 6f 63 61 74  .  #       locat
1b30: 69 6f 6e 20 6f 66 20 74 68 65 20 28 73 68 65 6c  ion of the (shel
1b40: 6c 3f 29 20 65 78 65 63 75 74 61 62 6c 65 20 66  l?) executable f
1b50: 69 6c 65 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ile...  #..  if 
1b60: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 63  {![info exists c
1b70: 6f 72 65 5f 62 69 6e 5f 70 61 74 68 5d 7d 20 74  ore_bin_path]} t
1b80: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
1b90: 20 20 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70    # NOTE: Attemp
1ba0: 74 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20  t to obtain the 
1bb0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20  information for 
1bc0: 74 68 65 20 45 61 67 6c 65 20 63 6f 72 65 0d 0a  the Eagle core..
1bd0: 20 20 20 20 23 20 20 20 20 20 20 20 6c 69 62 72      #       libr
1be0: 61 72 79 20 61 73 73 65 6d 62 6c 79 2e 20 20 54  ary assembly.  T
1bf0: 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20 77 6f 72  his will not wor
1c00: 6b 20 66 6f 72 20 6e 61 74 69 76 65 20 54 63 6c  k for native Tcl
1c10: 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
1c20: 20 7b 5b 63 61 74 63 68 20 7b 69 6e 66 6f 20 61   {[catch {info a
1c30: 73 73 65 6d 62 6c 79 7d 20 62 69 6e 5f 64 69 72  ssembly} bin_dir
1c40: 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
1c50: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
1c60: 20 4e 4f 54 45 3a 20 47 72 61 62 20 74 68 65 20   NOTE: Grab the 
1c70: 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68  directory for th
1c80: 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 20 61  e core library a
1c90: 73 73 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 20 20  ssembly...      
1ca0: 23 0d 0a 20 20 20 20 20 20 73 65 74 20 63 6f 72  #..      set cor
1cb0: 65 5f 62 69 6e 5f 70 61 74 68 20 5b 66 69 6c 65  e_bin_path [file
1cc0: 20 64 69 72 6e 61 6d 65 20 5b 6c 69 6e 64 65 78   dirname [lindex
1cd0: 20 24 62 69 6e 5f 64 69 72 20 65 6e 64 5d 5d 0d   $bin_dir end]].
1ce0: 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20  .    } else {.. 
1cf0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
1d00: 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6e 61  NOTE: This is na
1d10: 74 69 76 65 20 54 63 6c 2e 20 20 54 68 65 72 65  tive Tcl.  There
1d20: 20 69 73 20 6e 6f 20 77 61 79 20 74 6f 20 71 75   is no way to qu
1d30: 65 72 79 20 74 68 65 0d 0a 20 20 20 20 20 20 23  ery the..      #
1d40: 20 20 20 20 20 20 20 70 61 74 68 20 66 6f 72 20         path for 
1d50: 74 68 65 20 54 63 6c 20 63 6f 72 65 20 6c 69 62  the Tcl core lib
1d60: 72 61 72 79 20 69 74 73 65 6c 66 20 28 65 2e 67  rary itself (e.g
1d70: 2e 20 22 74 63 6c 2a 2e 64 6c 6c 22 2c 0d 0a 20  . "tcl*.dll",.. 
1d80: 20 20 20 20 20 23 20 20 20 20 20 20 20 22 6c 69       #       "li
1d90: 62 74 63 6c 2a 2e 73 6f 22 2c 20 65 74 63 29 3b  btcl*.so", etc);
1da0: 20 68 6f 77 65 76 65 72 2c 20 75 73 69 6e 67 20   however, using 
1db0: 5b 69 6e 66 6f 20 6c 69 62 72 61 72 79 5d 20 69  [info library] i
1dc0: 73 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  s..      #      
1dd0: 20 63 6c 6f 73 65 20 65 6e 6f 75 67 68 2e 0d 0a   close enough...
1de0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
1df0: 65 74 20 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68  et core_bin_path
1e00: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b   [file dirname [
1e10: 69 6e 66 6f 20 6c 69 62 72 61 72 79 5d 5d 0d 0a  info library]]..
1e20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73      }....    uns
1e30: 65 74 20 62 69 6e 5f 64 69 72 0d 0a 20 20 7d 0d  et bin_dir..  }.
1e40: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
1e50: 3a 20 53 65 74 20 74 68 65 20 6c 6f 63 61 74 69  : Set the locati
1e60: 6f 6e 20 6f 66 20 74 68 65 20 5b 6e 6f 6e 2d 73  on of the [non-s
1e70: 63 72 69 70 74 5d 20 6c 69 62 72 61 72 79 20 64  cript] library d
1e80: 69 72 65 63 74 6f 72 79 0d 0a 20 20 23 20 20 20  irectory..  #   
1e90: 20 20 20 20 28 69 2e 65 2e 20 74 68 65 20 64 69      (i.e. the di
1ea0: 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 74 68  rectory where th
1eb0: 65 20 70 6c 75 67 69 6e 73 20 61 72 65 20 6c 6f  e plugins are lo
1ec0: 63 61 74 65 64 29 2c 20 69 66 0d 0a 20 20 23 20  cated), if..  # 
1ed0: 20 20 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e        necessary.
1ee0: 20 20 54 68 69 73 20 76 61 72 69 61 6e 74 20 69    This variant i
1ef0: 73 20 62 61 73 65 64 20 6f 6e 20 77 68 65 72 65  s based on where
1f00: 20 74 68 65 20 45 61 67 6c 65 0d 0a 20 20 23 20   the Eagle..  # 
1f10: 20 20 20 20 20 20 63 6f 72 65 20 6c 69 62 72 61        core libra
1f20: 72 79 20 2d 4f 52 2d 20 54 63 6c 20 63 6f 72 65  ry -OR- Tcl core
1f30: 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 69 73   library file is
1f40: 20 6c 6f 63 61 74 65 64 2e 0d 0a 20 20 23 0d 0a   located...  #..
1f50: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1f60: 73 74 73 20 63 6f 72 65 5f 6c 69 62 5f 70 61 74  sts core_lib_pat
1f70: 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  h]} then {..    
1f80: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 53  #..    # NOTE: S
1f90: 74 61 72 74 20 77 69 74 68 20 74 68 65 20 64 69  tart with the di
1fa0: 72 65 63 74 6f 72 79 20 66 6f 72 20 74 68 65 20  rectory for the 
1fb0: 63 6f 72 65 20 6c 69 62 72 61 72 79 20 61 73 73  core library ass
1fc0: 65 6d 62 6c 79 2e 0d 0a 20 20 20 20 23 0d 0a 20  embly...    #.. 
1fd0: 20 20 20 73 65 74 20 63 6f 72 65 5f 6c 69 62 5f     set core_lib_
1fe0: 70 61 74 68 20 24 63 6f 72 65 5f 62 69 6e 5f 70  path $core_bin_p
1ff0: 61 74 68 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20  ath....    #..  
2000: 20 20 23 20 4e 4f 54 45 3a 20 50 65 72 66 6f 72    # NOTE: Perfor
2010: 6d 20 61 20 63 68 65 63 6b 20 66 6f 72 20 74 68  m a check for th
2020: 65 20 2e 4e 45 54 20 43 6f 72 65 20 6f 75 74 70  e .NET Core outp
2030: 75 74 20 64 69 72 65 63 74 6f 72 69 65 73 0d 0a  ut directories..
2040: 20 20 20 20 23 20 20 20 20 20 20 20 28 65 2e 67      #       (e.g
2050: 2e 20 22 6e 65 74 63 6f 72 65 61 70 70 32 2e 30  . "netcoreapp2.0
2060: 22 2c 20 65 74 63 29 2c 20 77 68 69 63 68 20 6d  ", etc), which m
2070: 75 73 74 20 62 65 20 72 65 6d 6f 76 65 64 0d 0a  ust be removed..
2080: 20 20 20 20 23 20 20 20 20 20 20 20 69 66 20 70      #       if p
2090: 72 65 73 65 6e 74 2c 20 70 72 69 6f 72 20 74 6f  resent, prior to
20a0: 20 66 75 72 74 68 65 72 20 63 68 65 63 6b 73 2e   further checks.
20b0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
20c0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
20d0: 6f 28 64 6f 74 4e 65 74 43 6f 72 65 4c 69 62 50  o(dotNetCoreLibP
20e0: 61 74 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  ath)] && \..    
20f0: 20 20 20 20 5b 73 74 72 69 6e 67 20 6d 61 74 63      [string matc
2100: 68 20 6e 65 74 2a 20 5b 66 69 6c 65 20 74 61 69  h net* [file tai
2110: 6c 20 24 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68  l $core_lib_path
2120: 5d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  ]]} then {..    
2130: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
2140: 45 3a 20 52 65 6d 6f 76 65 20 74 68 65 20 2e 4e  E: Remove the .N
2150: 45 54 20 43 6f 72 65 20 6f 75 74 70 75 74 20 64  ET Core output d
2160: 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 2e 0d 0a  irectory name...
2170: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
2180: 65 74 20 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68  et core_lib_path
2190: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24   [file dirname $
21a0: 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68 5d 0d 0a  core_lib_path]..
21b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
21c0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 47 6f 20 75      # NOTE: Go u
21d0: 70 20 6f 6e 65 20 6c 65 76 65 6c 2c 20 74 6f 20  p one level, to 
21e0: 72 65 6d 6f 76 65 20 74 68 65 20 22 62 69 6e 22  remove the "bin"
21f0: 20 64 69 72 65 63 74 6f 72 79 20 61 6e 64 0d 0a   directory and..
2200: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 6e      #       then
2210: 20 61 70 70 65 6e 64 20 74 68 65 20 22 6c 69 62   append the "lib
2220: 22 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68  " directory.  Th
2230: 69 73 20 67 69 76 65 73 20 75 73 20 74 68 65 0d  is gives us the.
2240: 0a 20 20 20 20 23 20 20 20 20 20 20 20 66 69 6e  .    #       fin
2250: 61 6c 20 70 61 74 68 20 77 65 20 6e 65 65 64 2e  al path we need.
2260: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73 65 74  ..    #..    set
2270: 20 63 6f 72 65 5f 6c 69 62 5f 70 61 74 68 20 5b   core_lib_path [
2280: 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20 5c  file normalize \
2290: 0d 0a 20 20 20 20 20 20 20 20 5b 66 69 6c 65 20  ..        [file 
22a0: 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61  join [file dirna
22b0: 6d 65 20 24 63 6f 72 65 5f 6c 69 62 5f 70 61 74  me $core_lib_pat
22c0: 68 5d 20 6c 69 62 5d 5d 0d 0a 20 20 7d 0d 0a 0d  h] lib]]..  }...
22d0: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
22e0: 53 65 74 20 74 68 65 20 77 65 62 20 68 6f 73 74  Set the web host
22f0: 20 74 6f 20 74 65 73 74 20 61 67 61 69 6e 73 74   to test against
2300: 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  , if necessary..
2310: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e  .  #..  if {![in
2320: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 68  fo exists test_h
2330: 6f 73 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ost]} then {..  
2340: 20 20 73 65 74 20 74 65 73 74 5f 68 6f 73 74 20    set test_host 
2350: 65 61 67 6c 65 2e 74 6f 0d 0a 20 20 7d 0d 0a 0d  eagle.to..  }...
2360: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
2370: 53 65 74 20 74 68 65 20 70 6f 72 74 20 74 6f 20  Set the port to 
2380: 75 73 65 20 66 6f 72 20 73 65 72 76 65 72 20 73  use for server s
2390: 6f 63 6b 65 74 73 2c 20 69 66 20 6e 65 63 65 73  ockets, if neces
23a0: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
23b0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
23c0: 74 65 73 74 5f 70 6f 72 74 5d 7d 20 74 68 65 6e  test_port]} then
23d0: 20 7b 0d 0a 20 20 20 20 73 65 74 20 74 65 73 74   {..    set test
23e0: 5f 70 6f 72 74 20 31 32 33 34 36 3b 20 23 20 49  _port 12346; # I
23f0: 41 4e 41 2c 20 31 32 33 34 36 2d 31 32 37 35 32  ANA, 12346-12752
2400: 20 55 6e 61 73 73 69 67 6e 65 64 0d 0a 20 20 7d   Unassigned..  }
2410: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
2420: 45 3a 20 53 65 74 20 74 68 65 20 6e 65 74 77 6f  E: Set the netwo
2430: 72 6b 20 74 69 6d 65 6f 75 74 2c 20 69 66 20 6e  rk timeout, if n
2440: 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a  ecessary...  #..
2450: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
2460: 73 74 73 20 74 65 73 74 5f 74 69 6d 65 6f 75 74  sts test_timeout
2470: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73  ]} then {..    s
2480: 65 74 20 74 65 73 74 5f 74 69 6d 65 6f 75 74 20  et test_timeout 
2490: 32 30 30 30 3b 20 23 20 69 6e 20 6d 69 6c 6c 69  2000; # in milli
24a0: 73 65 63 6f 6e 64 73 2e 0d 0a 20 20 7d 0d 0a 0d  seconds...  }...
24b0: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
24c0: 53 65 74 20 74 68 65 20 63 68 61 6e 6e 65 6c 20  Set the channel 
24d0: 74 6f 20 75 73 65 20 66 6f 72 20 74 65 73 74 20  to use for test 
24e0: 6f 75 74 70 75 74 2c 20 69 66 20 6e 65 63 65 73  output, if neces
24f0: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
2500: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
2510: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 5d 7d 20 74  test_channel]} t
2520: 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20 74  hen {..    set t
2530: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 73 74 64 6f  est_channel stdo
2540: 75 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  ut..  }....  #..
2550: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
2560: 65 20 70 72 69 6d 61 72 79 20 70 61 63 6b 61 67  e primary packag
2570: 65 20 70 61 74 68 2c 20 69 66 20 6e 65 63 65 73  e path, if neces
2580: 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66  sary...  #..  if
2590: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
25a0: 74 65 73 74 5f 70 61 63 6b 61 67 65 5f 70 61 74  test_package_pat
25b0: 68 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  h]} then {..    
25c0: 73 65 74 20 74 65 73 74 5f 70 61 63 6b 61 67 65  set test_package
25d0: 5f 70 61 74 68 20 5b 66 69 6c 65 20 6a 6f 69 6e  _path [file join
25e0: 20 24 62 61 73 65 5f 70 61 74 68 20 6c 69 62 5d   $base_path lib]
25f0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
2600: 23 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75 72  # NOTE: Make sur
2610: 65 20 6f 75 72 20 70 72 69 6d 61 72 79 20 70 61  e our primary pa
2620: 63 6b 61 67 65 20 70 61 74 68 20 69 73 20 70 61  ckage path is pa
2630: 72 74 20 6f 66 20 74 68 65 20 61 75 74 6f 2d 70  rt of the auto-p
2640: 61 74 68 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ath...  #..  if 
2650: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 61 75  {[info exists au
2660: 74 6f 5f 70 61 74 68 5d 20 26 26 20 5c 0d 0a 20  to_path] && \.. 
2670: 20 20 20 20 20 5b 6c 73 65 61 72 63 68 20 2d 65       [lsearch -e
2680: 78 61 63 74 20 24 61 75 74 6f 5f 70 61 74 68 20  xact $auto_path 
2690: 24 74 65 73 74 5f 70 61 63 6b 61 67 65 5f 70 61  $test_package_pa
26a0: 74 68 5d 20 3d 3d 20 2d 31 7d 20 74 68 65 6e 20  th] == -1} then 
26b0: 7b 0d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 61  {..    lappend a
26c0: 75 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 70  uto_path $test_p
26d0: 61 63 6b 61 67 65 5f 70 61 74 68 0d 0a 20 20 7d  ackage_path..  }
26e0: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
26f0: 45 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65  E: Make sure the
2700: 20 74 65 73 74 20 73 75 69 74 65 20 70 61 63 6b   test suite pack
2710: 61 67 65 20 69 73 20 70 61 72 74 20 6f 66 20 74  age is part of t
2720: 68 65 20 61 75 74 6f 2d 70 61 74 68 2e 0d 0a 20  he auto-path... 
2730: 20 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20   #..  if {[info 
2740: 65 78 69 73 74 73 20 61 75 74 6f 5f 70 61 74 68  exists auto_path
2750: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b 6c  ] && \..      [l
2760: 73 65 61 72 63 68 20 2d 65 78 61 63 74 20 24 61  search -exact $a
2770: 75 74 6f 5f 70 61 74 68 20 24 74 65 73 74 5f 61  uto_path $test_a
2780: 6c 6c 5f 70 61 74 68 5d 20 3d 3d 20 2d 31 7d 20  ll_path] == -1} 
2790: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 6c 61 70 70  then {..    lapp
27a0: 65 6e 64 20 61 75 74 6f 5f 70 61 74 68 20 24 74  end auto_path $t
27b0: 65 73 74 5f 61 6c 6c 5f 70 61 74 68 0d 0a 20 20  est_all_path..  
27c0: 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
27d0: 54 45 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68  TE: Make sure th
27e0: 65 20 74 65 73 74 20 73 75 69 74 65 20 69 73 20  e test suite is 
27f0: 70 61 72 74 20 6f 66 20 74 68 65 20 61 75 74 6f  part of the auto
2800: 2d 70 61 74 68 2e 20 20 54 68 69 73 20 69 73 0d  -path.  This is.
2810: 0a 20 20 23 20 20 20 20 20 20 20 6e 6f 77 20 64  .  #       now d
2820: 6f 6e 65 20 66 6f 72 20 6c 65 67 61 63 79 20 63  one for legacy c
2830: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c  ompatibility onl
2840: 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b  y...  #..  if {[
2850: 69 6e 66 6f 20 65 78 69 73 74 73 20 61 75 74 6f  info exists auto
2860: 5f 70 61 74 68 5d 20 26 26 20 5c 0d 0a 20 20 20  _path] && \..   
2870: 20 20 20 5b 6c 73 65 61 72 63 68 20 2d 65 78 61     [lsearch -exa
2880: 63 74 20 24 61 75 74 6f 5f 70 61 74 68 20 24 74  ct $auto_path $t
2890: 65 73 74 5f 70 61 74 68 5d 20 3d 3d 20 2d 31 7d  est_path] == -1}
28a0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 6c 61 70   then {..    lap
28b0: 70 65 6e 64 20 61 75 74 6f 5f 70 61 74 68 20 24  pend auto_path $
28c0: 74 65 73 74 5f 70 61 74 68 0d 0a 20 20 7d 0d 0a  test_path..  }..
28d0: 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23  ..  ############
28e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
28f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2920: 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  #....  #..  # NO
2930: 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e  TE: Check for an
2940: 64 20 6c 6f 61 64 20 74 68 65 20 45 61 67 6c 65  d load the Eagle
2950: 20 6c 69 62 72 61 72 79 20 70 61 63 6b 61 67 65   library package
2960: 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  , if necessary..
2970: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 63 61 74  .  #..  if {[cat
2980: 63 68 20 7b 70 61 63 6b 61 67 65 20 70 72 65 73  ch {package pres
2990: 65 6e 74 20 45 61 67 6c 65 2e 4c 69 62 72 61 72  ent Eagle.Librar
29a0: 79 7d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  y}]} then {..   
29b0: 20 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65   package require
29c0: 20 45 61 67 6c 65 2e 4c 69 62 72 61 72 79 0d 0a   Eagle.Library..
29d0: 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
29e0: 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20  NOTE: Check for 
29f0: 61 6e 64 20 6c 6f 61 64 20 74 68 65 20 45 61 67  and load the Eag
2a00: 6c 65 20 74 65 73 74 20 70 61 63 6b 61 67 65 2c  le test package,
2a10: 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a   if necessary...
2a20: 20 20 23 0d 0a 20 20 69 66 20 7b 5b 63 61 74 63    #..  if {[catc
2a30: 68 20 7b 70 61 63 6b 61 67 65 20 70 72 65 73 65  h {package prese
2a40: 6e 74 20 45 61 67 6c 65 2e 54 65 73 74 7d 5d 7d  nt Eagle.Test}]}
2a50: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 70 61 63   then {..    pac
2a60: 6b 61 67 65 20 72 65 71 75 69 72 65 20 45 61 67  kage require Eag
2a70: 6c 65 2e 54 65 73 74 0d 0a 20 20 7d 0d 0a 0d 0a  le.Test..  }....
2a80: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43    #..  # NOTE: C
2a90: 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 6c 6f 61  heck for and loa
2aa0: 64 20 74 68 65 20 45 61 67 6c 65 20 74 65 73 74  d the Eagle test
2ab0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 70 61 63   constraints pac
2ac0: 6b 61 67 65 2c 20 69 66 0d 0a 20 20 23 20 20 20  kage, if..  #   
2ad0: 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a      necessary...
2ae0: 20 20 23 0d 0a 20 20 69 66 20 7b 5b 63 61 74 63    #..  if {[catc
2af0: 68 20 7b 70 61 63 6b 61 67 65 20 70 72 65 73 65  h {package prese
2b00: 6e 74 20 45 61 67 6c 65 2e 54 65 73 74 2e 43 6f  nt Eagle.Test.Co
2b10: 6e 73 74 72 61 69 6e 74 73 7d 5d 7d 20 74 68 65  nstraints}]} the
2b20: 6e 20 7b 0d 0a 20 20 20 20 70 61 63 6b 61 67 65  n {..    package
2b30: 20 72 65 71 75 69 72 65 20 45 61 67 6c 65 2e 54   require Eagle.T
2b40: 65 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74 73 0d  est.Constraints.
2b50: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23  .  }....  ######
2b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2b70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2b80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2b90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ba0: 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a  #######....  #..
2bb0: 20 20 23 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49    # NOTE: *SPECI
2bc0: 41 4c 2a 20 54 68 69 73 20 74 65 73 74 20 63 6f  AL* This test co
2bd0: 6e 73 74 72 61 69 6e 74 20 6d 75 73 74 20 62 65  nstraint must be
2be0: 20 63 68 65 63 6b 65 64 20 66 69 72 73 74 20 61   checked first a
2bf0: 73 20 69 74 20 63 61 6e 0d 0a 20 20 23 20 20 20  s it can..  #   
2c00: 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 69 66      determine if
2c10: 20 73 75 62 73 65 71 75 65 6e 74 20 6f 6e 65 73   subsequent ones
2c20: 20 77 69 6c 6c 20 65 6d 69 74 20 77 61 72 6e 69   will emit warni
2c30: 6e 67 73 2e 20 20 54 68 69 73 20 69 73 20 6f 6e  ngs.  This is on
2c40: 6c 79 0d 0a 20 20 23 20 20 20 20 20 20 20 61 70  ly..  #       ap
2c50: 70 6c 69 63 61 62 6c 65 20 74 6f 20 45 61 67 6c  plicable to Eagl
2c60: 65 2e 20 20 54 68 69 73 20 62 6c 6f 63 6b 20 72  e.  This block r
2c70: 65 71 75 69 72 65 73 20 74 68 65 20 22 45 61 67  equires the "Eag
2c80: 6c 65 2e 54 65 73 74 22 20 61 6e 64 0d 0a 20 20  le.Test" and..  
2c90: 23 20 20 20 20 20 20 20 22 45 61 67 6c 65 2e 54  #       "Eagle.T
2ca0: 65 73 74 2e 43 6f 6e 73 74 72 61 69 6e 74 73 22  est.Constraints"
2cb0: 20 70 61 63 6b 61 67 65 73 2e 0d 0a 20 20 23 0d   packages...  #.
2cc0: 0a 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d  .  if {[isEagle]
2cd0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d  } then {..    #.
2ce0: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
2cf0: 20 71 75 69 65 74 20 74 65 73 74 69 6e 67 20 73   quiet testing s
2d00: 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
2d10: 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20  bled?..    #..  
2d20: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
2d30: 73 74 73 20 6e 6f 28 70 72 65 51 75 69 65 74 29  sts no(preQuiet)
2d40: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
2d50: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
2d60: 3a 20 54 68 65 72 65 20 61 72 65 20 63 68 65 63  : There are chec
2d70: 6b 73 20 66 6f 72 20 74 68 65 20 22 71 75 69 65  ks for the "quie
2d80: 74 22 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69  t" test constrai
2d90: 6e 74 20 70 72 69 6f 72 20 74 6f 0d 0a 20 20 20  nt prior to..   
2da0: 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20 72     #       the r
2db0: 65 61 6c 20 74 65 73 74 20 63 6f 6e 73 74 72 61  eal test constra
2dc0: 69 6e 74 73 20 62 65 69 6e 67 20 69 6e 69 74 69  ints being initi
2dd0: 61 6c 69 7a 65 64 2e 20 20 50 72 65 70 61 72 65  alized.  Prepare
2de0: 20 66 6f 72 0d 0a 20 20 20 20 20 20 23 20 20 20   for..      #   
2df0: 20 20 20 20 74 68 6f 73 65 20 63 68 65 63 6b 73      those checks
2e00: 20 6e 6f 77 2e 20 20 54 68 69 73 20 77 69 6c 6c   now.  This will
2e10: 20 68 61 76 65 20 74 6f 20 62 65 20 72 65 70 65   have to be repe
2e20: 61 74 65 64 20 6c 61 74 65 72 2c 0d 0a 20 20 20  ated later,..   
2e30: 20 20 20 23 20 20 20 20 20 20 20 61 66 74 65 72     #       after
2e40: 20 74 68 65 20 72 65 61 6c 20 74 65 73 74 20 63   the real test c
2e50: 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20 69  onstraints are i
2e60: 6e 69 74 69 61 6c 69 7a 65 64 2e 0d 0a 20 20 20  nitialized...   
2e70: 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
2e80: 6b 46 6f 72 51 75 69 65 74 20 24 74 65 73 74 5f  kForQuiet $test_
2e90: 63 68 61 6e 6e 65 6c 20 74 72 75 65 0d 0a 20 20  channel true..  
2ea0: 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23    }..  }....  ##
2eb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ec0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ed0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ee0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2ef0: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20  ###########.... 
2f00: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 56 65   #..  # NOTE: Ve
2f10: 72 69 66 79 20 74 68 61 74 20 74 68 65 20 63 75  rify that the cu
2f20: 72 72 65 6e 74 20 63 61 6c 6c 20 66 72 61 6d 65  rrent call frame
2f30: 20 69 73 20 63 6f 72 72 65 63 74 20 61 6e 64 20   is correct and 
2f40: 74 68 61 74 20 74 68 65 0d 0a 20 20 23 20 20 20  that the..  #   
2f50: 20 20 20 20 69 6e 74 65 72 70 72 65 74 65 72 20      interpreter 
2f60: 63 61 6c 6c 20 73 74 61 63 6b 20 68 61 73 20 6e  call stack has n
2f70: 6f 74 20 62 65 65 6e 20 69 6d 62 61 6c 61 6e 63  ot been imbalanc
2f80: 65 64 20 62 79 20 70 72 65 76 69 6f 75 73 0d 0a  ed by previous..
2f90: 20 20 23 20 20 20 20 20 20 20 74 65 73 74 73 20    #       tests 
2fa0: 6f 72 20 6f 74 68 65 72 20 65 72 72 6f 72 73 2e  or other errors.
2fb0: 20 20 54 68 69 73 20 63 68 65 63 6b 20 6f 6e 6c    This check onl
2fc0: 79 20 61 70 70 6c 69 65 73 20 74 6f 20 45 61 67  y applies to Eag
2fd0: 6c 65 2e 0d 0a 20 20 23 20 20 20 20 20 20 20 54  le...  #       T
2fe0: 68 69 73 20 62 6c 6f 63 6b 20 72 65 71 75 69 72  his block requir
2ff0: 65 73 20 74 68 65 20 22 45 61 67 6c 65 2e 4c 69  es the "Eagle.Li
3000: 62 72 61 72 79 22 20 70 61 63 6b 61 67 65 2e 0d  brary" package..
3010: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 73 45  .  #..  if {[isE
3020: 61 67 6c 65 5d 20 26 26 20 5b 6c 6c 65 6e 67 74  agle] && [llengt
3030: 68 20 5b 69 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73  h [info commands
3040: 20 6f 62 6a 65 63 74 5d 5d 20 3e 20 30 7d 20 74   object]] > 0} t
3050: 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
3060: 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20    # NOTE: Check 
3070: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
3080: 63 75 72 72 65 6e 74 20 63 61 6c 6c 20 66 72 61  current call fra
3090: 6d 65 20 61 67 61 69 6e 73 74 20 74 68 65 20 6f  me against the o
30a0: 6e 65 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  ne..    #       
30b0: 74 68 61 74 20 73 68 6f 75 6c 64 20 62 65 20 75  that should be u
30c0: 73 65 64 20 66 6f 72 20 65 76 61 6c 75 61 74 69  sed for evaluati
30d0: 6e 67 20 74 68 69 73 20 73 63 72 69 70 74 20 66  ng this script f
30e0: 69 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ile...    #..   
30f0: 20 69 66 20 7b 5b 6f 62 6a 65 63 74 20 69 6e 76   if {[object inv
3100: 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e 50  oke -flags +NonP
3110: 75 62 6c 69 63 20 5c 0d 0a 20 20 20 20 20 20 20  ublic \..       
3120: 20 20 20 20 20 49 6e 74 65 72 70 72 65 74 65 72       Interpreter
3130: 2e 47 65 74 41 63 74 69 76 65 2e 43 75 72 72 65  .GetActive.Curre
3140: 6e 74 46 72 61 6d 65 20 4e 61 6d 65 5d 20 6e 65  ntFrame Name] ne
3150: 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73   \..        [lis
3160: 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6e  t source [file n
3170: 6f 72 6d 61 6c 69 7a 65 20 5b 69 6e 66 6f 20 73  ormalize [info s
3180: 63 72 69 70 74 5d 5d 5d 7d 20 74 68 65 6e 20 7b  cript]]]} then {
3190: 0d 0a 20 20 20 20 20 20 75 6e 73 65 74 20 2d 6e  ..      unset -n
31a0: 6f 63 6f 6d 70 6c 61 69 6e 20 74 65 73 74 5f 73  ocomplain test_s
31b0: 75 69 74 65 5f 72 75 6e 6e 69 6e 67 0d 0a 20 20  uite_running..  
31c0: 20 20 20 20 65 72 72 6f 72 20 22 63 61 6e 6e 6f      error "canno
31d0: 74 20 72 75 6e 20 70 72 6f 6c 6f 67 75 65 2c 20  t run prologue, 
31e0: 63 75 72 72 65 6e 74 20 66 72 61 6d 65 20 6e 6f  current frame no
31f0: 74 20 66 6f 72 20 74 68 69 73 20 73 63 72 69 70  t for this scrip
3200: 74 22 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t"..    }....   
3210: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
3220: 41 74 74 65 6d 70 74 20 74 6f 20 64 65 74 65 72  Attempt to deter
3230: 6d 69 6e 65 20 69 66 20 74 68 65 20 74 68 69 73  mine if the this
3240: 20 73 63 72 69 70 74 20 66 69 6c 65 20 62 65 69   script file bei
3250: 6e 67 20 72 75 6e 20 61 73 0d 0a 20 20 20 20 23  ng run as..    #
3260: 20 20 20 20 20 20 20 70 61 72 74 20 6f 66 20 74         part of t
3270: 68 65 20 6f 76 65 72 61 6c 6c 20 74 65 73 74 20  he overall test 
3280: 73 75 69 74 65 20 73 63 72 69 70 74 20 66 69 6c  suite script fil
3290: 65 20 69 74 73 65 6c 66 2e 20 20 49 66 20 6e 6f  e itself.  If no
32a0: 74 2c 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  t,..    #       
32b0: 69 73 73 75 65 20 61 20 77 61 72 6e 69 6e 67 20  issue a warning 
32c0: 61 62 6f 75 74 20 74 68 65 20 69 6e 61 62 69 6c  about the inabil
32d0: 69 74 79 20 74 6f 20 64 65 74 65 63 74 20 22 6c  ity to detect "l
32e0: 65 61 6b 73 22 20 66 72 6f 6d 0d 0a 20 20 20 20  eaks" from..    
32f0: 23 20 20 20 20 20 20 20 74 68 65 20 74 65 73 74  #       the test
3300: 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  s...    #..    i
3310: 66 20 7b 5b 6c 73 65 61 72 63 68 20 2d 67 6c 6f  f {[lsearch -glo
3320: 62 20 2d 69 6e 64 65 78 20 30 20 2d 2d 20 5b 6f  b -index 0 -- [o
3330: 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c  bject invoke -fl
3340: 61 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 5c  ags +NonPublic \
3350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
3360: 74 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74  terpreter.GetAct
3370: 69 76 65 20 53 63 72 69 70 74 4c 6f 63 61 74 69  ive ScriptLocati
3380: 6f 6e 73 2e 54 6f 53 74 72 69 6e 67 5d 20 5c 0d  ons.ToString] \.
3390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 2a 5b  .            {*[
33a0: 2f 5c 5d 61 6c 6c 2e 65 61 67 6c 65 7d 5d 20 3d  /\]all.eagle}] =
33b0: 3d 20 2d 31 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  = -1} then {..  
33c0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
33d0: 4f 54 45 3a 20 43 68 65 63 6b 20 69 66 20 74 68  OTE: Check if th
33e0: 65 20 77 61 72 6e 69 6e 67 20 73 68 6f 75 6c 64  e warning should
33f0: 20 61 63 74 75 61 6c 6c 79 20 62 65 20 65 6d 69   actually be emi
3400: 74 74 65 64 2e 20 20 49 66 20 74 68 69 73 0d 0a  tted.  If this..
3410: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 77 61        #       wa
3420: 72 6e 69 6e 67 20 68 61 73 20 73 70 65 63 69 66  rning has specif
3430: 69 63 61 6c 6c 79 20 62 65 65 6e 20 64 69 73 61  ically been disa
3440: 62 6c 65 64 20 6f 72 20 77 65 20 61 72 65 20 69  bled or we are i
3450: 6e 20 71 75 69 65 74 0d 0a 20 20 20 20 20 20 23  n quiet..      #
3460: 20 20 20 20 20 20 20 6d 6f 64 65 2c 20 64 6f 20         mode, do 
3470: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
3480: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
3490: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 61  nfo exists no(wa
34a0: 72 6e 69 6e 67 46 6f 72 41 6c 6c 45 61 67 6c 65  rningForAllEagle
34b0: 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  )] && \..       
34c0: 20 20 20 21 5b 68 61 76 65 43 6f 6e 73 74 72 61     ![haveConstra
34d0: 69 6e 74 20 71 75 69 65 74 5d 7d 20 74 68 65 6e  int quiet]} then
34e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74   {..        tput
34f0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
3500: 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20  [appendArgs \.. 
3510: 20 20 20 20 20 20 20 20 20 20 20 22 3d 3d 3d 3d             "====
3520: 20 57 41 52 4e 49 4e 47 3a 20 74 65 73 74 73 20   WARNING: tests 
3530: 61 72 65 20 6e 6f 74 20 62 65 69 6e 67 20 72 75  are not being ru
3540: 6e 20 76 69 61 20 73 75 69 74 65 20 73 63 72 69  n via suite scri
3550: 70 74 20 66 69 6c 65 20 22 20 5c 0d 0a 20 20 20  pt file " \..   
3560: 20 20 20 20 20 20 20 20 20 22 5c 22 61 6c 6c 2e           "\"all.
3570: 65 61 67 6c 65 5c 22 2c 20 72 65 73 6f 75 72 63  eagle\", resourc
3580: 65 20 6c 65 61 6b 73 20 77 69 6c 6c 20 70 72 6f  e leaks will pro
3590: 62 61 62 6c 79 20 6e 6f 74 20 62 65 20 72 65 70  bably not be rep
35a0: 6f 72 74 65 64 2e 5c 6e 22 5d 0d 0a 20 20 20 20  orted.\n"]..    
35b0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d    }..    }..  }.
35c0: 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23  ...  ###########
35d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
35e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
35f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3610: 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ##....  #..  # N
3620: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 63  OTE: Set the loc
3630: 61 6c 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72  al root director
3640: 79 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20  y of the source 
3650: 63 68 65 63 6b 6f 75 74 20 28 69 2e 65 2e 20 6f  checkout (i.e. o
3660: 66 20 45 61 67 6c 65 0d 0a 20 20 23 20 20 20 20  f Eagle..  #    
3670: 20 20 20 6f 72 20 77 68 61 74 65 76 65 72 20 70     or whatever p
3680: 72 6f 6a 65 63 74 20 74 68 65 20 45 61 67 6c 65  roject the Eagle
3690: 20 62 69 6e 61 72 69 65 73 20 61 72 65 20 62 65   binaries are be
36a0: 69 6e 67 20 75 73 65 64 20 62 79 29 20 75 73 69  ing used by) usi
36b0: 6e 67 20 61 0d 0a 20 20 23 20 20 20 20 20 20 20  ng a..  #       
36c0: 46 6f 73 73 69 6c 20 62 69 6e 61 72 79 20 69 6e  Fossil binary in
36d0: 20 74 68 65 20 50 41 54 48 2c 20 69 66 20 61 76   the PATH, if av
36e0: 61 69 6c 61 62 6c 65 2e 20 20 54 68 69 73 20 62  ailable.  This b
36f0: 6c 6f 63 6b 20 6e 6f 77 20 72 65 71 75 69 72 65  lock now require
3700: 73 0d 0a 20 20 23 20 20 20 20 20 20 20 74 68 65  s..  #       the
3710: 20 22 45 61 67 6c 65 2e 54 65 73 74 2e 43 6f 6e   "Eagle.Test.Con
3720: 73 74 72 61 69 6e 74 73 22 20 70 61 63 6b 61 67  straints" packag
3730: 65 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  e...  #..  if {!
3740: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 72 6f 6f  [info exists roo
3750: 74 5f 70 61 74 68 5d 7d 20 74 68 65 6e 20 7b 0d  t_path]} then {.
3760: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
3770: 54 45 3a 20 49 73 20 74 68 65 20 75 73 65 20 6f  TE: Is the use o
3780: 66 20 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20  f Fossil by the 
3790: 74 65 73 74 20 73 75 69 74 65 20 61 6c 6c 6f 77  test suite allow
37a0: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
37b0: 69 66 20 7b 5b 63 61 6e 45 78 65 63 46 6f 73 73  if {[canExecFoss
37c0: 69 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  il]} then {..   
37d0: 20 20 20 73 65 74 20 70 61 74 74 65 72 6e 20 7b     set pattern {
37e0: 5e 6c 6f 63 61 6c 2d 72 6f 6f 74 3a 5c 73 2b 28  ^local-root:\s+(
37f0: 2e 2a 3f 29 24 7d 0d 0a 0d 0a 20 20 20 20 20 20  .*?)$}....      
3800: 69 66 20 7b 5b 63 61 74 63 68 20 7b 65 78 65 63  if {[catch {exec
3810: 20 2d 2d 20 66 6f 73 73 69 6c 20 69 6e 66 6f 7d   -- fossil info}
3820: 20 65 78 65 63 5d 20 7c 7c 20 5c 0d 0a 20 20 20   exec] || \..   
3830: 20 20 20 20 20 20 20 21 5b 72 65 67 65 78 70 20         ![regexp 
3840: 2d 6c 69 6e 65 20 2d 2d 20 24 70 61 74 74 65 72  -line -- $patter
3850: 6e 20 24 65 78 65 63 20 64 75 6d 6d 79 20 64 69  n $exec dummy di
3860: 72 65 63 74 6f 72 79 5d 7d 20 74 68 65 6e 20 7b  rectory]} then {
3870: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
3880: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57 65 20       # NOTE: We 
3890: 63 6f 75 6c 64 20 6e 6f 74 20 71 75 65 72 79 20  could not query 
38a0: 6c 6f 63 61 6c 20 72 6f 6f 74 20 64 69 72 65 63  local root direc
38b0: 74 6f 72 79 20 6f 66 20 74 68 65 20 73 6f 75 72  tory of the sour
38c0: 63 65 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20  ce..        #   
38d0: 20 20 20 20 63 68 65 63 6b 6f 75 74 20 66 72 6f      checkout fro
38e0: 6d 20 46 6f 73 73 69 6c 3b 20 74 68 65 72 65 66  m Fossil; theref
38f0: 6f 72 65 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ore, attempt to 
3900: 6d 61 6b 65 20 61 6e 0d 0a 20 20 20 20 20 20 20  make an..       
3910: 20 23 20 20 20 20 20 20 20 65 64 75 63 61 74 65   #       educate
3920: 64 20 67 75 65 73 73 2e 20 20 54 68 69 73 20 76  d guess.  This v
3930: 61 6c 75 65 20 77 69 6c 6c 20 70 72 6f 62 61 62  alue will probab
3940: 6c 79 20 62 65 20 77 72 6f 6e 67 20 66 6f 72 0d  ly be wrong for.
3950: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
3960: 20 61 6e 79 20 70 72 6f 6a 65 63 74 28 73 29 20   any project(s) 
3970: 6f 74 68 65 72 20 74 68 61 6e 20 45 61 67 6c 65  other than Eagle
3980: 2e 20 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c  .  In that case,
3990: 20 74 68 69 73 0d 0a 20 20 20 20 20 20 20 20 23   this..        #
39a0: 20 20 20 20 20 20 20 76 61 6c 75 65 20 73 68 6f         value sho
39b0: 75 6c 64 20 62 65 20 6f 76 65 72 72 69 64 64 65  uld be overridde
39c0: 6e 20 62 79 20 74 68 61 74 20 70 72 6f 6a 65 63  n by that projec
39d0: 74 20 74 6f 20 72 65 66 6c 65 63 74 0d 0a 20 20  t to reflect..  
39e0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68        #       th
39f0: 65 20 61 63 74 75 61 6c 20 6c 6f 63 61 6c 20 72  e actual local r
3a00: 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 20 6f 66  oot directory of
3a10: 20 74 68 65 20 73 6f 75 72 63 65 20 63 68 65 63   the source chec
3a20: 6b 6f 75 74 0d 0a 20 20 20 20 20 20 20 20 23 20  kout..        # 
3a30: 20 20 20 20 20 20 66 6f 72 20 74 68 61 74 20 70        for that p
3a40: 72 6f 6a 65 63 74 2e 0d 0a 20 20 20 20 20 20 20  roject...       
3a50: 20 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20   #..        set 
3a60: 72 6f 6f 74 5f 70 61 74 68 20 24 62 61 73 65 5f  root_path $base_
3a70: 70 61 74 68 0d 0a 20 20 20 20 20 20 7d 20 65 6c  path..      } el
3a80: 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  se {..        #.
3a90: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
3aa0: 20 57 65 20 65 78 74 72 61 63 74 65 64 20 74 68   We extracted th
3ab0: 65 20 6c 6f 63 61 6c 20 72 6f 6f 74 20 64 69 72  e local root dir
3ac0: 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20 73 6f  ectory of the so
3ad0: 75 72 63 65 0d 0a 20 20 20 20 20 20 20 20 23 20  urce..        # 
3ae0: 20 20 20 20 20 20 63 68 65 63 6b 6f 75 74 20 66        checkout f
3af0: 72 6f 6d 20 46 6f 73 73 69 6c 2e 20 20 4e 6f 77  rom Fossil.  Now
3b00: 2c 20 6d 61 6b 65 20 73 75 72 65 20 69 74 20 69  , make sure it i
3b10: 73 20 66 75 6c 6c 79 0d 0a 20 20 20 20 20 20 20  s fully..       
3b20: 20 23 20 20 20 20 20 20 20 6e 6f 72 6d 61 6c 69   #       normali
3b30: 7a 65 64 20 61 6e 64 20 68 61 73 20 6e 6f 20 74  zed and has no t
3b40: 72 61 69 6c 69 6e 67 20 73 6c 61 73 68 65 73 2e  railing slashes.
3b50: 20 20 41 6c 73 6f 2c 20 6d 61 6b 65 0d 0a 20 20    Also, make..  
3b60: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 73 75        #       su
3b70: 72 65 20 61 6e 64 20 72 65 6d 6f 76 65 20 61 6e  re and remove an
3b80: 79 20 74 72 61 69 6c 69 6e 67 20 6e 65 77 6c 69  y trailing newli
3b90: 6e 65 20 22 6a 75 73 74 20 69 6e 20 63 61 73 65  ne "just in case
3ba0: 22 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  "..        #    
3bb0: 20 20 20 74 68 65 20 72 65 67 75 6c 61 72 20 65     the regular e
3bc0: 78 70 72 65 73 73 69 6f 6e 20 65 6e 67 69 6e 65  xpression engine
3bd0: 20 69 6e 63 6c 75 64 65 64 20 69 74 2e 0d 0a 20   included it... 
3be0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
3bf0: 20 20 73 65 74 20 72 6f 6f 74 5f 70 61 74 68 20    set root_path 
3c00: 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 20  [file normalize 
3c10: 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 64 69  [string trim $di
3c20: 72 65 63 74 6f 72 79 5d 5d 0d 0a 20 20 20 20 20  rectory]]..     
3c30: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 75 6e 73 65   }....      unse
3c40: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 64 69  t -nocomplain di
3c50: 72 65 63 74 6f 72 79 20 64 75 6d 6d 79 20 65 78  rectory dummy ex
3c60: 65 63 20 70 61 74 74 65 72 6e 0d 0a 20 20 20 20  ec pattern..    
3c70: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
3c80: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
3c90: 20 55 73 65 20 6f 66 20 46 6f 73 73 69 6c 20 62   Use of Fossil b
3ca0: 79 20 74 68 65 20 74 65 73 74 20 73 75 69 74 65  y the test suite
3cb0: 20 69 73 20 66 6f 72 62 69 64 64 65 6e 2e 20 20   is forbidden.  
3cc0: 46 61 6c 6c 62 61 63 6b 0d 0a 20 20 20 20 20 20  Fallback..      
3cd0: 23 20 20 20 20 20 20 20 74 6f 20 75 73 69 6e 67  #       to using
3ce0: 20 74 68 65 20 62 61 73 65 20 70 61 74 68 2e 0d   the base path..
3cf0: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
3d00: 73 65 74 20 72 6f 6f 74 5f 70 61 74 68 20 24 62  set root_path $b
3d10: 61 73 65 5f 70 61 74 68 0d 0a 20 20 20 20 7d 0d  ase_path..    }.
3d20: 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23  .  }....  ######
3d30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3d40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3d50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3d60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3d70: 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a  #######....  #..
3d80: 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 63 6f 6d    # NOTE: If com
3d90: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65  mand line argume
3da0: 6e 74 73 20 77 65 72 65 20 73 75 70 70 6c 69 65  nts were supplie
3db0: 64 2c 20 70 72 6f 63 65 73 73 20 74 68 65 6d 20  d, process them 
3dc0: 6e 6f 77 2e 0d 0a 20 20 23 0d 0a 20 20 73 65 74  now...  #..  set
3dd0: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 75 69   test_flags(-sui
3de0: 74 65 29 20 22 22 3b 20 23 20 74 65 73 74 20 73  te) ""; # test s
3df0: 75 69 74 65 20 6e 61 6d 65 2c 20 64 65 66 61 75  uite name, defau
3e00: 6c 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20  lt to empty...  
3e10: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
3e20: 6d 61 63 68 69 6e 65 29 20 22 22 3b 20 23 20 6d  machine) ""; # m
3e30: 61 63 68 69 6e 65 20 61 72 63 68 69 74 65 63 74  achine architect
3e40: 75 72 65 2c 20 64 65 66 61 75 6c 74 20 74 6f 20  ure, default to 
3e50: 65 6d 70 74 79 2e 0d 0a 20 20 73 65 74 20 74 65  empty...  set te
3e60: 73 74 5f 66 6c 61 67 73 28 2d 70 6c 61 74 66 6f  st_flags(-platfo
3e70: 72 6d 29 20 22 22 3b 20 23 20 62 75 69 6c 64 20  rm) ""; # build 
3e80: 70 6c 61 74 66 6f 72 6d 2c 20 64 65 66 61 75 6c  platform, defaul
3e90: 74 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73  t to empty...  s
3ea0: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63  et test_flags(-c
3eb0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 20 22 22  onfiguration) ""
3ec0: 3b 20 23 20 62 75 69 6c 64 20 63 6f 6e 66 69 67  ; # build config
3ed0: 75 72 61 74 69 6f 6e 2c 20 64 65 66 61 75 6c 74  uration, default
3ee0: 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65   to empty...  se
3ef0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6e 61  t test_flags(-na
3f00: 6d 65 50 72 65 66 69 78 29 20 22 22 3b 20 23 20  mePrefix) ""; # 
3f10: 74 65 73 74 20 6e 61 6d 65 20 70 72 65 66 69 78  test name prefix
3f20: 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d 70  , default to emp
3f30: 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  ty...  set test_
3f40: 66 6c 61 67 73 28 2d 73 75 66 66 69 78 29 20 22  flags(-suffix) "
3f50: 22 3b 20 23 20 62 75 69 6c 64 20 73 75 66 66 69  "; # build suffi
3f60: 78 2c 20 64 65 66 61 75 6c 74 20 74 6f 20 65 6d  x, default to em
3f70: 70 74 79 2e 0d 0a 20 20 73 65 74 20 74 65 73 74  pty...  set test
3f80: 5f 66 6c 61 67 73 28 2d 66 69 6c 65 29 20 5b 6c  _flags(-file) [l
3f90: 69 73 74 20 2a 2e 65 61 67 6c 65 5d 3b 20 23 20  ist *.eagle]; # 
3fa0: 64 65 66 61 75 6c 74 20 74 6f 20 72 75 6e 6e 69  default to runni
3fb0: 6e 67 20 61 6c 6c 20 74 65 73 74 20 66 69 6c 65  ng all test file
3fc0: 73 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  s...  set test_f
3fd0: 6c 61 67 73 28 2d 6e 6f 74 46 69 6c 65 29 20 5b  lags(-notFile) [
3fe0: 6c 69 73 74 20 6c 2e 2a 2e 65 61 67 6c 65 5d 3b  list l.*.eagle];
3ff0: 20 23 20 43 4f 4d 50 41 54 3a 20 54 63 6c 2e 0d   # COMPAT: Tcl..
4000: 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67  .  set test_flag
4010: 73 28 2d 73 74 61 72 74 46 69 6c 65 29 20 5b 6c  s(-startFile) [l
4020: 69 73 74 5d 3b 20 23 20 73 74 61 72 74 20 72 75  ist]; # start ru
4030: 6e 6e 69 6e 67 20 61 74 20 74 68 65 73 65 20 74  nning at these t
4040: 65 73 74 20 66 69 6c 65 73 2e 0d 0a 20 20 73 65  est files...  se
4050: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74  t test_flags(-st
4060: 6f 70 46 69 6c 65 29 20 5b 6c 69 73 74 5d 3b 20  opFile) [list]; 
4070: 23 20 73 74 6f 70 20 72 75 6e 6e 69 6e 67 20 61  # stop running a
4080: 66 74 65 72 20 74 68 65 73 65 20 74 65 73 74 20  fter these test 
4090: 66 69 6c 65 73 2e 0d 0a 20 20 73 65 74 20 74 65  files...  set te
40a0: 73 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29  st_flags(-match)
40b0: 20 5b 6c 69 73 74 20 2a 5d 3b 20 23 20 64 65 66   [list *]; # def
40c0: 61 75 6c 74 20 74 6f 20 72 75 6e 6e 69 6e 67 20  ault to running 
40d0: 61 6c 6c 20 74 65 73 74 73 2e 0d 0a 20 20 73 65  all tests...  se
40e0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b  t test_flags(-sk
40f0: 69 70 29 20 5b 6c 69 73 74 5d 3b 20 23 20 64 65  ip) [list]; # de
4100: 66 61 75 6c 74 20 74 6f 20 73 6b 69 70 70 69 6e  fault to skippin
4110: 67 20 6e 6f 20 74 65 73 74 73 2e 0d 0a 20 20 73  g no tests...  s
4120: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 63  et test_flags(-c
4130: 6f 6e 73 74 72 61 69 6e 74 73 29 20 5b 6c 69 73  onstraints) [lis
4140: 74 5d 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f  t]; # default to
4150: 20 6e 6f 20 6d 61 6e 75 61 6c 20 63 6f 6e 73 74   no manual const
4160: 72 61 69 6e 74 73 2e 0d 0a 20 20 73 65 74 20 74  raints...  set t
4170: 65 73 74 5f 66 6c 61 67 73 28 2d 76 65 72 62 6f  est_flags(-verbo
4180: 73 65 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c  se) ""; # defaul
4190: 74 20 74 6f 20 70 61 73 73 2c 20 62 6f 64 79 2c  t to pass, body,
41a0: 20 73 6b 69 70 2c 20 73 74 61 72 74 2c 20 65 72   skip, start, er
41b0: 72 6f 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74  ror...  set test
41c0: 5f 66 6c 61 67 73 28 2d 6c 6f 67 50 61 74 68 29  _flags(-logPath)
41d0: 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74   ""; # default t
41e0: 6f 20 75 73 69 6e 67 20 73 74 61 6e 64 61 72 64  o using standard
41f0: 20 6c 6f 67 20 66 69 6c 65 20 70 61 74 68 2e 0d   log file path..
4200: 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67  .  set test_flag
4210: 73 28 2d 6c 6f 67 49 64 29 20 22 22 3b 20 23 20  s(-logId) ""; # 
4220: 64 65 66 61 75 6c 74 20 74 6f 20 75 73 69 6e 67  default to using
4230: 20 6e 6f 20 6c 6f 67 20 69 64 65 6e 74 69 66 69   no log identifi
4240: 65 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f  er...  set test_
4250: 66 6c 61 67 73 28 2d 6c 6f 67 46 69 6c 65 29 20  flags(-logFile) 
4260: 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f  ""; # default to
4270: 20 75 73 69 6e 67 20 73 74 61 6e 64 61 72 64 20   using standard 
4280: 6c 6f 67 20 66 69 6c 65 20 6e 61 6d 69 6e 67 2e  log file naming.
4290: 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61  ..  set test_fla
42a0: 67 73 28 2d 74 68 72 65 73 68 6f 6c 64 29 20 22  gs(-threshold) "
42b0: 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  "; # default to 
42c0: 72 65 71 75 69 72 69 6e 67 20 61 6c 6c 20 74 65  requiring all te
42d0: 73 74 73 20 74 6f 20 70 61 73 73 2e 0d 0a 20 20  sts to pass...  
42e0: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
42f0: 72 61 6e 64 6f 6d 4f 72 64 65 72 29 20 22 22 3b  randomOrder) "";
4300: 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 64 65   # default to de
4310: 74 65 72 6d 69 6e 69 73 74 69 63 20 6f 72 64 65  terministic orde
4320: 72 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  r...  set test_f
4330: 6c 61 67 73 28 2d 75 6e 63 6f 75 6e 74 65 64 4c  lags(-uncountedL
4340: 65 61 6b 73 29 20 22 22 3b 20 23 20 75 73 65 20  eaks) ""; # use 
4350: 64 65 66 61 75 6c 74 73 20 66 6f 72 20 75 6e 63  defaults for unc
4360: 6f 75 6e 74 65 64 20 72 65 73 6f 75 72 63 65 73  ounted resources
4370: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
4380: 61 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b  ags(-breakOnLeak
4390: 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20  ) ""; # default 
43a0: 74 6f 20 63 6f 6e 74 69 6e 75 65 20 6f 6e 20 6c  to continue on l
43b0: 65 61 6b 2e 0d 0a 20 20 73 65 74 20 74 65 73 74  eak...  set test
43c0: 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f 6e 46 61  _flags(-stopOnFa
43d0: 69 6c 75 72 65 29 20 22 22 3b 20 23 20 64 65 66  ilure) ""; # def
43e0: 61 75 6c 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65  ault to continue
43f0: 20 6f 6e 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20   on failure...  
4400: 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  set test_flags(-
4410: 73 74 6f 70 4f 6e 4c 65 61 6b 29 20 22 22 3b 20  stopOnLeak) ""; 
4420: 23 20 64 65 66 61 75 6c 74 20 74 6f 20 63 6f 6e  # default to con
4430: 74 69 6e 75 65 20 6f 6e 20 6c 65 61 6b 2e 0d 0a  tinue on leak...
4440: 20 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73    set test_flags
4450: 28 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74 65  (-exitOnComplete
4460: 29 20 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20  ) ""; # default 
4470: 74 6f 20 6e 6f 74 20 65 78 69 74 20 61 66 74 65  to not exit afte
4480: 72 20 63 6f 6d 70 6c 65 74 65 2e 0d 0a 20 20 73  r complete...  s
4490: 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 70  et test_flags(-p
44a0: 72 65 54 65 73 74 29 20 22 22 3b 20 23 20 64 65  reTest) ""; # de
44b0: 66 61 75 6c 74 20 74 6f 20 6e 6f 74 20 65 76 61  fault to not eva
44c0: 6c 75 61 74 69 6e 67 20 61 6e 79 74 68 69 6e 67  luating anything
44d0: 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66 6c  ...  set test_fl
44e0: 61 67 73 28 2d 70 6f 73 74 54 65 73 74 29 20 22  ags(-postTest) "
44f0: 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20  "; # default to 
4500: 6e 6f 74 20 65 76 61 6c 75 61 74 69 6e 67 20 61  not evaluating a
4510: 6e 79 74 68 69 6e 67 2e 0d 0a 20 20 73 65 74 20  nything...  set 
4520: 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57  test_flags(-preW
4530: 61 69 74 29 20 22 22 3b 20 23 20 64 65 66 61 75  ait) ""; # defau
4540: 6c 74 20 74 6f 20 6e 6f 74 20 77 61 69 74 69 6e  lt to not waitin
4550: 67 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  g...  set test_f
4560: 6c 61 67 73 28 2d 70 6f 73 74 57 61 69 74 29 20  lags(-postWait) 
4570: 22 22 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f  ""; # default to
4580: 20 6e 6f 74 20 77 61 69 74 69 6e 67 2e 0d 0a 20   not waiting... 
4590: 20 73 65 74 20 74 65 73 74 5f 66 6c 61 67 73 28   set test_flags(
45a0: 2d 74 63 6c 73 68 29 20 22 22 3b 20 23 20 54 63  -tclsh) ""; # Tc
45b0: 6c 20 73 68 65 6c 6c 2c 20 64 65 66 61 75 6c 74  l shell, default
45c0: 20 74 6f 20 65 6d 70 74 79 2e 0d 0a 20 20 73 65   to empty...  se
45d0: 74 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 61  t test_flags(-ba
45e0: 64 29 20 5b 6c 69 73 74 5d 3b 20 23 20 74 68 65  d) [list]; # the
45f0: 73 65 20 61 72 65 20 74 68 65 20 75 6e 72 65 63  se are the unrec
4600: 6f 67 6e 69 7a 65 64 20 61 72 67 75 6d 65 6e 74  ognized argument
4610: 73 2e 0d 0a 20 20 73 65 74 20 74 65 73 74 5f 66  s...  set test_f
4620: 6c 61 67 73 28 2d 6e 6f 29 20 5b 6c 69 73 74 5d  lags(-no) [list]
4630: 3b 20 23 20 64 65 66 61 75 6c 74 20 74 6f 20 6e  ; # default to n
4640: 6f 74 20 68 61 76 69 6e 67 20 61 6e 79 20 72 65  ot having any re
4650: 73 74 72 69 63 74 69 6f 6e 73 2e 0d 0a 0d 0a 20  strictions..... 
4660: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 43 68   #..  # NOTE: Ch
4670: 65 63 6b 20 66 6f 72 20 61 6e 64 20 70 72 6f 63  eck for and proc
4680: 65 73 73 20 61 6e 79 20 63 6f 6d 6d 61 6e 64 20  ess any command 
4690: 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 2e 0d  line arguments..
46a0: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66  .  #..  if {[inf
46b0: 6f 20 65 78 69 73 74 73 20 61 72 67 76 5d 7d 20  o exists argv]} 
46c0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20  then {..    set 
46d0: 74 65 73 74 5f 66 6c 61 67 73 28 2d 62 61 64 29  test_flags(-bad)
46e0: 20 5b 65 76 61 6c 20 70 72 6f 63 65 73 73 54 65   [eval processTe
46f0: 73 74 41 72 67 75 6d 65 6e 74 73 20 74 65 73 74  stArguments test
4700: 5f 66 6c 61 67 73 20 66 61 6c 73 65 20 24 61 72  _flags false $ar
4710: 67 76 5d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b  gv]....    if {[
4720: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
4730: 5f 66 6c 61 67 73 28 2d 6e 6f 29 5d 20 26 26 20  _flags(-no)] && 
4740: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69  \..        [stri
4750: 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f  ng length $test_
4760: 66 6c 61 67 73 28 2d 6e 6f 29 5d 20 3e 20 30 7d  flags(-no)] > 0}
4770: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
4780: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
4790: 53 65 74 20 74 68 65 20 74 65 73 74 20 72 75 6e  Set the test run
47a0: 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 62 61   restrictions ba
47b0: 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 76 69  sed on the provi
47c0: 64 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  ded command line
47d0: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
47e0: 61 72 67 75 6d 65 6e 74 20 76 61 6c 75 65 20 28  argument value (
47f0: 77 68 69 63 68 20 69 73 20 61 73 73 75 6d 65 64  which is assumed
4800: 20 74 6f 20 62 65 20 61 20 22 64 69 63 74 69 6f   to be a "dictio
4810: 6e 61 72 79 2d 73 74 79 6c 65 22 20 6c 69 73 74  nary-style" list
4820: 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20  ..      #       
4830: 63 6f 6e 74 61 69 6e 69 6e 67 20 6e 61 6d 65 2f  containing name/
4840: 76 61 6c 75 65 20 70 61 69 72 73 20 74 6f 20 61  value pairs to a
4850: 64 64 20 74 6f 20 74 68 65 20 67 6c 6f 62 61 6c  dd to the global
4860: 20 22 6e 6f 22 20 61 72 72 61 79 29 2e 0d 0a 20   "no" array)... 
4870: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 66 6f       #..      fo
4880: 72 65 61 63 68 20 7b 6e 61 6d 65 20 76 61 6c 75  reach {name valu
4890: 65 7d 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  e} $test_flags(-
48a0: 6e 6f 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 73  no) {..        s
48b0: 65 74 20 6e 6f 28 24 6e 61 6d 65 29 20 24 76 61  et no($name) $va
48c0: 6c 75 65 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  lue..      }....
48d0: 20 20 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63        unset -noc
48e0: 6f 6d 70 6c 61 69 6e 20 6e 61 6d 65 20 76 61 6c  omplain name val
48f0: 75 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ue..    }....   
4900: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
4910: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f  s test_flags(-lo
4920: 67 50 61 74 68 29 5d 20 26 26 20 5c 0d 0a 20 20  gPath)] && \..  
4930: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65        [string le
4940: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
4950: 28 2d 6c 6f 67 50 61 74 68 29 5d 20 3e 20 30 7d  (-logPath)] > 0}
4960: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
4970: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
4980: 53 65 74 20 74 68 65 20 6c 6f 67 20 70 61 74 68  Set the log path
4990: 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f 76   to the one prov
49a0: 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 6d  ided by the comm
49b0: 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20  and line...     
49c0: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
49d0: 73 74 5f 6c 6f 67 5f 70 61 74 68 20 24 74 65 73  st_log_path $tes
49e0: 74 5f 66 6c 61 67 73 28 2d 6c 6f 67 50 61 74 68  t_flags(-logPath
49f0: 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  )..    }....    
4a00: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
4a10: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f 67   test_flags(-log
4a20: 49 64 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  Id)] && \..     
4a30: 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74     [string lengt
4a40: 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c  h $test_flags(-l
4a50: 6f 67 49 64 29 5d 20 3e 20 30 7d 20 74 68 65 6e  ogId)] > 0} then
4a60: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
4a70: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
4a80: 68 65 20 6c 6f 67 20 69 64 65 6e 74 69 66 69 65  he log identifie
4a90: 72 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f  r to the one pro
4aa0: 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d  vided by the com
4ab0: 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20  mand line...    
4ac0: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74    #..      set t
4ad0: 65 73 74 5f 6c 6f 67 5f 69 64 20 24 74 65 73 74  est_log_id $test
4ae0: 5f 66 6c 61 67 73 28 2d 6c 6f 67 49 64 29 0d 0a  _flags(-logId)..
4af0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20      }....    if 
4b00: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
4b10: 73 74 5f 66 6c 61 67 73 28 2d 6c 6f 67 46 69 6c  st_flags(-logFil
4b20: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
4b30: 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68    [string length
4b40: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 6c 6f   $test_flags(-lo
4b50: 67 46 69 6c 65 29 5d 20 3e 20 30 7d 20 74 68 65  gFile)] > 0} the
4b60: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
4b70: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
4b80: 74 68 65 20 6c 6f 67 20 66 69 6c 65 20 6e 61 6d  the log file nam
4b90: 65 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f  e to the one pro
4ba0: 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d  vided by the com
4bb0: 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20  mand line...    
4bc0: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74    #..      set t
4bd0: 65 73 74 5f 6c 6f 67 20 24 74 65 73 74 5f 66 6c  est_log $test_fl
4be0: 61 67 73 28 2d 6c 6f 67 46 69 6c 65 29 0d 0a 20  ags(-logFile).. 
4bf0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b     }....    if {
4c00: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
4c10: 74 5f 66 6c 61 67 73 28 2d 74 68 72 65 73 68 6f  t_flags(-thresho
4c20: 6c 64 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  ld)] && \..     
4c30: 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69 6e     [string is in
4c40: 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 74  teger -strict $t
4c50: 65 73 74 5f 66 6c 61 67 73 28 2d 74 68 72 65 73  est_flags(-thres
4c60: 68 6f 6c 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  hold)]} then {..
4c70: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
4c80: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74   NOTE: Set the t
4c90: 65 73 74 20 70 61 73 73 20 74 68 72 65 73 68 6f  est pass thresho
4ca0: 6c 64 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72  ld to the one pr
4cb0: 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f  ovided by the co
4cc0: 6d 6d 61 6e 64 0d 0a 20 20 20 20 20 20 23 20 20  mmand..      #  
4cd0: 20 20 20 20 20 6c 69 6e 65 2e 0d 0a 20 20 20 20       line...    
4ce0: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74    #..      set t
4cf0: 65 73 74 5f 74 68 72 65 73 68 6f 6c 64 20 24 74  est_threshold $t
4d00: 65 73 74 5f 66 6c 61 67 73 28 2d 74 68 72 65 73  est_flags(-thres
4d10: 68 6f 6c 64 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  hold)..    }....
4d20: 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78      if {[info ex
4d30: 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28  ists test_flags(
4d40: 2d 72 61 6e 64 6f 6d 4f 72 64 65 72 29 5d 20 26  -randomOrder)] &
4d50: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74  & \..        [st
4d60: 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20  ring is boolean 
4d70: 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 66 6c  -strict $test_fl
4d80: 61 67 73 28 2d 72 61 6e 64 6f 6d 4f 72 64 65 72  ags(-randomOrder
4d90: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
4da0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
4db0: 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20  E: Set the test 
4dc0: 72 61 6e 64 6f 6d 2d 6f 72 64 65 72 20 66 6c 61  random-order fla
4dd0: 67 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72 6f  g to the one pro
4de0: 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20 20  vided by the..  
4df0: 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d 6d      #       comm
4e00: 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20 20  and line...     
4e10: 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74 65   #..      set te
4e20: 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64 65 72 20  st_random_order 
4e30: 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 72 61 6e  $test_flags(-ran
4e40: 64 6f 6d 4f 72 64 65 72 29 0d 0a 20 20 20 20 7d  domOrder)..    }
4e50: 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66  ....    if {[inf
4e60: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
4e70: 61 67 73 28 2d 75 6e 63 6f 75 6e 74 65 64 4c 65  ags(-uncountedLe
4e80: 61 6b 73 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  aks)] && \..    
4e90: 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67      [string leng
4ea0: 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  th $test_flags(-
4eb0: 75 6e 63 6f 75 6e 74 65 64 4c 65 61 6b 73 29 5d  uncountedLeaks)]
4ec0: 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20   > 0} then {..  
4ed0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
4ee0: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73  OTE: Set the tes
4ef0: 74 20 75 6e 63 6f 75 6e 74 65 64 20 6c 65 61 6b  t uncounted leak
4f00: 73 20 22 6c 69 73 74 22 20 74 6f 20 74 68 65 20  s "list" to the 
4f10: 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79 0d  one provided by.
4f20: 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74  .      #       t
4f30: 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e  he command line.
4f40: 20 20 57 65 20 73 68 6f 75 6c 64 20 70 72 6f 62    We should prob
4f50: 61 62 6c 79 20 75 73 65 20 5b 73 74 72 69 6e 67  ably use [string
4f60: 20 69 73 20 6c 69 73 74 5d 0d 0a 20 20 20 20 20   is list]..     
4f70: 20 23 20 20 20 20 20 20 20 68 65 72 65 3b 20 68   #       here; h
4f80: 6f 77 65 76 65 72 2c 20 74 68 61 74 20 69 73 20  owever, that is 
4f90: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 75 6e  not available un
4fa0: 74 69 6c 20 6e 61 74 69 76 65 20 54 63 6c 20 38  til native Tcl 8
4fb0: 2e 35 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  .5...      #..  
4fc0: 20 20 20 20 73 65 74 20 74 65 73 74 5f 75 6e 63      set test_unc
4fd0: 6f 75 6e 74 65 64 5f 6c 65 61 6b 73 20 24 74 65  ounted_leaks $te
4fe0: 73 74 5f 66 6c 61 67 73 28 2d 75 6e 63 6f 75 6e  st_flags(-uncoun
4ff0: 74 65 64 4c 65 61 6b 73 29 0d 0a 20 20 20 20 7d  tedLeaks)..    }
5000: 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66  ....    if {[inf
5010: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c  o exists test_fl
5020: 61 67 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b  ags(-breakOnLeak
5030: 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  )] && \..       
5040: 20 5b 73 74 72 69 6e 67 20 69 73 20 62 6f 6f 6c   [string is bool
5050: 65 61 6e 20 2d 73 74 72 69 63 74 20 24 74 65 73  ean -strict $tes
5060: 74 5f 66 6c 61 67 73 28 2d 62 72 65 61 6b 4f 6e  t_flags(-breakOn
5070: 4c 65 61 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Leak)]} then {..
5080: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
5090: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74   NOTE: Set the t
50a0: 65 73 74 20 62 72 65 61 6b 2d 6f 6e 2d 6c 65 61  est break-on-lea
50b0: 6b 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e  k flag to the on
50c0: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  e provided by th
50d0: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
50e0: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a   command line...
50f0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
5100: 65 74 20 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e  et test_break_on
5110: 5f 6c 65 61 6b 20 24 74 65 73 74 5f 66 6c 61 67  _leak $test_flag
5120: 73 28 2d 62 72 65 61 6b 4f 6e 4c 65 61 6b 29 0d  s(-breakOnLeak).
5130: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66  .    }....    if
5140: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
5150: 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f  est_flags(-stopO
5160: 6e 46 61 69 6c 75 72 65 29 5d 20 26 26 20 5c 0d  nFailure)] && \.
5170: 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67  .        [string
5180: 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73 74 72   is boolean -str
5190: 69 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73 28  ict $test_flags(
51a0: 2d 73 74 6f 70 4f 6e 46 61 69 6c 75 72 65 29 5d  -stopOnFailure)]
51b0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
51c0: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
51d0: 20 53 65 74 20 74 68 65 20 74 65 73 74 20 73 74   Set the test st
51e0: 6f 70 2d 6f 6e 2d 66 61 69 6c 75 72 65 20 66 6c  op-on-failure fl
51f0: 61 67 20 74 6f 20 74 68 65 20 6f 6e 65 20 70 72  ag to the one pr
5200: 6f 76 69 64 65 64 20 62 79 20 74 68 65 0d 0a 20  ovided by the.. 
5210: 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d       #       com
5220: 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a 20 20 20 20  mand line...    
5230: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 74    #..      set t
5240: 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 66 61 69 6c  est_stop_on_fail
5250: 75 72 65 20 24 74 65 73 74 5f 66 6c 61 67 73 28  ure $test_flags(
5260: 2d 73 74 6f 70 4f 6e 46 61 69 6c 75 72 65 29 0d  -stopOnFailure).
5270: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66  .    }....    if
5280: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74   {[info exists t
5290: 65 73 74 5f 66 6c 61 67 73 28 2d 73 74 6f 70 4f  est_flags(-stopO
52a0: 6e 4c 65 61 6b 29 5d 20 26 26 20 5c 0d 0a 20 20  nLeak)] && \..  
52b0: 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73        [string is
52c0: 20 62 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74   boolean -strict
52d0: 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74   $test_flags(-st
52e0: 6f 70 4f 6e 4c 65 61 6b 29 5d 7d 20 74 68 65 6e  opOnLeak)]} then
52f0: 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20   {..      #..   
5300: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
5310: 68 65 20 74 65 73 74 20 73 74 6f 70 2d 6f 6e 2d  he test stop-on-
5320: 6c 65 61 6b 20 66 6c 61 67 20 74 6f 20 74 68 65  leak flag to the
5330: 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62 79   one provided by
5340: 20 74 68 65 0d 0a 20 20 20 20 20 20 23 20 20 20   the..      #   
5350: 20 20 20 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65      command line
5360: 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
5370: 20 20 73 65 74 20 74 65 73 74 5f 73 74 6f 70 5f    set test_stop_
5380: 6f 6e 5f 6c 65 61 6b 20 24 74 65 73 74 5f 66 6c  on_leak $test_fl
5390: 61 67 73 28 2d 73 74 6f 70 4f 6e 4c 65 61 6b 29  ags(-stopOnLeak)
53a0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
53b0: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  f {[info exists 
53c0: 74 65 73 74 5f 66 6c 61 67 73 28 2d 65 78 69 74  test_flags(-exit
53d0: 4f 6e 43 6f 6d 70 6c 65 74 65 29 5d 20 26 26 20  OnComplete)] && 
53e0: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69  \..        [stri
53f0: 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d 73  ng is boolean -s
5400: 74 72 69 63 74 20 24 74 65 73 74 5f 66 6c 61 67  trict $test_flag
5410: 73 28 2d 65 78 69 74 4f 6e 43 6f 6d 70 6c 65 74  s(-exitOnComplet
5420: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
5430: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
5440: 54 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74  TE: Set the test
5450: 20 65 78 69 74 2d 6f 6e 2d 63 6f 6d 70 6c 65 74   exit-on-complet
5460: 65 20 66 6c 61 67 20 74 6f 20 74 68 65 20 6f 6e  e flag to the on
5470: 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  e provided by th
5480: 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
5490: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a   command line...
54a0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
54b0: 65 74 20 74 65 73 74 5f 65 78 69 74 5f 6f 6e 5f  et test_exit_on_
54c0: 63 6f 6d 70 6c 65 74 65 20 24 74 65 73 74 5f 66  complete $test_f
54d0: 6c 61 67 73 28 2d 65 78 69 74 4f 6e 43 6f 6d 70  lags(-exitOnComp
54e0: 6c 65 74 65 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  lete)..    }....
54f0: 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78      if {[info ex
5500: 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28  ists test_flags(
5510: 2d 70 72 65 54 65 73 74 29 5d 20 26 26 20 5c 0d  -preTest)] && \.
5520: 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67  .        [string
5530: 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c   length $test_fl
5540: 61 67 73 28 2d 70 72 65 54 65 73 74 29 5d 20 3e  ags(-preTest)] >
5550: 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20   0} then {..    
5560: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
5570: 45 3a 20 53 65 74 20 74 68 65 20 70 72 65 2d 74  E: Set the pre-t
5580: 65 73 74 20 73 63 72 69 70 74 20 74 6f 20 74 68  est script to th
5590: 65 20 6f 6e 65 20 70 72 6f 76 69 64 65 64 20 62  e one provided b
55a0: 79 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69  y the command li
55b0: 6e 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ne...      #..  
55c0: 20 20 20 20 73 65 74 20 74 65 73 74 5f 73 63 72      set test_scr
55d0: 69 70 74 28 70 72 65 29 20 24 74 65 73 74 5f 66  ipt(pre) $test_f
55e0: 6c 61 67 73 28 2d 70 72 65 54 65 73 74 29 0d 0a  lags(-preTest)..
55f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20      }....    if 
5600: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
5610: 73 74 5f 66 6c 61 67 73 28 2d 70 6f 73 74 54 65  st_flags(-postTe
5620: 73 74 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  st)] && \..     
5630: 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74     [string lengt
5640: 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d 70  h $test_flags(-p
5650: 6f 73 74 54 65 73 74 29 5d 20 3e 20 30 7d 20 74  ostTest)] > 0} t
5660: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
5670: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65        # NOTE: Se
5680: 74 20 74 68 65 20 70 72 65 2d 74 65 73 74 20 73  t the pre-test s
5690: 63 72 69 70 74 20 74 6f 20 74 68 65 20 6f 6e 65  cript to the one
56a0: 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
56b0: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 0d 0a   command line...
56c0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 73        #..      s
56d0: 65 74 20 74 65 73 74 5f 73 63 72 69 70 74 28 70  et test_script(p
56e0: 6f 73 74 29 20 24 74 65 73 74 5f 66 6c 61 67 73  ost) $test_flags
56f0: 28 2d 70 6f 73 74 54 65 73 74 29 0d 0a 20 20 20  (-postTest)..   
5700: 20 7d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b 69   }....    if {[i
5710: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
5720: 66 6c 61 67 73 28 2d 70 72 65 57 61 69 74 29 5d  flags(-preWait)]
5730: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b   && \..        [
5740: 73 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65  string is intege
5750: 72 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f  r -strict $test_
5760: 66 6c 61 67 73 28 2d 70 72 65 57 61 69 74 29 5d  flags(-preWait)]
5770: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
5780: 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
5790: 20 53 65 74 20 74 68 65 20 73 70 65 63 69 66 69   Set the specifi
57a0: 65 64 20 77 61 69 74 20 28 69 6e 20 6d 69 6c 6c  ed wait (in mill
57b0: 69 73 65 63 6f 6e 64 73 29 20 62 65 66 6f 72 65  iseconds) before
57c0: 20 65 61 63 68 20 66 69 6c 65 2e 0d 0a 20 20 20   each file...   
57d0: 20 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20     #..      set 
57e0: 74 65 73 74 5f 77 61 69 74 28 70 72 65 29 20 24  test_wait(pre) $
57f0: 74 65 73 74 5f 66 6c 61 67 73 28 2d 70 72 65 57  test_flags(-preW
5800: 61 69 74 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ait)..    }.... 
5810: 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69     if {[info exi
5820: 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
5830: 70 6f 73 74 57 61 69 74 29 5d 20 26 26 20 5c 0d  postWait)] && \.
5840: 0a 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67  .        [string
5850: 20 69 73 20 69 6e 74 65 67 65 72 20 2d 73 74 72   is integer -str
5860: 69 63 74 20 24 74 65 73 74 5f 66 6c 61 67 73 28  ict $test_flags(
5870: 2d 70 6f 73 74 57 61 69 74 29 5d 7d 20 74 68 65  -postWait)]} the
5880: 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
5890: 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20      # NOTE: Set 
58a0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 77 61  the specified wa
58b0: 69 74 20 28 69 6e 20 6d 69 6c 6c 69 73 65 63 6f  it (in milliseco
58c0: 6e 64 73 29 20 61 66 74 65 72 20 65 61 63 68 20  nds) after each 
58d0: 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  file...      #..
58e0: 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 77        set test_w
58f0: 61 69 74 28 70 6f 73 74 29 20 24 74 65 73 74 5f  ait(post) $test_
5900: 66 6c 61 67 73 28 2d 70 6f 73 74 57 61 69 74 29  flags(-postWait)
5910: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a  ..    }..  }....
5920: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
5930: 65 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 74  et the default t
5940: 65 73 74 20 73 75 69 74 65 20 6e 61 6d 65 2c 20  est suite name, 
5950: 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20  if necessary... 
5960: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
5970: 20 65 78 69 73 74 73 20 74 65 73 74 5f 73 75 69   exists test_sui
5980: 74 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  te]} then {..   
5990: 20 73 65 74 20 74 65 73 74 5f 73 75 69 74 65 20   set test_suite 
59a0: 5b 67 65 74 54 65 73 74 53 75 69 74 65 5d 0d 0a  [getTestSuite]..
59b0: 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
59c0: 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 64 65  NOTE: Set the de
59d0: 66 61 75 6c 74 20 74 65 73 74 20 6d 61 63 68 69  fault test machi
59e0: 6e 65 20 28 65 2e 67 2e 20 61 6d 64 36 34 2c 20  ne (e.g. amd64, 
59f0: 69 6e 74 65 6c 2c 20 65 74 63 29 2c 20 69 66 20  intel, etc), if 
5a00: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d  necessary...  #.
5a10: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
5a20: 69 73 74 73 20 74 65 73 74 5f 6d 61 63 68 69 6e  ists test_machin
5a30: 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
5a40: 73 65 74 20 74 65 73 74 5f 6d 61 63 68 69 6e 65  set test_machine
5a50: 20 5b 67 65 74 54 65 73 74 4d 61 63 68 69 6e 65   [getTestMachine
5a60: 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  ]..  }....  #.. 
5a70: 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
5a80: 20 64 65 66 61 75 6c 74 20 74 65 73 74 20 70 6c   default test pl
5a90: 61 74 66 6f 72 6d 20 28 65 2e 67 2e 20 78 38 36  atform (e.g. x86
5aa0: 2c 20 78 36 34 2c 20 65 74 63 29 2c 20 69 66 20  , x64, etc), if 
5ab0: 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d  necessary...  #.
5ac0: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
5ad0: 69 73 74 73 20 74 65 73 74 5f 70 6c 61 74 66 6f  ists test_platfo
5ae0: 72 6d 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  rm]} then {..   
5af0: 20 73 65 74 20 74 65 73 74 5f 70 6c 61 74 66 6f   set test_platfo
5b00: 72 6d 20 5b 67 65 74 54 65 73 74 50 6c 61 74 66  rm [getTestPlatf
5b10: 6f 72 6d 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  orm]..  }....  #
5b20: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20  ..  # NOTE: Set 
5b30: 74 68 65 20 64 65 66 61 75 6c 74 20 74 65 73 74  the default test
5b40: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 28   configuration (
5b50: 69 2e 65 2e 20 44 65 62 75 67 20 6f 72 20 52 65  i.e. Debug or Re
5b60: 6c 65 61 73 65 29 2c 20 69 66 0d 0a 20 20 23 20  lease), if..  # 
5b70: 20 20 20 20 20 20 6e 65 63 65 73 73 61 72 79 2e        necessary.
5b80: 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
5b90: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
5ba0: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 5d 7d 20  configuration]} 
5bb0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65 74 20  then {..    set 
5bc0: 74 65 73 74 5f 63 6f 6e 66 69 67 75 72 61 74 69  test_configurati
5bd0: 6f 6e 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49  on [getPlatformI
5be0: 6e 66 6f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  nfo configuratio
5bf0: 6e 20 52 65 6c 65 61 73 65 5d 0d 0a 20 20 7d 0d  n Release]..  }.
5c00: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
5c10: 3a 20 53 65 74 20 74 68 65 20 6e 61 6d 65 20 70  : Set the name p
5c20: 72 65 66 69 78 20 75 73 65 64 20 66 6f 72 20 73  refix used for s
5c30: 6f 6d 65 20 74 65 73 74 73 2c 20 69 66 20 6e 65  ome tests, if ne
5c40: 63 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20  cessary...  #.. 
5c50: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
5c60: 74 73 20 74 65 73 74 5f 6e 61 6d 65 5f 70 72 65  ts test_name_pre
5c70: 66 69 78 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  fix]} then {..  
5c80: 20 20 73 65 74 20 74 65 73 74 5f 6e 61 6d 65 5f    set test_name_
5c90: 70 72 65 66 69 78 20 22 22 0d 0a 20 20 7d 0d 0a  prefix ""..  }..
5ca0: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
5cb0: 20 48 61 73 20 61 75 74 6f 6d 61 74 69 63 20 6c   Has automatic l
5cc0: 6f 67 20 66 69 6c 65 20 6e 61 6d 69 6e 67 20 62  og file naming b
5cd0: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
5ce0: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
5cf0: 20 65 78 69 73 74 73 20 6e 6f 28 6c 6f 67 46 69   exists no(logFi
5d00: 6c 65 4e 61 6d 65 29 5d 7d 20 74 68 65 6e 20 7b  leName)]} then {
5d10: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
5d20: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 6c 6f 67  OTE: Set the log
5d30: 20 74 6f 20 75 73 65 20 66 6f 72 20 74 65 73 74   to use for test
5d40: 20 6f 75 74 70 75 74 2c 20 69 66 20 6e 65 63 65   output, if nece
5d50: 73 73 61 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20  ssary...    #.. 
5d60: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
5d70: 69 73 74 73 20 74 65 73 74 5f 6c 6f 67 5d 7d 20  ists test_log]} 
5d80: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65  then {..      se
5d90: 74 20 74 65 73 74 5f 6c 6f 67 20 5b 67 65 74 44  t test_log [getD
5da0: 65 66 61 75 6c 74 54 65 73 74 4c 6f 67 5d 0d 0a  efaultTestLog]..
5db0: 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20      }..  }....  
5dc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d  #############...
5e10: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
5e20: 48 61 73 20 6e 61 74 69 76 65 20 54 63 6c 20 73  Has native Tcl s
5e30: 68 65 6c 6c 20 64 65 74 65 63 74 69 6f 6e 20 61  hell detection a
5e40: 6e 64 20 75 73 65 20 62 65 65 6e 20 64 69 73 61  nd use been disa
5e50: 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
5e60: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
5e70: 6e 6f 28 74 63 6c 73 68 29 5d 7d 20 74 68 65 6e  no(tclsh)]} then
5e80: 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23   {..    #..    #
5e90: 20 4e 4f 54 45 3a 20 42 79 20 64 65 66 61 75 6c   NOTE: By defaul
5ea0: 74 2c 20 64 69 73 61 62 6c 65 20 76 65 72 62 6f  t, disable verbo
5eb0: 73 65 20 6f 75 74 70 75 74 20 77 68 65 6e 20 75  se output when u
5ec0: 73 69 6e 67 20 74 68 65 20 6e 61 74 69 76 65 0d  sing the native.
5ed0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 54 63 6c  .    #       Tcl
5ee0: 20 73 68 65 6c 6c 20 77 69 74 68 69 6e 20 74 68   shell within th
5ef0: 65 20 74 65 73 74 20 73 75 69 74 65 2e 0d 0a 20  e test suite... 
5f00: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
5f10: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
5f20: 5f 74 63 6c 73 68 5f 76 65 72 62 6f 73 65 5d 7d  _tclsh_verbose]}
5f30: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 73   then {..      s
5f40: 65 74 20 74 65 73 74 5f 74 63 6c 73 68 5f 76 65  et test_tclsh_ve
5f50: 72 62 6f 73 65 20 30 0d 0a 20 20 20 20 7d 0d 0a  rbose 0..    }..
5f60: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
5f70: 4f 54 45 3a 20 53 65 74 20 74 68 65 20 54 63 6c  OTE: Set the Tcl
5f80: 20 73 68 65 6c 6c 20 65 78 65 63 75 74 61 62 6c   shell executabl
5f90: 65 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 6f  e to use for tho
5fa0: 73 65 20 73 70 65 63 69 61 6c 69 7a 65 64 0d 0a  se specialized..
5fb0: 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73 74      #       test
5fc0: 73 20 74 68 61 74 20 6d 61 79 20 72 65 71 75 69  s that may requi
5fd0: 72 65 20 69 74 2c 20 69 66 20 6e 65 63 65 73 73  re it, if necess
5fe0: 61 72 79 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ary...    #..   
5ff0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
6000: 74 73 20 74 65 73 74 5f 74 63 6c 73 68 5d 7d 20  ts test_tclsh]} 
6010: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
6020: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57  .      # NOTE: W
6030: 68 65 6e 20 72 75 6e 6e 69 6e 67 20 69 6e 20 45  hen running in E
6040: 61 67 6c 65 2c 20 6d 6f 72 65 20 63 6f 6d 70 6c  agle, more compl
6050: 65 78 20 6c 6f 67 69 63 20 69 73 20 72 65 71 75  ex logic is requ
6060: 69 72 65 64 20 74 6f 0d 0a 20 20 20 20 20 20 23  ired to..      #
6070: 20 20 20 20 20 20 20 64 65 74 65 72 6d 69 6e 65         determine
6080: 20 74 68 65 20 6e 61 74 69 76 65 20 54 63 6c 20   the native Tcl 
6090: 73 68 65 6c 6c 20 74 6f 20 75 73 65 20 66 6f 72  shell to use for
60a0: 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 65 73   the various tes
60b0: 74 73 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  ts..      #     
60c0: 20 20 74 68 61 74 20 72 65 71 75 69 72 65 20 69    that require i
60d0: 74 2e 20 20 41 6c 73 6f 2c 20 74 68 69 73 20 73  t.  Also, this s
60e0: 61 6d 65 20 6c 6f 67 69 63 20 69 73 20 75 73 65  ame logic is use
60f0: 64 20 77 69 74 68 20 54 63 6c 0d 0a 20 20 20 20  d with Tcl..    
6100: 20 20 23 20 20 20 20 20 20 20 77 68 65 6e 20 69    #       when i
6110: 74 20 69 73 20 6e 6f 74 20 72 75 6e 6e 69 6e 67  t is not running
6120: 20 66 72 6f 6d 20 61 6e 20 69 6e 73 74 61 6e 63   from an instanc
6130: 65 20 6f 66 20 74 68 65 20 54 63 6c 20 73 68 65  e of the Tcl she
6140: 6c 6c 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20  ll..      #     
6150: 20 20 65 78 65 63 75 74 61 62 6c 65 2e 0d 0a 20    executable... 
6160: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
6170: 20 7b 5b 69 73 45 61 67 6c 65 5d 20 7c 7c 20 21   {[isEagle] || !
6180: 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 74 63  [string match tc
6190: 6c 73 68 2a 20 24 62 69 6e 5f 66 69 6c 65 5d 7d  lsh* $bin_file]}
61a0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
61b0: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
61c0: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 74 63  s test_flags(-tc
61d0: 6c 73 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  lsh)] && \..    
61e0: 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20          [string 
61f0: 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61  length $test_fla
6200: 67 73 28 2d 74 63 6c 73 68 29 5d 20 3e 20 30 7d  gs(-tclsh)] > 0}
6210: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
6220: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
6230: 23 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20  # NOTE: Use the 
6240: 6e 61 74 69 76 65 20 54 63 6c 20 73 68 65 6c 6c  native Tcl shell
6250: 20 73 70 65 63 69 66 69 65 64 20 76 69 61 20 74   specified via t
6260: 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e  he command line.
6270: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
6280: 20 20 20 20 20 20 20 20 20 73 65 74 20 74 65 73           set tes
6290: 74 5f 74 63 6c 73 68 20 24 74 65 73 74 5f 66 6c  t_tclsh $test_fl
62a0: 61 67 73 28 2d 74 63 6c 73 68 29 0d 0a 20 20 20  ags(-tclsh)..   
62b0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
62c0: 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63 61           if {[ca
62d0: 6e 45 78 65 63 54 63 6c 53 68 65 6c 6c 5d 20 26  nExecTclShell] &
62e0: 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  & \..           
62f0: 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73     ![info exists
6300: 20 6e 6f 28 67 65 74 54 63 6c 53 68 65 6c 6c 46   no(getTclShellF
6310: 69 6c 65 4e 61 6d 65 29 5d 7d 20 74 68 65 6e 20  ileName)]} then 
6320: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  {..            #
6330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20  ..            # 
6340: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
6350: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73   automatically s
6360: 65 6c 65 63 74 20 74 68 65 20 6e 61 74 69 76 65  elect the native
6370: 20 54 63 6c 20 73 68 65 6c 6c 0d 0a 20 20 20 20   Tcl shell..    
6380: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
6390: 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 20 20 20  to use...       
63a0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
63b0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
63c0: 78 69 73 74 73 20 6e 6f 28 77 61 72 6e 69 6e 67  xists no(warning
63d0: 46 6f 72 54 63 6c 53 68 65 6c 6c 29 5d 20 26 26  ForTclShell)] &&
63e0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
63f0: 20 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73 74      ![info exist
6400: 73 20 6e 6f 28 61 75 74 6f 6d 61 74 69 63 54 63  s no(automaticTc
6410: 6c 53 68 65 6c 6c 29 5d 20 26 26 20 5c 0d 0a 20  lShell)] && \.. 
6420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21                 !
6430: 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20  [haveConstraint 
6440: 71 75 69 65 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a  quiet]} then {..
6450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 70                tp
6460: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
6470: 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l \..           
6480: 20 20 20 20 20 20 20 22 3d 3d 3d 3d 20 57 41 52         "==== WAR
6490: 4e 49 4e 47 3a 20 61 74 74 65 6d 70 74 69 6e 67  NING: attempting
64a0: 20 61 75 74 6f 6d 61 74 69 63 20 54 63 6c 20 73   automatic Tcl s
64b0: 68 65 6c 6c 20 73 65 6c 65 63 74 69 6f 6e 2e 2e  hell selection..
64c0: 2e 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 20 20  .\n"..          
64d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
64e0: 20 20 20 73 65 74 20 74 65 73 74 5f 74 63 6c 73     set test_tcls
64f0: 68 20 5b 67 65 74 54 63 6c 53 68 65 6c 6c 46 69  h [getTclShellFi
6500: 6c 65 4e 61 6d 65 20 5c 0d 0a 20 20 20 20 20 20  leName \..      
6510: 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72 20            [expr 
6520: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
6530: 6f 28 61 75 74 6f 6d 61 74 69 63 54 63 6c 53 68  o(automaticTclSh
6540: 65 6c 6c 29 5d 7d 5d 20 5c 0d 0a 20 20 20 20 20  ell)]}] \..     
6550: 20 20 20 20 20 20 20 20 20 20 20 5b 65 78 70 72             [expr
6560: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
6570: 6e 6f 28 74 63 6c 4b 69 74 29 5d 7d 5d 20 5c 0d  no(tclKit)]}] \.
6580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6590: 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
65a0: 69 73 74 73 20 74 65 73 74 5f 6d 61 63 68 69 6e  ists test_machin
65b0: 65 5d 20 3f 20 24 74 65 73 74 5f 6d 61 63 68 69  e] ? $test_machi
65c0: 6e 65 20 3a 20 22 22 7d 5d 5d 0d 0a 20 20 20 20  ne : ""}]]..    
65d0: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
65e0: 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
65f0: 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
6600: 45 3a 20 53 6b 69 70 20 64 65 74 65 63 74 69 6f  E: Skip detectio
6610: 6e 20 61 6e 64 20 75 73 65 20 74 68 65 20 66 61  n and use the fa
6620: 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74 2e 0d  llback default..
6630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a  .            #..
6640: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
6650: 74 65 73 74 5f 74 63 6c 73 68 20 74 63 6c 73 68  test_tclsh tclsh
6660: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
6670: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6680: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
6690: 20 20 73 65 74 20 74 65 73 74 5f 74 63 6c 73 68    set test_tclsh
66a0: 20 24 62 69 6e 5f 66 69 6c 65 0d 0a 20 20 20 20   $bin_file..    
66b0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d    }..    }..  }.
66c0: 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
66d0: 3a 20 57 68 65 6e 20 72 75 6e 6e 69 6e 67 20 69  : When running i
66e0: 6e 20 45 61 67 6c 65 2c 20 63 68 65 63 6b 20 66  n Eagle, check f
66f0: 6f 72 20 61 6e 79 20 6e 6f 6e 2d 63 6f 72 65 20  or any non-core 
6700: 70 6c 75 67 69 6e 73 20 6c 6f 61 64 65 64 20 69  plugins loaded i
6710: 6e 74 6f 0d 0a 20 20 23 20 20 20 20 20 20 20 74  nto..  #       t
6720: 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 61  he interpreter a
6730: 6e 64 20 69 73 73 75 65 20 77 61 72 6e 69 6e 67  nd issue warning
6740: 73 20 69 66 20 61 6e 79 20 61 72 65 20 66 6f 75  s if any are fou
6750: 6e 64 2e 20 20 54 68 65 20 77 61 72 6e 69 6e 67  nd.  The warning
6760: 0d 0a 20 20 23 20 20 20 20 20 20 20 6d 61 79 20  ..  #       may 
6770: 62 65 20 75 73 65 64 20 74 6f 20 65 78 70 6c 61  be used to expla
6780: 69 6e 20 73 75 62 73 65 71 75 65 6e 74 20 74 65  in subsequent te
6790: 73 74 20 66 61 69 6c 75 72 65 73 20 64 75 65 20  st failures due 
67a0: 74 6f 20 74 68 65 20 65 78 74 72 61 0d 0a 20 20  to the extra..  
67b0: 23 20 20 20 20 20 20 20 70 6c 75 67 69 6e 73 20  #       plugins 
67c0: 62 65 69 6e 67 20 6c 6f 61 64 65 64 20 28 69 2e  being loaded (i.
67d0: 65 2e 20 74 68 65 72 65 20 61 72 65 20 73 6f 6d  e. there are som
67e0: 65 20 74 65 73 74 73 20 61 72 65 20 73 65 6e 73  e tests are sens
67f0: 69 74 69 76 65 20 74 6f 0d 0a 20 20 23 20 20 20  itive to..  #   
6800: 20 20 20 20 68 61 76 69 6e 67 20 22 75 6e 65 78      having "unex
6810: 70 65 63 74 65 64 22 20 70 6c 75 67 69 6e 73 20  pected" plugins 
6820: 6c 6f 61 64 65 64 29 2e 0d 0a 20 20 23 0d 0a 20  loaded)...  #.. 
6830: 20 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 20 26   if {[isEagle] &
6840: 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66  & \..      ![inf
6850: 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 61 72 6e  o exists no(warn
6860: 69 6e 67 46 6f 72 50 6c 75 67 69 6e 29 5d 20 26  ingForPlugin)] &
6870: 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b 68 61 76  & \..      ![hav
6880: 65 43 6f 6e 73 74 72 61 69 6e 74 20 71 75 69 65  eConstraint quie
6890: 74 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  t]} then {..    
68a0: 66 6f 72 65 61 63 68 20 6c 6f 61 64 65 64 20 5b  foreach loaded [
68b0: 69 6e 66 6f 20 6c 6f 61 64 65 64 5d 20 7b 0d 0a  info loaded] {..
68c0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
68d0: 20 48 41 43 4b 3a 20 54 68 69 73 20 63 6f 64 65   HACK: This code
68e0: 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 61 6c   assumes that al
68f0: 6c 20 70 6c 75 67 69 6e 73 20 69 6e 20 74 68 65  l plugins in the
6900: 20 22 45 61 67 6c 65 2e 5f 50 6c 75 67 69 6e 73   "Eagle._Plugins
6910: 22 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  "..      #      
6920: 20 6e 61 6d 65 73 70 61 63 65 20 62 65 6c 6f 6e   namespace belon
6930: 67 20 74 6f 20 74 68 65 20 45 61 67 6c 65 20 63  g to the Eagle c
6940: 6f 72 65 20 6c 69 62 72 61 72 79 20 69 74 73 65  ore library itse
6950: 6c 66 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  lf...      #..  
6960: 20 20 20 20 69 66 20 7b 21 5b 73 74 72 69 6e 67      if {![string
6970: 20 6d 61 74 63 68 20 45 61 67 6c 65 2e 5f 50 6c   match Eagle._Pl
6980: 75 67 69 6e 73 2e 2a 20 5b 6c 69 6e 64 65 78 20  ugins.* [lindex 
6990: 24 6c 6f 61 64 65 64 20 31 5d 5d 7d 20 74 68 65  $loaded 1]]} the
69a0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 74 70 75  n {..        tpu
69b0: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
69c0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a   [appendArgs \..
69d0: 20 20 20 20 20 20 20 20 20 20 20 20 22 3d 3d 3d              "===
69e0: 3d 20 57 41 52 4e 49 4e 47 3a 20 65 78 74 72 61  = WARNING: extra
69f0: 20 70 6c 75 67 69 6e 20 66 6f 75 6e 64 3a 20 22   plugin found: "
6a00: 20 24 6c 6f 61 64 65 64 20 5c 6e 5d 0d 0a 20 20   $loaded \n]..  
6a10: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
6a20: 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d      unset -nocom
6a30: 70 6c 61 69 6e 20 6c 6f 61 64 65 64 0d 0a 20 20  plain loaded..  
6a40: 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
6a50: 54 45 3a 20 53 68 6f 77 20 62 6f 74 68 20 74 68  TE: Show both th
6a60: 65 20 70 72 65 2d 74 65 73 74 20 61 6e 64 20 70  e pre-test and p
6a70: 6f 73 74 2d 74 65 73 74 20 73 63 72 69 70 74 73  ost-test scripts
6a80: 20 6e 6f 77 2c 20 70 72 69 6f 72 20 74 6f 20 61   now, prior to a
6a90: 63 74 75 61 6c 6c 79 0d 0a 20 20 23 20 20 20 20  ctually..  #    
6aa0: 20 20 20 65 76 61 6c 75 61 74 69 6e 67 20 65 69     evaluating ei
6ab0: 74 68 65 72 20 6f 66 20 74 68 65 6d 20 28 65 76  ther of them (ev
6ac0: 65 6e 20 69 66 20 74 68 65 69 72 20 75 73 65 20  en if their use 
6ad0: 68 61 73 20 62 65 65 6e 20 64 69 73 61 62 6c 65  has been disable
6ae0: 64 29 2e 0d 0a 20 20 23 0d 0a 20 20 74 70 75 74  d)...  #..  tput
6af0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
6b00: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
6b10: 2d 20 70 72 65 2d 74 65 73 74 20 73 63 72 69 70  - pre-test scrip
6b20: 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  t: " \..      [e
6b30: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
6b40: 73 20 74 65 73 74 5f 73 63 72 69 70 74 28 70 72  s test_script(pr
6b50: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
6b60: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
6b70: 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65 29  test_script(pre)
6b80: 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20  ] > 0 ? \..     
6b90: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20   [appendArgs \" 
6ba0: 24 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65  $test_script(pre
6bb0: 29 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65 3e 22  ) \"] : "<none>"
6bc0: 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74  }] \n]....  tput
6bd0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
6be0: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
6bf0: 2d 20 70 6f 73 74 2d 74 65 73 74 20 73 63 72 69  - post-test scri
6c00: 70 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  pt: " \..      [
6c10: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
6c20: 74 73 20 74 65 73 74 5f 73 63 72 69 70 74 28 70  ts test_script(p
6c30: 6f 73 74 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  ost)] && \..    
6c40: 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68    [string length
6c50: 20 24 74 65 73 74 5f 73 63 72 69 70 74 28 70 6f   $test_script(po
6c60: 73 74 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20  st)] > 0 ? \..  
6c70: 20 20 20 20 5b 61 70 70 65 6e 64 41 72 67 73 20      [appendArgs 
6c80: 5c 22 20 24 74 65 73 74 5f 73 63 72 69 70 74 28  \" $test_script(
6c90: 70 6f 73 74 29 20 5c 22 5d 20 3a 20 22 3c 6e 6f  post) \"] : "<no
6ca0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
6cb0: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f  #..  # NOTE: Sho
6cc0: 77 20 62 6f 74 68 20 74 68 65 20 70 72 65 2d 74  w both the pre-t
6cd0: 65 73 74 20 61 6e 64 20 70 6f 73 74 2d 74 65 73  est and post-tes
6ce0: 74 20 77 61 69 74 73 20 6e 6f 77 2c 20 70 72 69  t waits now, pri
6cf0: 6f 72 20 74 6f 20 61 63 74 75 61 6c 6c 79 0d 0a  or to actually..
6d00: 20 20 23 20 20 20 20 20 20 20 75 73 69 6e 67 20    #       using 
6d10: 65 69 74 68 65 72 20 6f 66 20 74 68 65 6d 20 28  either of them (
6d20: 65 76 65 6e 20 69 66 20 74 68 65 69 72 20 75 73  even if their us
6d30: 65 20 68 61 73 20 62 65 65 6e 20 64 69 73 61 62  e has been disab
6d40: 6c 65 64 29 2e 0d 0a 20 20 23 0d 0a 20 20 74 70  led)...  #..  tp
6d50: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
6d60: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
6d70: 2d 2d 2d 20 70 72 65 2d 74 65 73 74 20 77 61 69  --- pre-test wai
6d80: 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  t: " \..      [e
6d90: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
6da0: 73 20 74 65 73 74 5f 77 61 69 74 28 70 72 65 29  s test_wait(pre)
6db0: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 5b 73  ] && \..      [s
6dc0: 74 72 69 6e 67 20 69 73 20 69 6e 74 65 67 65 72  tring is integer
6dd0: 20 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 77   -strict $test_w
6de0: 61 69 74 28 70 72 65 29 5d 20 3f 20 5c 0d 0a 20  ait(pre)] ? \.. 
6df0: 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72 67 73       [appendArgs
6e00: 20 24 74 65 73 74 5f 77 61 69 74 28 70 72 65 29   $test_wait(pre)
6e10: 20 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 22   " milliseconds"
6e20: 5d 20 3a 20 5c 0d 0a 20 20 20 20 20 20 22 3c 6e  ] : \..      "<n
6e30: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
6e40: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
6e50: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
6e60: 20 22 2d 2d 2d 2d 20 70 6f 73 74 2d 74 65 73 74   "---- post-test
6e70: 20 77 61 69 74 3a 20 22 20 5c 0d 0a 20 20 20 20   wait: " \..    
6e80: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
6e90: 78 69 73 74 73 20 74 65 73 74 5f 77 61 69 74 28  xists test_wait(
6ea0: 70 6f 73 74 29 5d 20 26 26 20 5c 0d 0a 20 20 20  post)] && \..   
6eb0: 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69 6e     [string is in
6ec0: 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 74  teger -strict $t
6ed0: 65 73 74 5f 77 61 69 74 28 70 6f 73 74 29 5d 20  est_wait(post)] 
6ee0: 3f 20 5c 0d 0a 20 20 20 20 20 20 5b 61 70 70 65  ? \..      [appe
6ef0: 6e 64 41 72 67 73 20 24 74 65 73 74 5f 77 61 69  ndArgs $test_wai
6f00: 74 28 70 6f 73 74 29 20 22 20 6d 69 6c 6c 69 73  t(post) " millis
6f10: 65 63 6f 6e 64 73 22 5d 20 3a 20 5c 0d 0a 20 20  econds"] : \..  
6f20: 20 20 20 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c      "<none>"}] \
6f30: 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  n]....  #..  # N
6f40: 4f 54 45 3a 20 41 72 65 20 77 65 20 62 65 69 6e  OTE: Are we bein
6f50: 67 20 70 72 65 76 65 6e 74 65 64 20 66 72 6f 6d  g prevented from
6f60: 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20   evaluating the 
6f70: 22 70 72 65 2d 74 65 73 74 22 20 73 63 72 69 70  "pre-test" scrip
6f80: 74 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  t?..  #..  if {!
6f90: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
6fa0: 70 72 65 54 65 73 74 29 5d 7d 20 74 68 65 6e 20  preTest)]} then 
6fb0: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
6fc0: 4e 4f 54 45 3a 20 45 76 61 6c 75 61 74 65 20 74  NOTE: Evaluate t
6fd0: 68 65 20 73 70 65 63 69 66 69 65 64 20 70 72 65  he specified pre
6fe0: 2d 74 65 73 74 20 73 63 72 69 70 74 20 6e 6f 77  -test script now
6ff0: 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 23  , if any...    #
7000: 0d 0a 20 20 20 20 69 66 20 7b 5b 69 6e 66 6f 20  ..    if {[info 
7010: 65 78 69 73 74 73 20 74 65 73 74 5f 73 63 72 69  exists test_scri
7020: 70 74 28 70 72 65 29 5d 20 26 26 20 5c 0d 0a 20  pt(pre)] && \.. 
7030: 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c         [string l
7040: 65 6e 67 74 68 20 24 74 65 73 74 5f 73 63 72 69  ength $test_scri
7050: 70 74 28 70 72 65 29 5d 20 3e 20 30 7d 20 74 68  pt(pre)] > 0} th
7060: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
7070: 20 20 20 20 20 23 20 54 4f 44 4f 3a 20 50 65 72       # TODO: Per
7080: 68 61 70 73 20 75 73 65 20 5b 75 70 6c 65 76 65  haps use [upleve
7090: 6c 5d 20 68 65 72 65 20 69 6e 73 74 65 61 64 20  l] here instead 
70a0: 6f 66 20 5b 65 76 61 6c 5d 2e 20 20 46 6f 72 20  of [eval].  For 
70b0: 6e 6f 77 2c 20 69 74 20 64 6f 65 73 0d 0a 20 20  now, it does..  
70c0: 20 20 20 20 23 20 20 20 20 20 20 20 6e 6f 74 20      #       not 
70d0: 6d 61 74 74 65 72 20 73 69 6e 63 65 20 77 65 20  matter since we 
70e0: 65 6e 66 6f 72 63 65 20 74 68 69 73 20 66 69 6c  enforce this fil
70f0: 65 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65  e being evaluate
7100: 64 20 61 74 20 74 68 65 0d 0a 20 20 20 20 20 20  d at the..      
7110: 23 20 20 20 20 20 20 20 74 6f 70 2d 6c 65 76 65  #       top-leve
7120: 6c 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  l...      #..   
7130: 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20 24 74     if {[catch $t
7140: 65 73 74 5f 73 63 72 69 70 74 28 70 72 65 29 20  est_script(pre) 
7150: 74 65 73 74 5f 73 63 72 69 70 74 28 70 72 65 2c  test_script(pre,
7160: 72 65 73 75 6c 74 29 5d 7d 20 74 68 65 6e 20 7b  result)]} then {
7170: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
7180: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4d 61 6b       # NOTE: Mak
7190: 65 20 31 30 30 25 20 73 75 72 65 2c 20 65 76 65  e 100% sure, eve
71a0: 6e 20 69 6e 20 22 71 75 69 65 74 22 20 6d 6f 64  n in "quiet" mod
71b0: 65 2c 20 74 68 61 74 20 74 68 69 73 20 73 63 72  e, that this scr
71c0: 69 70 74 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ipt error..     
71d0: 20 20 20 23 20 20 20 20 20 20 20 67 65 74 73 20     #       gets 
71e0: 69 6e 74 6f 20 74 68 65 20 74 65 73 74 20 6c 6f  into the test lo
71f0: 67 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20 20  g file...       
7200: 20 23 0d 0a 20 20 20 20 20 20 20 20 74 70 75 74   #..        tput
7210: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
7220: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
7230: 2d 20 70 72 65 2d 74 65 73 74 20 73 63 72 69 70  - pre-test scrip
7240: 74 20 65 72 72 6f 72 3a 20 22 20 5c 0d 0a 20 20  t error: " \..  
7250: 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f            $test_
7260: 73 63 72 69 70 74 28 70 72 65 2c 72 65 73 75 6c  script(pre,resul
7270: 74 29 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 20 20  t) \n]....      
7280: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
7290: 4f 54 45 3a 20 54 68 65 20 70 72 65 2d 74 65 73  OTE: The pre-tes
72a0: 74 20 73 63 72 69 70 74 20 66 61 69 6c 65 64 20  t script failed 
72b0: 69 6e 20 73 6f 6d 65 20 77 61 79 2e 20 20 54 68  in some way.  Th
72c0: 69 73 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  is is considered
72d0: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
72e0: 20 20 74 6f 20 62 65 20 61 6e 20 6f 76 65 72 61    to be an overa
72f0: 6c 6c 20 66 61 69 6c 75 72 65 20 6f 66 20 74 68  ll failure of th
7300: 65 20 74 65 73 74 20 73 75 69 74 65 3b 20 74 68  e test suite; th
7310: 65 72 65 66 6f 72 65 2c 20 72 61 69 73 65 0d 0a  erefore, raise..
7320: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
7330: 74 68 65 20 65 72 72 6f 72 20 6e 6f 77 20 74 68  the error now th
7340: 61 74 20 77 65 20 61 72 65 20 73 75 72 65 20 69  at we are sure i
7350: 74 20 68 61 73 20 62 65 65 6e 20 72 65 63 6f 72  t has been recor
7360: 64 65 64 20 69 6e 20 74 68 65 0d 0a 20 20 20 20  ded in the..    
7370: 20 20 20 20 23 20 20 20 20 20 20 20 74 65 73 74      #       test
7380: 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20 20   log file...    
7390: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 75      #..        u
73a0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
73b0: 20 74 65 73 74 5f 73 75 69 74 65 5f 72 75 6e 6e   test_suite_runn
73c0: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 65 72 72  ing..        err
73d0: 6f 72 20 24 74 65 73 74 5f 73 63 72 69 70 74 28  or $test_script(
73e0: 70 72 65 2c 72 65 73 75 6c 74 29 0d 0a 20 20 20  pre,result)..   
73f0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d     }..    }..  }
7400: 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
7410: 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 64  E: Check for and
7420: 20 70 72 6f 63 65 73 73 20 61 6e 79 20 63 75 73   process any cus
7430: 74 6f 6d 20 74 65 73 74 20 70 72 6f 6c 6f 67 75  tom test prologu
7440: 65 20 73 63 72 69 70 74 20 74 68 61 74 20 6d 61  e script that ma
7450: 79 20 62 65 20 73 65 74 0d 0a 20 20 23 20 20 20  y be set..  #   
7460: 20 20 20 20 69 6e 20 74 68 65 20 65 6e 76 69 72      in the envir
7470: 6f 6e 6d 65 6e 74 2e 20 20 54 68 69 73 20 6d 75  onment.  This mu
7480: 73 74 20 62 65 20 64 6f 6e 65 20 61 66 74 65 72  st be done after
7490: 20 74 68 65 20 45 61 67 6c 65 20 74 65 73 74 20   the Eagle test 
74a0: 70 61 63 6b 61 67 65 0d 0a 20 20 23 20 20 20 20  package..  #    
74b0: 20 20 20 68 61 73 20 62 65 65 6e 20 6d 61 64 65     has been made
74c0: 20 61 76 61 69 6c 61 62 6c 65 20 61 6e 64 20 61   available and a
74d0: 66 74 65 72 20 74 68 65 20 6c 6f 67 20 66 69 6c  fter the log fil
74e0: 65 20 68 61 73 20 62 65 65 6e 20 73 65 74 75 70  e has been setup
74f0: 2e 0d 0a 20 20 23 0d 0a 20 20 73 6f 75 72 63 65  ...  #..  source
7500: 49 66 56 61 6c 69 64 20 70 72 6f 6c 6f 67 75 65  IfValid prologue
7510: 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e 74   [getEnvironment
7520: 56 61 72 69 61 62 6c 65 20 74 65 73 74 50 72 6f  Variable testPro
7530: 6c 6f 67 75 65 5d 0d 0a 0d 0a 20 20 23 0d 0a 20  logue]....  #.. 
7540: 20 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68   # NOTE: Show th
7550: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 65 78  e name of the ex
7560: 65 63 75 74 61 62 6c 65 20 61 6e 64 20 74 68 65  ecutable and the
7570: 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72   command line ar
7580: 67 75 6d 65 6e 74 73 2c 20 69 66 0d 0a 20 20 23  guments, if..  #
7590: 20 20 20 20 20 20 20 61 6e 79 2e 20 20 54 68 69         any.  Thi
75a0: 73 20 6d 75 73 74 20 62 65 20 64 6f 6e 65 20 61  s must be done a
75b0: 66 74 65 72 20 74 68 65 20 6c 6f 67 20 66 69 6c  fter the log fil
75c0: 65 20 68 61 73 20 62 65 65 6e 20 73 65 74 75 70  e has been setup
75d0: 3b 20 6f 74 68 65 72 77 69 73 65 2c 0d 0a 20 20  ; otherwise,..  
75e0: 23 20 20 20 20 20 20 20 74 68 69 73 20 69 6e 66  #       this inf
75f0: 6f 72 6d 61 74 69 6f 6e 20 77 69 6c 6c 20 6e 6f  ormation will no
7600: 74 20 62 65 20 76 69 73 69 62 6c 65 20 69 6e 20  t be visible in 
7610: 74 68 65 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20  the log file... 
7620: 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
7630: 20 65 78 69 73 74 73 20 74 65 73 74 5f 72 75 6e   exists test_run
7640: 5f 69 64 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  _id]} then {..  
7650: 20 20 73 65 74 20 74 65 73 74 5f 72 75 6e 5f 69    set test_run_i
7660: 64 20 5b 67 65 74 4e 65 77 54 65 73 74 52 75 6e  d [getNewTestRun
7670: 49 64 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 74 70  Id]..  }....  tp
7680: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
7690: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
76a0: 2d 2d 2d 20 74 65 73 74 52 75 6e 49 64 3a 20 22  --- testRunId: "
76b0: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
76c0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
76d0: 73 74 5f 72 75 6e 5f 69 64 5d 20 3f 20 5c 0d 0a  st_run_id] ? \..
76e0: 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f            $test_
76f0: 72 75 6e 5f 69 64 20 3a 20 22 3c 6e 6f 6e 65 3e  run_id : "<none>
7700: 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75  "}] \n]....  tpu
7710: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
7720: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
7730: 2d 2d 20 70 72 6f 63 65 73 73 49 64 3a 20 22 20  -- processId: " 
7740: 5c 0d 0a 20 20 20 20 20 20 5b 70 69 64 5d 20 5c  \..      [pid] \
7750: 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20 70 70 69 64  n]....  set ppid
7760: 28 30 29 20 5b 63 61 74 63 68 20 7b 69 6e 66 6f  (0) [catch {info
7770: 20 70 70 69 64 7d 20 70 70 69 64 28 31 29 5d 0d   ppid} ppid(1)].
7780: 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74  ...  tputs $test
7790: 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64  _channel [append
77a0: 41 72 67 73 20 22 2d 2d 2d 2d 20 70 61 72 65 6e  Args "---- paren
77b0: 74 50 72 6f 63 65 73 73 49 64 3a 20 22 20 5c 0d  tProcessId: " \.
77c0: 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 70  .      [expr {$p
77d0: 70 69 64 28 30 29 20 3d 3d 20 30 20 3f 20 5c 0d  pid(0) == 0 ? \.
77e0: 0a 20 20 20 20 20 20 20 20 20 20 24 70 70 69 64  .          $ppid
77f0: 28 31 29 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d  (1) : "<none>"}]
7800: 20 5c 6e 5d 0d 0a 0d 0a 20 20 75 6e 73 65 74 20   \n]....  unset 
7810: 70 70 69 64 0d 0a 0d 0a 20 20 74 70 75 74 73 20  ppid....  tputs 
7820: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
7830: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
7840: 74 65 73 74 20 73 75 69 74 65 3a 20 22 20 5c 0d  test suite: " \.
7850: 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69  .      [expr {[i
7860: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
7870: 73 75 69 74 65 5d 20 3f 20 5c 0d 0a 20 20 20 20  suite] ? \..    
7880: 20 20 20 20 20 20 24 74 65 73 74 5f 73 75 69 74        $test_suit
7890: 65 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c  e : "<none>"}] \
78a0: 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74  n]....  tputs $t
78b0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
78c0: 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65  endArgs "---- te
78d0: 73 74 20 63 68 61 6e 6e 65 6c 3a 20 22 20 5c 0d  st channel: " \.
78e0: 0a 20 20 20 20 20 20 24 74 65 73 74 5f 63 68 61  .      $test_cha
78f0: 6e 6e 65 6c 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  nnel \n]....  tp
7900: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
7910: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
7920: 2d 2d 2d 20 74 65 73 74 20 6d 61 63 68 69 6e 65  --- test machine
7930: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
7940: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
7950: 20 74 65 73 74 5f 6d 61 63 68 69 6e 65 5d 20 3f   test_machine] ?
7960: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74   \..          $t
7970: 65 73 74 5f 6d 61 63 68 69 6e 65 20 3a 20 22 3c  est_machine : "<
7980: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
7990: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
79a0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
79b0: 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 70 6c 61  s "---- test pla
79c0: 74 66 6f 72 6d 3a 20 22 20 5c 0d 0a 20 20 20 20  tform: " \..    
79d0: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
79e0: 78 69 73 74 73 20 74 65 73 74 5f 70 6c 61 74 66  xists test_platf
79f0: 6f 72 6d 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20  orm] ? \..      
7a00: 20 20 20 20 24 74 65 73 74 5f 70 6c 61 74 66 6f      $test_platfo
7a10: 72 6d 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20  rm : "<none>"}] 
7a20: 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24  \n]....  tputs $
7a30: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
7a40: 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74  pendArgs "---- t
7a50: 65 73 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  est configuratio
7a60: 6e 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  n: " \..      [e
7a70: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
7a80: 73 20 74 65 73 74 5f 63 6f 6e 66 69 67 75 72 61  s test_configura
7a90: 74 69 6f 6e 5d 20 3f 20 5c 0d 0a 20 20 20 20 20  tion] ? \..     
7aa0: 20 20 20 20 20 24 74 65 73 74 5f 63 6f 6e 66 69       $test_confi
7ab0: 67 75 72 61 74 69 6f 6e 20 3a 20 22 3c 6e 6f 6e  guration : "<non
7ac0: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
7ad0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
7ae0: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7af0: 2d 2d 2d 2d 20 74 65 73 74 20 6e 61 6d 65 20 70  ---- test name p
7b00: 72 65 66 69 78 3a 20 22 20 5c 0d 0a 20 20 20 20  refix: " \..    
7b10: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
7b20: 78 69 73 74 73 20 74 65 73 74 5f 6e 61 6d 65 5f  xists test_name_
7b30: 70 72 65 66 69 78 5d 20 3f 20 5c 0d 0a 20 20 20  prefix] ? \..   
7b40: 20 20 20 20 20 20 20 24 74 65 73 74 5f 6e 61 6d         $test_nam
7b50: 65 5f 70 72 65 66 69 78 20 3a 20 22 3c 6e 6f 6e  e_prefix : "<non
7b60: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
7b70: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
7b80: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7b90: 2d 2d 2d 2d 20 74 65 73 74 20 73 75 66 66 69 78  ---- test suffix
7ba0: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
7bb0: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
7bc0: 20 74 65 73 74 5f 73 75 66 66 69 78 5d 20 3f 20   test_suffix] ? 
7bd0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 24 74 65  \..          $te
7be0: 73 74 5f 73 75 66 66 69 78 20 3a 20 22 3c 6e 6f  st_suffix : "<no
7bf0: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
7c00: 69 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74  if {[isEagle]} t
7c10: 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70 75 74 73  hen {..    tputs
7c20: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
7c30: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
7c40: 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e   original comman
7c50: 64 20 6c 69 6e 65 3a 20 22 20 5c 0d 0a 20 20 20  d line: " \..   
7c60: 20 20 20 20 20 5b 69 6e 66 6f 20 63 6d 64 6c 69       [info cmdli
7c70: 6e 65 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74  ne] \n]....    t
7c80: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
7c90: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
7ca0: 2d 2d 2d 2d 20 74 68 72 65 61 64 49 64 3a 20 22  ---- threadId: "
7cb0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 69 6e 66   \..        [inf
7cc0: 6f 20 74 69 64 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  o tid] \n]....  
7cd0: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
7ce0: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
7cf0: 73 20 22 2d 2d 2d 2d 20 70 72 6f 63 65 73 73 6f  s "---- processo
7d00: 72 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  rs: " \..       
7d10: 20 5b 69 6e 66 6f 20 70 72 6f 63 65 73 73 6f 72   [info processor
7d20: 73 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 69 66  s] \n]....    if
7d30: 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f   {[llength [info
7d40: 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74   commands object
7d50: 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ]] > 0} then {..
7d60: 20 20 20 20 20 20 73 65 74 20 65 6e 63 6f 64 69        set encodi
7d70: 6e 67 28 30 29 20 5b 63 61 74 63 68 20 7b 0d 0a  ng(0) [catch {..
7d80: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 69          object i
7d90: 6e 76 6f 6b 65 20 43 6f 6e 73 6f 6c 65 2e 49 6e  nvoke Console.In
7da0: 70 75 74 45 6e 63 6f 64 69 6e 67 20 57 65 62 4e  putEncoding WebN
7db0: 61 6d 65 0d 0a 20 20 20 20 20 20 7d 20 65 6e 63  ame..      } enc
7dc0: 6f 64 69 6e 67 28 31 29 5d 0d 0a 20 20 20 20 7d  oding(1)]..    }
7dd0: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 73   else {..      s
7de0: 65 74 20 65 6e 63 6f 64 69 6e 67 28 30 29 20 30  et encoding(0) 0
7df0: 3b 20 73 65 74 20 65 6e 63 6f 64 69 6e 67 28 31  ; set encoding(1
7e00: 29 20 75 6e 61 76 61 69 6c 61 62 6c 65 0d 0a 20  ) unavailable.. 
7e10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75 74     }....    tput
7e20: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
7e30: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
7e40: 2d 20 69 6e 70 75 74 20 65 6e 63 6f 64 69 6e 67  - input encoding
7e50: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  : " \..        [
7e60: 65 78 70 72 20 7b 24 65 6e 63 6f 64 69 6e 67 28  expr {$encoding(
7e70: 30 29 20 3d 3d 20 30 20 3f 20 24 65 6e 63 6f 64  0) == 0 ? $encod
7e80: 69 6e 67 28 31 29 20 3a 20 22 3c 6e 6f 6e 65 3e  ing(1) : "<none>
7e90: 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 69  "}] \n]....    i
7ea0: 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66  f {[llength [inf
7eb0: 6f 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63  o commands objec
7ec0: 74 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d  t]] > 0} then {.
7ed0: 0a 20 20 20 20 20 20 73 65 74 20 65 6e 63 6f 64  .      set encod
7ee0: 69 6e 67 28 30 29 20 5b 63 61 74 63 68 20 7b 0d  ing(0) [catch {.
7ef0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
7f00: 69 6e 76 6f 6b 65 20 43 6f 6e 73 6f 6c 65 2e 4f  invoke Console.O
7f10: 75 74 70 75 74 45 6e 63 6f 64 69 6e 67 20 57 65  utputEncoding We
7f20: 62 4e 61 6d 65 0d 0a 20 20 20 20 20 20 7d 20 65  bName..      } e
7f30: 6e 63 6f 64 69 6e 67 28 31 29 5d 0d 0a 20 20 20  ncoding(1)]..   
7f40: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
7f50: 20 73 65 74 20 65 6e 63 6f 64 69 6e 67 28 30 29   set encoding(0)
7f60: 20 30 3b 20 73 65 74 20 65 6e 63 6f 64 69 6e 67   0; set encoding
7f70: 28 31 29 20 75 6e 61 76 61 69 6c 61 62 6c 65 0d  (1) unavailable.
7f80: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70  .    }....    tp
7f90: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
7fa0: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
7fb0: 2d 2d 2d 20 6f 75 74 70 75 74 20 65 6e 63 6f 64  --- output encod
7fc0: 69 6e 67 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ing: " \..      
7fd0: 20 20 5b 65 78 70 72 20 7b 24 65 6e 63 6f 64 69    [expr {$encodi
7fe0: 6e 67 28 30 29 20 3d 3d 20 30 20 3f 20 24 65 6e  ng(0) == 0 ? $en
7ff0: 63 6f 64 69 6e 67 28 31 29 20 3a 20 22 3c 6e 6f  coding(1) : "<no
8000: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
8010: 20 20 75 6e 73 65 74 20 65 6e 63 6f 64 69 6e 67    unset encoding
8020: 0d 0a 20 20 20 20 73 65 74 20 68 6f 73 74 28 30  ..    set host(0
8030: 29 20 5b 63 61 74 63 68 20 7b 68 6f 73 74 20 71  ) [catch {host q
8040: 75 65 72 79 7d 20 68 6f 73 74 28 31 29 5d 0d 0a  uery} host(1)]..
8050: 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73  ..    tputs $tes
8060: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
8070: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 68 6f 73 74  dArgs "---- host
8080: 20 71 75 65 72 79 3a 20 22 20 5c 0d 0a 20 20 20   query: " \..   
8090: 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74       [formatList
80a0: 41 73 44 69 63 74 20 5b 65 78 70 72 20 7b 24 68  AsDict [expr {$h
80b0: 6f 73 74 28 30 29 20 3d 3d 20 30 20 3f 20 24 68  ost(0) == 0 ? $h
80c0: 6f 73 74 28 31 29 20 3a 20 22 22 7d 5d 20 5c 0d  ost(1) : ""}] \.
80d0: 0a 20 20 20 20 20 20 20 20 3c 6e 6f 6e 65 3e 5d  .        <none>]
80e0: 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65   \n]....    unse
80f0: 74 20 68 6f 73 74 0d 0a 20 20 20 20 73 65 74 20  t host..    set 
8100: 6d 65 6d 6f 72 79 28 30 29 20 5b 63 61 74 63 68  memory(0) [catch
8110: 20 7b 64 65 62 75 67 20 6d 65 6d 6f 72 79 7d 20   {debug memory} 
8120: 6d 65 6d 6f 72 79 28 31 29 5d 0d 0a 0d 0a 20 20  memory(1)]....  
8130: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
8140: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
8150: 73 20 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e 67  s "---- starting
8160: 20 6d 65 6d 6f 72 79 3a 20 22 20 5c 0d 0a 20 20   memory: " \..  
8170: 20 20 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73        [formatLis
8180: 74 41 73 44 69 63 74 20 5b 65 78 70 72 20 7b 24  tAsDict [expr {$
8190: 6d 65 6d 6f 72 79 28 30 29 20 3d 3d 20 30 20 3f  memory(0) == 0 ?
81a0: 20 24 6d 65 6d 6f 72 79 28 31 29 20 3a 20 22 22   $memory(1) : ""
81b0: 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 3c 6e  }] \..        <n
81c0: 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20  one>] \n]....   
81d0: 20 75 6e 73 65 74 20 6d 65 6d 6f 72 79 0d 0a 20   unset memory.. 
81e0: 20 20 20 73 65 74 20 73 74 61 63 6b 28 30 29 20     set stack(0) 
81f0: 5b 63 61 74 63 68 20 7b 64 65 62 75 67 20 73 74  [catch {debug st
8200: 61 63 6b 20 74 72 75 65 7d 20 73 74 61 63 6b 28  ack true} stack(
8210: 31 29 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73  1)]....    tputs
8220: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
8230: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
8240: 20 73 74 61 72 74 69 6e 67 20 73 74 61 63 6b 3a   starting stack:
8250: 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66   " \..        [f
8260: 6f 72 6d 61 74 4c 69 73 74 41 73 44 69 63 74 20  ormatListAsDict 
8270: 5b 65 78 70 72 20 7b 24 73 74 61 63 6b 28 30 29  [expr {$stack(0)
8280: 20 3d 3d 20 30 20 3f 20 24 73 74 61 63 6b 28 31   == 0 ? $stack(1
8290: 29 20 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20  ) : ""}] \..    
82a0: 20 20 20 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d      <none>] \n].
82b0: 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 73 74 61  ...    unset sta
82c0: 63 6b 0d 0a 20 20 20 20 73 65 74 20 64 72 69 76  ck..    set driv
82d0: 65 28 30 29 20 5b 63 61 74 63 68 20 7b 66 69 6c  e(0) [catch {fil
82e0: 65 20 64 72 69 76 65 7d 20 64 72 69 76 65 28 31  e drive} drive(1
82f0: 29 5d 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  )]....    tputs 
8300: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
8310: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
8320: 73 79 73 74 65 6d 20 64 72 69 76 65 3a 20 22 20  system drive: " 
8330: 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66 6f 72 6d  \..        [form
8340: 61 74 4c 69 73 74 41 73 44 69 63 74 20 5b 65 78  atListAsDict [ex
8350: 70 72 20 7b 24 64 72 69 76 65 28 30 29 20 3d 3d  pr {$drive(0) ==
8360: 20 30 20 3f 20 24 64 72 69 76 65 28 31 29 20 3a   0 ? $drive(1) :
8370: 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 20   ""}] \..       
8380: 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a   <none>] \n]....
8390: 20 20 20 20 75 6e 73 65 74 20 64 72 69 76 65 0d      unset drive.
83a0: 0a 20 20 7d 0d 0a 0d 0a 20 20 74 70 75 74 73 20  .  }....  tputs 
83b0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
83c0: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
83d0: 65 78 65 63 75 74 61 62 6c 65 3a 20 5c 22 22 20  executable: \"" 
83e0: 5c 0d 0a 20 20 20 20 20 20 24 62 69 6e 5f 66 69  \..      $bin_fi
83f0: 6c 65 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  le \"\n]....  tp
8400: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
8410: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
8420: 2d 2d 2d 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  --- command line
8430: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
8440: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
8450: 20 61 72 67 76 5d 20 26 26 20 5b 73 74 72 69 6e   argv] && [strin
8460: 67 20 6c 65 6e 67 74 68 20 24 61 72 67 76 5d 20  g length $argv] 
8470: 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  > 0 ? \..       
8480: 20 20 20 24 61 72 67 76 20 3a 20 22 3c 6e 6f 6e     $argv : "<non
8490: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
84a0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
84b0: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
84c0: 2d 2d 2d 2d 20 75 6e 72 65 63 6f 67 6e 69 7a 65  ---- unrecognize
84d0: 64 20 61 72 67 75 6d 65 6e 74 73 3a 20 22 20 5c  d arguments: " \
84e0: 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b  ..      [expr {[
84f0: 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74  info exists test
8500: 5f 66 6c 61 67 73 28 2d 62 61 64 29 5d 20 26 26  _flags(-bad)] &&
8510: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73   \..          [s
8520: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65  tring length $te
8530: 73 74 5f 66 6c 61 67 73 28 2d 62 61 64 29 5d 20  st_flags(-bad)] 
8540: 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  > 0 ? \..       
8550: 20 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61         $test_fla
8560: 67 73 28 2d 62 61 64 29 20 3a 20 22 3c 6e 6f 6e  gs(-bad) : "<non
8570: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
8580: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8590: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
85a0: 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 70 61 74  ---- logging pat
85b0: 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  h: " \..      [e
85c0: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
85d0: 73 20 74 65 73 74 5f 6c 6f 67 5f 70 61 74 68 5d  s test_log_path]
85e0: 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20 20   && \..         
85f0: 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20   [string length 
8600: 24 74 65 73 74 5f 6c 6f 67 5f 70 61 74 68 5d 20  $test_log_path] 
8610: 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  > 0 ? \..       
8620: 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72         [appendAr
8630: 67 73 20 5c 22 20 24 74 65 73 74 5f 6c 6f 67 5f  gs \" $test_log_
8640: 70 61 74 68 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e  path \"] : "<non
8650: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
8660: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8670: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
8680: 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 69 64 65  ---- logging ide
8690: 6e 74 69 66 69 65 72 3a 20 22 20 5c 0d 0a 20 20  ntifier: " \..  
86a0: 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f      [expr {[info
86b0: 20 65 78 69 73 74 73 20 74 65 73 74 5f 6c 6f 67   exists test_log
86c0: 5f 69 64 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20  _id] && \..     
86d0: 20 20 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e       [string len
86e0: 67 74 68 20 24 74 65 73 74 5f 6c 6f 67 5f 69 64  gth $test_log_id
86f0: 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20  ] > 0 ? \..     
8700: 20 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64           [append
8710: 41 72 67 73 20 5c 22 20 24 74 65 73 74 5f 6c 6f  Args \" $test_lo
8720: 67 5f 69 64 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e  g_id \"] : "<non
8730: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
8740: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8750: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
8760: 2d 2d 2d 2d 20 6c 6f 67 67 69 6e 67 20 74 6f 3a  ---- logging to:
8770: 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70   " \..      [exp
8780: 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  r {[info exists 
8790: 74 65 73 74 5f 6c 6f 67 5d 20 26 26 20 5b 73 74  test_log] && [st
87a0: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73  ring length $tes
87b0: 74 5f 6c 6f 67 5d 20 3e 20 30 20 3f 20 5c 0d 0a  t_log] > 0 ? \..
87c0: 20 20 20 20 20 20 20 20 20 20 5b 61 70 70 65 6e            [appen
87d0: 64 41 72 67 73 20 5c 22 20 24 74 65 73 74 5f 6c  dArgs \" $test_l
87e0: 6f 67 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65 3e  og \"] : "<none>
87f0: 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75  "}] \n]....  tpu
8800: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
8810: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
8820: 2d 2d 20 70 61 73 73 20 74 68 72 65 73 68 6f 6c  -- pass threshol
8830: 64 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  d: " \..      [e
8840: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
8850: 73 20 74 65 73 74 5f 74 68 72 65 73 68 6f 6c 64  s test_threshold
8860: 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  ] && \..        
8870: 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69 6e 74    [string is int
8880: 65 67 65 72 20 2d 73 74 72 69 63 74 20 24 74 65  eger -strict $te
8890: 73 74 5f 74 68 72 65 73 68 6f 6c 64 5d 20 3f 20  st_threshold] ? 
88a0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  \..             
88b0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 24 74 65   [appendArgs $te
88c0: 73 74 5f 74 68 72 65 73 68 6f 6c 64 20 25 5d 20  st_threshold %] 
88d0: 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d  : "<none>"}] \n]
88e0: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
88f0: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
8900: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 72 61 6e 64  dArgs "---- rand
8910: 6f 6d 20 6f 72 64 65 72 3a 20 22 20 5c 0d 0a 20  om order: " \.. 
8920: 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
8930: 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 72 61  o exists test_ra
8940: 6e 64 6f 6d 5f 6f 72 64 65 72 5d 20 26 26 20 5c  ndom_order] && \
8950: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74 72  ..          [str
8960: 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20 2d  ing is boolean -
8970: 73 74 72 69 63 74 20 24 74 65 73 74 5f 72 61 6e  strict $test_ran
8980: 64 6f 6d 5f 6f 72 64 65 72 5d 20 3f 20 5c 0d 0a  dom_order] ? \..
8990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74                $t
89a0: 65 73 74 5f 72 61 6e 64 6f 6d 5f 6f 72 64 65 72  est_random_order
89b0: 20 3a 20 22 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e   : "<none>"}] \n
89c0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
89d0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
89e0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 75 6e 63  ndArgs "---- unc
89f0: 6f 75 6e 74 65 64 20 6c 65 61 6b 73 3a 20 22 20  ounted leaks: " 
8a00: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
8a10: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73  [info exists tes
8a20: 74 5f 75 6e 63 6f 75 6e 74 65 64 5f 6c 65 61 6b  t_uncounted_leak
8a30: 73 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20  s] && \..       
8a40: 20 20 20 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74     [string lengt
8a50: 68 20 24 74 65 73 74 5f 75 6e 63 6f 75 6e 74 65  h $test_uncounte
8a60: 64 5f 6c 65 61 6b 73 5d 20 3e 20 30 20 3f 20 5c  d_leaks] > 0 ? \
8a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a80: 24 74 65 73 74 5f 75 6e 63 6f 75 6e 74 65 64 5f  $test_uncounted_
8a90: 6c 65 61 6b 73 20 3a 20 22 3c 6e 6f 6e 65 3e 22  leaks : "<none>"
8aa0: 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74  }] \n]....  tput
8ab0: 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
8ac0: 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d  [appendArgs "---
8ad0: 2d 20 62 72 65 61 6b 20 6f 6e 20 6c 65 61 6b 3a  - break on leak:
8ae0: 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70   " \..      [exp
8af0: 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  r {[info exists 
8b00: 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c 65  test_break_on_le
8b10: 61 6b 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  ak] && \..      
8b20: 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 62      [string is b
8b30: 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20 24  oolean -strict $
8b40: 74 65 73 74 5f 62 72 65 61 6b 5f 6f 6e 5f 6c 65  test_break_on_le
8b50: 61 6b 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20  ak] ? \..       
8b60: 20 20 20 20 20 20 20 24 74 65 73 74 5f 62 72 65         $test_bre
8b70: 61 6b 5f 6f 6e 5f 6c 65 61 6b 20 3a 20 22 3c 6e  ak_on_leak : "<n
8b80: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
8b90: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
8ba0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
8bb0: 20 22 2d 2d 2d 2d 20 73 74 6f 70 20 6f 6e 20 66   "---- stop on f
8bc0: 61 69 6c 75 72 65 3a 20 22 20 5c 0d 0a 20 20 20  ailure: " \..   
8bd0: 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
8be0: 65 78 69 73 74 73 20 74 65 73 74 5f 73 74 6f 70  exists test_stop
8bf0: 5f 6f 6e 5f 66 61 69 6c 75 72 65 5d 20 26 26 20  _on_failure] && 
8c00: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74  \..          [st
8c10: 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20  ring is boolean 
8c20: 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 73 74  -strict $test_st
8c30: 6f 70 5f 6f 6e 5f 66 61 69 6c 75 72 65 5d 20 3f  op_on_failure] ?
8c40: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
8c50: 20 20 24 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f    $test_stop_on_
8c60: 66 61 69 6c 75 72 65 20 3a 20 22 3c 6e 6f 6e 65  failure : "<none
8c70: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  >"}] \n]....  tp
8c80: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
8c90: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
8ca0: 2d 2d 2d 20 73 74 6f 70 20 6f 6e 20 6c 65 61 6b  --- stop on leak
8cb0: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
8cc0: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
8cd0: 20 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 6c 65   test_stop_on_le
8ce0: 61 6b 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  ak] && \..      
8cf0: 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 62      [string is b
8d00: 6f 6f 6c 65 61 6e 20 2d 73 74 72 69 63 74 20 24  oolean -strict $
8d10: 74 65 73 74 5f 73 74 6f 70 5f 6f 6e 5f 6c 65 61  test_stop_on_lea
8d20: 6b 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20  k] ? \..        
8d30: 20 20 20 20 20 20 24 74 65 73 74 5f 73 74 6f 70        $test_stop
8d40: 5f 6f 6e 5f 6c 65 61 6b 20 3a 20 22 3c 6e 6f 6e  _on_leak : "<non
8d50: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
8d60: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
8d70: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
8d80: 2d 2d 2d 2d 20 65 78 69 74 20 6f 6e 20 63 6f 6d  ---- exit on com
8d90: 70 6c 65 74 65 3a 20 22 20 5c 0d 0a 20 20 20 20  plete: " \..    
8da0: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
8db0: 78 69 73 74 73 20 74 65 73 74 5f 65 78 69 74 5f  xists test_exit_
8dc0: 6f 6e 5f 63 6f 6d 70 6c 65 74 65 5d 20 26 26 20  on_complete] && 
8dd0: 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 73 74  \..          [st
8de0: 72 69 6e 67 20 69 73 20 62 6f 6f 6c 65 61 6e 20  ring is boolean 
8df0: 2d 73 74 72 69 63 74 20 24 74 65 73 74 5f 65 78  -strict $test_ex
8e00: 69 74 5f 6f 6e 5f 63 6f 6d 70 6c 65 74 65 5d 20  it_on_complete] 
8e10: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ? \..           
8e20: 20 20 20 24 74 65 73 74 5f 65 78 69 74 5f 6f 6e     $test_exit_on
8e30: 5f 63 6f 6d 70 6c 65 74 65 20 3a 20 22 3c 6e 6f  _complete : "<no
8e40: 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  ne>"}] \n]....  
8e50: 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f  #..  # NOTE: Sho
8e60: 77 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f  w the informatio
8e70: 6e 20 61 62 6f 75 74 20 77 68 69 63 68 20 74 65  n about which te
8e80: 73 74 73 20 61 6e 64 20 66 69 6c 65 73 20 61 72  sts and files ar
8e90: 65 20 62 65 69 6e 67 20 72 75 6e 0d 0a 20 20 23  e being run..  #
8ea0: 20 20 20 20 20 20 20 61 6e 64 2f 6f 72 20 73 6b         and/or sk
8eb0: 69 70 70 65 64 20 28 43 4f 4d 50 41 54 3a 20 54  ipped (COMPAT: T
8ec0: 63 6c 29 2e 0d 0a 20 20 23 0d 0a 20 20 74 70 75  cl)...  #..  tpu
8ed0: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
8ee0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
8ef0: 2d 2d 20 72 75 6e 6e 69 6e 67 20 74 65 73 74 20  -- running test 
8f00: 66 69 6c 65 73 20 74 68 61 74 20 6d 61 74 63 68  files that match
8f10: 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  : " \..      [ex
8f20: 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  pr {[info exists
8f30: 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 66 69 6c   test_flags(-fil
8f40: 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  e)] && \..      
8f50: 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74 65      [llength $te
8f60: 73 74 5f 66 6c 61 67 73 28 2d 66 69 6c 65 29 5d  st_flags(-file)]
8f70: 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20   > 0 ? \..      
8f80: 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c          $test_fl
8f90: 61 67 73 28 2d 66 69 6c 65 29 20 3a 20 22 3c 6e  ags(-file) : "<n
8fa0: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
8fb0: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
8fc0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
8fd0: 20 22 2d 2d 2d 2d 20 73 6b 69 70 70 69 6e 67 20   "---- skipping 
8fe0: 74 65 73 74 20 66 69 6c 65 73 20 74 68 61 74 20  test files that 
8ff0: 6d 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20 20  match: " \..    
9000: 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65    [expr {[info e
9010: 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73  xists test_flags
9020: 28 2d 6e 6f 74 46 69 6c 65 29 5d 20 26 26 20 5c  (-notFile)] && \
9030: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65  ..          [lle
9040: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
9050: 28 2d 6e 6f 74 46 69 6c 65 29 5d 20 3e 20 30 20  (-notFile)] > 0 
9060: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ? \..           
9070: 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d     $test_flags(-
9080: 6e 6f 74 46 69 6c 65 29 20 3a 20 22 3c 6e 6f 6e  notFile) : "<non
9090: 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  e>"}] \n]....  t
90a0: 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
90b0: 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c  el [appendArgs \
90c0: 0d 0a 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73 74  ..      "---- st
90d0: 61 72 74 69 6e 67 20 77 69 74 68 20 74 65 73 74  arting with test
90e0: 20 66 69 6c 65 73 20 74 68 61 74 20 6d 61 74 63   files that matc
90f0: 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65  h: " \..      [e
9100: 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74  xpr {[info exist
9110: 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 74  s test_flags(-st
9120: 61 72 74 46 69 6c 65 29 5d 20 26 26 20 5c 0d 0a  artFile)] && \..
9130: 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65 6e 67            [lleng
9140: 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d  th $test_flags(-
9150: 73 74 61 72 74 46 69 6c 65 29 5d 20 3e 20 30 20  startFile)] > 0 
9160: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ? \..           
9170: 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28 2d     $test_flags(-
9180: 73 74 61 72 74 46 69 6c 65 29 20 3a 20 22 3c 6e  startFile) : "<n
9190: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
91a0: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
91b0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
91c0: 20 5c 0d 0a 20 20 20 20 20 20 22 2d 2d 2d 2d 20   \..      "---- 
91d0: 73 74 6f 70 70 69 6e 67 20 61 66 74 65 72 20 74  stopping after t
91e0: 65 73 74 20 66 69 6c 65 73 20 74 68 61 74 20 6d  est files that m
91f0: 61 74 63 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20  atch: " \..     
9200: 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
9210: 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28  ists test_flags(
9220: 2d 73 74 6f 70 46 69 6c 65 29 5d 20 26 26 20 5c  -stopFile)] && \
9230: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 6c 6c 65  ..          [lle
9240: 6e 67 74 68 20 24 74 65 73 74 5f 66 6c 61 67 73  ngth $test_flags
9250: 28 2d 73 74 6f 70 46 69 6c 65 29 5d 20 3e 20 30  (-stopFile)] > 0
9260: 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20   ? \..          
9270: 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67 73 28      $test_flags(
9280: 2d 73 74 6f 70 46 69 6c 65 29 20 3a 20 22 3c 6e  -stopFile) : "<n
9290: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
92a0: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
92b0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
92c0: 20 22 2d 2d 2d 2d 20 72 75 6e 6e 69 6e 67 20 74   "---- running t
92d0: 65 73 74 73 20 74 68 61 74 20 6d 61 74 63 68 3a  ests that match:
92e0: 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70   " \..      [exp
92f0: 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  r {[info exists 
9300: 74 65 73 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63  test_flags(-matc
9310: 68 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  h)] && \..      
9320: 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24 74 65      [llength $te
9330: 73 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29  st_flags(-match)
9340: 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20  ] > 0 ? \..     
9350: 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 66           $test_f
9360: 6c 61 67 73 28 2d 6d 61 74 63 68 29 20 3a 20 22  lags(-match) : "
9370: 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d  <none>"}] \n]...
9380: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
9390: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
93a0: 67 73 20 22 2d 2d 2d 2d 20 73 6b 69 70 70 69 6e  gs "---- skippin
93b0: 67 20 74 65 73 74 73 20 74 68 61 74 20 6d 61 74  g tests that mat
93c0: 63 68 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  ch: " \..      [
93d0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
93e0: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 73  ts test_flags(-s
93f0: 6b 69 70 29 5d 20 26 26 20 5c 0d 0a 20 20 20 20  kip)] && \..    
9400: 20 20 20 20 20 20 5b 6c 6c 65 6e 67 74 68 20 24        [llength $
9410: 74 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69 70  test_flags(-skip
9420: 29 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20  )] > 0 ? \..    
9430: 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74 5f            $test_
9440: 66 6c 61 67 73 28 2d 73 6b 69 70 29 20 3a 20 22  flags(-skip) : "
9450: 3c 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d  <none>"}] \n]...
9460: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
9470: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
9480: 67 73 20 22 2d 2d 2d 2d 20 76 65 72 62 6f 73 69  gs "---- verbosi
9490: 74 79 20 6c 65 76 65 6c 20 66 6f 72 20 74 65 73  ty level for tes
94a0: 74 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 5b  ts: " \..      [
94b0: 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69 73  expr {[info exis
94c0: 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d 76  ts test_flags(-v
94d0: 65 72 62 6f 73 65 29 5d 20 26 26 20 5c 0d 0a 20  erbose)] && \.. 
94e0: 20 20 20 20 20 20 20 20 20 5b 73 74 72 69 6e 67           [string
94f0: 20 6c 65 6e 67 74 68 20 24 74 65 73 74 5f 66 6c   length $test_fl
9500: 61 67 73 28 2d 76 65 72 62 6f 73 65 29 5d 20 3e  ags(-verbose)] >
9510: 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20   0 ? \..        
9520: 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67        $test_flag
9530: 73 28 2d 76 65 72 62 6f 73 65 29 20 3a 20 22 3c  s(-verbose) : "<
9540: 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
9550: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9560: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9570: 73 20 22 2d 2d 2d 2d 20 70 61 74 68 3a 20 22 20  s "---- path: " 
9580: 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b  \..      [expr {
9590: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 70 61 74  [info exists pat
95a0: 68 5d 20 26 26 20 5b 73 74 72 69 6e 67 20 6c 65  h] && [string le
95b0: 6e 67 74 68 20 24 70 61 74 68 5d 20 3e 20 30 20  ngth $path] > 0 
95c0: 3f 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 5b  ? \..          [
95d0: 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 24 70  appendArgs \" $p
95e0: 61 74 68 20 5c 22 5d 20 3a 20 22 3c 6e 6f 6e 65  ath \"] : "<none
95f0: 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74 70  >"}] \n]....  tp
9600: 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
9610: 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
9620: 2d 2d 2d 20 62 61 73 65 20 70 61 74 68 3a 20 5c  --- base path: \
9630: 22 22 20 5c 0d 0a 20 20 20 20 20 20 24 62 61 73  "" \..      $bas
9640: 65 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a  e_path \"\n]....
9650: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9660: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9670: 73 20 22 2d 2d 2d 2d 20 6b 65 79 20 70 61 74 68  s "---- key path
9680: 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 24  : \"" \..      $
9690: 6b 65 79 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a  key_path \"\n]..
96a0: 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
96b0: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
96c0: 72 67 73 20 22 2d 2d 2d 2d 20 72 6f 6f 74 20 70  rgs "---- root p
96d0: 61 74 68 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20  ath: \"" \..    
96e0: 20 20 24 72 6f 6f 74 5f 70 61 74 68 20 5c 22 5c    $root_path \"\
96f0: 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74  n]....  tputs $t
9700: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
9710: 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 62 69  endArgs "---- bi
9720: 6e 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20 5c  nary path: \"" \
9730: 0d 0a 20 20 20 20 20 20 24 62 69 6e 5f 70 61 74  ..      $bin_pat
9740: 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75  h \"\n]....  tpu
9750: 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
9760: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d   [appendArgs "--
9770: 2d 2d 20 6c 69 62 72 61 72 79 20 70 61 74 68 3a  -- library path:
9780: 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20 24 6c   \"" \..      $l
9790: 69 62 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d  ib_path \"\n]...
97a0: 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63  .  tputs $test_c
97b0: 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
97c0: 67 73 20 22 2d 2d 2d 2d 20 63 6f 72 65 20 62 69  gs "---- core bi
97d0: 6e 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20 5c  nary path: \"" \
97e0: 0d 0a 20 20 20 20 20 20 24 63 6f 72 65 5f 62 69  ..      $core_bi
97f0: 6e 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a  n_path \"\n]....
9800: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9810: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9820: 73 20 22 2d 2d 2d 2d 20 63 6f 72 65 20 6c 69 62  s "---- core lib
9830: 72 61 72 79 20 70 61 74 68 3a 20 5c 22 22 20 5c  rary path: \"" \
9840: 0d 0a 20 20 20 20 20 20 24 63 6f 72 65 5f 6c 69  ..      $core_li
9850: 62 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a  b_path \"\n]....
9860: 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
9870: 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
9880: 73 20 22 2d 2d 2d 2d 20 74 65 73 74 20 68 6f 6d  s "---- test hom
9890: 65 20 70 61 74 68 3a 20 5c 22 22 20 5c 0d 0a 20  e path: \"" \.. 
98a0: 20 20 20 20 20 24 74 65 73 74 5f 68 6f 6d 65 5f       $test_home_
98b0: 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20  path \"\n]....  
98c0: 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
98d0: 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
98e0: 22 2d 2d 2d 2d 20 74 65 73 74 20 73 75 69 74 65  "---- test suite
98f0: 20 66 69 6c 65 73 20 6c 6f 63 61 74 65 64 20 69   files located i
9900: 6e 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20  n: \"" \..      
9910: 24 74 65 73 74 5f 61 6c 6c 5f 70 61 74 68 20 5c  $test_all_path \
9920: 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20  "\n]....  tputs 
9930: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61  $test_channel [a
9940: 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20  ppendArgs "---- 
9950: 74 65 73 74 20 73 63 72 69 70 74 20 66 69 6c 65  test script file
9960: 73 20 6c 6f 63 61 74 65 64 20 69 6e 3a 20 5c 22  s located in: \"
9970: 22 20 5c 0d 0a 20 20 20 20 20 20 24 74 65 73 74  " \..      $test
9980: 5f 70 61 74 68 20 5c 22 5c 6e 5d 0d 0a 0d 0a 20  _path \"\n].... 
9990: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
99a0: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
99b0: 20 22 2d 2d 2d 2d 20 74 65 73 74 20 64 61 74 61   "---- test data
99c0: 20 66 69 6c 65 73 20 6c 6f 63 61 74 65 64 20 69   files located i
99d0: 6e 3a 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20 20  n: \"" \..      
99e0: 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
99f0: 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  \"\n]....  tputs
9a00: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
9a10: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
9a20: 20 72 75 6e 6e 69 6e 67 20 69 6e 3a 20 5c 22 22   running in: \""
9a30: 20 5c 0d 0a 20 20 20 20 20 20 5b 70 77 64 5d 20   \..      [pwd] 
9a40: 5c 22 5c 6e 5d 0d 0a 0d 0a 20 20 74 70 75 74 73  \"\n]....  tputs
9a50: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
9a60: 61 70 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d  appendArgs "----
9a70: 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73   temporary files
9a80: 20 73 74 6f 72 65 64 20 69 6e 3a 20 5c 22 22 20   stored in: \"" 
9a90: 5c 0d 0a 20 20 20 20 20 20 5b 67 65 74 54 65 6d  \..      [getTem
9aa0: 70 6f 72 61 72 79 50 61 74 68 5d 20 5c 22 5c 6e  poraryPath] \"\n
9ab0: 5d 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65  ]....  tputs $te
9ac0: 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
9ad0: 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6e 61 74  ndArgs "---- nat
9ae0: 69 76 65 20 54 63 6c 20 73 68 65 6c 6c 3a 20 22  ive Tcl shell: "
9af0: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
9b00: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  {[info exists te
9b10: 73 74 5f 74 63 6c 73 68 5d 20 26 26 20 5b 73 74  st_tclsh] && [st
9b20: 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 65 73  ring length $tes
9b30: 74 5f 74 63 6c 73 68 5d 20 3e 20 30 20 3f 20 5c  t_tclsh] > 0 ? \
9b40: 0d 0a 20 20 20 20 20 20 20 20 20 20 5b 61 70 70  ..          [app
9b50: 65 6e 64 41 72 67 73 20 5c 22 20 24 74 65 73 74  endArgs \" $test
9b60: 5f 74 63 6c 73 68 20 5c 22 5d 20 3a 20 22 3c 6e  _tclsh \"] : "<n
9b70: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
9b80: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
9b90: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
9ba0: 20 5c 0d 0a 20 20 20 20 20 20 22 2d 2d 2d 2d 20   \..      "---- 
9bb0: 76 65 72 62 6f 73 69 74 79 20 6c 65 76 65 6c 20  verbosity level 
9bc0: 66 6f 72 20 6e 61 74 69 76 65 20 54 63 6c 20 73  for native Tcl s
9bd0: 68 65 6c 6c 3a 20 22 20 5b 65 78 70 72 20 7b 5b  hell: " [expr {[
9be0: 69 6e 66 6f 20 65 78 69 73 74 73 20 5c 0d 0a 20  info exists \.. 
9bf0: 20 20 20 20 20 20 20 20 20 74 65 73 74 5f 74 63           test_tc
9c00: 6c 73 68 5f 76 65 72 62 6f 73 65 5d 20 26 26 20  lsh_verbose] && 
9c10: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
9c20: 74 65 73 74 5f 74 63 6c 73 68 5f 76 65 72 62 6f  test_tclsh_verbo
9c30: 73 65 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20  se] > 0 ? \..   
9c40: 20 20 20 20 20 20 20 24 74 65 73 74 5f 74 63 6c         $test_tcl
9c50: 73 68 5f 76 65 72 62 6f 73 65 20 3a 20 22 3c 6e  sh_verbose : "<n
9c60: 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a 20  one>"}] \n].... 
9c70: 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
9c80: 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73  nnel [appendArgs
9c90: 20 22 2d 2d 2d 2d 20 64 69 73 61 62 6c 65 64 20   "---- disabled 
9ca0: 6f 70 74 69 6f 6e 73 3a 20 22 20 5c 0d 0a 20 20  options: " \..  
9cb0: 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 20      [formatList 
9cc0: 5b 6c 73 6f 72 74 20 5b 61 72 72 61 79 20 6e 61  [lsort [array na
9cd0: 6d 65 73 20 6e 6f 5d 5d 20 3c 6e 6f 6e 65 3e 5d  mes no]] <none>]
9ce0: 20 5c 6e 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23   \n]....  #..  #
9cf0: 20 4e 4f 54 45 3a 20 49 73 20 74 68 65 20 75 73   NOTE: Is the us
9d00: 65 20 6f 66 20 46 6f 73 73 69 6c 20 62 79 20 74  e of Fossil by t
9d10: 68 65 20 74 65 73 74 20 73 75 69 74 65 20 61 6c  he test suite al
9d20: 6c 6f 77 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69  lowed?..  #..  i
9d30: 66 20 7b 5b 63 61 6e 45 78 65 63 46 6f 73 73 69  f {[canExecFossi
9d40: 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  l]} then {..    
9d50: 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 47  #..    # NOTE: G
9d60: 65 74 20 74 68 65 20 73 6f 75 72 63 65 20 63 68  et the source ch
9d70: 65 63 6b 6f 75 74 20 61 6e 64 20 74 61 67 73 20  eckout and tags 
9d80: 28 69 2e 65 2e 20 6f 66 20 45 61 67 6c 65 20 6f  (i.e. of Eagle o
9d90: 72 20 77 68 61 74 65 76 65 72 0d 0a 20 20 20 20  r whatever..    
9da0: 23 20 20 20 20 20 20 20 70 72 6f 6a 65 63 74 20  #       project 
9db0: 74 68 65 20 45 61 67 6c 65 20 62 69 6e 61 72 69  the Eagle binari
9dc0: 65 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65  es are being use
9dd0: 64 20 62 79 29 20 75 73 69 6e 67 20 61 20 46 6f  d by) using a Fo
9de0: 73 73 69 6c 0d 0a 20 20 20 20 23 20 20 20 20 20  ssil..    #     
9df0: 20 20 62 69 6e 61 72 79 20 69 6e 20 74 68 65 20    binary in the 
9e00: 50 41 54 48 2c 20 69 66 20 61 76 61 69 6c 61 62  PATH, if availab
9e10: 6c 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  le...    #..    
9e20: 69 66 20 7b 5b 63 61 74 63 68 20 7b 65 78 65 63  if {[catch {exec
9e30: 20 2d 2d 20 66 6f 73 73 69 6c 20 69 6e 66 6f 7d   -- fossil info}
9e40: 20 65 78 65 63 5d 20 3d 3d 20 30 7d 20 74 68 65   exec] == 0} the
9e50: 6e 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 70  n {..      set p
9e60: 61 74 74 65 72 6e 20 7b 5e 63 68 65 63 6b 6f 75  attern {^checkou
9e70: 74 3a 5c 73 2b 28 2e 2a 3f 29 24 7d 0d 0a 0d 0a  t:\s+(.*?)$}....
9e80: 20 20 20 20 20 20 69 66 20 7b 5b 72 65 67 65 78        if {[regex
9e90: 70 20 2d 6c 69 6e 65 20 2d 2d 20 24 70 61 74 74  p -line -- $patt
9ea0: 65 72 6e 20 24 65 78 65 63 20 64 75 6d 6d 79 20  ern $exec dummy 
9eb0: 63 68 65 63 6b 6f 75 74 5d 7d 20 74 68 65 6e 20  checkout]} then 
9ec0: 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
9ed0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 52 65        # NOTE: Re
9ee0: 6d 6f 76 65 20 61 6e 79 20 74 72 61 69 6c 69 6e  move any trailin
9ef0: 67 20 6e 65 77 6c 69 6e 65 2e 0d 0a 20 20 20 20  g newline...    
9f00: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73      #..        s
9f10: 65 74 20 63 68 65 63 6b 6f 75 74 20 5b 73 74 72  et checkout [str
9f20: 69 6e 67 20 74 72 69 6d 20 24 63 68 65 63 6b 6f  ing trim $checko
9f30: 75 74 5d 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73  ut]..      } els
9f40: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e {..        #..
9f50: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
9f60: 57 65 20 63 6f 75 6c 64 20 6e 6f 74 20 71 75 65  We could not que
9f70: 72 79 20 74 68 65 20 73 6f 75 72 63 65 20 63 68  ry the source ch
9f80: 65 63 6b 6f 75 74 20 66 72 6f 6d 20 46 6f 73 73  eckout from Foss
9f90: 69 6c 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  il...        #..
9fa0: 20 20 20 20 20 20 20 20 73 65 74 20 63 68 65 63          set chec
9fb0: 6b 6f 75 74 20 3c 6e 6f 6e 65 3e 0d 0a 20 20 20  kout <none>..   
9fc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73 65     }....      se
9fd0: 74 20 70 61 74 74 65 72 6e 20 7b 5e 74 61 67 73  t pattern {^tags
9fe0: 3a 5c 73 2b 28 2e 2a 3f 29 24 7d 0d 0a 0d 0a 20  :\s+(.*?)$}.... 
9ff0: 20 20 20 20 20 69 66 20 7b 5b 72 65 67 65 78 70       if {[regexp
a000: 20 2d 6c 69 6e 65 20 2d 2d 20 24 70 61 74 74 65   -line -- $patte
a010: 72 6e 20 24 65 78 65 63 20 64 75 6d 6d 79 20 74  rn $exec dummy t
a020: 61 67 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ags]} then {..  
a030: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
a040: 20 23 20 4e 4f 54 45 3a 20 52 65 6d 6f 76 65 20   # NOTE: Remove 
a050: 61 6e 79 20 74 72 61 69 6c 69 6e 67 20 6e 65 77  any trailing new
a060: 6c 69 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20 23  line...        #
a070: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 74 61  ..        set ta
a080: 67 73 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20  gs [string trim 
a090: 24 74 61 67 73 5d 0d 0a 20 20 20 20 20 20 7d 20  $tags]..      } 
a0a0: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
a0b0: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
a0c0: 45 3a 20 57 65 20 63 6f 75 6c 64 20 6e 6f 74 20  E: We could not 
a0d0: 71 75 65 72 79 20 74 68 65 20 74 61 67 73 20 66  query the tags f
a0e0: 72 6f 6d 20 46 6f 73 73 69 6c 2e 0d 0a 20 20 20  rom Fossil...   
a0f0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
a100: 73 65 74 20 74 61 67 73 20 3c 6e 6f 6e 65 3e 0d  set tags <none>.
a110: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 20  .      }..    } 
a120: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 23 0d  else {..      #.
a130: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 57  .      # NOTE: W
a140: 65 20 63 6f 75 6c 64 20 6e 6f 74 20 71 75 65 72  e could not quer
a150: 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72  y information fr
a160: 6f 6d 20 46 6f 73 73 69 6c 2e 0d 0a 20 20 20 20  om Fossil...    
a170: 20 20 23 0d 0a 20 20 20 20 20 20 73 65 74 20 63    #..      set c
a180: 68 65 63 6b 6f 75 74 20 3c 6e 6f 6e 65 3e 0d 0a  heckout <none>..
a190: 20 20 20 20 20 20 73 65 74 20 74 61 67 73 20 3c        set tags <
a1a0: 6e 6f 6e 65 3e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  none>..    }....
a1b0: 20 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d      unset -nocom
a1c0: 70 6c 61 69 6e 20 64 75 6d 6d 79 20 65 78 65 63  plain dummy exec
a1d0: 20 70 61 74 74 65 72 6e 0d 0a 20 20 7d 20 65 6c   pattern..  } el
a1e0: 73 65 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  se {..    #..   
a1f0: 20 23 20 4e 4f 54 45 3a 20 55 73 65 20 6f 66 20   # NOTE: Use of 
a200: 46 6f 73 73 69 6c 20 62 79 20 74 68 65 20 74 65  Fossil by the te
a210: 73 74 20 73 75 69 74 65 20 69 73 20 66 6f 72 62  st suite is forb
a220: 69 64 64 65 6e 2e 0d 0a 20 20 20 20 23 0d 0a 20  idden...    #.. 
a230: 20 20 20 73 65 74 20 63 68 65 63 6b 6f 75 74 20     set checkout 
a240: 3c 6e 6f 6e 65 3e 0d 0a 20 20 20 20 73 65 74 20  <none>..    set 
a250: 74 61 67 73 20 3c 6e 6f 6e 65 3e 0d 0a 20 20 7d  tags <none>..  }
a260: 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
a270: 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
a280: 64 41 72 67 73 20 22 2d 2d 2d 2d 20 63 68 65 63  dArgs "---- chec
a290: 6b 6f 75 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20  kout: " \..     
a2a0: 20 24 63 68 65 63 6b 6f 75 74 20 5c 6e 5d 0d 0a   $checkout \n]..
a2b0: 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
a2c0: 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
a2d0: 72 67 73 20 22 2d 2d 2d 2d 20 74 61 67 73 3a 20  rgs "---- tags: 
a2e0: 22 20 5c 0d 0a 20 20 20 20 20 20 24 74 61 67 73  " \..      $tags
a2f0: 20 5c 6e 5d 0d 0a 0d 0a 20 20 75 6e 73 65 74 20   \n]....  unset 
a300: 74 61 67 73 20 63 68 65 63 6b 6f 75 74 0d 0a 0d  tags checkout...
a310: 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
a320: 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 45  Initialize the E
a330: 61 67 6c 65 20 74 65 73 74 20 63 6f 6e 73 74 72  agle test constr
a340: 61 69 6e 74 73 2e 0d 0a 20 20 23 0d 0a 20 20 69  aints...  #..  i
a350: 66 20 7b 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68  f {[isEagle]} th
a360: 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  en {..    #..   
a370: 20 23 20 4e 4f 54 45 3a 20 2a 57 41 52 4e 49 4e   # NOTE: *WARNIN
a380: 47 2a 20 54 68 69 73 20 68 61 73 20 74 68 65 20  G* This has the 
a390: 65 66 66 65 63 74 20 6f 66 20 72 65 6d 6f 76 69  effect of removi
a3a0: 6e 67 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69  ng test constrai
a3b0: 6e 74 73 0d 0a 20 20 20 20 23 20 20 20 20 20 20  nts..    #      
a3c0: 20 61 64 64 65 64 20 70 72 69 6f 72 20 74 6f 20   added prior to 
a3d0: 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20  this point...   
a3e0: 20 23 0d 0a 20 20 20 20 69 6e 69 74 69 61 6c 69   #..    initiali
a3f0: 7a 65 54 65 73 74 73 3b 20 63 6f 6e 66 69 67 75  zeTests; configu
a400: 72 65 54 63 6c 74 65 73 74 20 22 22 20 5b 6c 69  reTcltest "" [li
a410: 73 74 5d 20 5b 6c 69 73 74 5d 20 5b 6c 69 73 74  st] [list] [list
a420: 5d 20 5b 6c 69 73 74 5d 20 66 61 6c 73 65 0d 0a  ] [list] false..
a430: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
a440: 4f 54 45 3a 20 49 66 20 74 68 65 20 22 6e 6f 28  OTE: If the "no(
a450: 6d 6f 6e 6f 29 22 20 76 61 72 69 61 62 6c 65 20  mono)" variable 
a460: 69 73 20 73 65 74 20 28 74 6f 20 61 6e 79 74 68  is set (to anyth
a470: 69 6e 67 29 20 74 68 65 6e 20 61 6e 79 0d 0a 20  ing) then any.. 
a480: 20 20 20 23 20 20 20 20 20 20 20 73 70 65 63 69     #       speci
a490: 61 6c 20 74 65 73 74 20 73 75 69 74 65 20 68 61  al test suite ha
a4a0: 63 6b 73 20 66 6f 72 20 4d 6f 6e 6f 20 77 69 6c  cks for Mono wil
a4b0: 6c 20 62 65 20 64 69 73 61 62 6c 65 64 2e 20 54  l be disabled. T
a4c0: 68 69 73 0d 0a 20 20 20 20 23 20 20 20 20 20 20  his..    #      
a4d0: 20 64 6f 65 73 20 6e 6f 74 20 63 6f 6e 74 72 6f   does not contro
a4e0: 6c 20 6f 72 20 63 68 61 6e 67 65 20 61 6e 79 20  l or change any 
a4f0: 68 61 63 6b 73 20 66 6f 72 20 4d 6f 6e 6f 20 74  hacks for Mono t
a500: 68 61 74 20 6d 61 79 0d 0a 20 20 20 20 23 20 20  hat may..    #  
a510: 20 20 20 20 20 62 65 20 70 72 65 73 65 6e 74 20       be present 
a520: 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 69  in the library i
a530: 74 73 65 6c 66 2e 0d 0a 20 20 20 20 23 0d 0a 20  tself...    #.. 
a540: 20 20 20 23 20 69 66 20 7b 5b 69 73 4d 6f 6e 6f     # if {[isMono
a550: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23  ]} then {..    #
a560: 20 20 20 73 65 74 20 6e 6f 28 6d 6f 6e 6f 29 20     set no(mono) 
a570: 74 72 75 65 0d 0a 20 20 20 20 23 20 7d 0d 0a 0d  true..    # }...
a580: 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23  .    ###########
a590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5d0: 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
a5e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 20  ############### 
a5f0: 42 45 47 49 4e 20 45 61 67 6c 65 20 43 6f 6e 73  BEGIN Eagle Cons
a600: 74 72 61 69 6e 74 73 20 23 23 23 23 23 23 23 23  traints ########
a610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a620: 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23  #..    #########
a630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a670: 23 23 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20  ##....    tputs 
a680: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d  $test_channel \.
a690: 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 73  .        "---- s
a6a0: 74 61 72 74 20 6f 66 20 45 61 67 6c 65 20 73 70  tart of Eagle sp
a6b0: 65 63 69 66 69 63 20 74 65 73 74 20 63 6f 6e 73  ecific test cons
a6c0: 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a 0d  traints...\n"...
a6d0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
a6e0: 54 45 3a 20 2a 57 41 52 4e 49 4e 47 2a 20 48 61  TE: *WARNING* Ha
a6f0: 73 20 71 75 69 65 74 20 74 65 73 74 69 6e 67 20  s quiet testing 
a700: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
a710: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 20 20 20  abled?..    #   
a720: 20 20 20 20 50 6c 65 61 73 65 20 64 6f 20 6e 6f      Please do no
a730: 74 20 6d 6f 76 65 20 74 68 69 73 20 22 71 75 69  t move this "qui
a740: 65 74 6e 65 73 73 22 20 74 65 73 74 20 63 6f 6e  etness" test con
a750: 73 74 72 61 69 6e 74 0d 0a 20 20 20 20 23 20 20  straint..    #  
a760: 20 20 20 20 20 63 68 65 63 6b 20 61 73 20 73 75       check as su
a770: 62 73 65 71 75 65 6e 74 20 74 65 73 74 20 63 6f  bsequent test co
a780: 6e 73 74 72 61 69 6e 74 73 20 6d 61 79 20 72 65  nstraints may re
a790: 6c 79 20 6f 6e 20 69 74 0d 0a 20 20 20 20 23 20  ly on it..    # 
a7a0: 20 20 20 20 20 20 77 68 65 6e 20 64 65 74 65 72        when deter
a7b0: 6d 69 6e 69 6e 67 20 69 66 20 61 20 77 61 72 6e  mining if a warn
a7c0: 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20 65 6d  ing should be em
a7d0: 69 74 74 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20  itted...    #.. 
a7e0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
a7f0: 69 73 74 73 20 6e 6f 28 71 75 69 65 74 29 5d 7d  ists no(quiet)]}
a800: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23   then {..      #
a810: 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
a820: 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63  For tests "basic
a830: 2d 31 2e 33 36 22 2c 20 22 62 65 6e 63 68 6d 61  -1.36", "benchma
a840: 72 6b 2d 31 2e 2a 22 2c 20 22 64 65 62 75 67 2d  rk-1.*", "debug-
a850: 31 2e 33 22 2c 0d 0a 20 20 20 20 20 20 23 20 20  1.3",..      #  
a860: 20 20 20 20 20 22 64 65 62 75 67 2d 31 2e 34 2e       "debug-1.4.
a870: 2a 22 2c 20 22 67 6c 6f 62 2d 39 39 2e 2a 22 2c  *", "glob-99.*",
a880: 20 22 6f 62 6a 65 63 74 2d 31 30 2e 2a 22 2c 20   "object-10.*", 
a890: 22 70 65 72 66 2d 32 2e 32 22 2c 0d 0a 20 20 20  "perf-2.2",..   
a8a0: 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 76     #       and v
a8b0: 61 72 69 6f 75 73 20 6f 74 68 65 72 20 70 6c 61  arious other pla
a8c0: 63 65 73 20 77 69 74 68 69 6e 20 74 68 65 20 74  ces within the t
a8d0: 65 73 74 20 73 75 69 74 65 20 63 6f 64 65 0d 0a  est suite code..
a8e0: 20 20 20 20 20 20 23 20 20 20 20 20 20 20 69 74        #       it
a8f0: 73 65 6c 66 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  self...      #..
a900: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 51 75        checkForQu
a910: 69 65 74 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  iet $test_channe
a920: 6c 20 66 61 6c 73 65 0d 0a 20 20 20 20 7d 0d 0a  l false..    }..
a930: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
a940: 4f 54 45 3a 20 48 61 73 20 61 64 6d 69 6e 69 73  OTE: Has adminis
a950: 74 72 61 74 6f 72 20 64 65 74 65 63 74 69 6f 6e  trator detection
a960: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
a970: 73 61 62 6c 65 64 3f 20 20 57 65 20 64 6f 0d 0a  sabled?  We do..
a980: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 69 73      #       this
a990: 20 63 68 65 63 6b 20 5b 6e 65 61 72 6c 79 5d 20   check [nearly] 
a9a0: 66 69 72 73 74 20 61 73 20 69 74 20 6d 61 79 20  first as it may 
a9b0: 5b 65 76 65 6e 74 75 61 6c 6c 79 5d 20 62 65 20  [eventually] be 
a9c0: 75 73 65 64 0d 0a 20 20 20 20 23 20 20 20 20 20  used..    #     
a9d0: 20 20 74 6f 20 68 65 6c 70 20 64 65 74 65 72 6d    to help determ
a9e0: 69 6e 65 20 69 66 20 6f 74 68 65 72 20 63 6f 6e  ine if other con
a9f0: 73 74 72 61 69 6e 74 73 20 73 68 6f 75 6c 64 20  straints should 
aa00: 62 65 20 73 6b 69 70 70 65 64 2e 0d 0a 20 20 20  be skipped...   
aa10: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
aa20: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 61 64 6d  fo exists no(adm
aa30: 69 6e 69 73 74 72 61 74 6f 72 29 5d 7d 20 74 68  inistrator)]} th
aa40: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
aa50: 6b 46 6f 72 41 64 6d 69 6e 69 73 74 72 61 74 6f  kForAdministrato
aa60: 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  r $test_channel.
aa70: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
aa80: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
aa90: 20 68 6f 73 74 20 64 65 74 65 63 74 69 6f 6e 20   host detection 
aaa0: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
aab0: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
aac0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
aad0: 69 73 74 73 20 6e 6f 28 68 6f 73 74 29 5d 7d 20  ists no(host)]} 
aae0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68  then {..      ch
aaf0: 65 63 6b 46 6f 72 48 6f 73 74 20 24 74 65 73 74  eckForHost $test
ab00: 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
ab10: 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
ab20: 4e 4f 54 45 3a 20 48 61 73 20 68 6f 73 74 20 74  NOTE: Has host t
ab30: 79 70 65 20 64 65 74 65 63 74 69 6f 6e 20 73 75  ype detection su
ab40: 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
ab50: 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
ab60: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
ab70: 74 73 20 6e 6f 28 68 6f 73 74 54 79 70 65 29 5d  ts no(hostType)]
ab80: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
ab90: 63 68 65 63 6b 46 6f 72 48 6f 73 74 54 79 70 65  checkForHostType
aba0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
abb0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
abc0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
abd0: 70 72 69 6d 61 72 79 20 74 68 72 65 61 64 20 64  primary thread d
abe0: 65 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74  etection support
abf0: 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 20   been disabled? 
ac00: 20 57 65 20 64 6f 0d 0a 20 20 20 20 23 20 20 20   We do..    #   
ac10: 20 20 20 20 74 68 69 73 20 63 68 65 63 6b 20 5b      this check [
ac20: 6e 65 61 72 6c 79 5d 20 66 69 72 73 74 20 61 73  nearly] first as
ac30: 20 69 74 20 6d 61 79 20 5b 65 76 65 6e 74 75 61   it may [eventua
ac40: 6c 6c 79 5d 20 62 65 20 75 73 65 64 0d 0a 20 20  lly] be used..  
ac50: 20 20 23 20 20 20 20 20 20 20 74 6f 20 68 65 6c    #       to hel
ac60: 70 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 6f  p determine if o
ac70: 74 68 65 72 20 63 6f 6e 73 74 72 61 69 6e 74 73  ther constraints
ac80: 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70 70   should be skipp
ac90: 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed...    #..    
aca0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
acb0: 73 20 6e 6f 28 70 72 69 6d 61 72 79 54 68 72 65  s no(primaryThre
acc0: 61 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ad)]} then {..  
acd0: 20 20 20 20 63 68 65 63 6b 46 6f 72 50 72 69 6d      checkForPrim
ace0: 61 72 79 54 68 72 65 61 64 20 24 74 65 73 74 5f  aryThread $test_
acf0: 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
ad00: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
ad10: 4f 54 45 3a 20 48 61 73 20 64 65 66 61 75 6c 74  OTE: Has default
ad20: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 6d   application dom
ad30: 61 69 6e 20 64 65 74 65 63 74 69 6f 6e 20 73 75  ain detection su
ad40: 70 70 6f 72 74 20 62 65 65 6e 0d 0a 20 20 20 20  pport been..    
ad50: 23 20 20 20 20 20 20 20 64 69 73 61 62 6c 65 64  #       disabled
ad60: 3f 20 20 57 65 20 64 6f 20 74 68 69 73 20 63 68  ?  We do this ch
ad70: 65 63 6b 20 5b 6e 65 61 72 6c 79 5d 20 66 69 72  eck [nearly] fir
ad80: 73 74 20 61 73 20 69 74 20 6d 61 79 0d 0a 20 20  st as it may..  
ad90: 20 20 23 20 20 20 20 20 20 20 5b 65 76 65 6e 74    #       [event
ada0: 75 61 6c 6c 79 5d 20 62 65 20 75 73 65 64 20 74  ually] be used t
adb0: 6f 20 68 65 6c 70 20 64 65 74 65 72 6d 69 6e 65  o help determine
adc0: 20 69 66 20 6f 74 68 65 72 0d 0a 20 20 20 20 23   if other..    #
add0: 20 20 20 20 20 20 20 63 6f 6e 73 74 72 61 69 6e         constrain
ade0: 74 73 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69  ts should be ski
adf0: 70 70 65 64 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  pped...    #..  
ae00: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
ae10: 73 74 73 20 6e 6f 28 64 65 66 61 75 6c 74 41 70  sts no(defaultAp
ae20: 70 44 6f 6d 61 69 6e 29 5d 7d 20 74 68 65 6e 20  pDomain)]} then 
ae30: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
ae40: 72 44 65 66 61 75 6c 74 41 70 70 44 6f 6d 61 69  rDefaultAppDomai
ae50: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  n $test_channel.
ae60: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
ae70: 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
ae80: 20 72 75 6e 74 69 6d 65 20 64 65 74 65 63 74 69   runtime detecti
ae90: 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  on support been 
aea0: 64 69 73 61 62 6c 65 64 3f 20 20 57 65 20 64 6f  disabled?  We do
aeb0: 20 74 68 69 73 0d 0a 20 20 20 20 23 20 20 20 20   this..    #    
aec0: 20 20 20 63 68 65 63 6b 69 6e 67 20 5b 6e 65 61     checking [nea
aed0: 72 6c 79 5d 20 66 69 72 73 74 20 61 73 20 69 74  rly] first as it
aee0: 20 6d 61 79 20 73 6b 69 70 20 6f 74 68 65 72 20   may skip other 
aef0: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20 20  constraints...  
af00: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
af10: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 75  nfo exists no(ru
af20: 6e 74 69 6d 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  ntime)]} then {.
af30: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52  .      checkForR
af40: 75 6e 74 69 6d 65 20 24 74 65 73 74 5f 63 68 61  untime $test_cha
af50: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
af60: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
af70: 3a 20 43 68 65 63 6b 20 74 68 65 20 76 61 72 69  : Check the vari
af80: 61 6e 74 20 61 6e 64 2f 6f 72 20 76 65 72 73 69  ant and/or versi
af90: 6f 6e 20 6f 66 20 74 68 65 20 43 4c 52 20 74 68  on of the CLR th
afa0: 61 74 20 77 65 20 61 72 65 0d 0a 20 20 20 20 23  at we are..    #
afb0: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 6c 79         currently
afc0: 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e 0d 0a 20 20   running on...  
afd0: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
afe0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68  nfo exists no(ch
aff0: 65 63 6b 46 6f 72 52 75 6e 74 69 6d 65 56 65 72  eckForRuntimeVer
b000: 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  sion)]} then {..
b010: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 52 75        checkForRu
b020: 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 24 74 65  ntimeVersion $te
b030: 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20  st_channel..    
b040: 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
b050: 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68  # NOTE: Check th
b060: 65 20 66 72 61 6d 65 77 6f 72 6b 20 76 65 72 73  e framework vers
b070: 69 6f 6e 20 28 69 2e 65 2e 20 72 65 67 61 72 64  ion (i.e. regard
b080: 6c 65 73 73 20 6f 66 20 72 75 6e 74 69 6d 65 29  less of runtime)
b090: 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20 20   that..    #    
b0a0: 20 20 20 77 65 20 61 72 65 20 63 75 72 72 65 6e     we are curren
b0b0: 74 6c 79 20 72 75 6e 6e 69 6e 67 20 6f 6e 2e 0d  tly running on..
b0c0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
b0d0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
b0e0: 28 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f  (frameworkVersio
b0f0: 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  n)]} then {..   
b100: 20 20 20 63 68 65 63 6b 46 6f 72 46 72 61 6d 65     checkForFrame
b110: 77 6f 72 6b 56 65 72 73 69 6f 6e 20 24 74 65 73  workVersion $tes
b120: 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d  t_channel..    }
b130: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
b140: 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 68 65   NOTE: Check the
b150: 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76   image runtime v
b160: 65 72 73 69 6f 6e 20 28 69 2e 65 2e 20 74 68 65  ersion (i.e. the
b170: 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e   runtime version
b180: 20 74 68 61 74 0d 0a 20 20 20 20 23 20 20 20 20   that..    #    
b190: 20 20 20 74 68 69 73 20 61 73 73 65 6d 62 6c 79     this assembly
b1a0: 20 63 6f 6d 70 69 6c 65 64 20 61 67 61 69 6e 73   compiled agains
b1b0: 74 29 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  t)...    #..    
b1c0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
b1d0: 73 20 6e 6f 28 69 6d 61 67 65 52 75 6e 74 69 6d  s no(imageRuntim
b1e0: 65 56 65 72 73 69 6f 6e 29 5d 7d 20 74 68 65 6e  eVersion)]} then
b1f0: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
b200: 6f 72 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  orImageRuntimeVe
b210: 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  rsion $test_chan
b220: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
b230: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
b240: 20 43 68 65 63 6b 20 69 66 20 74 68 65 20 69 6d   Check if the im
b250: 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72 73  age runtime vers
b260: 69 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 65 20  ion matches the 
b270: 66 72 61 6d 65 77 6f 72 6b 2e 0d 0a 20 20 20 20  framework...    
b280: 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
b290: 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d 61 74 63  o exists no(matc
b2a0: 68 69 6e 67 46 72 61 6d 65 77 6f 72 6b 56 65 72  hingFrameworkVer
b2b0: 73 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  sion)]} then {..
b2c0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 61        checkForMa
b2d0: 74 63 68 69 6e 67 46 72 61 6d 65 77 6f 72 6b 56  tchingFrameworkV
b2e0: 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ersion $test_cha
b2f0: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
b300: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
b310: 3a 20 48 61 73 20 70 72 6f 63 65 73 73 20 62 69  : Has process bi
b320: 74 73 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70  ts detection sup
b330: 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
b340: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
b350: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
b360: 73 20 6e 6f 28 70 72 6f 63 65 73 73 42 69 74 73  s no(processBits
b370: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
b380: 20 20 63 68 65 63 6b 46 6f 72 50 72 6f 63 65 73    checkForProces
b390: 73 42 69 74 73 20 24 74 65 73 74 5f 63 68 61 6e  sBits $test_chan
b3a0: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
b3b0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
b3c0: 20 48 61 73 20 6d 61 63 68 69 6e 65 20 64 65 74   Has machine det
b3d0: 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62  ection support b
b3e0: 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
b3f0: 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
b400: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6d  info exists no(m
b410: 61 63 68 69 6e 65 29 5d 7d 20 74 68 65 6e 20 7b  achine)]} then {
b420: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
b430: 4d 61 63 68 69 6e 65 20 24 74 65 73 74 5f 63 68  Machine $test_ch
b440: 61 6e 6e 65 6c 20 33 32 20 69 6e 74 65 6c 3b 20  annel 32 intel; 
b450: 23 20 28 69 2e 65 2e 20 78 38 36 29 0d 0a 20 20  # (i.e. x86)..  
b460: 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 61 63 68      checkForMach
b470: 69 6e 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ine $test_channe
b480: 6c 20 33 32 20 61 72 6d 3b 20 20 20 23 20 28 69  l 32 arm;   # (i
b490: 2e 65 2e 20 61 72 6d 29 0d 0a 20 20 20 20 20 20  .e. arm)..      
b4a0: 63 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20  checkForMachine 
b4b0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34  $test_channel 64
b4c0: 20 69 61 36 34 3b 20 20 23 20 28 69 2e 65 2e 20   ia64;  # (i.e. 
b4d0: 69 74 61 6e 69 75 6d 29 0d 0a 20 20 20 20 20 20  itanium)..      
b4e0: 63 68 65 63 6b 46 6f 72 4d 61 63 68 69 6e 65 20  checkForMachine 
b4f0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 36 34  $test_channel 64
b500: 20 61 6d 64 36 34 3b 20 23 20 28 69 2e 65 2e 20   amd64; # (i.e. 
b510: 78 36 34 29 0d 0a 20 20 20 20 20 20 63 68 65 63  x64)..      chec
b520: 6b 46 6f 72 4d 61 63 68 69 6e 65 20 24 74 65 73  kForMachine $tes
b530: 74 5f 63 68 61 6e 6e 65 6c 20 36 34 20 61 72 6d  t_channel 64 arm
b540: 36 34 3b 20 23 20 28 69 2e 65 2e 20 61 72 6d 36  64; # (i.e. arm6
b550: 34 29 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  4)..    }....   
b560: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
b570: 48 61 73 20 74 65 73 74 20 73 75 69 74 65 20 63  Has test suite c
b580: 61 6c 6c 20 73 74 61 63 6b 20 70 72 6f 62 69 6e  all stack probin
b590: 67 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  g been disabled?
b5a0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
b5b0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
b5c0: 6f 28 74 65 73 74 43 61 6c 6c 53 74 61 63 6b 29  o(testCallStack)
b5d0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
b5e0: 20 63 68 65 63 6b 46 6f 72 54 65 73 74 43 61 6c   checkForTestCal
b5f0: 6c 53 74 61 63 6b 20 24 74 65 73 74 5f 63 68 61  lStack $test_cha
b600: 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  nnel..    }.... 
b610: 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
b620: 3a 20 48 61 73 20 63 75 6c 74 75 72 65 20 64 65  : Has culture de
b630: 74 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20  tection support 
b640: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
b650: 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
b660: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
b670: 63 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20  culture)]} then 
b680: 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
b690: 72 43 75 6c 74 75 72 65 20 24 74 65 73 74 5f 63  rCulture $test_c
b6a0: 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
b6b0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
b6c0: 54 45 3a 20 48 61 73 20 74 68 72 65 61 64 20 63  TE: Has thread c
b6d0: 75 6c 74 75 72 65 20 64 65 74 65 63 74 69 6f 6e  ulture detection
b6e0: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
b6f0: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
b700: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
b710: 78 69 73 74 73 20 6e 6f 28 74 68 72 65 61 64 43  xists no(threadC
b720: 75 6c 74 75 72 65 29 5d 7d 20 74 68 65 6e 20 7b  ulture)]} then {
b730: 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
b740: 54 68 72 65 61 64 43 75 6c 74 75 72 65 20 24 74  ThreadCulture $t
b750: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
b760: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
b770: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 65 63   # NOTE: Has sec
b780: 75 72 69 74 79 20 64 65 74 65 63 74 69 6f 6e 20  urity detection 
b790: 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
b7a0: 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
b7b0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
b7c0: 69 73 74 73 20 6e 6f 28 73 65 63 75 72 69 74 79  ists no(security
b7d0: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
b7e0: 20 20 63 68 65 63 6b 46 6f 72 53 65 63 75 72 69    checkForSecuri
b7f0: 74 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ty $test_channel
b800: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
b810: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
b820: 73 20 73 6f 66 74 77 61 72 65 20 75 70 64 61 74  s software updat
b830: 65 20 74 72 75 73 74 20 64 65 74 65 63 74 69 6f  e trust detectio
b840: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
b850: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
b860: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
b870: 65 78 69 73 74 73 20 6e 6f 28 73 6f 66 74 77 61  exists no(softwa
b880: 72 65 55 70 64 61 74 65 29 5d 7d 20 74 68 65 6e  reUpdate)]} then
b890: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
b8a0: 6f 72 53 6f 66 74 77 61 72 65 55 70 64 61 74 65  orSoftwareUpdate
b8b0: 54 72 75 73 74 20 24 74 65 73 74 5f 63 68 61 6e  Trust $test_chan
b8c0: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
b8d0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
b8e0: 20 48 61 73 20 6c 69 62 72 61 72 79 20 61 73 73   Has library ass
b8f0: 65 6d 62 6c 79 20 6e 61 6d 65 20 64 65 74 65 63  embly name detec
b900: 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65  tion support bee
b910: 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
b920: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
b930: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6c 69 62  fo exists no(lib
b940: 72 61 72 79 41 73 73 65 6d 62 6c 79 4e 61 6d 65  raryAssemblyName
b950: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
b960: 20 20 63 68 65 63 6b 46 6f 72 4c 69 62 72 61 72    checkForLibrar
b970: 79 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 24 74  yAssemblyName $t
b980: 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
b990: 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
b9a0: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 74 72   # NOTE: Has str
b9b0: 6f 6e 67 20 6e 61 6d 65 20 64 65 74 65 63 74 69  ong name detecti
b9c0: 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  on support been 
b9d0: 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
b9e0: 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
b9f0: 20 65 78 69 73 74 73 20 6e 6f 28 73 74 72 6f 6e   exists no(stron
ba00: 67 4e 61 6d 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  gName)]} then {.
ba10: 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 53  .      checkForS
ba20: 74 72 6f 6e 67 4e 61 6d 65 20 24 74 65 73 74 5f  trongName $test_
ba30: 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
ba40: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
ba50: 4f 54 45 3a 20 48 61 73 20 73 74 72 6f 6e 67 20  OTE: Has strong 
ba60: 6e 61 6d 65 20 6b 65 79 20 64 65 74 65 63 74 69  name key detecti
ba70: 6f 6e 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  on been disabled
ba80: 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ?..    #..    if
ba90: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
baa0: 6e 6f 28 73 74 72 6f 6e 67 4e 61 6d 65 4b 65 79  no(strongNameKey
bab0: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
bac0: 20 20 63 68 65 63 6b 46 6f 72 53 74 72 6f 6e 67    checkForStrong
bad0: 4e 61 6d 65 4b 65 79 20 24 74 65 73 74 5f 63 68  NameKey $test_ch
bae0: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
baf0: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
bb00: 45 3a 20 48 61 73 20 63 65 72 74 69 66 69 63 61  E: Has certifica
bb10: 74 65 20 64 65 74 65 63 74 69 6f 6e 20 73 75 70  te detection sup
bb20: 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
bb30: 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  ed?..    #..    
bb40: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
bb50: 73 20 6e 6f 28 63 65 72 74 69 66 69 63 61 74 65  s no(certificate
bb60: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
bb70: 20 20 63 68 65 63 6b 46 6f 72 43 65 72 74 69 66    checkForCertif
bb80: 69 63 61 74 65 20 24 74 65 73 74 5f 63 68 61 6e  icate $test_chan
bb90: 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
bba0: 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
bbb0: 20 48 61 73 20 64 61 74 61 62 61 73 65 20 74 65   Has database te
bbc0: 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
bbd0: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
bbe0: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
bbf0: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
bc00: 72 65 29 5d 20 26 26 20 21 5b 69 6e 66 6f 20 65  re)] && ![info e
bc10: 78 69 73 74 73 20 6e 6f 28 64 61 74 61 62 61 73  xists no(databas
bc20: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
bc30: 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
bc40: 54 45 3a 20 53 65 74 20 74 68 65 20 73 65 72 76  TE: Set the serv
bc50: 65 72 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63 65  er name, if nece
bc60: 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d  ssary...      #.
bc70: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
bc80: 6f 20 65 78 69 73 74 73 20 73 65 72 76 65 72 5d  o exists server]
bc90: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
bca0: 20 20 73 65 74 20 73 65 72 76 65 72 20 2e 0d 0a    set server ...
bcb0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
bcc0: 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
bcd0: 3a 20 53 65 74 20 74 68 65 20 64 61 74 61 62 61  : Set the databa
bce0: 73 65 20 6e 61 6d 65 2c 20 69 66 20 6e 65 63 65  se name, if nece
bcf0: 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d  ssary...      #.
bd00: 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
bd10: 6f 20 65 78 69 73 74 73 20 64 61 74 61 62 61 73  o exists databas
bd20: 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  e]} then {..    
bd30: 20 20 20 20 73 65 74 20 64 61 74 61 62 61 73 65      set database
bd40: 20 6d 61 73 74 65 72 0d 0a 20 20 20 20 20 20 7d   master..      }
bd50: 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
bd60: 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74     # NOTE: Set t
bd70: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 69  he connection ti
bd80: 6d 65 6f 75 74 2c 20 69 66 20 6e 65 63 65 73 73  meout, if necess
bd90: 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ary...      #.. 
bda0: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
bdb0: 65 78 69 73 74 73 20 74 69 6d 65 6f 75 74 5d 7d  exists timeout]}
bdc0: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
bdd0: 20 73 65 74 20 74 69 6d 65 6f 75 74 20 5b 65 78   set timeout [ex
bde0: 70 72 20 7b 24 74 65 73 74 5f 74 69 6d 65 6f 75  pr {$test_timeou
bdf0: 74 20 2f 20 31 30 30 30 7d 5d 3b 20 23 20 6d 69  t / 1000}]; # mi
be00: 6c 6c 69 73 65 63 6f 6e 64 73 20 74 6f 20 73 65  lliseconds to se
be10: 63 6f 6e 64 73 2e 0d 0a 20 20 20 20 20 20 7d 0d  conds...      }.
be20: 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
be30: 20 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68    # NOTE: Set th
be40: 65 20 74 65 73 74 20 75 73 65 72 20 6e 61 6d 65  e test user name
be50: 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0d  , if necessary..
be60: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
be70: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
be80: 73 20 75 73 65 72 5d 7d 20 74 68 65 6e 20 7b 0d  s user]} then {.
be90: 0a 20 20 20 20 20 20 20 20 73 65 74 20 75 73 65  .        set use
bea0: 72 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  r [getEnvironmen
beb0: 74 56 61 72 69 61 62 6c 65 20 75 73 65 72 5d 0d  tVariable user].
bec0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
bed0: 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
bee0: 45 3a 20 53 65 74 20 74 68 65 20 74 65 73 74 20  E: Set the test 
bef0: 70 61 73 73 77 6f 72 64 2c 20 69 66 20 6e 65 63  password, if nec
bf00: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23  essary...      #
bf10: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
bf20: 66 6f 20 65 78 69 73 74 73 20 70 61 73 73 77 6f  fo exists passwo
bf30: 72 64 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  rd]} then {..   
bf40: 20 20 20 20 20 73 65 74 20 70 61 73 73 77 6f 72       set passwor
bf50: 64 20 5b 67 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  d [getEnvironmen
bf60: 74 56 61 72 69 61 62 6c 65 20 70 61 73 73 77 6f  tVariable passwo
bf70: 72 64 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  rd]..      }....
bf80: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
bf90: 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65 20 74   NOTE: Set the t
bfa0: 65 73 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e  est database con
bfb0: 6e 65 63 74 69 6f 6e 20 74 79 70 65 2c 20 69 66  nection type, if
bfc0: 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20 20   necessary...   
bfd0: 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
bfe0: 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74 65  ![info exists te
bff0: 73 74 5f 64 61 74 61 62 61 73 65 5f 74 79 70 65  st_database_type
c000: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
c010: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
c020: 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65  NOTE: Use the de
c030: 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 63  fault database c
c040: 6f 6e 6e 65 63 74 69 6f 6e 20 74 79 70 65 2e 0d  onnection type..
c050: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
c060: 20 20 20 20 73 65 74 20 74 65 73 74 5f 64 61 74      set test_dat
c070: 61 62 61 73 65 5f 74 79 70 65 20 53 71 6c 3b 20  abase_type Sql; 
c080: 23 20 54 4f 44 4f 3a 20 47 6f 6f 64 20 74 65 73  # TODO: Good tes
c090: 74 20 64 65 66 61 75 6c 74 3f 0d 0a 20 20 20 20  t default?..    
c0a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
c0b0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65        # NOTE: Se
c0c0: 74 20 74 68 65 20 74 65 73 74 20 64 61 74 61 62  t the test datab
c0d0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  ase connection s
c0e0: 74 72 69 6e 67 2c 20 69 66 20 6e 65 63 65 73 73  tring, if necess
c0f0: 61 72 79 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  ary...      #.. 
c100: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
c110: 65 78 69 73 74 73 20 74 65 73 74 5f 64 61 74 61  exists test_data
c120: 62 61 73 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  base]} then {.. 
c130: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
c140: 20 20 23 20 4e 4f 54 45 3a 20 4d 6f 6e 6f 20 64    # NOTE: Mono d
c150: 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 73 75 70  oes not have sup
c160: 70 6f 72 74 20 66 6f 72 20 22 74 72 75 73 74 65  port for "truste
c170: 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 22 3b 0d  d connections";.
c180: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
c190: 20 74 68 65 72 65 66 6f 72 65 2c 20 77 65 20 6d   therefore, we m
c1a0: 75 73 74 20 65 6d 69 74 20 61 20 64 69 66 66 65  ust emit a diffe
c1b0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
c1c0: 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  string..        
c1d0: 23 20 20 20 20 20 20 20 77 68 65 6e 20 72 75 6e  #       when run
c1e0: 6e 69 6e 67 20 74 68 65 72 65 2e 0d 0a 20 20 20  ning there...   
c1f0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
c200: 73 65 74 20 74 65 73 74 5f 64 61 74 61 62 61 73  set test_databas
c210: 65 20 5b 73 75 62 73 74 20 5c 0d 0a 20 20 20 20  e [subst \..    
c220: 20 20 20 20 20 20 20 20 7b 44 61 74 61 20 53 6f          {Data So
c230: 75 72 63 65 3d 24 7b 73 65 72 76 65 72 7d 3b 49  urce=${server};I
c240: 6e 69 74 69 61 6c 20 43 61 74 61 6c 6f 67 3d 24  nitial Catalog=$
c250: 7b 64 61 74 61 62 61 73 65 7d 3b 43 6f 6e 6e 65  {database};Conne
c260: 63 74 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct\..           
c270: 20 54 69 6d 65 6f 75 74 3d 24 7b 74 69 6d 65 6f   Timeout=${timeo
c280: 75 74 7d 3b 5b 65 78 70 72 20 7b 5b 69 73 4d 6f  ut};[expr {[isMo
c290: 6e 6f 5d 20 3f 20 5b 73 75 62 73 74 20 5c 0d 0a  no] ? [subst \..
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 55 73 65              {Use
c2b0: 72 20 49 64 3d 24 7b 75 73 65 72 7d 3b 50 61 73  r Id=${user};Pas
c2c0: 73 77 6f 72 64 3d 24 7b 70 61 73 73 77 6f 72 64  sword=${password
c2d0: 7d 3b 7d 5d 20 3a 20 7b 49 6e 74 65 67 72 61 74  };}] : {Integrat
c2e0: 65 64 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed\..           
c2f0: 20 53 65 63 75 72 69 74 79 3d 53 53 50 49 3b 7d   Security=SSPI;}
c300: 7d 5d 7d 5d 3b 20 23 20 4e 4f 54 45 3a 20 4d 69  }]}]; # NOTE: Mi
c310: 63 72 6f 73 6f 66 74 20 53 51 4c 20 53 65 72 76  crosoft SQL Serv
c320: 65 72 20 73 70 65 63 69 66 69 63 2e 0d 0a 20 20  er specific...  
c330: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 5b 69      } elseif {[i
c340: 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
c350: 64 61 74 61 62 61 73 65 5f 73 75 62 73 74 5d 7d  database_subst]}
c360: 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
c370: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
c380: 54 45 3a 20 54 68 65 20 74 65 73 74 20 64 61 74  TE: The test dat
c390: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
c3a0: 20 73 74 72 69 6e 67 20 6d 75 73 74 20 62 65 20   string must be 
c3b0: 64 79 6e 61 6d 69 63 61 6c 6c 79 0d 0a 20 20 20  dynamically..   
c3c0: 20 20 20 20 20 23 20 20 20 20 20 20 20 70 6f 73       #       pos
c3d0: 74 2d 70 72 6f 63 65 73 73 65 64 20 75 73 69 6e  t-processed usin
c3e0: 67 20 5b 73 75 62 73 74 5d 2c 20 70 65 72 20 72  g [subst], per r
c3f0: 65 71 75 65 73 74 2e 20 20 54 68 69 73 20 61 6c  equest.  This al
c400: 6c 6f 77 73 0d 0a 20 20 20 20 20 20 20 20 23 20  lows..        # 
c410: 20 20 20 20 20 20 74 68 65 20 5b 63 75 73 74 6f        the [custo
c420: 6d 5d 20 74 65 73 74 20 64 61 74 61 62 61 73 65  m] test database
c430: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69   connection stri
c440: 6e 67 20 74 6f 20 63 6f 6e 74 61 69 6e 0d 0a 20  ng to contain.. 
c450: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 72         #       r
c460: 65 66 65 72 65 6e 63 65 73 20 74 6f 20 74 68 65  eferences to the
c470: 20 6f 74 68 65 72 20 74 65 73 74 20 64 61 74 61   other test data
c480: 62 61 73 65 20 76 61 72 69 61 62 6c 65 73 20 73  base variables s
c490: 65 74 75 70 0d 0a 20 20 20 20 20 20 20 20 23 20  etup..        # 
c4a0: 20 20 20 20 20 20 62 79 20 74 68 69 73 20 74 65        by this te
c4b0: 73 74 20 70 72 6f 6c 6f 67 75 65 2e 0d 0a 20 20  st prologue...  
c4c0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
c4d0: 20 73 65 74 20 74 65 73 74 5f 64 61 74 61 62 61   set test_databa
c4e0: 73 65 20 5b 73 75 62 73 74 20 24 74 65 73 74 5f  se [subst $test_
c4f0: 64 61 74 61 62 61 73 65 5d 0d 0a 20 20 20 20 20  database]..     
c500: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
c510: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 65 74       # NOTE: Set
c520: 20 74 68 65 20 74 65 73 74 20 64 61 74 61 62 61   the test databa
c530: 73 65 20 74 61 62 6c 65 2c 20 69 66 20 6e 65 63  se table, if nec
c540: 65 73 73 61 72 79 2e 0d 0a 20 20 20 20 20 20 23  essary...      #
c550: 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
c560: 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 64  fo exists test_d
c570: 61 74 61 62 61 73 65 5f 74 61 62 6c 65 5d 7d 20  atabase_table]} 
c580: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
c590: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
c5a0: 45 3a 20 55 73 65 20 74 68 65 20 64 65 66 61 75  E: Use the defau
c5b0: 6c 74 20 64 61 74 61 62 61 73 65 20 74 61 62 6c  lt database tabl
c5c0: 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  e...        #.. 
c5d0: 20 20 20 20 20 20 20 73 65 74 20 74 65 73 74 5f         set test_
c5e0: 64 61 74 61 62 61 73 65 5f 74 61 62 6c 65 20 65  database_table e
c5f0: 61 67 6c 65 5f 73 71 6c 5f 74 65 73 74 5f 6f 6b  agle_sql_test_ok
c600: 5f 74 6f 5f 64 65 6c 65 74 65 0d 0a 20 20 20 20  _to_delete..    
c610: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
c620: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 43 61        # NOTE: Ca
c630: 6e 20 77 65 20 61 63 63 65 73 73 20 74 68 65 20  n we access the 
c640: 63 6f 6e 66 69 67 75 72 65 64 20 74 65 73 74 20  configured test 
c650: 64 61 74 61 62 61 73 65 3f 0d 0a 20 20 20 20 20  database?..     
c660: 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   #..      checkF
c670: 6f 72 44 61 74 61 62 61 73 65 20 24 74 65 73 74  orDatabase $test
c680: 5f 63 68 61 6e 6e 65 6c 20 24 74 65 73 74 5f 64  _channel $test_d
c690: 61 74 61 62 61 73 65 5f 74 79 70 65 20 24 74 65  atabase_type $te
c6a0: 73 74 5f 64 61 74 61 62 61 73 65 0d 0a 0d 0a 20  st_database.... 
c6b0: 20 20 20 20 20 75 6e 73 65 74 20 70 61 73 73 77       unset passw
c6c0: 6f 72 64 20 75 73 65 72 20 74 69 6d 65 6f 75 74  ord user timeout
c6d0: 20 64 61 74 61 62 61 73 65 20 73 65 72 76 65 72   database server
c6e0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
c6f0: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
c700: 73 20 73 79 6d 62 6f 6c 20 74 65 73 74 69 6e 67  s symbol testing
c710: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
c720: 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
c730: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
c740: 78 69 73 74 73 20 6e 6f 28 61 73 73 65 6d 62 6c  xists no(assembl
c750: 79 53 79 6d 62 6f 6c 73 29 5d 7d 20 74 68 65 6e  ySymbols)]} then
c760: 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
c770: 6f 72 53 79 6d 62 6f 6c 73 20 24 74 65 73 74 5f  orSymbols $test_
c780: 63 68 61 6e 6e 65 6c 20 5b 6c 69 6e 64 65 78 20  channel [lindex 
c790: 5b 69 6e 66 6f 20 61 73 73 65 6d 62 6c 79 5d 20  [info assembly] 
c7a0: 65 6e 64 5d 20 61 73 73 65 6d 62 6c 79 0d 0a 20  end] assembly.. 
c7b0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20     }....    #.. 
c7c0: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6f     # NOTE: Has o
c7d0: 62 6a 65 63 74 20 68 61 6e 64 6c 65 20 72 65 66  bject handle ref
c7e0: 65 72 65 6e 63 65 20 63 6f 75 6e 74 20 74 72 61  erence count tra
c7f0: 63 6b 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  cking support be
c800: 65 6e 20 64 69 73 61 62 6c 65 64 0d 0a 20 20 20  en disabled..   
c810: 20 23 20 20 20 20 20 20 20 28 61 74 20 63 6f 6d   #       (at com
c820: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
c830: 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
c840: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65 66  fo exists no(ref
c850: 43 6f 75 6e 74 29 5d 7d 20 74 68 65 6e 20 7b 0d  Count)]} then {.
c860: 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
c870: 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
c880: 73 20 22 65 78 63 65 6c 2d 2a 22 2c 20 22 6f 62  s "excel-*", "ob
c890: 6a 65 63 74 2d 32 2e 2a 22 2c 20 22 6f 62 6a 65  ject-2.*", "obje
c8a0: 63 74 2d 37 2e 31 22 2c 20 22 6f 62 6a 65 63 74  ct-7.1", "object
c8b0: 2d 38 2e 2a 22 2c 0d 0a 20 20 20 20 20 20 23 20  -8.*",..      # 
c8c0: 20 20 20 20 20 20 61 6e 64 20 22 6f 62 6a 65 63        and "objec
c8d0: 74 2d 39 38 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  t-98.*"...      
c8e0: 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  #..      checkFo
c8f0: 72 52 65 66 65 72 65 6e 63 65 43 6f 75 6e 74 54  rReferenceCountT
c900: 72 61 63 6b 69 6e 67 20 24 74 65 73 74 5f 63 68  racking $test_ch
c910: 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
c920: 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
c930: 45 3a 20 48 61 73 20 63 6f 6d 70 69 6c 65 2f 72  E: Has compile/r
c940: 75 6e 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 65  untime option te
c950: 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
c960: 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
c970: 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
c980: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
c990: 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 29 5d 7d 20  mpileOptions)]} 
c9a0: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
c9b0: 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
c9c0: 61 73 20 22 6b 6e 6f 77 6e 22 20 63 6f 6d 70 69  as "known" compi
c9d0: 6c 65 20 6f 70 74 69 6f 6e 20 74 65 73 74 69 6e  le option testin
c9e0: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
c9f0: 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
ca00: 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
ca10: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6b 6e  nfo exists no(kn
ca20: 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ownCompileOption
ca30: 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
ca40: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
ca50: 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f  # NOTE: Check fo
ca60: 72 20 61 6c 6c 20 22 6b 6e 6f 77 6e 22 20 63 6f  r all "known" co
ca70: 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 73 2e 0d 0a  mpile options...
ca80: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ca90: 20 20 20 63 68 65 63 6b 46 6f 72 4b 6e 6f 77 6e     checkForKnown
caa0: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 20 24  CompileOptions $
cab0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
cac0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
cad0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
cae0: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 61 6c   # NOTE: Has cal
caf0: 6c 62 61 63 6b 20 71 75 65 75 65 20 73 75 70 70  lback queue supp
cb00: 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64  ort been enabled
cb10: 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   (at compile-tim
cb20: 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e)?..        #..
cb30: 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e          if {![in
cb40: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d  fo exists no(com
cb50: 70 69 6c 65 43 61 6c 6c 62 61 63 6b 51 75 65 75  pileCallbackQueu
cb60: 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
cb70: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
cb80: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
cb90: 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e 35  tests "basic-1.5
cba0: 34 22 20 61 6e 64 20 22 63 6f 6d 6d 61 6e 64 73  4" and "commands
cbb0: 2d 31 2e 34 22 2e 0d 0a 20 20 20 20 20 20 20 20  -1.4"...        
cbc0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
cbd0: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
cbe0: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
cbf0: 65 6c 20 43 41 4c 4c 42 41 43 4b 5f 51 55 45 55  el CALLBACK_QUEU
cc00: 45 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  E..        }....
cc10: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
cc20: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6c     # NOTE: Has l
cc30: 65 67 61 63 79 20 43 41 53 20 70 6f 6c 69 63 79  egacy CAS policy
cc40: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
cc50: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
cc60: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
cc70: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
cc80: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
cc90: 6f 28 63 6f 6d 70 69 6c 65 43 61 73 50 6f 6c 69  o(compileCasPoli
cca0: 63 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  cy)]} then {..  
ccb0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ccc0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
ccd0: 20 74 65 73 74 73 20 22 6c 6f 61 64 2d 31 2e 36   tests "load-1.6
cce0: 22 20 61 6e 64 20 22 6c 6f 61 64 2d 31 2e 37 22  " and "load-1.7"
ccf0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
cd00: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
cd10: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
cd20: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 43 41  $test_channel CA
cd30: 53 5f 50 4f 4c 49 43 59 0d 0a 20 20 20 20 20 20  S_POLICY..      
cd40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
cd50: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
cd60: 3a 20 48 61 73 20 63 6f 6e 66 69 67 75 72 61 74  : Has configurat
cd70: 69 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ion support been
cd80: 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d   enabled (at com
cd90: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
cda0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
cdb0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
cdc0: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 43 6f 6e 66  s no(compileConf
cdd0: 69 67 75 72 61 74 69 6f 6e 29 5d 7d 20 74 68 65  iguration)]} the
cde0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
cdf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
ce00: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 64  TE: For tests "d
ce10: 65 62 75 67 2d 31 2e 33 22 2c 20 22 6f 62 6a 65  ebug-1.3", "obje
ce20: 63 74 2d 39 39 2e 31 22 2c 20 22 6f 62 6a 65 63  ct-99.1", "objec
ce30: 74 2d 31 31 2e 34 22 2c 0d 0a 20 20 20 20 20 20  t-11.4",..      
ce40: 20 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20      #       and 
ce50: 22 67 61 72 75 64 61 2d 31 2e 32 22 2e 0d 0a 20  "garuda-1.2"... 
ce60: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
ce70: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
ce80: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
ce90: 74 5f 63 68 61 6e 6e 65 6c 20 43 4f 4e 46 49 47  t_channel CONFIG
cea0: 55 52 41 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20  URATION..       
ceb0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
cec0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
ced0: 20 48 61 73 20 63 6f 6e 73 6f 6c 65 20 73 75 70   Has console sup
cee0: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
cef0: 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  d (at compile-ti
cf00: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
cf10: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
cf20: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
cf30: 6d 70 69 6c 65 43 6f 6e 73 6f 6c 65 29 5d 7d 20  mpileConsole)]} 
cf40: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
cf50: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
cf60: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
cf70: 22 68 6f 73 74 2d 31 2e 32 22 2e 0d 0a 20 20 20  "host-1.2"...   
cf80: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
cf90: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
cfa0: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
cfb0: 63 68 61 6e 6e 65 6c 20 43 4f 4e 53 4f 4c 45 0d  channel CONSOLE.
cfc0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
cfd0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
cfe0: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 64 61 74   # NOTE: Has dat
cff0: 61 62 61 73 65 20 73 75 70 70 6f 72 74 20 62 65  abase support be
d000: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63  en enabled (at c
d010: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
d020: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
d030: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
d040: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 44 61  sts no(compileDa
d050: 74 61 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ta)]} then {..  
d060: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d070: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
d080: 20 74 65 73 74 73 20 22 73 71 6c 2d 31 2e 31 22   tests "sql-1.1"
d090: 20 61 6e 64 20 22 75 70 76 61 72 2d 39 39 2e 31   and "upvar-99.1
d0a0: 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d  "...          #.
d0b0: 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b  .          check
d0c0: 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e  ForCompileOption
d0d0: 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 44   $test_channel D
d0e0: 41 54 41 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ATA..        }..
d0f0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
d100: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
d110: 20 73 63 72 69 70 74 20 64 65 62 75 67 67 65 72   script debugger
d120: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
d130: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
d140: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
d150: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
d160: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
d170: 6f 28 63 6f 6d 70 69 6c 65 44 65 62 75 67 67 65  o(compileDebugge
d180: 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  r)]} then {..   
d190: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
d1a0: 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
d1b0: 74 65 73 74 73 20 22 64 65 62 75 67 2d 31 2e 31  tests "debug-1.1
d1c0: 22 2c 20 22 64 65 62 75 67 2d 32 2e 31 22 2c 20  ", "debug-2.1", 
d1d0: 22 64 65 62 75 67 2d 33 2e 31 22 2c 0d 0a 20 20  "debug-3.1",..  
d1e0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
d1f0: 22 64 65 62 75 67 2d 34 2e 31 22 2c 20 61 6e 64  "debug-4.1", and
d200: 20 22 70 72 6f 63 2d 32 2e 31 22 2e 0d 0a 20 20   "proc-2.1"...  
d210: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d220: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
d230: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
d240: 5f 63 68 61 6e 6e 65 6c 20 44 45 42 55 47 47 45  _channel DEBUGGE
d250: 52 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  R..        }....
d260: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d270: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73     # NOTE: Has s
d280: 63 72 69 70 74 20 64 65 62 75 67 67 65 72 20 61  cript debugger a
d290: 72 67 75 6d 65 6e 74 73 20 73 75 70 70 6f 72 74  rguments support
d2a0: 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61   been enabled (a
d2b0: 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  t..        #    
d2c0: 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29     compile-time)
d2d0: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
d2e0: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
d2f0: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
d300: 6c 65 44 65 62 75 67 67 65 72 41 72 67 75 6d 65  leDebuggerArgume
d310: 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  nts)]} then {.. 
d320: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
d330: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
d340: 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d  r tests "object-
d350: 35 2e 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20  5.1.*"...       
d360: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
d370: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
d380: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
d390: 6e 65 6c 20 44 45 42 55 47 47 45 52 5f 41 52 47  nel DEBUGGER_ARG
d3a0: 55 4d 45 4e 54 53 0d 0a 20 20 20 20 20 20 20 20  UMENTS..        
d3b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
d3c0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
d3d0: 48 61 73 20 73 63 72 69 70 74 20 61 72 67 75 6d  Has script argum
d3e0: 65 6e 74 73 20 73 74 61 63 6b 20 73 75 70 70 6f  ents stack suppo
d3f0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
d400: 28 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20  (at..        #  
d410: 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d       compile-tim
d420: 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  e)?..        #..
d430: 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e          if {![in
d440: 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d  fo exists no(com
d450: 70 69 6c 65 53 63 72 69 70 74 41 72 67 75 6d 65  pileScriptArgume
d460: 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  nts)]} then {.. 
d470: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
d480: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
d490: 72 20 74 65 73 74 20 22 64 65 62 75 67 2d 32 2e  r test "debug-2.
d4a0: 38 36 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  86"...          
d4b0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65  #..          che
d4c0: 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69  ckForCompileOpti
d4d0: 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  on $test_channel
d4e0: 20 53 43 52 49 50 54 5f 41 52 47 55 4d 45 4e 54   SCRIPT_ARGUMENT
d4f0: 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  S..        }....
d500: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d510: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73     # NOTE: Has s
d520: 63 72 69 70 74 20 62 72 65 61 6b 70 6f 69 6e 74  cript breakpoint
d530: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
d540: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
d550: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
d560: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
d570: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
d580: 6f 28 63 6f 6d 70 69 6c 65 42 72 65 61 6b 70 6f  o(compileBreakpo
d590: 69 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ints)]} then {..
d5a0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
d5b0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
d5c0: 6f 72 20 74 65 73 74 20 22 70 72 6f 63 2d 32 2e  or test "proc-2.
d5d0: 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  1"...          #
d5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
d5f0: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
d600: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
d610: 42 52 45 41 4b 50 4f 49 4e 54 53 0d 0a 20 20 20  BREAKPOINTS..   
d620: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
d630: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
d640: 4f 54 45 3a 20 48 61 73 20 61 70 70 6c 69 63 61  OTE: Has applica
d650: 74 69 6f 6e 20 64 6f 6d 61 69 6e 20 6d 61 6e 61  tion domain mana
d660: 67 65 6d 65 6e 74 20 73 75 70 70 6f 72 74 20 62  gement support b
d670: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d  een enabled (at.
d680: 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
d690: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
d6a0: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
d6b0: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
d6c0: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
d6d0: 41 70 70 44 6f 6d 61 69 6e 73 29 5d 7d 20 74 68  AppDomains)]} th
d6e0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
d6f0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
d700: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69  OTE: For test "i
d710: 6e 74 65 72 70 2d 31 2e 32 37 22 2e 0d 0a 20 20  nterp-1.27"...  
d720: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d730: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
d740: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
d750: 5f 63 68 61 6e 6e 65 6c 20 41 50 50 44 4f 4d 41  _channel APPDOMA
d760: 49 4e 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  INS..        }..
d770: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
d780: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
d790: 20 69 73 6f 6c 61 74 65 64 20 69 6e 74 65 72 70   isolated interp
d7a0: 72 65 74 65 72 20 73 75 70 70 6f 72 74 20 62 65  reter support be
d7b0: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63  en enabled (at c
d7c0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
d7d0: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
d7e0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
d7f0: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 49 73  sts no(compileIs
d800: 6f 6c 61 74 65 64 49 6e 74 65 72 70 72 65 74 65  olatedInterprete
d810: 72 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rs)]} then {..  
d820: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
d830: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
d840: 20 74 65 73 74 20 22 78 61 6d 6c 2d 31 2e 32 22   test "xaml-1.2"
d850: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
d860: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
d870: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
d880: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 49 53  $test_channel IS
d890: 4f 4c 41 54 45 44 5f 49 4e 54 45 52 50 52 45 54  OLATED_INTERPRET
d8a0: 45 52 53 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ERS..        }..
d8b0: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
d8c0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
d8d0: 20 65 78 70 72 65 73 73 69 6f 6e 20 66 6c 61 67   expression flag
d8e0: 73 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  s support been e
d8f0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
d900: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
d910: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
d920: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
d930: 6e 6f 28 63 6f 6d 70 69 6c 65 45 78 70 72 65 73  no(compileExpres
d940: 73 69 6f 6e 46 6c 61 67 73 29 5d 7d 20 74 68 65  sionFlags)]} the
d950: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
d960: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
d970: 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 66 75  TE: For test "fu
d980: 6e 63 74 69 6f 6e 2d 32 2e 31 36 22 2e 0d 0a 20  nction-2.16"... 
d990: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
d9a0: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
d9b0: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
d9c0: 74 5f 63 68 61 6e 6e 65 6c 20 45 58 50 52 45 53  t_channel EXPRES
d9d0: 53 49 4f 4e 5f 46 4c 41 47 53 0d 0a 20 20 20 20  SION_FLAGS..    
d9e0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
d9f0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
da00: 54 45 3a 20 48 61 73 20 69 73 6f 6c 61 74 65 64  TE: Has isolated
da10: 20 70 6c 75 67 69 6e 20 73 75 70 70 6f 72 74 20   plugin support 
da20: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
da30: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d   compile-time)?.
da40: 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
da50: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
da60: 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65  xists no(compile
da70: 49 73 6f 6c 61 74 65 64 50 6c 75 67 69 6e 73 29  IsolatedPlugins)
da80: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
da90: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
daa0: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
dab0: 73 74 20 22 6c 6f 61 64 2d 31 2e 31 2e 31 22 2e  st "load-1.1.1".
dac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
dad0: 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f           checkFo
dae0: 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24  rCompileOption $
daf0: 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 49 53 4f  test_channel ISO
db00: 4c 41 54 45 44 5f 50 4c 55 47 49 4e 53 0d 0a 20  LATED_PLUGINS.. 
db10: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
db20: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
db30: 20 4e 4f 54 45 3a 20 48 61 73 20 50 6f 77 65 72   NOTE: Has Power
db40: 53 68 65 6c 6c 20 61 70 70 72 6f 76 65 64 2d 76  Shell approved-v
db50: 65 72 62 73 20 73 75 70 70 6f 72 74 20 62 65 65  erbs support bee
db60: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a 20  n enabled (at.. 
db70: 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 63         #       c
db80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
db90: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
dba0: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
dbb0: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 41 70  sts no(compileAp
dbc0: 70 72 6f 76 65 64 56 65 72 62 73 29 5d 7d 20 74  provedVerbs)]} t
dbd0: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
dbe0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
dbf0: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
dc00: 6f 62 6a 65 63 74 2d 34 2e 38 22 2e 0d 0a 20 20  object-4.8"...  
dc10: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
dc20: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
dc30: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
dc40: 5f 63 68 61 6e 6e 65 6c 20 41 50 50 52 4f 56 45  _channel APPROVE
dc50: 44 5f 56 45 52 42 53 0d 0a 20 20 20 20 20 20 20  D_VERBS..       
dc60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
dc70: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
dc80: 20 48 61 73 20 65 6d 62 65 64 64 65 64 20 6c 69   Has embedded li
dc90: 62 72 61 72 79 20 73 75 70 70 6f 72 74 20 62 65  brary support be
dca0: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a  en enabled (at..
dcb0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
dcc0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
dcd0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
dce0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
dcf0: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 45  ists no(compileE
dd00: 6d 62 65 64 64 65 64 4c 69 62 72 61 72 79 29 5d  mbeddedLibrary)]
dd10: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
dd20: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
dd30: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
dd40: 74 20 22 69 6e 74 65 72 70 2d 31 2e 34 30 30 22  t "interp-1.400"
dd50: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
dd60: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
dd70: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
dd80: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 4d  $test_channel EM
dd90: 42 45 44 44 45 44 5f 4c 49 42 52 41 52 59 0d 0a  BEDDED_LIBRARY..
dda0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ddb0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
ddc0: 23 20 4e 4f 54 45 3a 20 48 61 73 20 53 79 73 74  # NOTE: Has Syst
ddd0: 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 2e 45 6d  em.Reflection.Em
dde0: 69 74 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  it support been 
ddf0: 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a 20 20 20  enabled (at..   
de00: 20 20 20 20 20 23 20 20 20 20 20 20 20 63 6f 6d       #       com
de10: 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20  pile-time)?..   
de20: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
de30: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
de40: 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 45 6d 69 74  s no(compileEmit
de50: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
de60: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
de70: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
de80: 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31  ests "commands-1
de90: 2e 31 2e 2a 22 2c 20 22 64 65 62 75 67 2d 39 2e  .1.*", "debug-9.
dea0: 31 22 2c 20 22 6c 69 62 72 61 72 79 2d 2a 22 2c  1", "library-*",
deb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
dec0: 20 20 20 20 22 6f 62 6a 65 63 74 2d 34 2e 31 30      "object-4.10
ded0: 22 2c 20 22 6f 62 6a 65 63 74 2d 34 2e 31 31 22  ", "object-4.11"
dee0: 2c 20 22 6f 62 6a 65 63 74 2d 34 2e 31 32 22 2c  , "object-4.12",
def0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20  ..          #   
df00: 20 20 20 20 22 6f 62 6a 65 63 74 2d 38 2e 31 3f      "object-8.1?
df10: 3f 22 2c 20 61 6e 64 20 22 70 65 72 66 2d 31 30  ?", and "perf-10
df20: 31 2e 30 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  1.0"...         
df30: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
df40: 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
df50: 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
df60: 6c 20 45 4d 49 54 0d 0a 20 20 20 20 20 20 20 20  l EMIT..        
df70: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
df80: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
df90: 48 61 73 20 2e 4e 45 54 20 53 74 61 6e 64 61 72  Has .NET Standar
dfa0: 64 20 32 2e 30 20 73 75 70 70 6f 72 74 20 62 65  d 2.0 support be
dfb0: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 0d 0a  en enabled (at..
dfc0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
dfd0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
dfe0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
dff0: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
e000: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e  ists no(compileN
e010: 65 74 53 74 61 6e 64 61 72 64 32 30 29 5d 7d 20  etStandard20)]} 
e020: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
e030: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
e040: 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
e050: 20 22 62 61 73 69 63 2d 31 2e 32 39 2e 2a 22 2c   "basic-1.29.*",
e060: 20 22 62 61 73 69 63 2d 31 2e 33 30 2e 2a 22 2c   "basic-1.30.*",
e070: 20 22 68 6f 73 74 2d 31 2e 31 22 2c 0d 0a 20 20   "host-1.1",..  
e080: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
e090: 22 69 6e 74 65 72 70 2d 31 2e 36 30 31 22 2c 20  "interp-1.601", 
e0a0: 22 72 65 64 65 66 69 6e 65 2d 36 2e 32 22 2c 20  "redefine-6.2", 
e0b0: 61 6e 64 20 22 73 71 6c 2d 31 2e 31 37 22 2e 0d  and "sql-1.17"..
e0c0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
e0d0: 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
e0e0: 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74  CompileOption $t
e0f0: 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 45 54 5f  est_channel NET_
e100: 53 54 41 4e 44 41 52 44 5f 32 30 0d 0a 20 20 20  STANDARD_20..   
e110: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e120: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
e130: 4f 54 45 3a 20 48 61 73 20 4d 6f 6e 6f 20 73 75  OTE: Has Mono su
e140: 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
e150: 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
e160: 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
e170: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
e180: 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
e190: 6f 6d 70 69 6c 65 4d 6f 6e 6f 29 5d 7d 20 74 68  ompileMono)]} th
e1a0: 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
e1b0: 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
e1c0: 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
e1d0: 62 6a 65 63 74 2d 34 2e 31 33 22 2e 0d 0a 20 20  bject-4.13"...  
e1e0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e1f0: 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d       checkForCom
e200: 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74  pileOption $test
e210: 5f 63 68 61 6e 6e 65 6c 20 4d 4f 4e 4f 0d 0a 20  _channel MONO.. 
e220: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e230: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e240: 20 4e 4f 54 45 3a 20 48 61 73 20 57 69 6e 64 6f   NOTE: Has Windo
e250: 77 73 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ws support been 
e260: 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70  enabled (at comp
e270: 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20  ile-time)?..    
e280: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69      #..        i
e290: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
e2a0: 20 6e 6f 28 63 6f 6d 70 69 6c 65 57 69 6e 64 6f   no(compileWindo
e2b0: 77 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ws)]} then {..  
e2c0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e2d0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
e2e0: 20 74 65 73 74 73 20 22 67 61 72 75 64 61 2d 31   tests "garuda-1
e2f0: 2e 31 22 20 61 6e 64 20 22 67 61 72 75 64 61 2d  .1" and "garuda-
e300: 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  1.2"...         
e310: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
e320: 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
e330: 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
e340: 6c 20 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20  l WINDOWS..     
e350: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e360: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
e370: 45 3a 20 48 61 73 20 57 69 6e 64 6f 77 73 20 46  E: Has Windows F
e380: 6f 72 6d 73 20 73 75 70 70 6f 72 74 20 62 65 65  orms support bee
e390: 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f  n enabled (at co
e3a0: 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20  mpile-time)?..  
e3b0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
e3c0: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
e3d0: 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 57 69 6e  ts no(compileWin
e3e0: 46 6f 72 6d 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  Forms)]} then {.
e3f0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
e400: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
e410: 46 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63  For tests "objec
e420: 74 2d 31 30 2e 32 31 22 2c 20 22 74 63 6c 4c 6f  t-10.21", "tclLo
e430: 61 64 2d 31 2e 32 22 2c 20 22 77 69 6e 46 6f 72  ad-1.2", "winFor
e440: 6d 73 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  ms-*.*"...      
e450: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
e460: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
e470: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
e480: 6e 6e 65 6c 20 57 49 4e 46 4f 52 4d 53 0d 0a 20  nnel WINFORMS.. 
e490: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
e4a0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
e4b0: 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74 69 76   NOTE: Has nativ
e4c0: 65 20 6c 69 62 72 61 72 79 20 73 75 70 70 6f 72  e library suppor
e4d0: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
e4e0: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
e4f0: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
e500: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
e510: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
e520: 6c 65 4c 69 62 72 61 72 79 29 5d 7d 20 74 68 65  leLibrary)]} the
e530: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
e540: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
e550: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 63  TE: For tests "c
e560: 6f 6d 6d 61 6e 64 73 2d 31 2e 2a 22 2e 0d 0a 20  ommands-1.*"... 
e570: 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
e580: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
e590: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
e5a0: 74 5f 63 68 61 6e 6e 65 6c 20 4c 49 42 52 41 52  t_channel LIBRAR
e5b0: 59 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  Y..        }....
e5c0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
e5d0: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e     # NOTE: Has n
e5e0: 61 74 69 76 65 20 63 6f 64 65 20 73 75 70 70 6f  ative code suppo
e5f0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
e600: 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  (at compile-time
e610: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
e620: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
e630: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
e640: 69 6c 65 4e 61 74 69 76 65 29 5d 7d 20 74 68 65  ileNative)]} the
e650: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
e660: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
e670: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 64  TE: For tests "d
e680: 65 62 75 67 2d 33 2e 32 22 2c 20 22 65 78 70 72  ebug-3.2", "expr
e690: 2d 33 2e 32 22 2c 20 61 6e 64 20 22 68 6f 73 74  -3.2", and "host
e6a0: 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20  -1.1"...        
e6b0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
e6c0: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
e6d0: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
e6e0: 65 6c 20 4e 41 54 49 56 45 0d 0a 20 20 20 20 20  el NATIVE..     
e6f0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e700: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
e710: 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 70 61  E: Has native pa
e720: 63 6b 61 67 65 20 73 75 70 70 6f 72 74 20 62 65  ckage support be
e730: 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20 63  en enabled (at c
e740: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20  ompile-time)?.. 
e750: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
e760: 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
e770: 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4e 61  sts no(compileNa
e780: 74 69 76 65 50 61 63 6b 61 67 65 29 5d 7d 20 74  tivePackage)]} t
e790: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
e7a0: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
e7b0: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
e7c0: 22 67 61 72 75 64 61 2d 31 2e 31 22 20 61 6e 64  "garuda-1.1" and
e7d0: 20 22 67 61 72 75 64 61 2d 31 2e 32 22 2e 0d 0a   "garuda-1.2"...
e7e0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
e7f0: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
e800: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
e810: 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 41 54 49 56  st_channel NATIV
e820: 45 5f 50 41 43 4b 41 47 45 0d 0a 20 20 20 20 20  E_PACKAGE..     
e830: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e840: 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
e850: 45 3a 20 48 61 73 20 6e 65 74 77 6f 72 6b 20 73  E: Has network s
e860: 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62  upport been enab
e870: 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d  led (at compile-
e880: 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20  time)?..        
e890: 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21  #..        if {!
e8a0: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
e8b0: 63 6f 6d 70 69 6c 65 4e 65 74 77 6f 72 6b 29 5d  compileNetwork)]
e8c0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
e8d0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
e8e0: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
e8f0: 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d 31 2e 34  ts "commands-1.4
e900: 22 2c 20 22 73 6f 63 6b 65 74 2d 31 2e 2a 22 2c  ", "socket-1.*",
e910: 20 22 73 6f 63 6b 65 74 2d 32 2e 31 22 2c 20 61   "socket-2.1", a
e920: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20  nd..          # 
e930: 20 20 20 20 20 20 22 73 6f 63 6b 65 74 2d 33 2e        "socket-3.
e940: 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23  1"...          #
e950: 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68 65 63  ..          chec
e960: 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f  kForCompileOptio
e970: 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  n $test_channel 
e980: 4e 45 54 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20  NETWORK..       
e990: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
e9a0: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
e9b0: 20 48 61 73 20 6e 6f 74 69 66 69 63 61 74 69 6f   Has notificatio
e9c0: 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65  n support been e
e9d0: 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69  nabled (at compi
e9e0: 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20  le-time)?..     
e9f0: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66     #..        if
ea00: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
ea10: 6e 6f 28 63 6f 6d 70 69 6c 65 4e 6f 74 69 66 79  no(compileNotify
ea20: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
ea30: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
ea40: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
ea50: 65 73 74 20 22 62 61 73 69 63 2d 31 2e 37 35 22  est "basic-1.75"
ea60: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
ea70: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
ea80: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
ea90: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 4f  $test_channel NO
eaa0: 54 49 46 59 0d 0a 20 20 20 20 20 20 20 20 7d 0d  TIFY..        }.
eab0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
eac0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
ead0: 73 20 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20 61  s notification a
eae0: 72 67 75 6d 65 6e 74 20 73 75 70 70 6f 72 74 20  rgument support 
eaf0: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
eb00: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
eb10: 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f    compile-time)?
eb20: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
eb30: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
eb40: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
eb50: 65 4e 6f 74 69 66 79 41 72 67 75 6d 65 6e 74 73  eNotifyArguments
eb60: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
eb70: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
eb80: 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
eb90: 65 73 74 20 22 62 61 73 69 63 2d 31 2e 37 35 22  est "basic-1.75"
eba0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
ebb0: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
ebc0: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
ebd0: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 4e 4f  $test_channel NO
ebe0: 54 49 46 59 5f 41 52 47 55 4d 45 4e 54 53 0d 0a  TIFY_ARGUMENTS..
ebf0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
ec00: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
ec10: 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74 69  # NOTE: Has nati
ec20: 76 65 20 54 63 6c 20 73 75 70 70 6f 72 74 20 62  ve Tcl support b
ec30: 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74 20  een enabled (at 
ec40: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a  compile-time)?..
ec50: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
ec60: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
ec70: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 54  ists no(compileT
ec80: 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  cl)]} then {..  
ec90: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
eca0: 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
ecb0: 20 74 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73   tests "commands
ecc0: 2d 31 2e 31 2e 2a 22 2c 20 22 65 78 63 65 6c 2d  -1.1.*", "excel-
ecd0: 32 2e 32 22 2c 20 22 74 63 6c 43 61 6e 63 65 6c  2.2", "tclCancel
ece0: 2d 31 2e 31 22 2c 0d 0a 20 20 20 20 20 20 20 20  -1.1",..        
ecf0: 20 20 23 20 20 20 20 20 20 20 22 74 63 6c 45 6e    #       "tclEn
ed00: 63 6f 64 69 6e 67 2d 31 2e 2a 22 2c 20 22 74 63  coding-1.*", "tc
ed10: 6c 45 72 72 6f 72 49 6e 66 6f 2d 31 2e 2a 22 2c  lErrorInfo-1.*",
ed20: 20 22 74 63 6c 4c 6f 61 64 2d 2a 2e 2a 22 2c 0d   "tclLoad-*.*",.
ed30: 0a 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20  .          #    
ed40: 20 20 20 22 74 63 6c 52 65 73 65 74 43 61 6e 63     "tclResetCanc
ed50: 65 6c 2d 31 2e 31 22 2c 20 22 74 63 6c 52 65 73  el-1.1", "tclRes
ed60: 65 74 43 61 6e 63 65 6c 2d 32 2e 31 22 2c 0d 0a  etCancel-2.1",..
ed70: 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20            #     
ed80: 20 20 22 74 63 6c 52 65 73 65 74 43 61 6e 63 65    "tclResetCance
ed90: 6c 2d 32 2e 32 22 2c 20 22 74 63 6c 52 65 73 65  l-2.2", "tclRese
eda0: 74 43 61 6e 63 65 6c 2d 33 2e 31 22 2c 0d 0a 20  tCancel-3.1",.. 
edb0: 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
edc0: 20 22 74 63 6c 52 65 73 65 74 43 61 6e 63 65 6c   "tclResetCancel
edd0: 2d 34 2e 31 22 2c 20 22 74 63 6c 53 65 74 2d 31  -4.1", "tclSet-1
ede0: 2e 31 22 2c 20 61 6e 64 20 22 74 63 6c 53 75 62  .1", and "tclSub
edf0: 73 74 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20  st-1.1"...      
ee00: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
ee10: 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65   checkForCompile
ee20: 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  Option $test_cha
ee30: 6e 6e 65 6c 20 54 43 4c 0d 0a 20 20 20 20 20 20  nnel TCL..      
ee40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
ee50: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
ee60: 3a 20 48 61 73 20 58 4d 4c 20 73 75 70 70 6f 72  : Has XML suppor
ee70: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
ee80: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29  at compile-time)
ee90: 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ?..        #..  
eea0: 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
eeb0: 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69   exists no(compi
eec0: 6c 65 58 6d 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d  leXml)]} then {.
eed0: 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
eee0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
eef0: 46 6f 72 20 74 65 73 74 73 20 22 63 6f 6d 6d 61  For tests "comma
ef00: 6e 64 73 2d 31 2e 34 22 2c 20 22 6f 62 6a 65 63  nds-1.4", "objec
ef10: 74 2d 37 2e 33 22 20 61 6e 64 20 22 78 6d 6c 2d  t-7.3" and "xml-
ef20: 31 2e 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20  1.1.*"...       
ef30: 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
ef40: 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f  checkForCompileO
ef50: 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e  ption $test_chan
ef60: 6e 65 6c 20 58 4d 4c 0d 0a 20 20 20 20 20 20 20  nel XML..       
ef70: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d   }....        #.
ef80: 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
ef90: 20 48 61 73 20 73 65 72 69 61 6c 69 7a 61 74 69   Has serializati
efa0: 6f 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  on support been 
efb0: 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70  enabled (at comp
efc0: 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20  ile-time)?..    
efd0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69      #..        i
efe0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
eff0: 20 6e 6f 28 63 6f 6d 70 69 6c 65 53 65 72 69 61   no(compileSeria
f000: 6c 69 7a 61 74 69 6f 6e 29 5d 7d 20 74 68 65 6e  lization)]} then
f010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
f020: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
f030: 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69 6e 74  E: For test "int
f040: 65 72 70 2d 31 2e 31 30 22 2e 0d 0a 20 20 20 20  erp-1.10"...    
f050: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
f060: 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69     checkForCompi
f070: 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63  leOption $test_c
f080: 68 61 6e 6e 65 6c 20 53 45 52 49 41 4c 49 5a 41  hannel SERIALIZA
f090: 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  TION..        }.
f0a0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
f0b0: 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
f0c0: 73 20 72 65 6d 6f 74 69 6e 67 20 73 75 70 70 6f  s remoting suppo
f0d0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
f0e0: 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  (at compile-time
f0f0: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
f100: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
f110: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
f120: 69 6c 65 52 65 6d 6f 74 69 6e 67 29 5d 7d 20 74  ileRemoting)]} t
f130: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
f140: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
f150: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
f160: 22 72 65 6d 6f 74 69 6e 67 53 65 72 76 65 72 2d  "remotingServer-
f170: 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  1.*"...         
f180: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
f190: 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
f1a0: 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
f1b0: 6c 20 52 45 4d 4f 54 49 4e 47 0d 0a 20 20 20 20  l REMOTING..    
f1c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
f1d0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
f1e0: 54 45 3a 20 48 61 73 20 72 65 73 75 6c 74 20 73  TE: Has result s
f1f0: 69 7a 65 20 6c 69 6d 69 74 20 73 75 70 70 6f 72  ize limit suppor
f200: 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28  t been enabled (
f210: 61 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20  at..        #   
f220: 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65      compile-time
f230: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
f240: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
f250: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
f260: 69 6c 65 52 65 73 75 6c 74 4c 69 6d 69 74 73 29  ileResultLimits)
f270: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
f280: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
f290: 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
f2a0: 73 74 73 20 22 69 6e 74 65 72 70 2d 31 2e 35 30  sts "interp-1.50
f2b0: 30 22 20 61 6e 64 20 22 69 6e 74 65 72 70 2d 31  0" and "interp-1
f2c0: 2e 35 30 31 22 2e 0d 0a 20 20 20 20 20 20 20 20  .501"...        
f2d0: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63    #..          c
f2e0: 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70  heckForCompileOp
f2f0: 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e  tion $test_chann
f300: 65 6c 20 52 45 53 55 4c 54 5f 4c 49 4d 49 54 53  el RESULT_LIMITS
f310: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
f320: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
f330: 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 64 65    # NOTE: Has de
f340: 64 69 63 61 74 65 64 20 74 65 73 74 20 73 75 70  dicated test sup
f350: 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65  port been enable
f360: 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  d (at compile-ti
f370: 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d  me)?..        #.
f380: 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69  .        if {![i
f390: 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f  nfo exists no(co
f3a0: 6d 70 69 6c 65 54 65 73 74 29 5d 7d 20 74 68 65  mpileTest)]} the
f3b0: 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
f3c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
f3d0: 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62  TE: For tests "b
f3e0: 61 73 69 63 2d 31 2e 32 30 22 2c 20 22 62 61 73  asic-1.20", "bas
f3f0: 69 63 2d 31 2e 32 31 22 2c 20 22 66 75 6e 63 74  ic-1.21", "funct
f400: 69 6f 6e 2d 31 2e 31 22 2c 0d 0a 20 20 20 20 20  ion-1.1",..     
f410: 20 20 20 20 20 23 20 20 20 20 20 20 20 22 6f 62       #       "ob
f420: 6a 65 63 74 2d 32 2e 31 22 2c 20 22 6f 62 6a 65  ject-2.1", "obje
f430: 63 74 2d 33 2e 31 22 2c 20 22 6f 62 6a 65 63 74  ct-3.1", "object
f440: 2d 34 2e 31 22 2c 20 22 6f 62 6a 65 63 74 2d 37  -4.1", "object-7
f450: 2e 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  .1",..          
f460: 23 20 20 20 20 20 20 20 22 6f 62 6a 65 63 74 2d  #       "object-
f470: 37 2e 32 22 2c 20 22 6f 62 6a 65 63 74 2d 37 2e  7.2", "object-7.
f480: 34 22 2c 20 22 6f 62 6a 65 63 74 2d 31 34 2e 34  4", "object-14.4
f490: 22 2c 20 22 6f 62 6a 65 63 74 2d 31 34 2e 35 22  ", "object-14.5"
f4a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  ,..          #  
f4b0: 20 20 20 20 20 22 6f 62 6a 65 63 74 2d 31 34 2e       "object-14.
f4c0: 36 22 2c 20 22 72 65 6d 6f 74 69 6e 67 53 65 72  6", "remotingSer
f4d0: 76 65 72 2d 31 2e 2a 22 2c 20 61 6e 64 20 22 64  ver-1.*", and "d
f4e0: 65 62 75 67 2d 35 2e 2a 22 2e 0d 0a 20 20 20 20  ebug-5.*"...    
f4f0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
f500: 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69     checkForCompi
f510: 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63  leOption $test_c
f520: 68 61 6e 6e 65 6c 20 54 45 53 54 0d 0a 20 20 20  hannel TEST..   
f530: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f540: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
f550: 4f 54 45 3a 20 48 61 73 20 74 68 72 65 61 64 69  OTE: Has threadi
f560: 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
f570: 65 6e 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70  enabled (at comp
f580: 69 6c 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20  ile-time)?..    
f590: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69      #..        i
f5a0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
f5b0: 20 6e 6f 28 63 6f 6d 70 69 6c 65 54 68 72 65 61   no(compileThrea
f5c0: 64 69 6e 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  ding)]} then {..
f5d0: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
f5e0: 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
f5f0: 6f 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74  or tests "object
f600: 2d 31 30 2e 32 22 20 61 6e 64 20 22 6f 62 6a 65  -10.2" and "obje
f610: 63 74 2d 31 30 2e 33 22 2e 0d 0a 20 20 20 20 20  ct-10.3"...     
f620: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
f630: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
f640: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
f650: 61 6e 6e 65 6c 20 54 48 52 45 41 44 49 4e 47 0d  annel THREADING.
f660: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
f670: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
f680: 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 54 63 6c   # NOTE: Has Tcl
f690: 20 74 68 72 65 61 64 69 6e 67 20 73 75 70 70 6f   threading suppo
f6a0: 72 74 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  rt been enabled 
f6b0: 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  (at compile-time
f6c0: 29 3f 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  )?..        #.. 
f6d0: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66         if {![inf
f6e0: 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70  o exists no(comp
f6f0: 69 6c 65 54 63 6c 54 68 72 65 61 64 65 64 29 5d  ileTclThreaded)]
f700: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
f710: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
f720: 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
f730: 74 73 20 22 74 63 6c 4c 6f 61 64 2d 33 2e 2a 22  ts "tclLoad-3.*"
f740: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
f750: 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
f760: 6f 72 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20  orCompileOption 
f770: 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 54 43  $test_channel TC
f780: 4c 5f 54 48 52 45 41 44 45 44 0d 0a 20 20 20 20  L_THREADED..    
f790: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
f7a0: 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
f7b0: 54 45 3a 20 48 61 73 20 54 63 6c 20 69 73 6f 6c  TE: Has Tcl isol
f7c0: 61 74 65 64 20 69 6e 74 65 72 70 72 65 74 65 72  ated interpreter
f7d0: 20 74 68 72 65 61 64 20 73 75 70 70 6f 72 74 20   thread support 
f7e0: 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 28 61 74  been enabled (at
f7f0: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
f800: 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f    compile-time)?
f810: 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
f820: 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
f830: 65 78 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c  exists no(compil
f840: 65 54 63 6c 54 68 72 65 61 64 73 29 5d 7d 20 74  eTclThreads)]} t
f850: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
f860: 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20   #..          # 
f870: 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
f880: 22 74 63 6c 4c 6f 61 64 2d 33 2e 2a 22 2e 0d 0a  "tclLoad-3.*"...
f890: 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
f8a0: 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43         checkForC
f8b0: 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65  ompileOption $te
f8c0: 73 74 5f 63 68 61 6e 6e 65 6c 20 54 43 4c 5f 54  st_channel TCL_T
f8d0: 48 52 45 41 44 53 0d 0a 20 20 20 20 20 20 20 20  HREADS..        
f8e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
f8f0: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
f900: 48 61 73 20 47 44 49 2b 20 64 72 61 77 69 6e 67  Has GDI+ drawing
f910: 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 65 6e   support been en
f920: 61 62 6c 65 64 20 28 61 74 20 63 6f 6d 70 69 6c  abled (at compil
f930: 65 2d 74 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20  e-time)?..      
f940: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
f950: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
f960: 6f 28 63 6f 6d 70 69 6c 65 44 72 61 77 69 6e 67  o(compileDrawing
f970: 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
f980: 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f        checkForCo
f990: 6d 70 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73  mpileOption $tes
f9a0: 74 5f 63 68 61 6e 6e 65 6c 20 44 52 41 57 49 4e  t_channel DRAWIN
f9b0: 47 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  G..        }....
f9c0: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
f9d0: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 72     # NOTE: Has r
f9e0: 75 6e 74 69 6d 65 20 6c 69 63 65 6e 73 65 20 63  untime license c
f9f0: 68 65 63 6b 69 6e 67 20 73 75 70 70 6f 72 74 20  hecking support 
fa00: 62 65 65 6e 20 64 69 73 61 62 6c 65 64 20 28 61  been disabled (a
fa10: 74 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  t..        #    
fa20: 20 20 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 29     compile-time)
fa30: 3f 20 20 54 68 69 73 20 6f 6e 6c 79 20 61 70 70  ?  This only app
fa40: 6c 69 65 73 20 74 6f 20 74 68 69 72 64 2d 70 61  lies to third-pa
fa50: 72 74 79 20 70 6c 75 67 69 6e 73 0d 0a 20 20 20  rty plugins..   
fa60: 20 20 20 20 20 23 20 20 20 20 20 20 20 61 6e 64       #       and
fa70: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0d 0a   applications...
fa80: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
fa90: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
faa0: 69 73 74 73 20 6e 6f 28 63 6f 6d 70 69 6c 65 4c  ists no(compileL
fab0: 69 63 65 6e 73 69 6e 67 29 5d 7d 20 74 68 65 6e  icensing)]} then
fac0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d   {..          #.
fad0: 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54  .          # NOT
fae0: 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63  E: This is not c
faf0: 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79  urrently used by
fb00: 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20   any tests...   
fb10: 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
fb20: 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70      checkForComp
fb30: 69 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f  ileOption $test_
fb40: 63 68 61 6e 6e 65 6c 20 4c 49 43 45 4e 53 49 4e  channel LICENSIN
fb50: 47 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  G..        }....
fb60: 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
fb70: 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 72     # NOTE: Has r
fb80: 75 6e 74 69 6d 65 20 22 6c 69 6d 69 74 65 64 20  untime "limited 
fb90: 65 64 69 74 69 6f 6e 22 20 63 68 65 63 6b 69 6e  edition" checkin
fba0: 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 0d 0a  g support been..
fbb0: 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20          #       
fbc0: 64 69 73 61 62 6c 65 64 20 28 61 74 20 63 6f 6d  disabled (at com
fbd0: 70 69 6c 65 2d 74 69 6d 65 29 3f 20 20 54 68 69  pile-time)?  Thi
fbe0: 73 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74  s only applies t
fbf0: 6f 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  o..        #    
fc00: 20 20 20 74 68 69 72 64 2d 70 61 72 74 79 20 70     third-party p
fc10: 6c 75 67 69 6e 73 20 61 6e 64 20 61 70 70 6c 69  lugins and appli
fc20: 63 61 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20  cations...      
fc30: 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69 66 20    #..        if 
fc40: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
fc50: 6f 28 63 6f 6d 70 69 6c 65 4c 69 6d 69 74 65 64  o(compileLimited
fc60: 45 64 69 74 69 6f 6e 29 5d 7d 20 74 68 65 6e 20  Edition)]} then 
fc70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  {..          #..
fc80: 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
fc90: 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63 75  : This is not cu
fca0: 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79 20  rrently used by 
fcb0: 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20 20  any tests...    
fcc0: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
fcd0: 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69     checkForCompi
fce0: 6c 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63  leOption $test_c
fcf0: 68 61 6e 6e 65 6c 20 4c 49 4d 49 54 45 44 5f 45  hannel LIMITED_E
fd00: 44 49 54 49 4f 4e 0d 0a 20 20 20 20 20 20 20 20  DITION..        
fd10: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  }....        #..
fd20: 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
fd30: 48 61 73 20 72 75 6e 74 69 6d 65 20 22 64 65 6d  Has runtime "dem
fd40: 6f 20 65 64 69 74 69 6f 6e 22 20 63 68 65 63 6b  o edition" check
fd50: 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
fd60: 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
fd70: 20 20 64 69 73 61 62 6c 65 64 20 28 61 74 20 63    disabled (at c
fd80: 6f 6d 70 69 6c 65 2d 74 69 6d 65 29 3f 20 20 54  ompile-time)?  T
fd90: 68 69 73 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73  his only applies
fda0: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 23 20 20   to..        #  
fdb0: 20 20 20 20 20 74 68 69 72 64 2d 70 61 72 74 79       third-party
fdc0: 20 70 6c 75 67 69 6e 73 20 61 6e 64 20 61 70 70   plugins and app
fdd0: 6c 69 63 61 74 69 6f 6e 73 2e 0d 0a 20 20 20 20  lications...    
fde0: 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 69      #..        i
fdf0: 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
fe00: 20 6e 6f 28 63 6f 6d 70 69 6c 65 44 65 6d 6f 45   no(compileDemoE
fe10: 64 69 74 69 6f 6e 29 5d 7d 20 74 68 65 6e 20 7b  dition)]} then {
fe20: 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
fe30: 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
fe40: 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63 75 72   This is not cur
fe50: 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79 20 61  rently used by a
fe60: 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20 20 20  ny tests...     
fe70: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
fe80: 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 70 69 6c    checkForCompil
fe90: 65 4f 70 74 69 6f 6e 20 24 74 65 73 74 5f 63 68  eOption $test_ch
fea0: 61 6e 6e 65 6c 20 44 45 4d 4f 5f 45 44 49 54 49  annel DEMO_EDITI
feb0: 4f 4e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  ON..        }.. 
fec0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
fed0: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
fee0: 54 45 3a 20 48 61 73 20 74 65 73 74 69 6e 67 20  TE: Has testing 
fef0: 75 73 69 6e 67 20 74 68 65 20 43 23 20 63 6f 6d  using the C# com
ff00: 70 69 6c 65 72 20 62 65 65 6e 20 64 69 73 61 62  piler been disab
ff10: 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
ff20: 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
ff30: 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 43 6f  ts no(checkForCo
ff40: 6d 70 69 6c 65 43 53 68 61 72 70 29 5d 7d 20 74  mpileCSharp)]} t
ff50: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
ff60: 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 43 53 68 61  ckForCompileCSha
ff70: 72 70 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  rp $test_channel
ff80: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
ff90: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
ffa0: 73 20 64 79 6e 61 6d 69 63 20 6c 6f 61 64 69 6e  s dynamic loadin
ffb0: 67 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  g testing suppor
ffc0: 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
ffd0: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
ffe0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
fff0: 6f 28 64 79 6e 61 6d 69 63 29 5d 7d 20 74 68 65  o(dynamic)]} the
10000 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  n {..      #..  
10010 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
10020 74 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73 2d  tests "commands-
10030 31 2e 31 2e 2a 22 2c 20 22 6c 69 62 72 61 72 79  1.1.*", "library
10040 2d 33 2e 2a 22 2c 20 61 6e 64 20 22 74 63 6c 2a  -3.*", and "tcl*
10050 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23 0d  -*.*"...      #.
10060 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 44  .      checkForD
10070 79 6e 61 6d 69 63 4c 6f 61 64 69 6e 67 20 24 74  ynamicLoading $t
10080 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
10090 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
100a0 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 54 63 6c   # NOTE: Has Tcl
100b0 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
100c0 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
100d0 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
100e0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
100f0 28 74 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  (tcl)]} then {..
10100 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
10110 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 49 6e   exists no(tclIn
10120 73 74 61 6c 6c 73 29 5d 7d 20 74 68 65 6e 20 7b  stalls)]} then {
10130 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
10140 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
10150 20 74 65 73 74 73 20 22 63 6f 6d 6d 61 6e 64 73   tests "commands
10160 2d 31 2e 31 2e 2a 22 2c 20 22 6c 69 62 72 61 72  -1.1.*", "librar
10170 79 2d 33 2e 2a 22 2c 20 61 6e 64 20 22 74 63 6c  y-3.*", and "tcl
10180 2a 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20  *-*.*"...       
10190 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
101a0 6b 46 6f 72 54 63 6c 49 6e 73 74 61 6c 6c 73 20  kForTclInstalls 
101b0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
101c0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
101d0 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
101e0 73 20 6e 6f 28 74 63 6c 52 65 61 64 79 29 5d 7d  s no(tclReady)]}
101f0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
10200 20 63 68 65 63 6b 46 6f 72 54 63 6c 52 65 61 64   checkForTclRead
10210 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  y $test_channel.
10220 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
10230 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
10240 73 74 73 20 6e 6f 28 74 63 6c 53 65 6c 65 63 74  sts no(tclSelect
10250 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
10260 20 20 20 20 63 68 65 63 6b 46 6f 72 54 63 6c 53      checkForTclS
10270 65 6c 65 63 74 20 24 74 65 73 74 5f 63 68 61 6e  elect $test_chan
10280 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  nel..      }....
10290 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
102a0 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 53 68   exists no(tclSh
102b0 65 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ell)]} then {.. 
102c0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
102d0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
102e0 73 74 20 22 67 61 72 75 64 61 2d 31 2e 31 22 2e  st "garuda-1.1".
102f0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
10300 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54 63 6c       checkForTcl
10310 53 68 65 6c 6c 20 24 74 65 73 74 5f 63 68 61 6e  Shell $test_chan
10320 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  nel..      }....
10330 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
10340 20 65 78 69 73 74 73 20 6e 6f 28 74 6b 50 61 63   exists no(tkPac
10350 6b 61 67 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  kage)]} then {..
10360 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
10370 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
10380 65 73 74 20 22 74 63 6c 4c 6f 61 64 2d 31 2e 31  est "tclLoad-1.1
10390 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
103a0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 54         checkForT
103b0 6b 50 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63  kPackage $test_c
103c0 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 20 20 7d 0d  hannel..      }.
103d0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
103e0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
103f0 20 63 75 73 74 6f 6d 20 74 65 73 74 20 6d 65 74   custom test met
10400 68 6f 64 20 73 75 70 70 6f 72 74 20 62 65 65 6e  hod support been
10410 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
10420 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
10430 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72 65  o exists no(core
10440 29 5d 20 26 26 20 21 5b 69 6e 66 6f 20 65 78 69  )] && ![info exi
10450 73 74 73 20 6e 6f 28 74 65 73 74 29 5d 7d 20 74  sts no(test)]} t
10460 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a  hen {..      #..
10470 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
10480 73 20 55 6e 6b 6e 6f 77 6e 43 61 6c 6c 62 61 63  s UnknownCallbac
10490 6b 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  k testing suppor
104a0 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
104b0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
104c0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
104d0 74 73 20 6e 6f 28 74 65 73 74 55 6e 6b 6e 6f 77  ts no(testUnknow
104e0 6e 43 61 6c 6c 62 61 63 6b 29 5d 7d 20 74 68 65  nCallback)]} the
104f0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
10500 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
10510 46 6f 72 20 74 65 73 74 73 20 22 75 6e 6b 6e 6f  For tests "unkno
10520 77 6e 2d 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20  wn-*"...        
10530 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
10540 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
10550 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
10560 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
10570 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
10580 20 20 2a 54 65 73 74 53 65 74 55 6e 6b 6e 6f 77    *TestSetUnknow
10590 6e 53 70 79 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d  nSpyCallback*...
105a0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
105b0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
105c0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
105d0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
105e0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
105f0 2a 54 65 73 74 53 65 74 55 6e 6b 6e 6f 77 6e 53  *TestSetUnknownS
10600 63 72 69 70 74 4f 62 6a 65 63 74 43 61 6c 6c 62  criptObjectCallb
10610 61 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ack*....        
10620 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
10630 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
10640 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
10650 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
10660 20 20 20 20 20 20 20 2a 54 65 73 74 53 65 74 55         *TestSetU
10670 6e 6b 6e 6f 77 6e 53 63 72 69 70 74 43 6f 6d 6d  nknownScriptComm
10680 61 6e 64 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a  andCallback*....
10690 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
106a0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
106b0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
106c0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
106d0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
106e0 54 65 73 74 53 65 74 55 6e 6b 6e 6f 77 6e 4f 62  TestSetUnknownOb
106f0 6a 65 63 74 49 6e 76 6f 6b 65 43 61 6c 6c 62 61  jectInvokeCallba
10700 63 6b 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ck*..      }....
10710 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
10720 20 4e 4f 54 45 3a 20 48 61 73 20 50 61 63 6b 61   NOTE: Has Packa
10730 67 65 43 61 6c 6c 62 61 63 6b 20 74 65 73 74 69  geCallback testi
10740 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
10750 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
10760 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
10770 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
10780 65 73 74 50 61 63 6b 61 67 65 43 61 6c 6c 62 61  estPackageCallba
10790 63 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ck)]} then {..  
107a0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
107b0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
107c0 74 20 22 70 61 63 6b 61 67 65 2d 32 2e 31 22 2e  t "package-2.1".
107d0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
107e0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
107f0 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
10800 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
10810 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
10820 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
10830 74 53 65 74 50 61 63 6b 61 67 65 46 61 6c 6c 62  tSetPackageFallb
10840 61 63 6b 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20  ackCallback*..  
10850 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
10860 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
10870 48 61 73 20 45 78 65 63 75 74 65 43 61 6c 6c 62  Has ExecuteCallb
10880 61 63 6b 20 74 65 73 74 69 6e 67 20 73 75 70 70  ack testing supp
10890 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
108a0 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
108b0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
108c0 69 73 74 73 20 6e 6f 28 74 65 73 74 45 78 65 63  ists no(testExec
108d0 75 74 65 43 61 6c 6c 62 61 63 6b 29 5d 7d 20 74  uteCallback)]} t
108e0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
108f0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
10900 3a 20 46 6f 72 20 74 65 73 74 73 20 22 65 78 65  : For tests "exe
10910 63 75 74 65 43 61 6c 6c 62 61 63 6b 2d 31 2e 2a  cuteCallback-1.*
10920 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
10930 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
10940 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
10950 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
10960 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
10970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
10980 65 73 74 41 64 64 45 78 65 63 75 74 65 43 61 6c  estAddExecuteCal
10990 6c 62 61 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20  lback*....      
109a0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
109b0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
109c0 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
109d0 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
109e0 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 45 78           *TestEx
109f0 65 63 75 74 65 43 61 6c 6c 62 61 63 6b 31 2a 0d  ecuteCallback1*.
10a00 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
10a10 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
10a20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
10a30 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
10a40 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
10a50 20 20 2a 54 65 73 74 45 78 65 63 75 74 65 43 61    *TestExecuteCa
10a60 6c 6c 62 61 63 6b 32 2a 0d 0a 20 20 20 20 20 20  llback2*..      
10a70 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  }....      #..  
10a80 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
10a90 53 6c 65 65 70 57 61 69 74 43 61 6c 6c 62 61 63  SleepWaitCallbac
10aa0 6b 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  k testing suppor
10ab0 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
10ac0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
10ad0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
10ae0 74 73 20 6e 6f 28 74 65 73 74 53 6c 65 65 70 57  ts no(testSleepW
10af0 61 69 74 43 61 6c 6c 62 61 63 6b 29 5d 7d 20 74  aitCallback)]} t
10b00 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
10b10 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
10b20 3a 20 46 6f 72 20 74 65 73 74 20 22 76 77 61 69  : For test "vwai
10b30 74 2d 31 2e 33 31 22 2e 0d 0a 20 20 20 20 20 20  t-1.31"...      
10b40 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
10b50 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
10b60 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
10b70 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
10b80 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
10b90 20 20 20 20 2a 54 65 73 74 47 65 74 53 6c 65 65      *TestGetSlee
10ba0 70 57 61 69 74 43 61 6c 6c 62 61 63 6b 2a 0d 0a  pWaitCallback*..
10bb0 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
10bc0 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
10bd0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
10be0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
10bf0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
10c00 20 2a 54 65 73 74 53 65 74 53 6c 65 65 70 57 61   *TestSetSleepWa
10c10 69 74 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20  itCallback*..   
10c20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
10c30 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
10c40 61 73 20 57 72 69 74 65 48 65 61 64 65 72 20 74  as WriteHeader t
10c50 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
10c60 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
10c70 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
10c80 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
10c90 6e 6f 28 74 65 73 74 57 72 69 74 65 48 65 61 64  no(testWriteHead
10ca0 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  er)]} then {..  
10cb0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
10cc0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
10cd0 74 20 22 68 6f 73 74 2d 31 2e 35 22 2e 0d 0a 20  t "host-1.5"... 
10ce0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
10cf0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
10d00 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
10d10 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
10d20 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
10d30 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 44 69           *TestDi
10d40 73 70 6f 73 65 64 57 72 69 74 65 48 65 61 64 65  sposedWriteHeade
10d50 72 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  r*..      }.... 
10d60 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
10d70 4e 4f 54 45 3a 20 48 61 73 20 6f 70 74 69 6f 6e  NOTE: Has option
10d80 61 6c 20 70 61 72 61 6d 65 74 65 72 20 74 65 73  al parameter tes
10d90 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
10da0 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
10db0 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
10dc0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
10dd0 28 74 65 73 74 4f 70 74 69 6f 6e 61 6c 50 61 72  (testOptionalPar
10de0 61 6d 65 74 65 72 29 5d 7d 20 74 68 65 6e 20 7b  ameter)]} then {
10df0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
10e00 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
10e10 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 32   tests "object-2
10e20 2e 38 31 22 2c 20 22 6f 62 6a 65 63 74 2d 32 2e  .81", "object-2.
10e30 38 32 22 2c 20 22 6f 62 6a 65 63 74 2d 32 2e 38  82", "object-2.8
10e40 33 22 2c 0d 0a 20 20 20 20 20 20 20 20 23 20 20  3",..        #  
10e50 20 20 20 20 20 61 6e 64 20 22 6f 62 6a 65 63 74       and "object
10e60 2d 32 2e 38 34 22 2e 0d 0a 20 20 20 20 20 20 20  -2.84"...       
10e70 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
10e80 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
10e90 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
10ea0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
10eb0 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
10ec0 20 20 20 2a 54 65 73 74 4f 70 74 69 6f 6e 61 6c     *TestOptional
10ed0 50 61 72 61 6d 65 74 65 72 30 2a 0d 0a 0d 0a 20  Parameter0*.... 
10ee0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
10ef0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
10f00 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
10f10 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
10f20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
10f30 65 73 74 4f 70 74 69 6f 6e 61 6c 50 61 72 61 6d  estOptionalParam
10f40 65 74 65 72 31 2a 0d 0a 0d 0a 20 20 20 20 20 20  eter1*....      
10f50 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
10f60 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
10f70 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
10f80 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
10f90 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 4f 70           *TestOp
10fa0 74 69 6f 6e 61 6c 50 61 72 61 6d 65 74 65 72 32  tionalParameter2
10fb0 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
10fc0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
10fd0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
10fe0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
10ff0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
11000 20 20 20 20 2a 54 65 73 74 4f 70 74 69 6f 6e 61      *TestOptiona
11010 6c 50 61 72 61 6d 65 74 65 72 5a 2a 0d 0a 20 20  lParameterZ*..  
11020 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
11030 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
11040 48 61 73 20 70 6c 75 67 69 6e 20 70 6f 6c 69 63  Has plugin polic
11050 79 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  y testing suppor
11060 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
11070 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
11080 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
11090 74 73 20 6e 6f 28 74 65 73 74 50 6c 75 67 69 6e  ts no(testPlugin
110a0 50 6f 6c 69 63 79 29 5d 7d 20 74 68 65 6e 20 7b  Policy)]} then {
110b0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
110c0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
110d0 20 74 65 73 74 73 20 22 6c 6f 61 64 2d 32 2e 30   tests "load-2.0
110e0 22 20 61 6e 64 20 22 6c 6f 61 64 2d 32 2e 31 22  " and "load-2.1"
110f0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
11100 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
11110 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
11120 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
11130 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
11140 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
11150 73 74 41 64 64 4c 6f 61 64 50 6c 75 67 69 6e 50  stAddLoadPluginP
11160 6f 6c 69 63 79 2a 0d 0a 0d 0a 20 20 20 20 20 20  olicy*....      
11170 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
11180 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
11190 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
111a0 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
111b0 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 4c 6f           *TestLo
111c0 61 64 50 6c 75 67 69 6e 50 6f 6c 69 63 79 2a 0d  adPluginPolicy*.
111d0 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
111e0 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
111f0 45 3a 20 48 61 73 20 73 63 72 69 70 74 20 73 74  E: Has script st
11200 72 65 61 6d 20 74 65 73 74 69 6e 67 20 73 75 70  ream testing sup
11210 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
11220 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ed?..      #..  
11230 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
11240 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 63 72  xists no(testScr
11250 69 70 74 53 74 72 65 61 6d 29 5d 7d 20 74 68 65  iptStream)]} the
11260 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
11270 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
11280 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63  For tests "basic
11290 2d 31 2e 34 36 22 20 61 6e 64 20 22 62 61 73 69  -1.46" and "basi
112a0 63 2d 31 2e 34 37 22 2e 0d 0a 20 20 20 20 20 20  c-1.47"...      
112b0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
112c0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
112d0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
112e0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
112f0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
11300 20 20 20 20 2a 54 65 73 74 53 63 72 69 70 74 53      *TestScriptS
11310 74 72 65 61 6d 2a 0d 0a 20 20 20 20 20 20 7d 0d  tream*..      }.
11320 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
11330 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f    # NOTE: Has co
11340 6d 70 6c 61 69 6e 74 20 74 65 73 74 69 6e 67 20  mplaint testing 
11350 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
11360 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
11370 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
11380 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
11390 43 6f 6d 70 6c 61 69 6e 29 5d 7d 20 74 68 65 6e  Complain)]} then
113a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
113b0 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
113c0 6f 72 20 74 65 73 74 73 20 22 64 65 62 75 67 2d  or tests "debug-
113d0 31 2e 39 38 22 20 61 6e 64 20 22 64 65 62 75 67  1.98" and "debug
113e0 2d 31 2e 39 39 22 2e 0d 0a 20 20 20 20 20 20 20  -1.99"...       
113f0 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
11400 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
11410 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
11420 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
11430 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
11440 20 20 20 2a 54 65 73 74 53 65 74 43 6f 6d 70 6c     *TestSetCompl
11450 61 69 6e 43 61 6c 6c 62 61 63 6b 2a 0d 0a 0d 0a  ainCallback*....
11460 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
11470 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
11480 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
11490 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
114a0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
114b0 54 65 73 74 43 6f 6d 70 6c 61 69 6e 43 61 6c 6c  TestComplainCall
114c0 62 61 63 6b 54 68 72 6f 77 2a 0d 0a 0d 0a 20 20  backThrow*....  
114d0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
114e0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
114f0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
11500 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
11510 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
11520 73 74 43 6f 6d 70 6c 61 69 6e 43 61 6c 6c 62 61  stComplainCallba
11530 63 6b 4e 6f 54 68 72 6f 77 2a 0d 0a 20 20 20 20  ckNoThrow*..    
11540 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
11550 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61        # NOTE: Ha
11560 73 20 6e 65 77 20 69 6e 74 65 72 70 72 65 74 65  s new interprete
11570 72 20 63 61 6c 6c 62 61 63 6b 20 74 65 73 74 69  r callback testi
11580 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
11590 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
115a0 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
115b0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
115c0 65 73 74 4e 65 77 49 6e 74 65 72 70 72 65 74 65  estNewInterprete
115d0 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  r)]} then {..   
115e0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
115f0 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
11600 73 20 22 69 6e 74 65 72 70 2d 31 2e 31 30 31 22  s "interp-1.101"
11610 20 61 6e 64 20 22 69 6e 74 65 72 70 2d 31 2e 31   and "interp-1.1
11620 30 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  02"...        #.
11630 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
11640 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
11650 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
11660 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
11670 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
11680 2a 54 65 73 74 53 65 74 4e 65 77 49 6e 74 65 72  *TestSetNewInter
11690 70 72 65 74 65 72 43 61 6c 6c 62 61 63 6b 2a 0d  preterCallback*.
116a0 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
116b0 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
116c0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
116d0 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
116e0 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
116f0 20 20 2a 54 65 73 74 4e 65 77 49 6e 74 65 72 70    *TestNewInterp
11700 72 65 74 65 72 43 61 6c 6c 62 61 63 6b 2a 0d 0a  reterCallback*..
11710 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11720 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
11730 3a 20 48 61 73 20 75 73 65 20 69 6e 74 65 72 70  : Has use interp
11740 72 65 74 65 72 20 63 61 6c 6c 62 61 63 6b 20 74  reter callback t
11750 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
11760 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
11770 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66       #..      if
11780 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
11790 6e 6f 28 74 65 73 74 55 73 65 49 6e 74 65 72 70  no(testUseInterp
117a0 72 65 74 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d  reter)]} then {.
117b0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
117c0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
117d0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
117e0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
117f0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
11800 2a 54 65 73 74 53 65 74 55 73 65 49 6e 74 65 72  *TestSetUseInter
11810 70 72 65 74 65 72 43 61 6c 6c 62 61 63 6b 2a 0d  preterCallback*.
11820 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  ...        check
11830 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
11840 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
11850 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
11860 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
11870 20 20 2a 54 65 73 74 55 73 65 49 6e 74 65 72 70    *TestUseInterp
11880 72 65 74 65 72 43 61 6c 6c 62 61 63 6b 2a 0d 0a  reterCallback*..
11890 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
118a0 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
118b0 3a 20 48 61 73 20 63 75 73 74 6f 6d 20 6d 61 74  : Has custom mat
118c0 63 68 20 6d 6f 64 65 20 74 65 73 74 69 6e 67 20  ch mode testing 
118d0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
118e0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
118f0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
11900 20 6e 6f 28 74 65 73 74 4d 61 74 63 68 4d 6f 64   no(testMatchMod
11910 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  e)]} then {..   
11920 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
11930 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
11940 20 22 73 74 72 69 6e 67 4d 61 74 63 68 2d 31 30   "stringMatch-10
11950 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  1.1"...        #
11960 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
11970 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
11980 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
11990 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
119a0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
119b0 20 2a 54 65 73 74 53 65 74 4d 61 74 63 68 43 61   *TestSetMatchCa
119c0 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20 20 20 20 7d  llback*..      }
119d0 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
119e0 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 77     # NOTE: Has w
119f0 65 62 20 63 6c 69 65 6e 74 20 74 65 73 74 69 6e  eb client testin
11a00 67 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  g been disabled?
11a10 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
11a20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
11a30 74 73 20 6e 6f 28 74 65 73 74 57 65 62 43 6c 69  ts no(testWebCli
11a40 65 6e 74 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ent)]} then {.. 
11a50 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
11a60 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
11a70 73 74 20 22 73 6f 63 6b 65 74 2d 33 2e 35 30 22  st "socket-3.50"
11a80 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
11a90 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
11aa0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
11ab0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
11ac0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
11ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
11ae0 73 74 48 61 73 53 63 72 69 70 74 4e 65 77 57 65  stHasScriptNewWe
11af0 62 43 6c 69 65 6e 74 43 61 6c 6c 62 61 63 6b 2a  bClientCallback*
11b00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
11b10 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
11b20 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
11b30 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
11b40 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
11b50 20 20 20 2a 54 65 73 74 48 61 73 45 72 72 6f 72     *TestHasError
11b60 4e 65 77 57 65 62 43 6c 69 65 6e 74 43 61 6c 6c  NewWebClientCall
11b70 62 61 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  back*....       
11b80 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
11b90 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
11ba0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
11bb0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
11bc0 20 20 20 20 20 20 20 20 2a 54 65 73 74 53 65 74          *TestSet
11bd0 53 63 72 69 70 74 4e 65 77 57 65 62 43 6c 69 65  ScriptNewWebClie
11be0 6e 74 43 61 6c 6c 62 61 63 6b 2a 0d 0a 20 20 20  ntCallback*..   
11bf0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66     }....      if
11c00 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
11c10 6e 6f 28 74 65 73 74 4c 6f 61 64 29 5d 7d 20 74  no(testLoad)]} t
11c20 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
11c30 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
11c40 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6c 6f 61  : For tests "loa
11c50 64 2d 31 2e 36 22 20 61 6e 64 20 22 6c 6f 61 64  d-1.6" and "load
11c60 2d 31 2e 37 22 2e 0d 0a 20 20 20 20 20 20 20 20  -1.7"...        
11c70 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
11c80 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
11c90 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
11ca0 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
11cb0 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
11cc0 20 20 2a 54 65 73 74 4c 6f 61 64 50 6c 75 67 69    *TestLoadPlugi
11cd0 6e 56 69 61 42 79 74 65 73 2a 0d 0a 20 20 20 20  nViaBytes*..    
11ce0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20    }....      if 
11cf0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
11d00 6f 28 74 65 73 74 50 65 72 6d 75 74 65 29 5d 7d  o(testPermute)]}
11d10 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
11d20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
11d30 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 6c  TE: For tests "l
11d40 70 65 72 6d 75 74 65 2d 31 2e 33 22 20 61 6e 64  permute-1.3" and
11d50 20 22 6c 70 65 72 6d 75 74 65 2d 31 2e 34 22 2e   "lpermute-1.4".
11d60 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
11d70 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
11d80 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
11d90 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
11da0 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
11db0 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
11dc0 74 50 65 72 6d 75 74 65 2a 0d 0a 20 20 20 20 20  tPermute*..     
11dd0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b   }....      if {
11de0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
11df0 28 74 65 73 74 44 79 6e 61 6d 69 63 43 61 6c 6c  (testDynamicCall
11e00 62 61 63 6b 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  back)]} then {..
11e10 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
11e20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
11e30 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 38 2e 31  ests "object-8.1
11e40 3f 3f 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  ??"...        #.
11e50 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
11e60 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
11e70 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
11e80 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
11e90 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
11ea0 2a 54 65 73 74 43 61 6c 6c 44 79 6e 61 6d 69 63  *TestCallDynamic
11eb0 43 61 6c 6c 62 61 63 6b 30 2a 0d 0a 0d 0a 20 20  Callback0*....  
11ec0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
11ed0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
11ee0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
11ef0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
11f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
11f10 73 74 43 61 6c 6c 44 79 6e 61 6d 69 63 43 61 6c  stCallDynamicCal
11f20 6c 62 61 63 6b 31 2a 0d 0a 0d 0a 20 20 20 20 20  lback1*....     
11f30 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
11f40 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
11f50 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
11f60 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
11f70 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 43            *TestC
11f80 61 6c 6c 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61  allDynamicCallba
11f90 63 6b 32 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ck2*....        
11fa0 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
11fb0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
11fc0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
11fd0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
11fe0 20 20 20 20 20 20 20 2a 54 65 73 74 43 61 6c 6c         *TestCall
11ff0 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 33  DynamicCallback3
12000 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65  *....        che
12010 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
12020 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
12030 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
12040 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
12050 20 20 20 20 2a 54 65 73 74 43 61 6c 6c 44 79 6e      *TestCallDyn
12060 61 6d 69 63 43 61 6c 6c 62 61 63 6b 34 2a 0d 0a  amicCallback4*..
12070 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
12080 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
12090 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
120a0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
120b0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
120c0 20 2a 54 65 73 74 47 65 74 44 79 6e 61 6d 69 63   *TestGetDynamic
120d0 43 61 6c 6c 62 61 63 6b 73 2a 0d 0a 0d 0a 20 20  Callbacks*....  
120e0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
120f0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12100 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12110 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12120 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12130 73 74 43 61 6c 6c 53 74 61 74 69 63 44 79 6e 61  stCallStaticDyna
12140 6d 69 63 43 61 6c 6c 62 61 63 6b 30 2a 0d 0a 0d  micCallback0*...
12150 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
12160 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
12170 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
12180 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
12190 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
121a0 2a 54 65 73 74 43 61 6c 6c 53 74 61 74 69 63 44  *TestCallStaticD
121b0 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 31 2a  ynamicCallback1*
121c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
121d0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
121e0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
121f0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
12200 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
12210 20 20 20 2a 54 65 73 74 43 61 6c 6c 53 74 61 74     *TestCallStat
12220 69 63 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63  icDynamicCallbac
12230 6b 32 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  k2*....        c
12240 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
12250 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
12260 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
12270 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
12280 20 20 20 20 20 20 2a 54 65 73 74 43 61 6c 6c 53        *TestCallS
12290 74 61 74 69 63 44 79 6e 61 6d 69 63 43 61 6c 6c  taticDynamicCall
122a0 62 61 63 6b 33 2a 0d 0a 0d 0a 20 20 20 20 20 20  back3*....      
122b0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
122c0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
122d0 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
122e0 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
122f0 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 43 61           *TestCa
12300 6c 6c 53 74 61 74 69 63 44 79 6e 61 6d 69 63 43  llStaticDynamicC
12310 61 6c 6c 62 61 63 6b 34 2a 0d 0a 0d 0a 20 20 20  allback4*....   
12320 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
12330 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
12340 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
12350 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
12360 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
12370 74 47 65 74 53 74 61 74 69 63 44 79 6e 61 6d 69  tGetStaticDynami
12380 63 43 61 6c 6c 62 61 63 6b 73 2a 0d 0a 20 20 20  cCallbacks*..   
12390 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
123a0 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
123b0 61 73 20 44 61 74 65 54 69 6d 65 20 74 65 73 74  as DateTime test
123c0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
123d0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
123e0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
123f0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
12400 74 65 73 74 44 61 74 65 54 69 6d 65 29 5d 7d 20  testDateTime)]} 
12410 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
12420 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
12430 45 3a 20 46 6f 72 20 74 65 73 74 20 22 76 77 61  E: For test "vwa
12440 69 74 2d 31 2e 31 31 22 2e 0d 0a 20 20 20 20 20  it-1.11"...     
12450 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
12460 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
12470 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
12480 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
12490 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
124a0 20 20 20 20 20 2a 54 65 73 74 53 65 74 44 61 74       *TestSetDat
124b0 65 54 69 6d 65 4e 6f 77 43 61 6c 6c 62 61 63 6b  eTimeNowCallback
124c0 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  *..      }....  
124d0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
124e0 4f 54 45 3a 20 48 61 73 20 72 65 6d 6f 74 69 6e  OTE: Has remotin
124f0 67 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  g testing suppor
12500 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
12510 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
12520 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
12530 74 73 20 6e 6f 28 74 65 73 74 52 65 6d 6f 74 69  ts no(testRemoti
12540 6e 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ng)]} then {..  
12550 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
12560 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
12570 74 73 20 22 72 65 6d 6f 74 69 6e 67 53 65 72 76  ts "remotingServ
12580 65 72 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  er-1.*"...      
12590 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
125a0 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
125b0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
125c0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
125d0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
125e0 20 20 20 20 2a 54 65 73 74 52 65 6d 6f 74 69 6e      *TestRemotin
125f0 67 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68  g*....        ch
12600 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
12610 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
12620 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
12630 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
12640 20 20 20 20 20 2a 54 65 73 74 52 65 6d 6f 74 69       *TestRemoti
12650 6e 67 48 61 76 65 43 68 61 6e 6e 65 6c 2a 0d 0a  ngHaveChannel*..
12660 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
12670 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
12680 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
12690 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
126a0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
126b0 20 2a 54 65 73 74 52 65 6d 6f 74 69 6e 67 54 72   *TestRemotingTr
126c0 79 47 65 74 43 68 61 6e 6e 65 6c 2a 0d 0a 20 20  yGetChannel*..  
126d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
126e0 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
126f0 48 61 73 20 65 6d 62 65 64 64 65 64 20 72 65 73  Has embedded res
12700 6f 75 72 63 65 20 74 65 73 74 69 6e 67 20 73 75  ource testing su
12710 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
12720 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20  led?..      #.. 
12730 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20       if {![info 
12740 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 52 65  exists no(testRe
12750 73 6f 75 72 63 65 73 29 5d 7d 20 74 68 65 6e 20  sources)]} then 
12760 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
12770 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
12780 72 20 74 65 73 74 20 22 69 6e 74 65 72 70 2d 31  r test "interp-1
12790 2e 34 30 30 22 2e 0d 0a 20 20 20 20 20 20 20 20  .400"...        
127a0 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b  #..        check
127b0 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20  ForObjectMember 
127c0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61  $test_channel Ea
127d0 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75  gle._Tests.Defau
127e0 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  lt \..          
127f0 20 20 2a 54 65 73 74 47 65 74 52 65 73 6f 75 72    *TestGetResour
12800 63 65 53 74 72 69 6e 67 2a 0d 0a 20 20 20 20 20  ceString*..     
12810 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
12820 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
12830 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 74 65   asynchronous te
12840 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
12850 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
12860 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
12870 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
12880 6f 28 74 65 73 74 41 73 79 6e 63 68 72 6f 6e 6f  o(testAsynchrono
12890 75 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  us)]} then {..  
128a0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
128b0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
128c0 74 73 20 22 62 61 73 69 63 2d 31 2e 32 30 22 20  ts "basic-1.20" 
128d0 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 32 31 22  and "basic-1.21"
128e0 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
128f0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
12900 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
12910 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
12920 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
12930 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
12940 73 74 45 76 61 6c 75 61 74 65 41 73 79 6e 63 2a  stEvaluateAsync*
12950 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
12960 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f     #..      # NO
12970 54 45 3a 20 48 61 73 20 63 75 73 74 6f 6d 20 66  TE: Has custom f
12980 75 6e 63 74 69 6f 6e 20 74 65 73 74 69 6e 67 20  unction testing 
12990 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
129a0 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
129b0 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
129c0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
129d0 46 75 6e 63 74 69 6f 6e 29 5d 7d 20 74 68 65 6e  Function)]} then
129e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
129f0 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
12a00 6f 72 20 74 65 73 74 20 22 66 75 6e 63 74 69 6f  or test "functio
12a10 6e 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20  n-1.1"...       
12a20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
12a30 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
12a40 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
12a50 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
12a60 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
12a70 20 20 20 2a 54 65 73 74 41 64 64 46 75 6e 63 74     *TestAddFunct
12a80 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ion*....        
12a90 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
12aa0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
12ab0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
12ac0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
12ad0 20 20 20 20 20 20 20 2a 54 65 73 74 52 65 6d 6f         *TestRemo
12ae0 76 65 46 75 6e 63 74 69 6f 6e 2a 0d 0a 0d 0a 20  veFunction*.... 
12af0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
12b00 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
12b10 73 74 73 20 22 66 75 6e 63 74 69 6f 6e 2d 35 2e  sts "function-5.
12b20 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *"...        #..
12b30 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
12b40 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
12b50 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
12b60 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
12b70 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
12b80 54 65 73 74 41 64 64 4e 61 6d 65 64 46 75 6e 63  TestAddNamedFunc
12b90 74 69 6f 6e 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  tion*....       
12ba0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
12bb0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
12bc0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
12bd0 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
12be0 20 20 20 20 20 20 20 20 2a 54 65 73 74 52 65 6d          *TestRem
12bf0 6f 76 65 4e 61 6d 65 64 46 75 6e 63 74 69 6f 6e  oveNamedFunction
12c00 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *....        #..
12c10 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
12c20 46 6f 72 20 74 65 73 74 20 22 69 6e 74 65 72 70  For test "interp
12c30 2d 31 2e 31 39 22 2e 0d 0a 20 20 20 20 20 20 20  -1.19"...       
12c40 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
12c50 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
12c60 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
12c70 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
12c80 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
12c90 20 20 20 2a 54 65 73 74 41 64 64 4e 61 6d 65 64     *TestAddNamed
12ca0 46 75 6e 63 74 69 6f 6e 32 2a 0d 0a 0d 0a 20 20  Function2*....  
12cb0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
12cc0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
12cd0 74 73 20 22 66 75 6e 63 74 69 6f 6e 2d 35 2e 2a  ts "function-5.*
12ce0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
12cf0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
12d00 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
12d10 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
12d20 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
12d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
12d40 65 73 74 41 64 64 4e 61 6d 65 64 46 75 6e 63 74  estAddNamedFunct
12d50 69 6f 6e 33 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a  ion3*..      }..
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 77 72 69   # NOTE: Has wri
12d80 74 65 2d 62 6f 78 20 74 65 73 74 69 6e 67 20 73  te-box testing s
12d90 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
12da0 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
12db0 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
12dc0 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 57   exists no(testW
12dd0 72 69 74 65 42 6f 78 29 5d 7d 20 74 68 65 6e 20  riteBox)]} then 
12de0 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
12df0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
12e00 72 20 74 65 73 74 73 20 22 64 65 62 75 67 2d 35  r tests "debug-5
12e10 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .*"...        #.
12e20 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
12e30 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
12e40 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
12e50 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
12e60 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
12e70 2a 54 65 73 74 57 72 69 74 65 42 6f 78 2a 0d 0a  *TestWriteBox*..
12e80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12e90 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
12ea0 3a 20 48 61 73 20 73 68 65 6c 6c 20 74 65 73 74  : Has shell test
12eb0 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
12ec0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
12ed0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
12ee0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
12ef0 74 65 73 74 53 68 65 6c 6c 29 5d 7d 20 74 68 65  testShell)]} the
12f00 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
12f10 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
12f20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75 67 2d  For test "debug-
12f30 31 2e 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  1.3"...        #
12f40 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
12f50 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
12f60 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
12f70 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
12f80 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
12f90 20 2a 54 65 73 74 53 68 65 6c 6c 4d 61 69 6e 43   *TestShellMainC
12fa0 6f 72 65 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ore*..      }...
12fb0 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
12fc0 23 20 4e 4f 54 45 3a 20 48 61 73 20 71 75 69 65  # NOTE: Has quie
12fd0 74 20 70 72 6f 70 65 72 74 79 20 74 65 73 74 69  t property testi
12fe0 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
12ff0 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
13000 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
13010 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
13020 65 73 74 53 65 74 51 75 69 65 74 29 5d 7d 20 74  estSetQuiet)]} t
13030 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
13040 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
13050 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73  : For tests "bas
13060 69 63 2d 31 2e 33 36 22 20 61 6e 64 20 22 64 65  ic-1.36" and "de
13070 62 75 67 2d 31 2e 33 22 2e 0d 0a 20 20 20 20 20  bug-1.3"...     
13080 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
13090 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
130a0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
130b0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
130c0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
130d0 20 20 20 20 20 2a 54 65 73 74 53 65 74 51 75 69       *TestSetQui
130e0 65 74 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  et*..      }....
130f0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
13100 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 6d 70 6c   NOTE: Has compl
13110 61 69 6e 74 20 74 65 73 74 69 6e 67 20 73 75 70  aint testing sup
13120 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
13130 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ed?..      #..  
13140 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
13150 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53 65 74  xists no(testSet
13160 43 6f 6d 70 6c 61 69 6e 29 5d 7d 20 74 68 65 6e  Complain)]} then
13170 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20   {..        #.. 
13180 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 54         # NOTE: T
13190 68 69 73 20 69 73 20 6e 6f 74 20 63 75 72 72 65  his is not curre
131a0 6e 74 6c 79 20 75 73 65 64 20 62 79 20 61 6e 79  ntly used by any
131b0 20 74 65 73 74 73 2e 0d 0a 20 20 20 20 20 20 20   tests...       
131c0 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63   #..        chec
131d0 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
131e0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
131f0 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
13200 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
13210 20 20 20 2a 54 65 73 74 53 65 74 43 6f 6d 70 6c     *TestSetCompl
13220 61 69 6e 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  ain*..      }...
13230 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
13240 23 20 4e 4f 54 45 3a 20 48 61 73 20 73 70 65 63  # NOTE: Has spec
13250 69 61 6c 20 76 61 72 69 61 62 6c 65 20 74 65 73  ial variable tes
13260 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
13270 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
13280 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
13290 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
132a0 28 74 65 73 74 53 65 74 56 61 72 69 61 62 6c 65  (testSetVariable
132b0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
132c0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
132d0 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
132e0 22 62 61 73 69 63 2d 31 2e 31 30 37 22 2e 0d 0a  "basic-1.107"...
132f0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13300 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13310 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13320 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13330 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13340 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
13350 65 74 56 61 72 69 61 62 6c 65 57 69 74 68 54 79  etVariableWithTy
13360 70 65 64 56 61 6c 75 65 2a 0d 0a 20 20 20 20 20  pedValue*..     
13370 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20   }....      #.. 
13380 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73       # NOTE: Has
13390 20 65 6e 75 6d 65 72 61 62 6c 65 20 76 61 72 69   enumerable vari
133a0 61 62 6c 65 20 74 65 73 74 69 6e 67 20 73 75 70  able testing sup
133b0 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c  port been disabl
133c0 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20  ed?..      #..  
133d0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
133e0 78 69 73 74 73 20 6e 6f 28 74 65 73 74 45 6e 75  xists no(testEnu
133f0 6d 65 72 61 62 6c 65 56 61 72 69 61 62 6c 65 73  merableVariables
13400 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
13410 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
13420 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
13430 22 62 61 73 69 63 2d 31 2e 31 30 35 22 2e 0d 0a  "basic-1.105"...
13440 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13450 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13460 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13470 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13480 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13490 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
134a0 65 74 75 70 49 6e 74 41 72 72 61 79 2a 0d 0a 0d  etupIntArray*...
134b0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
134c0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
134d0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
134e0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
134f0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
13500 2a 54 65 73 74 53 65 74 56 61 72 69 61 62 6c 65  *TestSetVariable
13510 45 6e 75 6d 65 72 61 62 6c 65 2a 0d 0a 0d 0a 20  Enumerable*.... 
13520 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
13530 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
13540 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
13550 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
13560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
13570 65 73 74 55 6e 73 65 74 56 61 72 69 61 62 6c 65  estUnsetVariable
13580 45 6e 75 6d 65 72 61 62 6c 65 2a 0d 0a 20 20 20  Enumerable*..   
13590 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
135a0 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
135b0 61 73 20 6c 69 6e 6b 65 64 20 76 61 72 69 61 62  as linked variab
135c0 6c 65 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f  le testing suppo
135d0 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  rt been disabled
135e0 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ?..      #..    
135f0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
13600 73 74 73 20 6e 6f 28 74 65 73 74 4c 69 6e 6b 65  sts no(testLinke
13610 64 56 61 72 69 61 62 6c 65 73 29 5d 7d 20 74 68  dVariables)]} th
13620 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
13630 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
13640 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69   For tests "basi
13650 63 2d 31 2e 33 39 22 2c 20 22 62 61 73 69 63 2d  c-1.39", "basic-
13660 31 2e 34 30 22 2c 20 22 62 61 73 69 63 2d 31 2e  1.40", "basic-1.
13670 34 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 23 20  41",..        # 
13680 20 20 20 20 20 20 22 62 61 73 69 63 2d 31 2e 34        "basic-1.4
13690 32 22 2c 20 61 6e 64 20 22 62 61 73 69 63 2d 31  2", and "basic-1
136a0 2e 34 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  .43"...        #
136b0 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
136c0 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
136d0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
136e0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
136f0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
13700 20 2a 54 65 73 74 53 65 74 56 61 72 69 61 62 6c   *TestSetVariabl
13710 65 4c 69 6e 6b 73 2a 0d 0a 0d 0a 20 20 20 20 20  eLinks*....     
13720 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13730 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13740 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13750 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13760 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 55            *TestU
13770 6e 73 65 74 56 61 72 69 61 62 6c 65 4c 69 6e 6b  nsetVariableLink
13780 73 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  s*..      }.... 
13790 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
137a0 4e 4f 54 45 3a 20 48 61 73 20 73 79 73 74 65 6d  NOTE: Has system
137b0 20 61 72 72 61 79 20 76 61 72 69 61 62 6c 65 20   array variable 
137c0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
137d0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
137e0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69        #..      i
137f0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
13800 20 6e 6f 28 74 65 73 74 53 79 73 74 65 6d 41 72   no(testSystemAr
13810 72 61 79 56 61 72 69 61 62 6c 65 73 29 5d 7d 20  rayVariables)]} 
13820 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
13830 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
13840 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 62 61  E: For tests "ba
13850 73 69 63 2d 31 2e 36 32 22 2c 20 22 62 61 73 69  sic-1.62", "basi
13860 63 2d 31 2e 36 33 22 2c 20 22 62 61 73 69 63 2d  c-1.63", "basic-
13870 31 2e 36 34 22 2c 0d 0a 20 20 20 20 20 20 20 20  1.64",..        
13880 23 20 20 20 20 20 20 20 61 6e 64 20 22 62 61 73  #       and "bas
13890 69 63 2d 31 2e 36 35 22 2e 0d 0a 20 20 20 20 20  ic-1.65"...     
138a0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
138b0 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
138c0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
138d0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
138e0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
138f0 20 20 20 20 20 2a 54 65 73 74 49 6e 74 50 74 72       *TestIntPtr
13900 43 68 61 6e 67 65 54 79 70 65 43 61 6c 6c 62 61  ChangeTypeCallba
13910 63 6b 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  ck*....        c
13920 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
13930 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
13940 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
13950 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
13960 20 20 20 20 20 20 2a 54 65 73 74 53 65 74 56 61        *TestSetVa
13970 72 69 61 62 6c 65 53 79 73 74 65 6d 41 72 72 61  riableSystemArra
13980 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68  y*....        ch
13990 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
139a0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
139b0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
139c0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
139d0 20 20 20 20 20 2a 54 65 73 74 55 6e 73 65 74 56       *TestUnsetV
139e0 61 72 69 61 62 6c 65 53 79 73 74 65 6d 41 72 72  ariableSystemArr
139f0 61 79 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ay*..      }....
13a00 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
13a10 20 4e 4f 54 45 3a 20 48 61 73 20 72 65 70 61 72   NOTE: Has repar
13a20 73 65 20 70 6f 69 6e 74 20 74 65 73 74 69 6e 67  se point testing
13a30 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
13a40 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23  sabled?..      #
13a50 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e  ..      if {![in
13a60 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65 70  fo exists no(rep
13a70 61 72 73 65 50 6f 69 6e 74 73 29 5d 7d 20 74 68  arsePoints)]} th
13a80 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d  en {..        #.
13a90 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
13aa0 20 46 6f 72 20 74 65 73 74 73 20 22 66 69 6c 65   For tests "file
13ab0 49 4f 2d 31 34 2e 2a 22 2e 0d 0a 20 20 20 20 20  IO-14.*"...     
13ac0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
13ad0 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
13ae0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
13af0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
13b00 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
13b10 20 20 20 20 20 2a 54 65 73 74 50 72 6f 63 65 73       *TestProces
13b20 73 52 65 70 61 72 73 65 44 61 74 61 2a 0d 0a 20  sReparseData*.. 
13b30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13b40 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
13b50 20 48 61 73 20 66 69 65 6c 64 20 74 65 73 74 69   Has field testi
13b60 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
13b70 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20  disabled?..     
13b80 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b   #..      if {![
13b90 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
13ba0 65 73 74 46 69 65 6c 64 73 29 5d 7d 20 74 68 65  estFields)]} the
13bb0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
13bc0 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
13bd0 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69 63  For tests "basic
13be0 2d 31 2e 33 39 22 2c 20 22 62 61 73 69 63 2d 31  -1.39", "basic-1
13bf0 2e 34 30 22 2c 20 22 62 61 73 69 63 2d 31 2e 34  .40", "basic-1.4
13c00 31 22 2c 0d 0a 20 20 20 20 20 20 20 20 23 20 20  1",..        #  
13c10 20 20 20 20 20 22 62 61 73 69 63 2d 31 2e 34 32       "basic-1.42
13c20 22 2c 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e  ", and "basic-1.
13c30 34 33 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  43"...        #.
13c40 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
13c50 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
13c60 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
13c70 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
13c80 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
13c90 2a 70 72 69 76 61 74 65 46 69 65 6c 64 2a 0d 0a  *privateField*..
13ca0 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
13cb0 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
13cc0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
13cd0 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
13ce0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
13cf0 20 2a 6f 62 6a 65 63 74 46 69 65 6c 64 2a 0d 0a   *objectField*..
13d00 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
13d10 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
13d20 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
13d30 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
13d40 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
13d50 20 2a 69 6e 74 46 69 65 6c 64 2a 0d 0a 20 20 20   *intField*..   
13d60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d     }....      #.
13d70 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  .      # NOTE: H
13d80 61 73 20 70 72 6f 70 65 72 74 79 20 74 65 73 74  as property test
13d90 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
13da0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
13db0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
13dc0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
13dd0 74 65 73 74 50 72 6f 70 65 72 74 69 65 73 29 5d  testProperties)]
13de0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
13df0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
13e00 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
13e10 62 61 73 69 63 2d 31 2e 33 39 22 2c 20 22 62 61  basic-1.39", "ba
13e20 73 69 63 2d 31 2e 34 30 22 2c 20 22 62 61 73 69  sic-1.40", "basi
13e30 63 2d 31 2e 34 31 22 2c 0d 0a 20 20 20 20 20 20  c-1.41",..      
13e40 20 20 23 20 20 20 20 20 20 20 22 62 61 73 69 63    #       "basic
13e50 2d 31 2e 34 32 22 2c 20 61 6e 64 20 22 62 61 73  -1.42", and "bas
13e60 69 63 2d 31 2e 34 33 22 2e 0d 0a 20 20 20 20 20  ic-1.43"...     
13e70 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
13e80 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
13e90 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
13ea0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
13eb0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
13ec0 20 20 20 20 20 2a 67 65 74 5f 53 69 6d 70 6c 65       *get_Simple
13ed0 49 6e 74 50 72 6f 70 65 72 74 79 2a 0d 0a 0d 0a  IntProperty*....
13ee0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
13ef0 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
13f00 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 22  est "object-3.1"
13f10 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
13f20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
13f30 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
13f40 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
13f50 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
13f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 67 65  .            *ge
13f70 74 5f 49 74 65 6d 2a 0d 0a 0d 0a 20 20 20 20 20  t_Item*....     
13f80 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
13f90 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
13fa0 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
13fb0 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
13fc0 20 20 20 20 20 20 20 20 20 20 2a 73 65 74 5f 49            *set_I
13fd0 74 65 6d 2a 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d  tem*..      }...
13fe0 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20  .      #..      
13ff0 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 6f 72 65  # NOTE: Has core
14000 20 6d 61 72 73 68 61 6c 6c 65 72 20 74 65 73 74   marshaller test
14010 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
14020 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
14030 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
14040 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
14050 74 65 73 74 4d 61 72 73 68 61 6c 6c 65 72 29 5d  testMarshaller)]
14060 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
14070 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
14080 4f 54 45 3a 20 54 68 65 73 65 20 61 72 65 20 6e  OTE: These are n
14090 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65  ot currently use
140a0 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e 0d  d by any tests..
140b0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
140c0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
140d0 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
140e0 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
140f0 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
14100 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
14110 53 61 76 65 4f 62 6a 65 63 74 73 2a 0d 0a 0d 0a  SaveObjects*....
14120 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14130 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14140 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14150 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14160 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14170 54 65 73 74 52 65 73 74 6f 72 65 4f 62 6a 65 63  TestRestoreObjec
14180 74 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ts*....        #
14190 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
141a0 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
141b0 63 2d 31 2e 32 39 2e 2a 22 2e 0d 0a 20 20 20 20  c-1.29.*"...    
141c0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63      #..        c
141d0 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
141e0 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
141f0 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  l Eagle._Tests.D
14200 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20  efault \..      
14210 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63 75        *TestExecu
14220 74 65 53 74 61 74 69 63 44 65 6c 65 67 61 74 65  teStaticDelegate
14230 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  s*....        #.
14240 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
14250 20 46 6f 72 20 74 65 73 74 73 20 22 62 61 73 69   For tests "basi
14260 63 2d 31 2e 33 30 2e 2a 22 20 61 6e 64 20 22 62  c-1.30.*" and "b
14270 61 73 69 63 2d 31 2e 33 31 22 2e 0d 0a 20 20 20  asic-1.31"...   
14280 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
14290 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65  checkForObjectMe
142a0 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e  mber $test_chann
142b0 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e  el Eagle._Tests.
142c0 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20  Default \..     
142d0 20 20 20 20 20 20 20 2a 54 65 73 74 45 78 65 63         *TestExec
142e0 75 74 65 44 65 6c 65 67 61 74 65 43 6f 6d 6d 61  uteDelegateComma
142f0 6e 64 73 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  nds*....        
14300 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
14310 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6e 61 6d  E: For test "nam
14320 65 73 70 61 63 65 2d 39 37 2e 31 30 22 2e 0d 0a  espace-97.10"...
14330 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
14340 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
14350 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
14360 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
14370 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
14380 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 52            *TestR
14390 65 6e 61 6d 65 4e 61 6d 65 73 70 61 63 65 2a 0d  enameNamespace*.
143a0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
143b0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
143c0 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 32  r test "object-2
143d0 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .1"...        #.
143e0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
143f0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
14400 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
14410 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
14420 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
14430 2a 54 65 73 74 43 6f 6d 70 6c 65 78 4d 65 74 68  *TestComplexMeth
14440 6f 64 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  od*....        #
14450 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
14460 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
14470 63 74 2d 32 2e 31 32 22 2e 0d 0a 20 20 20 20 20  ct-2.12"...     
14480 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
14490 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
144a0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
144b0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
144c0 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
144d0 20 20 20 20 20 2a 54 65 73 74 4d 6f 72 65 43 6f       *TestMoreCo
144e0 6d 70 6c 65 78 4d 65 74 68 6f 64 2a 0d 0a 0d 0a  mplexMethod*....
144f0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
14500 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
14510 65 73 74 20 22 6f 62 6a 65 63 74 2d 32 2e 33 22  est "object-2.3"
14520 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
14530 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
14540 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
14550 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
14560 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
14570 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
14580 73 74 54 6f 48 65 78 61 64 65 63 69 6d 61 6c 53  stToHexadecimalS
14590 74 72 69 6e 67 2a 0d 0a 0d 0a 20 20 20 20 20 20  tring*....      
145a0 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
145b0 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
145c0 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
145d0 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
145e0 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 4d 75           *TestMu
145f0 6c 74 69 32 41 72 72 61 79 2a 0d 0a 0d 0a 20 20  lti2Array*....  
14600 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
14610 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
14620 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
14630 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
14640 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
14650 73 74 4d 75 6c 74 69 33 41 72 72 61 79 2a 0d 0a  stMulti3Array*..
14660 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
14670 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
14680 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
14690 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
146a0 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
146b0 20 2a 54 65 73 74 4e 65 73 74 65 64 41 72 72 61   *TestNestedArra
146c0 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d  y*....        #.
146d0 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  .        # NOTE:
146e0 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63   For test "objec
146f0 74 2d 32 2e 31 31 22 2e 0d 0a 20 20 20 20 20 20  t-2.11"...      
14700 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
14710 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
14720 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
14730 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
14740 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
14750 20 20 20 20 2a 54 65 73 74 4f 62 6a 65 63 74 41      *TestObjectA
14760 73 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20 20 20  sArray*....     
14770 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20     #..        # 
14780 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
14790 22 6f 62 6a 65 63 74 2d 33 2e 36 22 20 61 6e 64  "object-3.6" and
147a0 20 22 6f 62 6a 65 63 74 2d 33 2e 37 22 2e 0d 0a   "object-3.7"...
147b0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
147c0 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63     checkForObjec
147d0 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68  tMember $test_ch
147e0 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73  annel Eagle._Tes
147f0 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20  ts.Default \..  
14800 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53            *TestS
14810 74 72 69 6e 67 49 4c 69 73 74 52 65 74 75 72 6e  tringIListReturn
14820 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20  Value*....      
14830 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
14840 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
14850 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74  nnel Eagle._Test
14860 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20  s.Default \..   
14870 20 20 20 20 20 20 20 20 20 2a 54 65 73 74 53 74           *TestSt
14880 72 69 6e 67 49 4c 69 73 74 49 4c 69 73 74 49 4c  ringIListIListIL
14890 69 73 74 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d  istReturnValue*.
148a0 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
148b0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
148c0 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33  r test "object-3
148d0 2e 38 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .8"...        #.
148e0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
148f0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
14900 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
14910 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
14920 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
14930 2a 54 65 73 74 42 79 74 65 4c 69 73 74 2a 0d 0a  *TestByteList*..
14940 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
14950 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
14960 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e   test "object-3.
14970 39 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  9"...        #..
14980 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14990 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
149a0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
149b0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
149c0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
149d0 54 65 73 74 49 6e 74 4c 69 73 74 2a 0d 0a 0d 0a  TestIntList*....
149e0 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
149f0 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
14a00 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 30  est "object-3.10
14a10 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
14a20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
14a30 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
14a40 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
14a50 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
14a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
14a70 65 73 74 4c 6f 6e 67 4c 69 73 74 2a 0d 0a 0d 0a  estLongList*....
14a80 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
14a90 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
14aa0 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31 31  est "object-3.11
14ab0 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  "...        #.. 
14ac0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
14ad0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
14ae0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
14af0 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
14b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
14b10 65 73 74 44 65 72 69 76 65 64 4c 69 73 74 2a 0d  estDerivedList*.
14b20 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
14b30 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
14b40 72 20 74 65 73 74 73 20 22 6f 62 6a 65 63 74 2d  r tests "object-
14b50 33 2e 31 32 22 20 61 6e 64 20 22 6f 62 6a 65 63  3.12" and "objec
14b60 74 2d 33 2e 31 33 22 2e 0d 0a 20 20 20 20 20 20  t-3.13"...      
14b70 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
14b80 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
14b90 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
14ba0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
14bb0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
14bc0 20 20 20 20 2a 54 65 73 74 53 74 72 69 6e 67 49      *TestStringI
14bd0 44 69 63 74 69 6f 6e 61 72 79 52 65 74 75 72 6e  DictionaryReturn
14be0 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20 20 20 20  Value*....      
14bf0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
14c00 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
14c10 6f 62 6a 65 63 74 2d 33 2e 31 34 22 20 61 6e 64  object-3.14" and
14c20 20 22 6f 62 6a 65 63 74 2d 33 2e 31 35 22 2e 0d   "object-3.15"..
14c30 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
14c40 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
14c50 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
14c60 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
14c70 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
14c80 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
14c90 52 65 74 75 72 6e 4f 66 53 65 6c 66 2a 0d 0a 0d  ReturnOfSelf*...
14ca0 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20  .        #..    
14cb0 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
14cc0 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 33 2e 31  test "object-3.1
14cd0 37 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  7"...        #..
14ce0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14cf0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14d00 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14d10 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14d20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14d30 54 65 73 74 42 79 52 65 66 42 79 74 65 41 72 72  TestByRefByteArr
14d40 61 79 2a 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ay*....        #
14d50 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
14d60 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a 65  : For test "obje
14d70 63 74 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20 20  ct-4.1"...      
14d80 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
14d90 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
14da0 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
14db0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
14dc0 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
14dd0 20 20 20 20 2a 54 65 73 74 45 78 70 72 2a 0d 0a      *TestExpr*..
14de0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
14df0 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
14e00 20 74 65 73 74 73 20 22 62 61 73 69 63 2d 31 2e   tests "basic-1.
14e10 36 36 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 37  66", "basic-1.67
14e20 22 2c 20 22 62 61 73 69 63 2d 31 2e 36 38 22 2c  ", "basic-1.68",
14e30 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20  ..        #     
14e40 20 20 61 6e 64 20 22 62 61 73 69 63 2d 31 2e 36    and "basic-1.6
14e50 39 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  9"...        #..
14e60 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
14e70 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
14e80 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
14e90 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
14ea0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
14eb0 54 65 73 74 54 61 6b 65 45 76 65 6e 74 48 61 6e  TestTakeEventHan
14ec0 64 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  dler*....       
14ed0 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
14ee0 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
14ef0 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
14f00 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
14f10 20 20 20 20 20 20 20 20 2a 54 65 73 74 54 61 6b          *TestTak
14f20 65 47 65 6e 65 72 69 63 45 76 65 6e 74 48 61 6e  eGenericEventHan
14f30 64 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  dler*....       
14f40 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
14f50 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
14f60 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
14f70 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
14f80 20 20 20 20 20 20 20 20 2a 54 65 73 74 54 61 6b          *TestTak
14f90 65 52 65 73 6f 6c 76 65 45 76 65 6e 74 48 61 6e  eResolveEventHan
14fa0 64 6c 65 72 2a 0d 0a 0d 0a 20 20 20 20 20 20 20  dler*....       
14fb0 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
14fc0 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 61 72  TE: For test "ar
14fd0 72 61 79 2d 34 2e 31 22 2e 0d 0a 20 20 20 20 20  ray-4.1"...     
14fe0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
14ff0 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
15000 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
15010 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15020 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20  fault \..       
15030 20 20 20 20 20 2a 54 65 73 74 54 77 6f 42 79 74       *TestTwoByt
15040 65 41 72 72 61 79 73 2a 0d 0a 0d 0a 20 20 20 20  eArrays*....    
15050 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65      checkForObje
15060 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63  ctMember $test_c
15070 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65  hannel Eagle._Te
15080 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20  sts.Default \.. 
15090 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73 74             *Test
150a0 52 65 74 75 72 6e 42 79 74 65 41 72 72 61 79 2a  ReturnByteArray*
150b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20  ....        #.. 
150c0 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46         # NOTE: F
150d0 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d  or test "object-
150e0 37 2e 31 22 2e 0d 0a 20 20 20 20 20 20 20 20 23  7.1"...        #
150f0 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46  ..        checkF
15100 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24  orObjectMember $
15110 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67  test_channel Eag
15120 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c  le._Tests.Defaul
15130 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t \..           
15140 20 2a 54 65 73 74 42 79 52 65 66 56 61 6c 75 65   *TestByRefValue
15150 54 79 70 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20  TypeMethod*.... 
15160 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
15170 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
15180 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
15190 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
151a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
151b0 65 73 74 4e 75 6c 6c 61 62 6c 65 56 61 6c 75 65  estNullableValue
151c0 54 79 70 65 4d 65 74 68 6f 64 2a 0d 0a 0d 0a 20  TypeMethod*.... 
151d0 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
151e0 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
151f0 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
15200 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
15210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
15220 65 73 74 42 79 52 65 66 4e 75 6c 6c 61 62 6c 65  estByRefNullable
15230 56 61 6c 75 65 54 79 70 65 4d 65 74 68 6f 64 2a  ValueTypeMethod*
15240 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 68 65 63  ....        chec
15250 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72  kForObjectMember
15260 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45   $test_channel E
15270 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
15280 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ult \..         
15290 20 20 20 2a 54 65 73 74 49 6e 74 41 72 72 61 79     *TestIntArray
152a0 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a  ReturnValue*....
152b0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
152c0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
152d0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
152e0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
152f0 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
15300 54 65 73 74 53 74 72 69 6e 67 41 72 72 61 79 52  TestStringArrayR
15310 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20  eturnValue*.... 
15320 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
15330 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
15340 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
15350 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
15360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
15370 65 73 74 53 74 72 69 6e 67 4c 69 73 74 52 65 74  estStringListRet
15380 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a 20 20 20  urnValue*....   
15390 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
153a0 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
153b0 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
153c0 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
153d0 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
153e0 74 53 74 72 69 6e 67 4c 69 73 74 41 72 72 61 79  tStringListArray
153f0 52 65 74 75 72 6e 56 61 6c 75 65 2a 0d 0a 0d 0a  ReturnValue*....
15400 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
15410 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
15420 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
15430 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
15440 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
15450 54 65 73 74 42 79 52 65 66 53 74 72 69 6e 67 4c  TestByRefStringL
15460 69 73 74 41 72 72 61 79 2a 0d 0a 0d 0a 20 20 20  istArray*....   
15470 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
15480 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
15490 73 20 22 6f 62 6a 65 63 74 2d 37 2e 32 22 20 61  s "object-7.2" a
154a0 6e 64 20 22 6f 62 6a 65 63 74 2d 37 2e 34 22 2e  nd "object-7.4".
154b0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
154c0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
154d0 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
154e0 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f 54  channel Eagle._T
154f0 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d 0a  ests.Default \..
15500 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65 73              *Tes
15510 74 4e 75 6c 6c 41 72 72 61 79 2a 0d 0a 0d 0a 20  tNullArray*.... 
15520 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
15530 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
15540 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e  t_channel Eagle.
15550 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c  _Tests.Default \
15560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54  ..            *T
15570 65 73 74 4f 75 74 41 72 72 61 79 2a 0d 0a 0d 0a  estOutArray*....
15580 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
15590 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74     # NOTE: For t
155a0 65 73 74 73 20 22 6f 62 6a 65 63 74 2d 37 2e 36  ests "object-7.6
155b0 22 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 37 2e  " and "object-7.
155c0 37 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  7"...        #..
155d0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
155e0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
155f0 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
15600 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
15610 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
15620 54 65 73 74 42 79 52 65 66 41 72 72 61 79 2a 0d  TestByRefArray*.
15630 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
15640 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
15650 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 37  r test "object-7
15660 2e 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .5"...        #.
15670 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
15680 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
15690 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
156a0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
156b0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
156c0 2a 54 65 73 74 45 6e 75 6d 2a 0d 0a 0d 0a 20 20  *TestEnum*....  
156d0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62        checkForOb
156e0 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74  jectMember $test
156f0 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65 2e 5f  _channel Eagle._
15700 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20 5c 0d  Tests.Default \.
15710 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 65  .            *Te
15720 73 74 42 79 52 65 66 45 6e 75 6d 2a 0d 0a 0d 0a  stByRefEnum*....
15730 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
15740 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
15750 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
15760 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 20  ._Tests.Default 
15770 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a  \..            *
15780 54 65 73 74 4e 75 6c 6c 61 62 6c 65 45 6e 75 6d  TestNullableEnum
15790 2a 0d 0a 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 20 5c 0d 0a 20 20 20 20 20 20 20 20  ault \..        
157e0 20 20 20 20 2a 54 65 73 74 42 79 52 65 66 4e 75      *TestByRefNu
157f0 6c 6c 61 62 6c 65 45 6e 75 6d 2a 0d 0a 0d 0a 20  llableEnum*.... 
15800 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
15810 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
15820 73 74 73 20 22 6f 62 6a 65 63 74 2d 31 34 2e 34  sts "object-14.4
15830 22 20 61 6e 64 20 22 6f 62 6a 65 63 74 2d 31 34  " and "object-14
15840 2e 35 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  .5"...        #.
15850 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
15860 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
15870 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
15880 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
15890 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
158a0 2a 53 74 61 74 69 63 4f 62 6a 65 63 74 50 72 6f  *StaticObjectPro
158b0 70 65 72 74 79 2a 0d 0a 0d 0a 20 20 20 20 20 20  perty*....      
158c0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e    #..        # N
158d0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
158e0 62 6a 65 63 74 2d 31 34 2e 36 22 2e 0d 0a 20 20  bject-14.6"...  
158f0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
15900 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
15910 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
15920 6e 65 6c 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  nel Eagle._Tests
15930 2e 44 65 66 61 75 6c 74 20 5c 0d 0a 20 20 20 20  .Default \..    
15940 20 20 20 20 20 20 20 20 2a 54 79 70 65 50 72 6f          *TypePro
15950 70 65 72 74 79 2a 0d 0a 20 20 20 20 20 20 7d 0d  perty*..      }.
15960 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
15970 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 49 44    # NOTE: Has ID
15980 69 73 70 6f 73 61 62 6c 65 20 74 65 73 74 69 6e  isposable testin
15990 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
159a0 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20  isabled?..      
159b0 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69  #..      if {![i
159c0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
159d0 73 74 44 69 73 70 6f 73 61 62 6c 65 29 5d 7d 20  stDisposable)]} 
159e0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
159f0 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54  #..        # NOT
15a00 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f 62 6a  E: For test "obj
15a10 65 63 74 2d 32 2e 38 22 2e 0d 0a 20 20 20 20 20  ect-2.8"...     
15a20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
15a30 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
15a40 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
15a50 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15a60 66 61 75 6c 74 2b 44 69 73 70 6f 73 61 62 6c 65  fault+Disposable
15a70 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
15a80 2a 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c 65  *ToString* Eagle
15a90 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e  ._Tests.Default.
15aa0 44 69 73 70 6f 73 61 62 6c 65 2e 54 6f 53 74 72  Disposable.ToStr
15ab0 69 6e 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ing..      }....
15ac0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
15ad0 20 4e 4f 54 45 3a 20 48 61 73 20 49 53 75 62 43   NOTE: Has ISubC
15ae0 6f 6d 6d 61 6e 64 20 74 65 73 74 69 6e 67 20 73  ommand testing s
15af0 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
15b00 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a  bled?..      #..
15b10 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
15b20 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74 53   exists no(testS
15b30 75 62 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65  ubCommand)]} the
15b40 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  n {..        #..
15b50 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
15b60 46 6f 72 20 74 65 73 74 73 20 22 72 65 64 65 66  For tests "redef
15b70 69 6e 65 2d 32 2e 2a 22 2e 0d 0a 20 20 20 20 20  ine-2.*"...     
15b80 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68     #..        ch
15b90 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62  eckForObjectMemb
15ba0 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  er $test_channel
15bb0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15bc0 66 61 75 6c 74 2b 53 75 62 43 6f 6d 6d 61 6e 64  fault+SubCommand
15bd0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
15be0 2a 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c 65  *ToString* Eagle
15bf0 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2e  ._Tests.Default.
15c00 53 75 62 43 6f 6d 6d 61 6e 64 2e 54 6f 53 74 72  SubCommand.ToStr
15c10 69 6e 67 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ing..      }....
15c20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
15c30 20 4e 4f 54 45 3a 20 48 61 73 20 49 52 65 73 6f   NOTE: Has IReso
15c40 6c 76 65 20 74 65 73 74 69 6e 67 20 73 75 70 70  lve testing supp
15c50 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65  ort been disable
15c60 64 3f 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  d?..      #..   
15c70 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
15c80 69 73 74 73 20 6e 6f 28 74 65 73 74 52 65 73 6f  ists no(testReso
15c90 6c 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  lve)]} then {.. 
15ca0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
15cb0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
15cc0 73 74 73 20 22 72 65 73 6f 6c 76 65 72 2d 31 2e  sts "resolver-1.
15cd0 2a 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  *"...        #..
15ce0 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
15cf0 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
15d00 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
15d10 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b  ._Tests.Default+
15d20 52 65 73 6f 6c 76 65 20 5c 0d 0a 20 20 20 20 20  Resolve \..     
15d30 20 20 20 20 20 20 20 2a 54 6f 53 74 72 69 6e 67         *ToString
15d40 2a 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44  * Eagle._Tests.D
15d50 65 66 61 75 6c 74 2e 52 65 73 6f 6c 76 65 2e 54  efault.Resolve.T
15d60 6f 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 7d  oString..      }
15d70 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20  ....      #..   
15d80 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 73     # NOTE: Has s
15d90 63 72 69 70 74 20 6c 69 6d 69 74 65 72 20 74 65  cript limiter te
15da0 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
15db0 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20  en disabled?..  
15dc0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
15dd0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
15de0 6f 28 74 65 73 74 4c 69 6d 69 74 65 72 29 5d 7d  o(testLimiter)]}
15df0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20   then {..       
15e00 20 23 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f   #..        # NO
15e10 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 69  TE: For tests "i
15e20 6e 74 65 72 70 2d 31 2e 39 30 3f 22 2e 0d 0a 20  nterp-1.90?"... 
15e30 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
15e40 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74    checkForObject
15e50 4d 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61  Member $test_cha
15e60 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20  nnel \..        
15e70 20 20 20 20 45 61 67 6c 65 2e 5f 54 65 73 74 73      Eagle._Tests
15e80 2e 44 65 66 61 75 6c 74 2b 53 63 72 69 70 74 4c  .Default+ScriptL
15e90 69 6d 69 74 65 72 20 2a 54 6f 53 74 72 69 6e 67  imiter *ToString
15ea0 2a 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  * \..           
15eb0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
15ec0 66 61 75 6c 74 2e 53 63 72 69 70 74 4c 69 6d 69  fault.ScriptLimi
15ed0 74 65 72 2e 54 6f 53 74 72 69 6e 67 0d 0a 20 20  ter.ToString..  
15ee0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
15ef0 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
15f00 48 61 73 20 54 72 61 63 65 4c 69 73 74 65 6e 65  Has TraceListene
15f10 72 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  r testing suppor
15f20 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
15f30 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
15f40 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
15f50 74 73 20 6e 6f 28 74 65 73 74 54 72 61 63 65 4c  ts no(testTraceL
15f60 69 73 74 65 6e 65 72 29 5d 7d 20 74 68 65 6e 20  istener)]} then 
15f70 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
15f80 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
15f90 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e  r test "basic-1.
15fa0 37 34 22 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d  74"...        #.
15fb0 0a 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f  .        checkFo
15fc0 72 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74  rObjectMember $t
15fd0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c  est_channel Eagl
15fe0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
15ff0 2b 4c 69 73 74 65 6e 65 72 20 5c 0d 0a 20 20 20  +Listener \..   
16000 20 20 20 20 20 20 20 20 20 2a 57 72 69 74 65 4c           *WriteL
16010 69 6e 65 2a 20 45 61 67 6c 65 2e 5f 54 65 73 74  ine* Eagle._Test
16020 73 2e 44 65 66 61 75 6c 74 2e 4c 69 73 74 65 6e  s.Default.Listen
16030 65 72 2e 57 72 69 74 65 4c 69 6e 65 0d 0a 0d 0a  er.WriteLine....
16040 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
16050 4f 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65  ObjectMember $te
16060 73 74 5f 63 68 61 6e 6e 65 6c 20 45 61 67 6c 65  st_channel Eagle
16070 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b  ._Tests.Default+
16080 4c 69 73 74 65 6e 65 72 20 5c 0d 0a 20 20 20 20  Listener \..    
16090 20 20 20 20 20 20 20 20 2a 46 6c 75 73 68 2a 20          *Flush* 
160a0 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
160b0 61 75 6c 74 2e 4c 69 73 74 65 6e 65 72 2e 46 6c  ault.Listener.Fl
160c0 75 73 68 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ush....        #
160d0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
160e0 3a 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69  : For test "basi
160f0 63 2d 31 2e 37 35 22 2e 0d 0a 20 20 20 20 20 20  c-1.75"...      
16100 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
16110 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d 62 65  ckForObjectMembe
16120 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  r $test_channel 
16130 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66  Eagle._Tests.Def
16140 61 75 6c 74 2b 4c 69 73 74 65 6e 65 72 20 5c 0d  ault+Listener \.
16150 0a 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 45  .            * E
16160 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65 66 61  agle._Tests.Defa
16170 75 6c 74 2e 4c 69 73 74 65 6e 65 72 0d 0a 20 20  ult.Listener..  
16180 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23      }....      #
16190 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
161a0 48 61 73 20 73 63 72 69 70 74 20 65 76 65 6e 74  Has script event
161b0 20 74 68 72 65 61 64 20 74 65 73 74 69 6e 67 20   thread testing 
161c0 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
161d0 61 62 6c 65 64 3f 0d 0a 20 20 20 20 20 20 23 0d  abled?..      #.
161e0 0a 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  .      if {![inf
161f0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
16200 53 63 72 69 70 74 45 76 65 6e 74 54 68 72 65 61  ScriptEventThrea
16210 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
16220 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
16230 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
16240 20 22 69 6e 74 65 72 70 2d 31 2e 38 30 31 22 2e   "interp-1.801".
16250 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
16260 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 62 6a       checkForObj
16270 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73 74 5f  ectMember $test_
16280 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20  channel \..     
16290 20 20 20 20 20 20 20 45 61 67 6c 65 2e 5f 54 65         Eagle._Te
162a0 73 74 73 2e 44 65 66 61 75 6c 74 2b 53 63 72 69  sts.Default+Scri
162b0 70 74 45 76 65 6e 74 53 74 61 74 65 20 5c 0d 0a  ptEventState \..
162c0 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 6f 53              *ToS
162d0 74 72 69 6e 67 2a 20 45 61 67 6c 65 2e 5f 54 65  tring* Eagle._Te
162e0 73 74 73 2e 44 65 66 61 75 6c 74 2e 53 63 72 69  sts.Default.Scri
162f0 70 74 45 76 65 6e 74 53 74 61 74 65 2e 54 6f 53  ptEventState.ToS
16300 74 72 69 6e 67 0d 0a 0d 0a 20 20 20 20 20 20 20  tring....       
16310 20 63 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d   checkForObjectM
16320 65 6d 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e  ember $test_chan
16330 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  nel \..         
16340 20 20 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e     Eagle._Tests.
16350 44 65 66 61 75 6c 74 2b 53 63 72 69 70 74 45 76  Default+ScriptEv
16360 65 6e 74 54 68 72 65 61 64 20 5c 0d 0a 20 20 20  entThread \..   
16370 20 20 20 20 20 20 20 20 20 2a 54 6f 53 74 72 69           *ToStri
16380 6e 67 2a 20 45 61 67 6c 65 2e 5f 54 65 73 74 73  ng* Eagle._Tests
16390 2e 44 65 66 61 75 6c 74 2e 53 63 72 69 70 74 45  .Default.ScriptE
163a0 76 65 6e 74 54 68 72 65 61 64 2e 54 6f 53 74 72  ventThread.ToStr
163b0 69 6e 67 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63  ing....        c
163c0 68 65 63 6b 46 6f 72 4f 62 6a 65 63 74 4d 65 6d  heckForObjectMem
163d0 62 65 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ber $test_channe
163e0 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l \..           
163f0 20 45 61 67 6c 65 2e 5f 54 65 73 74 73 2e 44 65   Eagle._Tests.De
16400 66 61 75 6c 74 2b 53 63 72 69 70 74 54 68 72 65  fault+ScriptThre
16410 61 64 43 6c 69 65 6e 74 44 61 74 61 20 5c 0d 0a  adClientData \..
16420 20 20 20 20 20 20 20 20 20 20 20 20 2a 54 6f 53              *ToS
16430 74 72 69 6e 67 2a 20 45 61 67 6c 65 2e 5f 54 65  tring* Eagle._Te
16440 73 74 73 2e 44 65 66 61 75 6c 74 2e 53 63 72 69  sts.Default.Scri
16450 70 74 54 68 72 65 61 64 43 6c 69 65 6e 74 44 61  ptThreadClientDa
16460 74 61 2e 54 6f 53 74 72 69 6e 67 0d 0a 0d 0a 20  ta.ToString.... 
16470 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4f         checkForO
16480 62 6a 65 63 74 4d 65 6d 62 65 72 20 24 74 65 73  bjectMember $tes
16490 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20  t_channel \..   
164a0 20 20 20 20 20 20 20 20 20 45 61 67 6c 65 2e 5f           Eagle._
164b0 54 65 73 74 73 2e 44 65 66 61 75 6c 74 2b 53 63  Tests.Default+Sc
164c0 72 69 70 74 54 69 6d 65 6f 75 74 54 68 72 65 61  riptTimeoutThrea
164d0 64 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d \..           
164e0 20 2a 54 6f 53 74 72 69 6e 67 2a 20 45 61 67 6c   *ToString* Eagl
164f0 65 2e 5f 54 65 73 74 73 2e 44 65 66 61 75 6c 74  e._Tests.Default
16500 2e 53 63 72 69 70 74 54 69 6d 65 6f 75 74 54 68  .ScriptTimeoutTh
16510 72 65 61 64 2e 54 6f 53 74 72 69 6e 67 0d 0a 20  read.ToString.. 
16520 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d       }..    }...
16530 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16540 54 45 3a 20 48 61 73 20 4d 53 42 75 69 6c 64 20  TE: Has MSBuild 
16550 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
16560 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
16570 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
16580 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
16590 6d 73 42 75 69 6c 64 29 5d 7d 20 74 68 65 6e 20  msBuild)]} then 
165a0 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
165b0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
165c0 73 74 20 22 6f 62 6a 65 63 74 2d 34 2e 31 33 22  st "object-4.13"
165d0 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
165e0 20 20 63 68 65 63 6b 46 6f 72 41 73 73 65 6d 62    checkForAssemb
165f0 6c 79 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ly $test_channel
16600 20 4d 69 63 72 6f 73 6f 66 74 2e 42 75 69 6c 64   Microsoft.Build
16610 2e 46 72 61 6d 65 77 6f 72 6b 0d 0a 0d 0a 20 20  .Framework....  
16620 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
16630 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
16640 62 6a 65 63 74 2d 36 2e 31 22 2e 0d 0a 20 20 20  bject-6.1"...   
16650 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
16660 6b 46 6f 72 41 73 73 65 6d 62 6c 79 20 24 74 65  kForAssembly $te
16670 73 74 5f 63 68 61 6e 6e 65 6c 20 4d 69 63 72 6f  st_channel Micro
16680 73 6f 66 74 2e 42 75 69 6c 64 2e 45 6e 67 69 6e  soft.Build.Engin
16690 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  e..    }....    
166a0 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
166b0 61 73 20 45 78 63 65 6c 20 74 65 73 74 69 6e 67  as Excel testing
166c0 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
166d0 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
166e0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
166f0 78 69 73 74 73 20 6e 6f 28 65 78 63 65 6c 29 5d  xists no(excel)]
16700 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
16710 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
16720 20 46 6f 72 20 74 65 73 74 73 20 22 65 78 63 65   For tests "exce
16730 6c 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23  l-*.*"...      #
16740 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
16750 41 73 73 65 6d 62 6c 79 20 24 74 65 73 74 5f 63  Assembly $test_c
16760 68 61 6e 6e 65 6c 20 4d 69 63 72 6f 73 6f 66 74  hannel Microsoft
16770 2e 4f 66 66 69 63 65 2e 49 6e 74 65 72 6f 70 2e  .Office.Interop.
16780 45 78 63 65 6c 0d 0a 0d 0a 20 20 20 20 20 20 23  Excel....      #
16790 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20  ..      # NOTE: 
167a0 48 61 73 20 45 78 63 65 6c 20 75 73 61 62 69 6c  Has Excel usabil
167b0 69 74 79 20 74 65 73 74 69 6e 67 20 62 65 65 6e  ity testing been
167c0 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
167d0 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
167e0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
167f0 65 78 63 65 6c 55 73 61 62 6c 65 29 5d 7d 20 74  excelUsable)]} t
16800 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
16810 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
16820 3a 20 46 6f 72 20 74 65 73 74 73 20 22 65 78 63  : For tests "exc
16830 65 6c 2d 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  el-*.*"...      
16840 20 20 23 0d 0a 20 20 20 20 20 20 20 20 63 68 65    #..        che
16850 63 6b 46 6f 72 45 78 63 65 6c 55 73 61 62 6c 65  ckForExcelUsable
16860 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
16870 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
16880 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
16890 4f 54 45 3a 20 48 61 73 20 73 70 65 65 63 68 20  OTE: Has speech 
168a0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
168b0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
168c0 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
168d0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
168e0 73 70 65 65 63 68 29 5d 7d 20 74 68 65 6e 20 7b  speech)]} then {
168f0 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
16900 20 23 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65   # NOTE: Set the
16910 20 61 75 64 69 6f 20 76 6f 6c 75 6d 65 2c 20 69   audio volume, i
16920 66 20 6e 65 63 65 73 73 61 72 79 2e 0d 0a 20 20  f necessary...  
16930 20 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20      #..      if 
16940 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
16950 65 73 74 5f 76 6f 6c 75 6d 65 5d 7d 20 74 68 65  est_volume]} the
16960 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 65 74  n {..        set
16970 20 74 65 73 74 5f 76 6f 6c 75 6d 65 20 30 3b 20   test_volume 0; 
16980 23 20 69 6e 20 70 65 72 63 65 6e 74 2c 20 30 20  # in percent, 0 
16990 69 73 20 73 69 6c 65 6e 74 2e 0d 0a 20 20 20 20  is silent...    
169a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 23 0d 0a    }....      #..
169b0 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f        # NOTE: Fo
169c0 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d 34  r test "object-4
169d0 2e 35 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20  .5"...      #.. 
169e0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 41 73 73       checkForAss
169f0 65 6d 62 6c 79 20 24 74 65 73 74 5f 63 68 61 6e  embly $test_chan
16a00 6e 65 6c 20 53 79 73 74 65 6d 2e 53 70 65 65 63  nel System.Speec
16a10 68 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  h..    }....    
16a20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48  #..    # NOTE: H
16a30 61 73 20 57 69 6e 46 6f 72 6d 73 20 74 65 73 74  as WinForms test
16a40 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
16a50 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
16a60 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
16a70 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 69 6e 46  o exists no(winF
16a80 6f 72 6d 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  orms)]} then {..
16a90 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
16aa0 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73   NOTE: For tests
16ab0 20 22 6f 62 6a 65 63 74 2d 31 33 2e 31 2e 2a 22   "object-13.1.*"
16ac0 2c 20 22 6f 62 6a 65 63 74 2d 31 33 2e 32 2e 2a  , "object-13.2.*
16ad0 22 2c 20 61 6e 64 0d 0a 20 20 20 20 20 20 23 20  ", and..      # 
16ae0 20 20 20 20 20 20 22 77 69 6e 46 6f 72 6d 73 2d        "winForms-
16af0 2a 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  *.*"...      #..
16b00 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 57 69        checkForWi
16b10 6e 64 6f 77 73 46 6f 72 6d 73 20 24 74 65 73 74  ndowsForms $test
16b20 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
16b30 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
16b40 4e 4f 54 45 3a 20 41 72 65 20 77 65 20 72 75 6e  NOTE: Are we run
16b50 6e 69 6e 67 20 69 6e 20 61 20 57 6f 57 36 34 20  ning in a WoW64 
16b60 70 72 6f 63 65 73 73 3f 0d 0a 20 20 20 20 23 0d  process?..    #.
16b70 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
16b80 65 78 69 73 74 73 20 6e 6f 28 77 6f 77 36 34 29  exists no(wow64)
16b90 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
16ba0 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
16bb0 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63 75  : This is not cu
16bc0 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79 20  rrently used by 
16bd0 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20 20  any tests...    
16be0 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
16bf0 46 6f 72 57 6f 57 36 34 20 24 74 65 73 74 5f 63  ForWoW64 $test_c
16c00 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
16c10 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16c20 54 45 3a 20 41 72 65 20 77 65 20 72 75 6e 6e 69  TE: Are we runni
16c30 6e 67 20 69 6e 20 61 6e 20 53 54 41 20 74 68 72  ng in an STA thr
16c40 65 61 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  ead?..    #..   
16c50 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
16c60 74 73 20 6e 6f 28 73 74 61 54 68 72 65 61 64 29  ts no(staThread)
16c70 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
16c80 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45   #..      # NOTE
16c90 3a 20 46 6f 72 20 74 65 73 74 73 20 22 78 61 6d  : For tests "xam
16ca0 6c 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20 23  l-1.*"...      #
16cb0 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
16cc0 53 74 61 54 68 72 65 61 64 20 24 74 65 73 74 5f  StaThread $test_
16cd0 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
16ce0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
16cf0 4f 54 45 3a 20 48 61 73 20 57 50 46 20 74 65 73  OTE: Has WPF tes
16d00 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
16d10 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20  n disabled?..   
16d20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
16d30 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 77 70 66  fo exists no(wpf
16d40 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
16d50 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54    #..      # NOT
16d60 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22 78 61  E: For tests "xa
16d70 6d 6c 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 20 20  ml-1.*"...      
16d80 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  #..      checkFo
16d90 72 57 69 6e 64 6f 77 73 50 72 65 73 65 6e 74 61  rWindowsPresenta
16da0 74 69 6f 6e 46 6f 75 6e 64 61 74 69 6f 6e 20 24  tionFoundation $
16db0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
16dc0 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
16dd0 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 50 6f    # NOTE: Has Po
16de0 77 65 72 53 68 65 6c 6c 20 74 65 73 74 69 6e 67  werShell testing
16df0 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
16e00 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
16e10 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
16e20 78 69 73 74 73 20 6e 6f 28 70 6f 77 65 72 53 68  xists no(powerSh
16e30 65 6c 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ell)]} then {.. 
16e40 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
16e50 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20  NOTE: For tests 
16e60 22 6f 62 6a 65 63 74 2d 34 2e 37 22 2c 20 22 6f  "object-4.7", "o
16e70 62 6a 65 63 74 2d 34 2e 38 22 2c 20 61 6e 64 20  bject-4.8", and 
16e80 22 6f 62 6a 65 63 74 2d 34 2e 39 22 2e 0d 0a 20  "object-4.9"... 
16e90 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
16ea0 65 63 6b 46 6f 72 50 6f 77 65 72 53 68 65 6c 6c  eckForPowerShell
16eb0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
16ec0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
16ed0 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20      # NOTE: Has 
16ee0 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 32  .NET Framework 2
16ef0 2e 30 20 53 65 72 76 69 63 65 20 50 61 63 6b 20  .0 Service Pack 
16f00 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
16f10 62 65 65 6e 0d 0a 20 20 20 20 23 20 20 20 20 20  been..    #     
16f20 20 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20    disabled?..   
16f30 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
16f40 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74  fo exists no(net
16f50 46 78 32 30 53 70 29 5d 7d 20 74 68 65 6e 20 7b  Fx20Sp)]} then {
16f60 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20  ..      #..     
16f70 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
16f80 74 20 22 68 61 73 68 2d 31 2e 31 22 2e 0d 0a 20  t "hash-1.1"... 
16f90 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68       #..      ch
16fa0 65 63 6b 46 6f 72 4e 65 74 46 78 32 30 53 65 72  eckForNetFx20Ser
16fb0 76 69 63 65 50 61 63 6b 20 24 74 65 73 74 5f 63  vicePack $test_c
16fc0 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
16fd0 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
16fe0 54 45 3a 20 48 61 73 20 2e 4e 45 54 20 46 72 61  TE: Has .NET Fra
16ff0 6d 65 77 6f 72 6b 20 34 2e 78 20 74 65 73 74 69  mework 4.x testi
17000 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20  ng support been 
17010 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
17020 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
17030 20 65 78 69 73 74 73 20 6e 6f 28 6e 65 74 46 78   exists no(netFx
17040 34 78 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  4x)]} then {..  
17050 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
17060 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
17070 62 6a 65 63 74 2d 31 32 2e 31 2e 2a 22 2e 0d 0a  bject-12.1.*"...
17080 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 63        #..      c
17090 68 65 63 6b 46 6f 72 4e 65 74 46 78 34 78 20 24  heckForNetFx4x $
170a0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
170b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
170c0 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 74 61    # NOTE: Has ta
170d0 72 67 65 74 20 66 72 61 6d 65 77 6f 72 6b 20 74  rget framework t
170e0 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62  esting support b
170f0 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
17100 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
17110 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
17120 61 72 67 65 74 46 72 61 6d 65 77 6f 72 6b 29 5d  argetFramework)]
17130 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
17140 63 68 65 63 6b 46 6f 72 54 61 72 67 65 74 46 72  checkForTargetFr
17150 61 6d 65 77 6f 72 6b 20 24 74 65 73 74 5f 63 68  amework $test_ch
17160 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
17170 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
17180 45 3a 20 48 61 73 20 6e 61 74 69 76 65 20 75 74  E: Has native ut
17190 69 6c 69 74 79 20 74 65 73 74 69 6e 67 20 73 75  ility testing su
171a0 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61 62  pport been disab
171b0 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20 20 20  led?..    #..   
171c0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
171d0 74 73 20 6e 6f 28 6e 61 74 69 76 65 55 74 69 6c  ts no(nativeUtil
171e0 69 74 79 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ity)]} then {.. 
171f0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 61 74       checkForNat
17200 69 76 65 55 74 69 6c 69 74 79 20 24 74 65 73 74  iveUtility $test
17210 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d  _channel..    }.
17220 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
17230 4e 4f 54 45 3a 20 48 61 73 20 56 69 73 75 61 6c  NOTE: Has Visual
17240 20 53 74 75 64 69 6f 20 74 65 73 74 69 6e 67 20   Studio testing 
17250 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73  support been dis
17260 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a 20  abled?..    #.. 
17270 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
17280 69 73 74 73 20 6e 6f 28 76 69 73 75 61 6c 53 74  ists no(visualSt
17290 75 64 69 6f 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  udio)]} then {..
172a0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 56 69        checkForVi
172b0 73 75 61 6c 53 74 75 64 69 6f 56 69 61 52 65 67  sualStudioViaReg
172c0 69 73 74 72 79 20 24 74 65 73 74 5f 63 68 61 6e  istry $test_chan
172d0 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  nel..    }....  
172e0 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
172f0 20 48 61 73 20 57 69 58 20 74 65 73 74 69 6e 67   Has WiX testing
17300 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
17310 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
17320 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
17330 78 69 73 74 73 20 6e 6f 28 77 69 78 29 5d 7d 20  xists no(wix)]} 
17340 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d  then {..      #.
17350 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  .      # NOTE: F
17360 6f 72 20 74 65 73 74 20 22 6f 62 6a 65 63 74 2d  or test "object-
17370 34 2e 31 30 22 2e 0d 0a 20 20 20 20 20 20 23 0d  4.10"...      #.
17380 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 57  .      checkForW
17390 69 78 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ix $test_channel
173a0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
173b0 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61  ..    # NOTE: Ha
173c0 73 20 6e 61 74 69 76 65 20 64 65 62 75 67 67 65  s native debugge
173d0 72 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72  r testing suppor
173e0 74 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  t been disabled?
173f0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
17400 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
17410 6f 28 6e 61 74 69 76 65 44 65 62 75 67 67 65 72  o(nativeDebugger
17420 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
17430 20 20 63 68 65 63 6b 46 6f 72 4e 61 74 69 76 65    checkForNative
17440 44 65 62 75 67 67 65 72 20 24 74 65 73 74 5f 63  Debugger $test_c
17450 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d  hannel..    }...
17460 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
17470 54 45 3a 20 48 61 73 20 6d 61 6e 61 67 65 64 20  TE: Has managed 
17480 64 65 62 75 67 67 65 72 20 74 65 73 74 69 6e 67  debugger testing
17490 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
174a0 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
174b0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
174c0 78 69 73 74 73 20 6e 6f 28 6d 61 6e 61 67 65 64  xists no(managed
174d0 44 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e  Debugger)]} then
174e0 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46   {..      checkF
174f0 6f 72 4d 61 6e 61 67 65 64 44 65 62 75 67 67 65  orManagedDebugge
17500 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  r $test_channel.
17510 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
17520 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
17530 20 6d 61 6e 61 67 65 64 20 64 65 62 75 67 67 69   managed debuggi
17540 6e 67 20 61 73 73 69 73 74 61 6e 74 73 20 74 65  ng assistants te
17550 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65  sting support be
17560 65 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20  en..    #       
17570 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23  disabled?..    #
17580 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
17590 20 65 78 69 73 74 73 20 6e 6f 28 6d 61 6e 61 67   exists no(manag
175a0 65 64 44 65 62 75 67 67 69 6e 67 41 73 73 69 73  edDebuggingAssis
175b0 74 61 6e 74 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  tants)]} then {.
175c0 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4d  .      checkForM
175d0 61 6e 61 67 65 64 44 65 62 75 67 67 69 6e 67 41  anagedDebuggingA
175e0 73 73 69 73 74 61 6e 74 73 20 24 74 65 73 74 5f  ssistants $test_
175f0 63 68 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a  channel..    }..
17600 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
17610 4f 54 45 3a 20 48 61 73 20 73 63 72 69 70 74 20  OTE: Has script 
17620 64 65 62 75 67 67 65 72 20 74 65 73 74 69 6e 67  debugger testing
17630 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
17640 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d 0a  sabled?..    #..
17650 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
17660 78 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74 44  xists no(scriptD
17670 65 62 75 67 67 65 72 29 5d 7d 20 74 68 65 6e 20  ebugger)]} then 
17680 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  {..      #..    
17690 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
176a0 73 74 73 20 22 64 65 62 75 67 2d 31 2e 31 22 2c  sts "debug-1.1",
176b0 20 22 64 65 62 75 67 2d 32 2e 31 22 2c 20 22 64   "debug-2.1", "d
176c0 65 62 75 67 2d 33 2e 31 22 2c 20 61 6e 64 0d 0a  ebug-3.1", and..
176d0 20 20 20 20 20 20 23 20 20 20 20 20 20 20 22 64        #       "d
176e0 65 62 75 67 2d 34 2e 31 22 2e 0d 0a 20 20 20 20  ebug-4.1"...    
176f0 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63 6b    #..      check
17700 46 6f 72 53 63 72 69 70 74 44 65 62 75 67 67 65  ForScriptDebugge
17710 72 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  r $test_channel.
17720 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
17730 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73  .    # NOTE: Has
17740 20 73 63 72 69 70 74 20 64 65 62 75 67 67 65 72   script debugger
17750 20 69 6e 74 65 72 70 72 65 74 65 72 20 74 65 73   interpreter tes
17760 74 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65  ting support bee
17770 6e 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 64  n..    #       d
17780 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20 23 0d  isabled?..    #.
17790 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
177a0 65 78 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74  exists no(script
177b0 44 65 62 75 67 67 65 72 49 6e 74 65 72 70 72 65  DebuggerInterpre
177c0 74 65 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ter)]} then {.. 
177d0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
177e0 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22  NOTE: For test "
177f0 64 65 62 75 67 2d 32 2e 31 22 2e 0d 0a 20 20 20  debug-2.1"...   
17800 20 20 20 23 0d 0a 20 20 20 20 20 20 63 68 65 63     #..      chec
17810 6b 46 6f 72 53 63 72 69 70 74 44 65 62 75 67 67  kForScriptDebugg
17820 65 72 49 6e 74 65 72 70 72 65 74 65 72 20 24 74  erInterpreter $t
17830 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 20  est_channel..   
17840 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
17850 20 23 20 4e 4f 54 45 3a 20 41 72 65 20 77 65 20   # NOTE: Are we 
17860 72 75 6e 6e 69 6e 67 20 75 6e 64 65 72 20 74 68  running under th
17870 65 20 4d 6f 6e 6f 20 64 65 62 75 67 67 65 72 3f  e Mono debugger?
17880 20 20 49 66 20 73 6f 2c 20 73 65 76 65 72 61 6c    If so, several
17890 0d 0a 20 20 20 20 23 20 20 20 20 20 20 20 74 65  ..    #       te
178a0 73 74 73 20 77 69 6c 6c 20 68 61 76 65 20 74 6f  sts will have to
178b0 20 62 65 20 64 69 73 61 62 6c 65 64 20 62 65 63   be disabled bec
178c0 61 75 73 65 20 74 68 65 79 20 64 6f 20 6e 6f 74  ause they do not
178d0 20 61 70 70 65 61 72 0d 0a 20 20 20 20 23 20 20   appear..    #  
178e0 20 20 20 20 20 74 6f 20 77 6f 72 6b 20 74 68 65       to work the
178f0 72 65 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  re...    #..    
17900 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
17910 73 20 6e 6f 28 6d 6f 6e 6f 44 65 62 75 67 67 65  s no(monoDebugge
17920 72 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  r)]} then {..   
17930 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
17940 68 61 6e 6e 65 6c 20 22 2d 2d 2d 2d 20 63 68 65  hannel "---- che
17950 63 6b 69 6e 67 20 66 6f 72 20 4d 6f 6e 6f 20 64  cking for Mono d
17960 65 62 75 67 67 65 72 2e 2e 2e 20 22 0d 0a 0d 0a  ebugger... "....
17970 20 20 20 20 20 20 69 66 20 7b 5b 68 61 76 65 43        if {[haveC
17980 6f 6e 73 74 72 61 69 6e 74 20 6d 6f 6e 6f 5d 20  onstraint mono] 
17990 26 26 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69  && [haveConstrai
179a0 6e 74 20 6d 61 6e 61 67 65 64 44 65 62 75 67 67  nt managedDebugg
179b0 65 72 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  er]} then {..   
179c0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
179d0 23 20 4e 4f 54 45 3a 20 41 64 64 20 61 20 73 70  # NOTE: Add a sp
179e0 65 63 69 61 6c 20 74 65 73 74 20 63 6f 6e 73 74  ecial test const
179f0 72 61 69 6e 74 20 74 6f 20 73 69 6d 70 6c 69 66  raint to simplif
17a00 79 20 74 68 65 20 4d 6f 6e 6f 20 64 65 62 75 67  y the Mono debug
17a10 67 65 72 0d 0a 20 20 20 20 20 20 20 20 23 20 20  ger..        #  
17a20 20 20 20 20 20 74 65 73 74 20 63 6f 6e 73 74 72       test constr
17a30 61 69 6e 74 20 63 68 65 63 6b 69 6e 67 20 66 6f  aint checking fo
17a40 72 20 74 68 65 20 74 65 73 74 73 20 74 68 61 74  r the tests that
17a50 20 6e 65 65 64 20 69 74 2e 0d 0a 20 20 20 20 20   need it...     
17a60 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 61 64     #..        ad
17a70 64 43 6f 6e 73 74 72 61 69 6e 74 20 6d 6f 6e 6f  dConstraint mono
17a80 44 65 62 75 67 67 65 72 0d 0a 0d 0a 20 20 20 20  Debugger....    
17a90 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
17aa0 63 68 61 6e 6e 65 6c 20 79 65 73 5c 6e 0d 0a 20  channel yes\n.. 
17ab0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
17ac0 20 20 20 20 20 20 20 74 70 75 74 73 20 24 74 65         tputs $te
17ad0 73 74 5f 63 68 61 6e 6e 65 6c 20 6e 6f 5c 6e 0d  st_channel no\n.
17ae0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d  .      }..    }.
17af0 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  ...    #..    # 
17b00 4e 4f 54 45 3a 20 48 61 73 20 47 61 72 75 64 61  NOTE: Has Garuda
17b10 20 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74   testing support
17b20 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d   been disabled?.
17b30 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
17b40 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
17b50 28 67 61 72 75 64 61 44 6c 6c 29 5d 7d 20 74 68  (garudaDll)]} th
17b60 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 0d 0a 20  en {..      #.. 
17b70 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72       # NOTE: For
17b80 20 74 65 73 74 73 20 22 67 61 72 75 64 61 2d 31   tests "garuda-1
17b90 2e 31 22 20 61 6e 64 20 22 67 61 72 75 64 61 2d  .1" and "garuda-
17ba0 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 23 0d 0a  1.2"...      #..
17bb0 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 47 61        checkForGa
17bc0 72 75 64 61 44 6c 6c 20 24 74 65 73 74 5f 63 68  rudaDll $test_ch
17bd0 61 6e 6e 65 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  annel..    }....
17be0 20 20 20 20 23 23 23 23 23 23 23 23 23 23 23 23      ############
17bf0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17c00 23 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 0d  ###############.
17c30 0a 20 20 20 20 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 23 20  ############### 
17c50 45 4e 44 20 45 61 67 6c 65 20 43 6f 6e 73 74 72  END Eagle Constr
17c60 61 69 6e 74 73 20 23 23 23 23 23 23 23 23 23 23  aints ##########
17c70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17c80 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23 23 23  ..    ##########
17c90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ca0 23 23 23 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 0d 0a 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20  #..  } else {.. 
17ce0 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
17cf0 3a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 61 74  : Make sure that
17d00 20 54 63 6c 20 68 6f 6e 6f 72 73 20 74 68 65 20   Tcl honors the 
17d10 45 61 67 6c 65 20 74 65 73 74 20 63 6f 6e 73 74  Eagle test const
17d20 72 61 69 6e 74 73 2e 0d 0a 20 20 20 20 23 0d 0a  raints...    #..
17d30 20 20 20 20 63 6f 6e 66 69 67 75 72 65 54 63 6c      configureTcl
17d40 74 65 73 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  test \..        
17d50 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78 69  [expr {[info exi
17d60 73 74 73 20 74 65 73 74 5f 66 6c 61 67 73 28 2d  sts test_flags(-
17d70 76 65 72 62 6f 73 65 29 5d 20 3f 20 5c 0d 0a 20  verbose)] ? \.. 
17d80 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73 74             $test
17d90 5f 66 6c 61 67 73 28 2d 76 65 72 62 6f 73 65 29  _flags(-verbose)
17da0 20 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20   : ""}] \..     
17db0 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20     [expr {[info 
17dc0 65 78 69 73 74 73 20 74 65 73 74 5f 66 6c 61 67  exists test_flag
17dd0 73 28 2d 6d 61 74 63 68 29 5d 20 3f 20 5c 0d 0a  s(-match)] ? \..
17de0 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 73              $tes
17df0 74 5f 66 6c 61 67 73 28 2d 6d 61 74 63 68 29 20  t_flags(-match) 
17e00 3a 20 5b 6c 69 73 74 5d 7d 5d 20 5c 0d 0a 20 20  : [list]}] \..  
17e10 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e        [expr {[in
17e20 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66  fo exists test_f
17e30 6c 61 67 73 28 2d 73 6b 69 70 29 5d 20 3f 20 5c  lags(-skip)] ? \
17e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74  ..            $t
17e50 65 73 74 5f 66 6c 61 67 73 28 2d 73 6b 69 70 29  est_flags(-skip)
17e60 20 3a 20 5b 6c 69 73 74 5d 7d 5d 20 5c 0d 0a 20   : [list]}] \.. 
17e70 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69         [expr {[i
17e80 6e 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f  nfo exists test_
17e90 66 6c 61 67 73 28 2d 63 6f 6e 73 74 72 61 69 6e  flags(-constrain
17ea0 74 73 29 5d 20 3f 20 5c 0d 0a 20 20 20 20 20 20  ts)] ? \..      
17eb0 20 20 20 20 20 20 24 74 65 73 74 5f 66 6c 61 67        $test_flag
17ec0 73 28 2d 63 6f 6e 73 74 72 61 69 6e 74 73 29 20  s(-constraints) 
17ed0 3a 20 5b 6c 69 73 74 5d 7d 5d 20 5c 0d 0a 20 20  : [list]}] \..  
17ee0 20 20 20 20 20 20 5b 6c 69 73 74 5d 20 66 61 6c        [list] fal
17ef0 73 65 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  se....    #..   
17f00 20 23 20 48 41 43 4b 3a 20 52 65 73 65 74 20 74   # HACK: Reset t
17f10 68 65 20 74 65 73 74 20 63 6f 75 6e 74 73 20 66  he test counts f
17f20 6f 72 20 74 63 6c 74 65 73 74 2e 0d 0a 20 20 20  or tcltest...   
17f30 20 23 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74 63   #..    set ::tc
17f40 6c 74 65 73 74 3a 3a 6e 75 6d 54 65 73 74 73 28  ltest::numTests(
17f50 54 6f 74 61 6c 29 20 30 0d 0a 20 20 20 20 73 65  Total) 0..    se
17f60 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75 6d  t ::tcltest::num
17f70 54 65 73 74 73 28 53 6b 69 70 70 65 64 29 20 30  Tests(Skipped) 0
17f80 0d 0a 20 20 20 20 73 65 74 20 3a 3a 74 63 6c 74  ..    set ::tclt
17f90 65 73 74 3a 3a 6e 75 6d 54 65 73 74 73 28 50 61  est::numTests(Pa
17fa0 73 73 65 64 29 20 30 0d 0a 20 20 20 20 73 65 74  ssed) 0..    set
17fb0 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 6e 75 6d 54   ::tcltest::numT
17fc0 65 73 74 73 28 46 61 69 6c 65 64 29 20 30 0d 0a  ests(Failed) 0..
17fd0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 48  ..    #..    # H
17fe0 41 43 4b 3a 20 52 65 73 65 74 20 74 68 65 20 6c  ACK: Reset the l
17ff0 69 73 74 20 6f 66 20 66 61 69 6c 65 64 20 66 69  ist of failed fi
18000 6c 65 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  les...    #..   
18010 20 73 65 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a   set ::tcltest::
18020 66 61 69 6c 46 69 6c 65 73 20 5b 6c 69 73 74 5d  failFiles [list]
18030 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23 23 23  ....    ########
18040 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18050 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18060 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18070 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18080 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23 23  ###..    #######
18090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
180a0 23 23 23 20 42 45 47 49 4e 20 54 63 6c 20 43 6f  ### BEGIN Tcl Co
180b0 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23 23  nstraints ######
180c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
180d0 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23  ####..    ######
180e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
180f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18100 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18110 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18120 23 23 23 23 23 0d 0a 0d 0a 20 20 20 20 74 70 75  #####....    tpu
18130 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
18140 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
18150 2d 20 73 74 61 72 74 20 6f 66 20 54 63 6c 20 73  - start of Tcl s
18160 70 65 63 69 66 69 63 20 74 65 73 74 20 63 6f 6e  pecific test con
18170 73 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a  straints...\n"..
18180 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
18190 4f 54 45 3a 20 48 61 73 20 63 6f 6d 70 69 6c 65  OTE: Has compile
181a0 2f 72 75 6e 74 69 6d 65 20 6f 70 74 69 6f 6e 20  /runtime option 
181b0 74 65 73 74 69 6e 67 20 73 75 70 70 6f 72 74 20  testing support 
181c0 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
181d0 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
181e0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
181f0 63 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 29 5d  compileOptions)]
18200 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
18210 23 0d 0a 20 20 20 20 20 20 23 20 4e 4f 54 45 3a  #..      # NOTE:
18220 20 48 61 73 20 22 6b 6e 6f 77 6e 22 20 63 6f 6d   Has "known" com
18230 70 69 6c 65 20 6f 70 74 69 6f 6e 20 74 65 73 74  pile option test
18240 69 6e 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e  ing support been
18250 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20 20 20 20   disabled?..    
18260 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 21    #..      if {!
18270 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
18280 6b 6e 6f 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69  knownCompileOpti
18290 6f 6e 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  ons)]} then {.. 
182a0 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
182b0 20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20    # NOTE: Check 
182c0 66 6f 72 20 61 6c 6c 20 22 6b 6e 6f 77 6e 22 20  for all "known" 
182d0 63 6f 6d 70 69 6c 65 20 6f 70 74 69 6f 6e 73 2e  compile options.
182e0 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
182f0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 4b 6e 6f       checkForKno
18300 77 6e 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73  wnCompileOptions
18310 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
18320 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
18330 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
18340 20 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20 64     # NOTE: Has d
18350 65 64 69 63 61 74 65 64 20 74 65 73 74 20 73 75  edicated test su
18360 70 70 6f 72 74 20 62 65 65 6e 20 65 6e 61 62 6c  pport been enabl
18370 65 64 20 28 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ed (at compile-t
18380 69 6d 65 29 3f 0d 0a 20 20 20 20 20 20 20 20 23  ime)?..        #
18390 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
183a0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
183b0 6f 6d 70 69 6c 65 54 65 73 74 29 5d 7d 20 74 68  ompileTest)]} th
183c0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
183d0 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e  #..          # N
183e0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
183f0 74 63 6c 4c 6f 61 64 2d 31 33 2e 31 2e 31 22 20  tclLoad-13.1.1" 
18400 61 6e 64 20 22 74 63 6c 4c 6f 61 64 2d 31 33 2e  and "tclLoad-13.
18410 31 2e 32 22 2e 0d 0a 20 20 20 20 20 20 20 20 20  1.2"...         
18420 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 63 68   #..          ch
18430 65 63 6b 46 6f 72 43 6f 6d 70 69 6c 65 4f 70 74  eckForCompileOpt
18440 69 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ion $test_channe
18450 6c 20 54 45 53 54 0d 0a 20 20 20 20 20 20 20 20  l TEST..        
18460 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
18470 7d 0d 0a 0d 0a 20 20 20 20 23 23 23 23 23 23 23  }....    #######
18480 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18490 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
184a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
184b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
184c0 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23 23  ####..    ######
184d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
184e0 23 23 23 23 23 20 45 4e 44 20 54 63 6c 20 43 6f  ##### END Tcl Co
184f0 6e 73 74 72 61 69 6e 74 73 20 23 23 23 23 23 23  nstraints ######
18500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18510 23 23 23 23 23 0d 0a 20 20 20 20 23 23 23 23 23  #####..    #####
18520 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18530 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18540 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18550 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18560 23 23 23 23 23 23 0d 0a 20 20 7d 0d 0a 0d 0a 20  ######..  }.... 
18570 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
18580 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18590 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
185a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
185b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
185c0 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23    ##############
185d0 23 23 23 23 23 23 23 23 23 20 42 45 47 49 4e 20  ######### BEGIN 
185e0 54 63 6c 20 26 20 45 61 67 6c 65 20 43 6f 6e 73  Tcl & Eagle Cons
185f0 74 72 61 69 6e 74 73 20 23 23 23 23 23 23 23 23  traints ########
18600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
18610 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
18620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18650 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18660 0d 0a 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73  ....  tputs $tes
18670 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20  t_channel \..   
18680 20 20 20 22 2d 2d 2d 2d 20 73 74 61 72 74 20 6f     "---- start o
18690 66 20 63 6f 6d 6d 6f 6e 20 28 54 63 6c 20 26 20  f common (Tcl & 
186a0 45 61 67 6c 65 29 20 74 65 73 74 20 63 6f 6e 73  Eagle) test cons
186b0 74 72 61 69 6e 74 73 2e 2e 2e 5c 6e 22 0d 0a 0d  traints...\n"...
186c0 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
186d0 46 6f 72 63 65 20 74 65 73 74 73 20 74 68 61 74  Force tests that
186e0 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 62 6c   are normally bl
186f0 6f 63 6b 65 64 20 62 79 20 4d 6f 6e 6f 20 69 73  ocked by Mono is
18700 73 75 65 73 20 74 6f 20 72 75 6e 3f 0d 0a 20 20  sues to run?..  
18710 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66 6f 20 65  #..  if {[info e
18720 78 69 73 74 73 20 6e 6f 28 6d 6f 6e 6f 48 61 63  xists no(monoHac
18730 6b 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ks)]} then {..  
18740 20 20 61 64 64 4b 6e 6f 77 6e 4d 6f 6e 6f 43 6f    addKnownMonoCo
18750 6e 73 74 72 61 69 6e 74 73 20 74 72 75 65 0d 0a  nstraints true..
18760 20 20 20 20 61 64 64 4b 6e 6f 77 6e 4d 6f 6e 6f      addKnownMono
18770 43 6f 6e 73 74 72 61 69 6e 74 73 20 66 61 6c 73  Constraints fals
18780 65 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  e....    tputs $
18790 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a  test_channel \..
187a0 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d 20 61 64          "---- ad
187b0 64 65 64 20 61 6c 6c 20 6b 6e 6f 77 6e 20 4d 6f  ded all known Mo
187c0 6e 6f 20 74 65 73 74 20 63 6f 6e 73 74 72 61 69  no test constrai
187d0 6e 74 73 20 28 66 6f 72 63 65 64 29 5c 6e 22 0d  nts (forced)\n".
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 56 69 73 75 61   NOTE: Has Visua
18800 6c 20 53 74 75 64 69 6f 20 74 65 73 74 69 6e 67  l Studio testing
18810 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69   support been di
18820 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  sabled?..  #..  
18830 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
18840 73 20 6e 6f 28 76 69 73 75 61 6c 53 74 75 64 69  s no(visualStudi
18850 6f 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  o)]} then {..   
18860 20 63 68 65 63 6b 46 6f 72 56 69 73 75 61 6c 53   checkForVisualS
18870 74 75 64 69 6f 56 69 61 56 73 57 68 65 72 65 20  tudioViaVsWhere 
18880 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20  $test_channel.. 
18890 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
188a0 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 45  OTE: Check for E
188b0 61 67 6c 65 20 63 6f 72 65 20 6c 69 62 72 61 72  agle core librar
188c0 79 20 70 61 63 6b 61 67 65 20 6e 61 6d 65 73 2e  y package names.
188d0 2e 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  ....  #..  if {!
188e0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
188f0 63 6f 72 65 50 61 63 6b 61 67 65 4e 61 6d 65 73  corePackageNames
18900 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
18910 63 68 65 63 6b 46 6f 72 50 61 63 6b 61 67 65 20  checkForPackage 
18920 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e  $test_channel {^
18930 45 61 67 6c 65 5c 2e 5f 50 6c 75 67 69 6e 73 5c  Eagle\._Plugins\
18940 2e 43 6f 72 65 2c 20 2e 2a 24 7d 0d 0a 20 20 20  .Core, .*$}..   
18950 20 63 68 65 63 6b 46 6f 72 50 61 63 6b 61 67 65   checkForPackage
18960 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b   $test_channel {
18970 5e 45 61 67 6c 65 5c 2e 5f 50 6c 75 67 69 6e 73  ^Eagle\._Plugins
18980 5c 2e 4f 62 6a 65 63 74 2c 20 2e 2a 24 7d 0d 0a  \.Object, .*$}..
18990 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61 63 6b      checkForPack
189a0 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  age $test_channe
189b0 6c 20 7b 5e 45 61 67 6c 65 5c 2e 5f 50 6c 75 67  l {^Eagle\._Plug
189c0 69 6e 73 5c 2e 54 65 73 74 2c 20 2e 2a 24 7d 0d  ins\.Test, .*$}.
189d0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61 63  .    checkForPac
189e0 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  kage $test_chann
189f0 65 6c 20 7b 5e 45 61 67 6c 65 5c 2e 5f 50 6c 75  el {^Eagle\._Plu
18a00 67 69 6e 73 5c 2e 54 72 61 63 65 2c 20 2e 2a 24  gins\.Trace, .*$
18a10 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  }..  }....  #.. 
18a20 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66   # NOTE: Check f
18a30 6f 72 20 45 61 67 6c 65 20 45 6e 74 65 72 70 72  or Eagle Enterpr
18a40 69 73 65 20 45 64 69 74 69 6f 6e 20 70 61 63 6b  ise Edition pack
18a50 61 67 65 20 6e 61 6d 65 73 2e 2e 2e 0d 0a 20 20  age names.....  
18a60 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
18a70 65 78 69 73 74 73 20 6e 6f 28 65 6e 74 65 72 70  exists no(enterp
18a80 72 69 73 65 50 61 63 6b 61 67 65 4e 61 6d 65 73  risePackageNames
18a90 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
18aa0 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54  #..    # NOTE: T
18ab0 68 65 73 65 20 61 72 65 20 66 72 6f 6d 20 76 61  hese are from va
18ac0 72 69 6f 75 73 20 53 4b 55 73 20 6f 66 20 74 68  rious SKUs of th
18ad0 65 20 48 61 72 70 79 20 70 6c 75 67 69 6e 2e 0d  e Harpy plugin..
18ae0 0a 20 20 20 20 23 0d 0a 20 20 20 20 63 68 65 63  .    #..    chec
18af0 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65 73  kForPackage $tes
18b00 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 4c 69 63 65  t_channel {^Lice
18b10 6e 73 69 6e 67 5c 2e 43 6f 72 65 2c 20 2e 2a 24  nsing\.Core, .*$
18b20 7d 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50  }..    checkForP
18b30 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61  ackage $test_cha
18b40 6e 6e 65 6c 20 7b 5e 4c 69 63 65 6e 73 69 6e 67  nnel {^Licensing
18b50 5c 2e 53 74 61 6e 64 61 72 64 2c 20 2e 2a 24 7d  \.Standard, .*$}
18b60 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50 61  ..    checkForPa
18b70 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61 6e  ckage $test_chan
18b80 6e 65 6c 20 7b 5e 4c 69 63 65 6e 73 69 6e 67 5c  nel {^Licensing\
18b90 2e 45 6e 74 65 72 70 72 69 73 65 2c 20 2e 2a 24  .Enterprise, .*$
18ba0 7d 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 50  }..    checkForP
18bb0 61 63 6b 61 67 65 20 24 74 65 73 74 5f 63 68 61  ackage $test_cha
18bc0 6e 6e 65 6c 20 7b 5e 53 65 63 75 72 69 74 79 5c  nnel {^Security\
18bd0 2e 43 6f 72 65 2c 20 2e 2a 24 7d 0d 0a 0d 0a 20  .Core, .*$}.... 
18be0 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
18bf0 3a 20 54 68 65 73 65 20 61 72 65 20 66 72 6f 6d  : These are from
18c00 20 76 61 72 69 6f 75 73 20 53 4b 55 73 20 6f 66   various SKUs of
18c10 20 74 68 65 20 42 61 64 67 65 20 70 6c 75 67 69   the Badge plugi
18c20 6e 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 63  n...    #..    c
18c30 68 65 63 6b 46 6f 72 50 61 63 6b 61 67 65 20 24  heckForPackage $
18c40 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 42  test_channel {^B
18c50 61 64 67 65 5c 2e 45 6e 74 65 72 70 72 69 73 65  adge\.Enterprise
18c60 2c 20 2e 2a 24 7d 0d 0a 20 20 20 20 63 68 65 63  , .*$}..    chec
18c70 6b 46 6f 72 50 61 63 6b 61 67 65 20 24 74 65 73  kForPackage $tes
18c80 74 5f 63 68 61 6e 6e 65 6c 20 7b 5e 53 65 63 75  t_channel {^Secu
18c90 72 69 74 79 5c 2e 43 65 72 74 69 66 69 63 61 74  rity\.Certificat
18ca0 65 73 2c 20 2e 2a 24 7d 0d 0a 20 20 7d 0d 0a 0d  es, .*$}..  }...
18cb0 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
18cc0 43 68 65 63 6b 20 66 6f 72 20 74 68 65 20 74 65  Check for the te
18cd0 73 74 20 73 75 69 74 65 20 69 6e 66 72 61 73 74  st suite infrast
18ce0 72 75 63 74 75 72 65 20 66 69 6c 65 73 2e 2e 2e  ructure files...
18cf0 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
18d00 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
18d10 73 74 53 75 69 74 65 46 69 6c 65 73 29 5d 7d 20  stSuiteFiles)]} 
18d20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
18d30 6b 46 6f 72 54 65 73 74 53 75 69 74 65 46 69 6c  kForTestSuiteFil
18d40 65 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  es $test_channel
18d50 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
18d60 23 20 4e 4f 54 45 3a 20 48 61 73 20 61 6c 6c 20  # NOTE: Has all 
18d70 75 73 65 20 6f 66 20 5b 65 78 65 63 5d 20 66 6f  use of [exec] fo
18d80 72 20 74 65 73 74 73 20 62 65 65 6e 20 64 69 73  r tests been dis
18d90 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69  abled?..  #..  i
18da0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
18db0 20 6e 6f 28 63 68 65 63 6b 46 6f 72 54 65 73 74   no(checkForTest
18dc0 45 78 65 63 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Exec)]} then {..
18dd0 20 20 20 20 63 68 65 63 6b 46 6f 72 54 65 73 74      checkForTest
18de0 45 78 65 63 20 24 74 65 73 74 5f 63 68 61 6e 6e  Exec $test_chann
18df0 65 6c 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69  el [haveConstrai
18e00 6e 74 20 71 75 69 65 74 5d 0d 0a 20 20 7d 0d 0a  nt quiet]..  }..
18e10 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
18e20 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20 66 6f   Has checking fo
18e30 72 20 74 68 65 20 74 65 73 74 20 6d 61 63 68 69  r the test machi
18e40 6e 65 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  ne been disabled
18e50 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b  ?..  #..  if {![
18e60 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74  info exists no(t
18e70 65 73 74 4d 61 63 68 69 6e 65 29 5d 7d 20 74 68  estMachine)]} th
18e80 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
18e90 6f 72 54 65 73 74 4d 61 63 68 69 6e 65 20 24 74  orTestMachine $t
18ea0 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
18eb0 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
18ec0 45 3a 20 48 61 73 20 63 68 65 63 6b 69 6e 67 20  E: Has checking 
18ed0 66 6f 72 20 74 68 65 20 74 65 73 74 20 70 6c 61  for the test pla
18ee0 74 66 6f 72 6d 20 62 65 65 6e 20 64 69 73 61 62  tform been disab
18ef0 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66 20  led?..  #..  if 
18f00 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
18f10 6f 28 74 65 73 74 50 6c 61 74 66 6f 72 6d 29 5d  o(testPlatform)]
18f20 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
18f30 65 63 6b 46 6f 72 54 65 73 74 50 6c 61 74 66 6f  eckForTestPlatfo
18f40 72 6d 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  rm $test_channel
18f50 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
18f60 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63  # NOTE: Has chec
18f70 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73  king for the tes
18f80 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  t configuration 
18f90 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a  been disabled?..
18fa0 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
18fb0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65 73 74  o exists no(test
18fc0 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 5d 7d  Configuration)]}
18fd0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
18fe0 63 6b 46 6f 72 54 65 73 74 43 6f 6e 66 69 67 75  ckForTestConfigu
18ff0 72 61 74 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ration $test_cha
19000 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23  nnel..  }....  #
19010 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48 61 73 20  ..  # NOTE: Has 
19020 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65  checking for the
19030 20 74 65 73 74 20 6e 61 6d 65 20 70 72 65 66 69   test name prefi
19040 78 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 3f  x been disabled?
19050 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69  ..  #..  if {![i
19060 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 65  nfo exists no(te
19070 73 74 4e 61 6d 65 50 72 65 66 69 78 29 5d 7d 20  stNamePrefix)]} 
19080 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
19090 6b 46 6f 72 54 65 73 74 4e 61 6d 65 50 72 65 66  kForTestNamePref
190a0 69 78 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ix $test_channel
190b0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
190c0 23 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63  # NOTE: Has chec
190d0 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 74 65 73  king for the tes
190e0 74 20 73 75 66 66 69 78 20 62 65 65 6e 20 64 69  t suffix been di
190f0 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20  sabled?..  #..  
19100 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19110 73 20 6e 6f 28 74 65 73 74 53 75 66 66 69 78 29  s no(testSuffix)
19120 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
19130 68 65 63 6b 46 6f 72 54 65 73 74 53 75 66 66 69  heckForTestSuffi
19140 78 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d  x $test_channel.
19150 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
19160 20 4e 4f 54 45 3a 20 48 61 73 20 63 68 65 63 6b   NOTE: Has check
19170 69 6e 67 20 66 6f 72 20 74 68 65 20 65 78 74 72  ing for the extr
19180 61 20 66 69 6c 65 73 20 6e 65 65 64 65 64 20 62  a files needed b
19190 79 20 76 61 72 69 6f 75 73 20 74 65 73 74 73 20  y various tests 
191a0 69 6e 20 74 68 65 0d 0a 20 20 23 20 20 20 20 20  in the..  #     
191b0 20 20 45 61 67 6c 65 20 63 6f 72 65 20 74 65 73    Eagle core tes
191c0 74 20 73 75 69 74 65 20 62 65 65 6e 20 64 69 73  t suite been dis
191d0 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69  abled?..  #..  i
191e0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
191f0 20 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 21 5b   no(core)] && ![
19200 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63  info exists no(c
19210 68 65 63 6b 46 6f 72 46 69 6c 65 29 5d 7d 20 74  heckForFile)]} t
19220 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20  hen {..    #..  
19230 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
19240 73 74 73 20 22 62 65 6e 63 68 6d 61 72 6b 2d 31  sts "benchmark-1
19250 2e 33 5b 38 39 5d 22 20 61 6e 64 20 22 62 65 6e  .3[89]" and "ben
19260 63 68 6d 61 72 6b 2d 31 2e 34 30 22 2e 0d 0a 20  chmark-1.40"... 
19270 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
19280 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 62  info exists no(b
19290 65 6e 63 68 6d 61 72 6b 2e 74 78 74 29 5d 7d 20  enchmark.txt)]} 
192a0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68  then {..      ch
192b0 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74  eckForFile $test
192c0 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a  _channel [file j
192d0 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70  oin $test_data_p
192e0 61 74 68 20 62 65 6e 63 68 6d 61 72 6b 2e 74 78  ath benchmark.tx
192f0 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  t]..    }....   
19300 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
19310 46 6f 72 20 74 65 73 74 20 22 62 65 6e 63 68 6d  For test "benchm
19320 61 72 6b 2d 31 2e 34 32 22 2e 0d 0a 20 20 20 20  ark-1.42"...    
19330 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
19340 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 6e 67 44  o exists no(pngD
19350 75 6d 70 2e 74 78 74 29 5d 7d 20 74 68 65 6e 20  ump.txt)]} then 
19360 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
19370 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
19380 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
19390 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 70  test_data_path p
193a0 6e 67 44 75 6d 70 2e 74 78 74 5d 0d 0a 20 20 20  ngDump.txt]..   
193b0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
193c0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
193d0 74 20 22 67 61 72 75 64 61 2d 31 2e 31 22 2e 0d  t "garuda-1.1"..
193e0 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b  .    #..    if {
193f0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
19400 28 70 6b 67 41 6c 6c 2e 74 63 6c 29 5d 7d 20 74  (pkgAll.tcl)]} t
19410 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
19420 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
19430 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
19440 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 4e 61  in $base_path Na
19450 74 69 76 65 20 50 61 63 6b 61 67 65 20 5c 0d 0a  tive Package \..
19460 20 20 20 20 20 20 20 20 20 20 54 65 73 74 73 20            Tests 
19470 61 6c 6c 2e 74 63 6c 5d 20 70 6b 67 41 6c 6c 2e  all.tcl] pkgAll.
19480 74 63 6c 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  tcl..    }....  
19490 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
194a0 20 46 6f 72 20 74 65 73 74 73 20 22 73 75 62 73   For tests "subs
194b0 74 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a  t-1.*"...    #..
194c0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
194d0 78 69 73 74 73 20 6e 6f 28 62 61 64 5f 73 75 62  xists no(bad_sub
194e0 73 74 2e 74 78 74 29 5d 7d 20 74 68 65 6e 20 7b  st.txt)]} then {
194f0 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
19500 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
19510 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74  el [file join $t
19520 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 62 61  est_data_path ba
19530 64 5f 73 75 62 73 74 2e 74 78 74 5d 0d 0a 20 20  d_subst.txt]..  
19540 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
19550 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
19560 73 74 20 22 70 72 6f 63 65 73 73 49 73 6f 6c 61  st "processIsola
19570 74 69 6f 6e 2d 31 2e 31 22 2e 0d 0a 20 20 20 20  tion-1.1"...    
19580 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
19590 6f 20 65 78 69 73 74 73 20 6e 6f 28 69 73 6f 6c  o exists no(isol
195a0 61 74 65 64 2e 65 61 67 6c 65 29 5d 7d 20 74 68  ated.eagle)]} th
195b0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
195c0 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
195d0 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
195e0 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
195f0 68 20 69 73 6f 6c 61 74 65 64 2e 65 61 67 6c 65  h isolated.eagle
19600 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ]..    }....    
19610 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  #..    # NOTE: F
19620 6f 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31  or test "basic-1
19630 2e 37 33 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  .73"...    #..  
19640 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
19650 73 74 73 20 6e 6f 28 63 61 6c 6c 53 74 61 63 6b  sts no(callStack
19660 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b  .eagle)]} then {
19670 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72  ..      checkFor
19680 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
19690 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74  el [file join $t
196a0 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 63 61  est_data_path ca
196b0 6c 6c 53 74 61 63 6b 2e 65 61 67 6c 65 5d 0d 0a  llStack.eagle]..
196c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
196d0 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 69 73      # NOTE: This
196e0 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c   is not currentl
196f0 79 20 75 73 65 64 20 62 79 20 61 6e 79 20 74 65  y used by any te
19700 73 74 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69  sts.  However, i
19710 74 20 69 73 0d 0a 20 20 20 20 23 20 20 20 20 20  t is..    #     
19720 20 20 75 73 65 64 20 62 79 20 74 68 65 20 73 61    used by the sa
19730 6d 70 6c 65 20 74 61 72 67 65 74 73 20 66 69 6c  mple targets fil
19740 65 20 22 45 61 67 6c 65 2e 53 61 6d 70 6c 65 2e  e "Eagle.Sample.
19750 74 61 72 67 65 74 73 22 2e 0d 0a 20 20 20 20 23  targets"...    #
19760 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
19770 20 65 78 69 73 74 73 20 6e 6f 28 65 76 61 6c 75   exists no(evalu
19780 61 74 65 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65  ate.eagle)]} the
19790 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
197a0 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
197b0 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
197c0 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
197d0 20 65 76 61 6c 75 61 74 65 2e 65 61 67 6c 65 5d   evaluate.eagle]
197e0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
197f0 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68  ..    # NOTE: Th
19800 69 73 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e  is is not curren
19810 74 6c 79 20 75 73 65 64 20 62 79 20 61 6e 79 20  tly used by any 
19820 74 65 73 74 73 2e 20 20 48 6f 77 65 76 65 72 2c  tests.  However,
19830 20 69 74 20 69 73 0d 0a 20 20 20 20 23 20 20 20   it is..    #   
19840 20 20 20 20 75 73 65 64 20 62 79 20 74 68 65 20      used by the 
19850 73 61 6d 70 6c 65 20 74 61 72 67 65 74 73 20 66  sample targets f
19860 69 6c 65 20 22 45 61 67 6c 65 2e 53 61 6d 70 6c  ile "Eagle.Sampl
19870 65 2e 74 61 72 67 65 74 73 22 2e 0d 0a 20 20 20  e.targets"...   
19880 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
19890 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 75 62  fo exists no(sub
198a0 73 74 69 74 75 74 65 2e 65 61 67 6c 65 29 5d 7d  stitute.eagle)]}
198b0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
198c0 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
198d0 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
198e0 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
198f0 70 61 74 68 20 73 75 62 73 74 69 74 75 74 65 2e  path substitute.
19900 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  eagle]..    }...
19910 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
19920 54 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20  TE: This is not 
19930 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62  currently used b
19940 79 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20  y any tests...  
19950 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
19960 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e  nfo exists no(un
19970 69 63 6f 64 65 5f 62 6f 6d 2e 74 78 74 29 5d 7d  icode_bom.txt)]}
19980 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63   then {..      c
19990 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
199a0 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
199b0 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f  join $test_data_
199c0 70 61 74 68 20 75 6e 69 63 6f 64 65 5f 62 6f 6d  path unicode_bom
199d0 2e 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .txt]..    }....
199e0 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
199f0 45 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 63  E: This is not c
19a00 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 62 79  urrently used by
19a10 20 61 6e 79 20 74 65 73 74 73 2e 0d 0a 20 20 20   any tests...   
19a20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
19a30 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e 69  fo exists no(uni
19a40 63 6f 64 65 5f 6e 6f 5f 62 6f 6d 2e 74 78 74 29  code_no_bom.txt)
19a50 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
19a60 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
19a70 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
19a80 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74  e join $test_dat
19a90 61 5f 70 61 74 68 20 75 6e 69 63 6f 64 65 5f 6e  a_path unicode_n
19aa0 6f 5f 62 6f 6d 2e 74 78 74 5d 0d 0a 20 20 20 20  o_bom.txt]..    
19ab0 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
19ac0 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20  # NOTE: This is 
19ad0 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73  not currently us
19ae0 65 64 20 62 79 20 61 6e 79 20 74 65 73 74 73 2e  ed by any tests.
19af0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
19b00 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
19b10 6f 28 75 74 66 38 2e 74 78 74 29 5d 7d 20 74 68  o(utf8.txt)]} th
19b20 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
19b30 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
19b40 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
19b50 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
19b60 68 20 75 74 66 38 2e 74 78 74 5d 0d 0a 20 20 20  h utf8.txt]..   
19b70 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
19b80 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
19b90 74 73 20 22 66 69 6c 65 49 4f 2d 31 2e 2a 22 2e  ts "fileIO-1.*".
19ba0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20  ..    #..    if 
19bb0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
19bc0 6f 28 66 69 6c 65 2e 64 61 74 29 5d 7d 20 74 68  o(file.dat)]} th
19bd0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
19be0 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
19bf0 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
19c00 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
19c10 68 20 66 69 6c 65 2e 64 61 74 5d 0d 0a 20 20 20  h file.dat]..   
19c20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
19c30 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
19c40 74 73 20 22 66 69 6c 65 49 4f 2d 35 2e 36 2e 2a  ts "fileIO-5.6.*
19c50 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69  "...    #..    i
19c60 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
19c70 20 6e 6f 28 48 6f 6d 65 44 6f 63 75 6d 65 6e 74   no(HomeDocument
19c80 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  s)]} then {..   
19c90 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
19ca0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
19cb0 69 6c 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20 20 20  ile join \..    
19cc0 20 20 20 20 20 20 24 74 65 73 74 5f 68 6f 6d 65        $test_home
19cd0 5f 70 61 74 68 20 44 6f 63 75 6d 65 6e 74 73 5d  _path Documents]
19ce0 20 48 6f 6d 65 44 6f 63 75 6d 65 6e 74 73 0d 0a   HomeDocuments..
19cf0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
19d00 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
19d10 74 65 73 74 20 22 67 61 72 62 61 67 65 2d 31 2e  test "garbage-1.
19d20 31 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  1"...    #..    
19d30 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
19d40 73 20 6e 6f 28 67 61 72 62 61 67 65 2e 74 78 74  s no(garbage.txt
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 67 61 72 62 61 67 65 2e  ta_path garbage.
19da0 74 78 74 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  txt]..    }.... 
19db0 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
19dc0 3a 20 46 6f 72 20 74 65 73 74 73 20 22 78 61 6d  : For tests "xam
19dd0 6c 2d 31 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a  l-1.*"...    #..
19de0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
19df0 78 69 73 74 73 20 6e 6f 28 74 65 73 74 2e 70 6e  xists no(test.pn
19e00 67 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  g)]} then {..   
19e10 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
19e20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
19e30 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64  ile join $test_d
19e40 61 74 61 5f 70 61 74 68 20 74 65 73 74 2e 70 6e  ata_path test.pn
19e50 67 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  g]..    }....   
19e60 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
19e70 46 6f 72 20 74 65 73 74 20 22 73 6f 63 6b 65 74  For test "socket
19e80 2d 31 2e 32 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.2"...    #.. 
19e90 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
19ea0 69 73 74 73 20 6e 6f 28 63 6c 69 65 6e 74 2e 74  ists no(client.t
19eb0 63 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  cl)]} then {..  
19ec0 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65      checkForFile
19ed0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b   $test_channel [
19ee0 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f  file join $test_
19ef0 64 61 74 61 5f 70 61 74 68 20 63 6c 69 65 6e 74  data_path client
19f00 2e 74 63 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .tcl]..    }....
19f10 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54      #..    # NOT
19f20 45 3a 20 46 6f 72 20 74 65 73 74 20 22 74 63 6c  E: For test "tcl
19f30 4c 6f 61 64 2d 31 2e 32 22 2e 0d 0a 20 20 20 20  Load-1.2"...    
19f40 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
19f50 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 5f  o exists no(tcl_
19f60 75 6e 6c 6f 61 64 2e 74 63 6c 29 5d 7d 20 74 68  unload.tcl)]} th
19f70 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
19f80 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
19f90 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
19fa0 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74  n $test_data_pat
19fb0 68 20 74 63 6c 5f 75 6e 6c 6f 61 64 2e 74 63 6c  h tcl_unload.tcl
19fc0 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ]..    }....    
19fd0 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46  #..    # NOTE: F
19fe0 6f 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31  or test "basic-1
19ff0 2e 34 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .4"...    #..   
1a000 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1a010 74 73 20 6e 6f 28 72 65 61 64 2e 65 61 67 6c 65  ts no(read.eagle
1a020 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1a030 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
1a040 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
1a050 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61  le join $test_da
1a060 74 61 5f 70 61 74 68 20 72 65 61 64 2e 65 61 67  ta_path read.eag
1a070 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  le]..    }....  
1a080 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a    #..    # NOTE:
1a090 20 46 6f 72 20 74 65 73 74 20 22 62 61 73 69 63   For test "basic
1a0a0 2d 31 2e 35 22 2e 0d 0a 20 20 20 20 23 0d 0a 20  -1.5"...    #.. 
1a0b0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
1a0c0 69 73 74 73 20 6e 6f 28 72 65 61 64 32 2e 65 61  ists no(read2.ea
1a0d0 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
1a0e0 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
1a0f0 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
1a100 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74  [file join $test
1a110 5f 64 61 74 61 5f 70 61 74 68 20 72 65 61 64 32  _data_path read2
1a120 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a  .eagle]..    }..
1a130 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1a140 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62  OTE: For test "b
1a150 61 73 69 63 2d 31 2e 36 22 2e 0d 0a 20 20 20 20  asic-1.6"...    
1a160 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
1a170 6f 20 65 78 69 73 74 73 20 6e 6f 28 72 65 61 64  o exists no(read
1a180 33 2e 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20  3.eagle)]} then 
1a190 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
1a1a0 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
1a1b0 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
1a1c0 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20 72  test_data_path r
1a1d0 65 61 64 33 2e 65 61 67 6c 65 5d 0d 0a 20 20 20  ead3.eagle]..   
1a1e0 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20   }....    #..   
1a1f0 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73   # NOTE: For tes
1a200 74 20 22 62 61 73 69 63 2d 31 2e 37 22 2e 0d 0a  t "basic-1.7"...
1a210 20 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21      #..    if {!
1a220 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1a230 72 65 61 64 34 2e 65 61 67 6c 65 29 5d 7d 20 74  read4.eagle)]} t
1a240 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
1a250 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
1a260 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
1a270 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61  in $test_data_pa
1a280 74 68 20 72 65 61 64 34 2e 65 61 67 6c 65 5d 0d  th read4.eagle].
1a290 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
1a2a0 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
1a2b0 20 74 65 73 74 20 22 69 6e 66 6f 53 63 72 69 70   test "infoScrip
1a2c0 74 2d 31 2e 31 22 2e 0d 0a 20 20 20 20 23 0d 0a  t-1.1"...    #..
1a2d0 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
1a2e0 78 69 73 74 73 20 6e 6f 28 73 63 72 69 70 74 2e  xists no(script.
1a2f0 65 61 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  eagle)]} then {.
1a300 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
1a310 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
1a320 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
1a330 73 74 5f 64 61 74 61 5f 70 61 74 68 20 73 63 72  st_data_path scr
1a340 69 70 74 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20  ipt.eagle]..    
1a350 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  }....    #..    
1a360 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74  # NOTE: For test
1a370 20 22 62 61 73 69 63 2d 31 2e 31 22 2e 0d 0a 20   "basic-1.1"... 
1a380 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
1a390 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73  info exists no(s
1a3a0 6f 75 72 63 65 2e 65 61 67 6c 65 29 5d 7d 20 74  ource.eagle)]} t
1a3b0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
1a3c0 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
1a3d0 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
1a3e0 69 6e 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61  in $test_data_pa
1a3f0 74 68 20 73 6f 75 72 63 65 2e 65 61 67 6c 65 5d  th source.eagle]
1a400 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
1a410 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f  ..    # NOTE: Fo
1a420 72 20 74 65 73 74 20 22 62 61 73 69 63 2d 31 2e  r test "basic-1.
1a430 32 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  2"...    #..    
1a440 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1a450 73 20 6e 6f 28 75 6e 62 61 6c 61 6e 63 65 64 5f  s no(unbalanced_
1a460 62 72 61 63 65 2e 65 61 67 6c 65 29 5d 7d 20 74  brace.eagle)]} t
1a470 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
1a480 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
1a490 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
1a4a0 69 6e 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  in \..          
1a4b0 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68 20  $test_data_path 
1a4c0 75 6e 62 61 6c 61 6e 63 65 64 5f 62 72 61 63 65  unbalanced_brace
1a4d0 2e 65 61 67 6c 65 5d 0d 0a 20 20 20 20 7d 0d 0a  .eagle]..    }..
1a4e0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1a4f0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 62  OTE: For test "b
1a500 61 73 69 63 2d 31 2e 33 22 2e 0d 0a 20 20 20 20  asic-1.3"...    
1a510 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66  #..    if {![inf
1a520 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 6e 62 61  o exists no(unba
1a530 6c 61 6e 63 65 64 5f 62 72 61 63 65 32 2e 65 61  lanced_brace2.ea
1a540 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
1a550 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c       checkForFil
1a560 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
1a570 5b 66 69 6c 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20  [file join \..  
1a580 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 64 61          $test_da
1a590 74 61 5f 70 61 74 68 20 75 6e 62 61 6c 61 6e 63  ta_path unbalanc
1a5a0 65 64 5f 62 72 61 63 65 32 2e 65 61 67 6c 65 5d  ed_brace2.eagle]
1a5b0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23  ..    }....    #
1a5c0 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f  ..    # NOTE: Fo
1a5d0 72 20 74 65 73 74 73 20 22 65 78 63 65 6c 2d 32  r tests "excel-2
1a5e0 2e 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20  .*"...    #..   
1a5f0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1a600 74 73 20 6e 6f 28 74 65 73 74 2e 78 6c 73 29 5d  ts no(test.xls)]
1a610 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
1a620 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
1a630 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
1a640 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61 74 61   join $test_data
1a650 5f 70 61 74 68 20 74 65 73 74 2e 78 6c 73 5d 0d  _path test.xls].
1a660 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d  .    }....    #.
1a670 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72  .    # NOTE: For
1a680 20 74 65 73 74 20 22 70 72 6f 63 2d 31 2e 39 22   test "proc-1.9"
1a690 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
1a6a0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1a6b0 6e 6f 28 74 65 73 74 50 72 6f 63 73 2e 74 63 6c  no(testProcs.tcl
1a6c0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1a6d0 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24    checkForFile $
1a6e0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69  test_channel [fi
1a6f0 6c 65 20 6a 6f 69 6e 20 24 74 65 73 74 5f 64 61  le join $test_da
1a700 74 61 5f 70 61 74 68 20 74 65 73 74 50 72 6f 63  ta_path testProc
1a710 73 2e 74 63 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d  s.tcl]..    }...
1a720 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
1a730 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 69 6e  TE: For test "in
1a740 74 65 72 70 2d 31 2e 31 30 22 2e 0d 0a 20 20 20  terp-1.10"...   
1a750 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
1a760 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 65 74  fo exists no(set
1a770 74 69 6e 67 73 2e 78 6d 6c 29 5d 7d 20 74 68 65  tings.xml)]} the
1a780 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
1a790 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
1a7a0 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
1a7b0 20 24 74 65 73 74 5f 64 61 74 61 5f 70 61 74 68   $test_data_path
1a7c0 20 73 65 74 74 69 6e 67 73 2e 78 6d 6c 5d 0d 0a   settings.xml]..
1a7d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a      }....    #..
1a7e0 20 20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20      # NOTE: For 
1a7f0 74 65 73 74 73 20 22 6c 6f 61 64 2d 31 2e 31 2e  tests "load-1.1.
1a800 2a 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  *"...    #..    
1a810 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1a820 73 20 6e 6f 28 50 6c 75 67 69 6e 2e 64 6c 6c 29  s no(Plugin.dll)
1a830 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
1a840 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
1a850 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
1a860 65 20 6a 6f 69 6e 20 5c 0d 0a 20 20 20 20 20 20  e join \..      
1a870 20 20 20 20 24 63 6f 72 65 5f 6c 69 62 5f 70 61      $core_lib_pa
1a880 74 68 20 50 6c 75 67 69 6e 31 2e 30 20 5b 67 65  th Plugin1.0 [ge
1a890 74 44 6f 74 4e 65 74 43 6f 72 65 4c 69 62 50 61  tDotNetCoreLibPa
1a8a0 74 68 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 4f  thDirectoryNameO
1a8b0 6e 6c 79 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  nly \..         
1a8c0 20 50 6c 75 67 69 6e 31 2e 30 5d 20 50 6c 75 67   Plugin1.0] Plug
1a8d0 69 6e 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a  in.dll]..    }..
1a8e0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1a8f0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
1a900 62 6a 65 63 74 2d 36 2e 31 22 2e 0d 0a 20 20 20  bject-6.1"...   
1a910 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e   #..    if {![in
1a920 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 53 61 6d  fo exists no(Sam
1a930 70 6c 65 2e 65 78 65 29 5d 7d 20 74 68 65 6e 20  ple.exe)]} then 
1a940 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
1a950 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e  rFile $test_chan
1a960 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24  nel [file join $
1a970 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20 53 61  core_bin_path Sa
1a980 6d 70 6c 65 2e 65 78 65 5d 0d 0a 20 20 20 20 7d  mple.exe]..    }
1a990 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
1a9a0 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20   NOTE: For test 
1a9b0 22 6f 62 6a 65 63 74 2d 34 2e 38 22 2e 0d 0a 20  "object-4.8"... 
1a9c0 20 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b     #..    if {![
1a9d0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 45  info exists no(E
1a9e0 61 67 6c 65 43 6d 64 6c 65 74 73 2e 64 6c 6c 29  agleCmdlets.dll)
1a9f0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  ]} then {..     
1aa00 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
1aa10 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
1aa20 65 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62 69 6e  e join $core_bin
1aa30 5f 70 61 74 68 20 45 61 67 6c 65 43 6d 64 6c 65  _path EagleCmdle
1aa40 74 73 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a  ts.dll]..    }..
1aa50 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1aa60 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 6f  OTE: For test "o
1aa70 62 6a 65 63 74 2d 34 2e 31 30 22 2e 0d 0a 20 20  bject-4.10"...  
1aa80 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
1aa90 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 45 61  nfo exists no(Ea
1aaa0 67 6c 65 45 78 74 65 6e 73 69 6f 6e 73 2e 64 6c  gleExtensions.dl
1aab0 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  l)]} then {..   
1aac0 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
1aad0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
1aae0 69 6c 65 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62  ile join $core_b
1aaf0 69 6e 5f 70 61 74 68 20 45 61 67 6c 65 45 78 74  in_path EagleExt
1ab00 65 6e 73 69 6f 6e 73 2e 64 6c 6c 5d 0d 0a 20 20  ensions.dll]..  
1ab10 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20    }....    #..  
1ab20 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
1ab30 73 74 20 22 6f 62 6a 65 63 74 2d 34 2e 31 30 22  st "object-4.10"
1ab40 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
1ab50 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1ab60 6e 6f 28 74 65 73 74 2e 77 78 73 29 5d 7d 20 74  no(test.wxs)]} t
1ab70 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65  hen {..      che
1ab80 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f  ckForFile $test_
1ab90 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f  channel [file jo
1aba0 69 6e 20 24 62 61 73 65 5f 70 61 74 68 20 49 6e  in $base_path In
1abb0 73 74 61 6c 6c 65 72 20 54 65 73 74 73 20 74 65  staller Tests te
1abc0 73 74 2e 77 78 73 5d 0d 0a 20 20 20 20 7d 0d 0a  st.wxs]..    }..
1abd0 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1abe0 4f 54 45 3a 20 46 6f 72 20 74 65 73 74 73 20 22  OTE: For tests "
1abf0 73 71 6c 2d 31 2e 32 22 2c 20 22 73 71 6c 2d 31  sql-1.2", "sql-1
1ac00 2e 34 22 2c 20 22 73 71 6c 2d 31 2e 35 22 2c 20  .4", "sql-1.5", 
1ac10 22 73 71 6c 2d 31 2e 36 22 2c 20 22 73 71 6c 2d  "sql-1.6", "sql-
1ac20 31 2e 37 22 2c 0d 0a 20 20 20 20 23 20 20 20 20  1.7",..    #    
1ac30 20 20 20 22 73 71 6c 2d 31 2e 38 22 2c 20 61 6e     "sql-1.8", an
1ac40 64 20 22 73 71 6c 2d 31 2e 39 22 2e 0d 0a 20 20  d "sql-1.9"...  
1ac50 20 20 23 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69    #..    if {![i
1ac60 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 71  nfo exists no(sq
1ac70 6c 69 74 65 33 2e 64 6c 6c 29 5d 7d 20 74 68 65  lite3.dll)]} the
1ac80 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b  n {..      check
1ac90 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
1aca0 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
1acb0 20 24 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20   $core_bin_path 
1acc0 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 0d 0a 0d 0a  sqlite3.dll]....
1acd0 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23        #..      #
1ace0 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20 6d 61   NOTE: Did we ma
1acf0 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74 68 65  nage to find the
1ad00 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
1ad10 69 62 72 61 72 79 20 79 65 74 3f 20 20 49 66 20  ibrary yet?  If 
1ad20 6e 6f 74 2c 0d 0a 20 20 20 20 20 20 23 20 20 20  not,..      #   
1ad30 20 20 20 20 74 72 79 20 74 6f 20 63 68 65 63 6b      try to check
1ad40 20 75 73 69 6e 67 20 74 68 65 20 6d 61 63 68 69   using the machi
1ad50 6e 65 20 74 79 70 65 20 61 73 20 61 20 73 75 62  ne type as a sub
1ad60 2d 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 20  -directory...   
1ad70 20 20 20 23 0d 0a 20 20 20 20 20 20 69 66 20 7b     #..      if {
1ad80 21 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74  ![haveConstraint
1ad90 20 66 69 6c 65 5f 73 71 6c 69 74 65 33 2e 64 6c   file_sqlite3.dl
1ada0 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  l]} then {..    
1adb0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
1adc0 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74   NOTE: Ok, now t
1add0 72 79 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 20  ry to check for 
1ade0 74 68 65 20 6d 61 63 68 69 6e 65 20 73 70 65 63  the machine spec
1adf0 69 66 69 63 20 6e 61 74 69 76 65 0d 0a 20 20 20  ific native..   
1ae00 20 20 20 20 20 23 20 20 20 20 20 20 20 53 51 4c       #       SQL
1ae10 69 74 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20  ite library...  
1ae20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1ae30 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74   checkForFile $t
1ae40 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c  est_channel [fil
1ae50 65 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62 69 6e  e join $core_bin
1ae60 5f 70 61 74 68 20 5c 0d 0a 20 20 20 20 20 20 20  _path \..       
1ae70 20 20 20 20 20 5b 6d 61 63 68 69 6e 65 54 6f 50       [machineToP
1ae80 6c 61 74 66 6f 72 6d 20 24 74 65 73 74 5f 6d 61  latform $test_ma
1ae90 63 68 69 6e 65 20 74 72 75 65 5d 20 73 71 6c 69  chine true] sqli
1aea0 74 65 33 2e 64 6c 6c 5d 0d 0a 0d 0a 20 20 20 20  te3.dll]....    
1aeb0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 23      #..        #
1aec0 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20 6d 61   NOTE: Did we ma
1aed0 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74 68 65  nage to find the
1aee0 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20 6c   native SQLite l
1aef0 69 62 72 61 72 79 20 79 65 74 3f 0d 0a 20 20 20  ibrary yet?..   
1af00 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1af10 69 66 20 7b 21 5b 68 61 76 65 43 6f 6e 73 74 72  if {![haveConstr
1af20 61 69 6e 74 20 66 69 6c 65 5f 73 71 6c 69 74 65  aint file_sqlite
1af30 33 2e 64 6c 6c 5d 7d 20 74 68 65 6e 20 7b 0d 0a  3.dll]} then {..
1af40 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20            #..   
1af50 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f         # NOTE: O
1af60 6b 2c 20 6e 6f 77 20 74 72 79 20 74 6f 20 63 68  k, now try to ch
1af70 65 63 6b 20 66 6f 72 20 74 68 65 20 70 6c 61 74  eck for the plat
1af80 66 6f 72 6d 20 73 70 65 63 69 66 69 63 20 6e 61  form specific na
1af90 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
1afa0 23 20 20 20 20 20 20 20 53 51 4c 69 74 65 20 6c  #       SQLite l
1afb0 69 62 72 61 72 79 2e 0d 0a 20 20 20 20 20 20 20  ibrary...       
1afc0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1afd0 63 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65  checkForFile $te
1afe0 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65  st_channel [file
1aff0 20 6a 6f 69 6e 20 24 63 6f 72 65 5f 62 69 6e 5f   join $core_bin_
1b000 70 61 74 68 20 5c 0d 0a 20 20 20 20 20 20 20 20  path \..        
1b010 20 20 20 20 20 20 5b 6d 61 63 68 69 6e 65 54 6f        [machineTo
1b020 50 6c 61 74 66 6f 72 6d 20 24 74 65 73 74 5f 6d  Platform $test_m
1b030 61 63 68 69 6e 65 20 66 61 6c 73 65 5d 20 73 71  achine false] sq
1b040 6c 69 74 65 33 2e 64 6c 6c 5d 0d 0a 20 20 20 20  lite3.dll]..    
1b050 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
1b060 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 73 45  ..      if {[isE
1b070 61 67 6c 65 5d 20 26 26 20 21 5b 69 73 57 69 6e  agle] && ![isWin
1b080 64 6f 77 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  dows]} then {.. 
1b090 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1b0a0 20 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65    # NOTE: Did we
1b0b0 20 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20   manage to find 
1b0c0 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74  the native SQLit
1b0d0 65 20 6c 69 62 72 61 72 79 20 79 65 74 3f 20 20  e library yet?  
1b0e0 49 66 20 6e 6f 74 2c 0d 0a 20 20 20 20 20 20 20  If not,..       
1b0f0 20 23 20 20 20 20 20 20 20 74 72 79 20 74 6f 20   #       try to 
1b100 63 68 65 63 6b 20 75 73 69 6e 67 20 74 68 65 20  check using the 
1b110 6d 61 63 68 69 6e 65 20 74 79 70 65 20 61 73 20  machine type as 
1b120 61 20 73 75 62 2d 64 69 72 65 63 74 6f 72 79 20  a sub-directory 
1b130 2d 41 4e 44 2d 0d 0a 20 20 20 20 20 20 20 20 23  -AND-..        #
1b140 20 20 20 20 20 20 20 75 73 69 6e 67 20 74 68 65         using the
1b150 20 55 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e   Unix file name.
1b160 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20  ..        #..   
1b170 20 20 20 20 20 69 66 20 7b 21 5b 68 61 76 65 43       if {![haveC
1b180 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c 65 5f 73  onstraint file_s
1b190 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20 74 68 65  qlite3.dll]} the
1b1a0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23  n {..          #
1b1b0 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f  ..          # NO
1b1c0 54 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20  TE: Ok, now try 
1b1d0 74 6f 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65  to check for the
1b1e0 20 6d 61 63 68 69 6e 65 20 73 70 65 63 69 66 69   machine specifi
1b1f0 63 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20  c native..      
1b200 20 20 20 20 23 20 20 20 20 20 20 20 53 51 4c 69      #       SQLi
1b210 74 65 20 6c 69 62 72 61 72 79 2c 20 6e 65 61 72  te library, near
1b220 20 74 68 65 20 62 69 6e 61 72 79 2c 20 75 73 69   the binary, usi
1b230 6e 67 20 74 68 65 20 55 6e 69 78 20 6e 61 6d 65  ng the Unix name
1b240 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a  ...          #..
1b250 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b 46            checkF
1b260 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  orFile $test_cha
1b270 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20  nnel [file join 
1b280 24 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68 20 5c  $core_bin_path \
1b290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b2a0 5b 6d 61 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f  [machineToPlatfo
1b2b0 72 6d 20 24 74 65 73 74 5f 6d 61 63 68 69 6e 65  rm $test_machine
1b2c0 20 74 72 75 65 5d 20 5b 61 70 70 65 6e 64 41 72   true] [appendAr
1b2d0 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
1b2e0 20 20 20 20 6c 69 62 73 71 6c 69 74 65 33 20 5b      libsqlite3 [
1b2f0 69 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65 78  info sharedlibex
1b300 74 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c 69 74  tension]]] sqlit
1b310 65 33 2e 64 6c 6c 0d 0a 0d 0a 20 20 20 20 20 20  e3.dll....      
1b320 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1b330 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20   # NOTE: Did we 
1b340 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74  manage to find t
1b350 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65  he native SQLite
1b360 20 6c 69 62 72 61 72 79 20 79 65 74 3f 0d 0a 20   library yet?.. 
1b370 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1b380 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61 76 65        if {![have
1b390 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c 65 5f  Constraint file_
1b3a0 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20 74 68  sqlite3.dll]} th
1b3b0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  en {..          
1b3c0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20    #..           
1b3d0 20 23 20 4e 4f 54 45 3a 20 4f 6b 2c 20 6e 6f 77   # NOTE: Ok, now
1b3e0 20 74 72 79 20 74 6f 20 63 68 65 63 6b 20 66 6f   try to check fo
1b3f0 72 20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 73  r the platform s
1b400 70 65 63 69 66 69 63 20 6e 61 74 69 76 65 0d 0a  pecific native..
1b410 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1b420 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61      SQLite libra
1b430 72 79 2c 20 6e 65 61 72 20 74 68 65 20 62 69 6e  ry, near the bin
1b440 61 72 79 2c 20 75 73 69 6e 67 20 74 68 65 20 55  ary, using the U
1b450 6e 69 78 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  nix name...     
1b460 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1b470 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46 69        checkForFi
1b480 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  le $test_channel
1b490 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 63 6f 72   [file join $cor
1b4a0 65 5f 62 69 6e 5f 70 61 74 68 20 5c 0d 0a 20 20  e_bin_path \..  
1b4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 6d                [m
1b4c0 61 63 68 69 6e 65 54 6f 50 6c 61 74 66 6f 72 6d  achineToPlatform
1b4d0 20 24 74 65 73 74 5f 6d 61 63 68 69 6e 65 20 66   $test_machine f
1b4e0 61 6c 73 65 5d 20 5b 61 70 70 65 6e 64 41 72 67  alse] [appendArg
1b4f0 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  s \..           
1b500 20 20 20 20 20 6c 69 62 73 71 6c 69 74 65 33 20       libsqlite3 
1b510 5b 69 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65  [info sharedlibe
1b520 78 74 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c 69  xtension]]] sqli
1b530 74 65 33 2e 64 6c 6c 0d 0a 20 20 20 20 20 20 20  te3.dll..       
1b540 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
1b550 0a 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  ...        #..  
1b560 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 44 69        # NOTE: Di
1b570 64 20 77 65 20 6d 61 6e 61 67 65 20 74 6f 20 66  d we manage to f
1b580 69 6e 64 20 74 68 65 20 6e 61 74 69 76 65 20 53  ind the native S
1b590 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 79 65  QLite library ye
1b5a0 74 3f 20 20 49 66 20 6e 6f 74 2c 0d 0a 20 20 20  t?  If not,..   
1b5b0 20 20 20 20 20 23 20 20 20 20 20 20 20 74 72 79       #       try
1b5c0 20 74 6f 20 63 68 65 63 6b 20 75 73 69 6e 67 20   to check using 
1b5d0 74 68 65 20 55 6e 69 78 20 6c 69 62 72 61 72 79  the Unix library
1b5e0 20 64 69 72 65 63 74 6f 72 69 65 73 20 2d 41 4e   directories -AN
1b5f0 44 2d 20 75 73 69 6e 67 0d 0a 20 20 20 20 20 20  D- using..      
1b600 20 20 23 20 20 20 20 20 20 20 74 68 65 20 55 6e    #       the Un
1b610 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20  ix file name... 
1b620 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20         #..      
1b630 20 20 69 66 20 7b 21 5b 68 61 76 65 43 6f 6e 73    if {![haveCons
1b640 74 72 61 69 6e 74 20 66 69 6c 65 5f 73 71 6c 69  traint file_sqli
1b650 74 65 33 2e 64 6c 6c 5d 7d 20 74 68 65 6e 20 7b  te3.dll]} then {
1b660 0d 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20  ..          #.. 
1b670 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a           # NOTE:
1b680 20 41 74 74 65 6d 70 74 20 74 6f 20 6f 62 74 61   Attempt to obta
1b690 69 6e 20 74 68 65 20 70 61 74 68 20 69 6e 66 6f  in the path info
1b6a0 72 6d 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  rmation for the 
1b6b0 55 6e 69 78 0d 0a 20 20 20 20 20 20 20 20 20 20  Unix..          
1b6c0 23 20 20 20 20 20 20 20 6c 6f 63 61 6c 20 6c 69  #       local li
1b6d0 62 72 61 72 79 20 64 69 72 65 63 74 6f 72 79 2e  brary directory.
1b6e0 20 20 54 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20    This will not 
1b6f0 77 6f 72 6b 20 66 6f 72 0d 0a 20 20 20 20 20 20  work for..      
1b700 20 20 20 20 23 20 20 20 20 20 20 20 6e 61 74 69      #       nati
1b710 76 65 20 54 63 6c 2e 0d 0a 20 20 20 20 20 20 20  ve Tcl...       
1b720 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1b730 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d 0a 20 20  if {[catch {..  
1b740 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 70            info p
1b750 61 74 68 20 22 3d 4e 61 74 69 76 65 4c 69 62 72  ath "=NativeLibr
1b760 61 72 79 20 2b 4c 6f 63 61 6c 22 0d 0a 20 20 20  ary +Local"..   
1b770 20 20 20 20 20 20 20 7d 20 6c 69 62 5f 64 69 72         } lib_dir
1b780 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ] == 0} then {..
1b790 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1b7a0 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54             # NOT
1b7b0 45 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20 74  E: Ok, now try t
1b7c0 6f 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65 20  o check for the 
1b7d0 6d 61 63 68 69 6e 65 20 73 70 65 63 69 66 69 63  machine specific
1b7e0 20 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20   native..       
1b7f0 20 20 20 20 20 23 20 20 20 20 20 20 20 53 51 4c       #       SQL
1b800 69 74 65 20 6c 69 62 72 61 72 79 2c 20 69 6e 20  ite library, in 
1b810 74 68 65 20 55 6e 69 78 20 6c 6f 63 61 6c 20 6c  the Unix local l
1b820 69 62 72 61 72 79 20 64 69 72 65 63 74 6f 72 79  ibrary directory
1b830 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ,..            #
1b840 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 55         and the U
1b850 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  nix file name...
1b860 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20              #.. 
1b870 20 20 20 20 20 20 20 20 20 20 20 63 68 65 63 6b             check
1b880 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63 68  ForFile $test_ch
1b890 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e  annel [file join
1b8a0 20 24 6c 69 62 5f 64 69 72 20 5b 61 70 70 65 6e   $lib_dir [appen
1b8b0 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 20  dArgs \..       
1b8c0 20 20 20 20 20 20 20 20 20 6c 69 62 73 71 6c 69           libsqli
1b8d0 74 65 33 20 5b 69 6e 66 6f 20 73 68 61 72 65 64  te3 [info shared
1b8e0 6c 69 62 65 78 74 65 6e 73 69 6f 6e 5d 5d 5d 20  libextension]]] 
1b8f0 73 71 6c 69 74 65 33 2e 64 6c 6c 0d 0a 20 20 20  sqlite3.dll..   
1b900 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1b910 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
1b920 20 20 20 23 20 4e 4f 54 45 3a 20 44 69 64 20 77     # NOTE: Did w
1b930 65 20 6d 61 6e 61 67 65 20 74 6f 20 66 69 6e 64  e manage to find
1b940 20 74 68 65 20 6e 61 74 69 76 65 20 53 51 4c 69   the native SQLi
1b950 74 65 20 6c 69 62 72 61 72 79 20 79 65 74 3f 0d  te library yet?.
1b960 0a 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20  .          #..  
1b970 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61          if {![ha
1b980 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c  veConstraint fil
1b990 65 5f 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20  e_sqlite3.dll]} 
1b9a0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1b9b0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1b9c0 20 20 20 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d     # NOTE: Attem
1b9d0 70 74 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65  pt to obtain the
1b9e0 20 70 61 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   path informatio
1b9f0 6e 20 66 6f 72 20 74 68 65 20 55 6e 69 78 0d 0a  n for the Unix..
1ba00 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1ba10 20 20 20 20 67 6c 6f 62 61 6c 20 6c 69 62 72 61      global libra
1ba20 72 79 20 64 69 72 65 63 74 6f 72 79 2e 20 20 54  ry directory.  T
1ba30 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20 77 6f 72  his will not wor
1ba40 6b 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  k for..         
1ba50 20 20 20 23 20 20 20 20 20 20 20 6e 61 74 69 76     #       nativ
1ba60 65 20 54 63 6c 2e 0d 0a 20 20 20 20 20 20 20 20  e Tcl...        
1ba70 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20      #..         
1ba80 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d     if {[catch {.
1ba90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69  .              i
1baa0 6e 66 6f 20 70 61 74 68 20 22 3d 4e 61 74 69 76  nfo path "=Nativ
1bab0 65 4c 69 62 72 61 72 79 20 2d 4c 6f 63 61 6c 22  eLibrary -Local"
1bac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
1bad0 6c 69 62 5f 64 69 72 5d 20 3d 3d 20 30 7d 20 74  lib_dir] == 0} t
1bae0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
1baf0 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20       #..        
1bb00 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20 4f 6b        # NOTE: Ok
1bb10 2c 20 6e 6f 77 20 74 72 79 20 74 6f 20 63 68 65  , now try to che
1bb20 63 6b 20 66 6f 72 20 74 68 65 20 6d 61 63 68 69  ck for the machi
1bb30 6e 65 20 73 70 65 63 69 66 69 63 20 6e 61 74 69  ne specific nati
1bb40 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ve..            
1bb50 20 20 23 20 20 20 20 20 20 20 53 51 4c 69 74 65    #       SQLite
1bb60 20 6c 69 62 72 61 72 79 2c 20 69 6e 20 74 68 65   library, in the
1bb70 20 55 6e 69 78 20 67 6c 6f 62 61 6c 20 6c 69 62   Unix global lib
1bb80 72 61 72 79 20 64 69 72 65 63 74 6f 72 79 2c 0d  rary directory,.
1bb90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23  .              #
1bba0 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 55         and the U
1bbb0 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a  nix file name...
1bbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d                #.
1bbd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63  .              c
1bbe0 68 65 63 6b 46 6f 72 46 69 6c 65 20 24 74 65 73  heckForFile $tes
1bbf0 74 5f 63 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20  t_channel [file 
1bc00 6a 6f 69 6e 20 24 6c 69 62 5f 64 69 72 20 5b 61  join $lib_dir [a
1bc10 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20  ppendArgs \..   
1bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1bc30 69 62 73 71 6c 69 74 65 33 20 5b 69 6e 66 6f 20  ibsqlite3 [info 
1bc40 73 68 61 72 65 64 6c 69 62 65 78 74 65 6e 73 69  sharedlibextensi
1bc50 6f 6e 5d 5d 5d 20 73 71 6c 69 74 65 33 2e 64 6c  on]]] sqlite3.dl
1bc60 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  l..            }
1bc70 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
1bc80 0a 20 20 20 20 20 20 20 20 20 20 75 6e 73 65 74  .          unset
1bc90 20 6c 69 62 5f 64 69 72 0d 0a 20 20 20 20 20 20   lib_dir..      
1bca0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23    }....        #
1bcb0 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
1bcc0 3a 20 44 69 64 20 77 65 20 6d 61 6e 61 67 65 20  : Did we manage 
1bcd0 74 6f 20 66 69 6e 64 20 74 68 65 20 6e 61 74 69  to find the nati
1bce0 76 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  ve SQLite librar
1bcf0 79 20 79 65 74 3f 20 20 49 66 20 6e 6f 74 2c 0d  y yet?  If not,.
1bd00 0a 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20  .        #      
1bd10 20 74 72 79 20 74 6f 20 63 68 65 63 6b 20 75 73   try to check us
1bd20 69 6e 67 20 74 68 65 20 55 6e 69 78 20 6c 69 62  ing the Unix lib
1bd30 72 61 72 79 20 64 69 72 65 63 74 6f 72 69 65 73  rary directories
1bd40 20 2d 41 4e 44 2d 20 75 73 69 6e 67 0d 0a 20 20   -AND- using..  
1bd50 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68        #       th
1bd60 65 20 55 6e 69 78 20 66 69 6c 65 20 6e 61 6d 65  e Unix file name
1bd70 2c 20 77 69 74 68 6f 75 74 20 75 73 69 6e 67 20  , without using 
1bd80 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20 6e 61  the processor na
1bd90 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a  me...        #..
1bda0 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b 68 61          if {![ha
1bdb0 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c  veConstraint fil
1bdc0 65 5f 73 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20  e_sqlite3.dll]} 
1bdd0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20  then {..        
1bde0 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 23    #..          #
1bdf0 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74   NOTE: Attempt t
1be00 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 70 61 74  o obtain the pat
1be10 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f  h information fo
1be20 72 20 74 68 65 20 55 6e 69 78 0d 0a 20 20 20 20  r the Unix..    
1be30 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6c 6f        #       lo
1be40 63 61 6c 20 6c 69 62 72 61 72 79 20 64 69 72 65  cal library dire
1be50 63 74 6f 72 79 20 77 69 74 68 6f 75 74 20 74 68  ctory without th
1be60 65 20 70 72 6f 63 65 73 73 6f 72 20 6e 61 6d 65  e processor name
1be70 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 20  ...          #  
1be80 20 20 20 20 20 54 68 69 73 20 77 69 6c 6c 20 6e       This will n
1be90 6f 74 20 77 6f 72 6b 20 66 6f 72 20 6e 61 74 69  ot work for nati
1bea0 76 65 20 54 63 6c 2e 0d 0a 20 20 20 20 20 20 20  ve Tcl...       
1beb0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1bec0 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d 0a 20 20  if {[catch {..  
1bed0 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 20 70            info p
1bee0 61 74 68 20 22 3d 4e 61 74 69 76 65 4c 69 62 72  ath "=NativeLibr
1bef0 61 72 79 20 2b 4c 6f 63 61 6c 20 2b 4e 6f 50 72  ary +Local +NoPr
1bf00 6f 63 65 73 73 6f 72 22 0d 0a 20 20 20 20 20 20  ocessor"..      
1bf10 20 20 20 20 7d 20 6c 69 62 5f 64 69 72 5d 20 3d      } lib_dir] =
1bf20 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  = 0} then {..   
1bf30 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1bf40 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45 3a 20          # NOTE: 
1bf50 4f 6b 2c 20 6e 6f 77 20 74 72 79 20 74 6f 20 63  Ok, now try to c
1bf60 68 65 63 6b 20 66 6f 72 20 74 68 65 20 6d 61 63  heck for the mac
1bf70 68 69 6e 65 20 73 70 65 63 69 66 69 63 20 6e 61  hine specific na
1bf80 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20  tive..          
1bf90 20 20 23 20 20 20 20 20 20 20 53 51 4c 69 74 65    #       SQLite
1bfa0 20 6c 69 62 72 61 72 79 2c 20 69 6e 20 74 68 65   library, in the
1bfb0 20 55 6e 69 78 20 6c 6f 63 61 6c 20 6c 69 62 72   Unix local libr
1bfc0 61 72 79 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ary directory,..
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20              #   
1bfe0 20 20 20 20 61 6e 64 20 74 68 65 20 55 6e 69 78      and the Unix
1bff0 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20   file name...   
1c000 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1c010 20 20 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72          checkFor
1c020 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  File $test_chann
1c030 65 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6c  el [file join $l
1c040 69 62 5f 64 69 72 20 5b 61 70 70 65 6e 64 41 72  ib_dir [appendAr
1c050 67 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20  gs \..          
1c060 20 20 20 20 20 20 6c 69 62 73 71 6c 69 74 65 33        libsqlite3
1c070 20 5b 69 6e 66 6f 20 73 68 61 72 65 64 6c 69 62   [info sharedlib
1c080 65 78 74 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c  extension]]] sql
1c090 69 74 65 33 2e 64 6c 6c 0d 0a 20 20 20 20 20 20  ite3.dll..      
1c0a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c0b0 20 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20     #..          
1c0c0 23 20 4e 4f 54 45 3a 20 44 69 64 20 77 65 20 6d  # NOTE: Did we m
1c0d0 61 6e 61 67 65 20 74 6f 20 66 69 6e 64 20 74 68  anage to find th
1c0e0 65 20 6e 61 74 69 76 65 20 53 51 4c 69 74 65 20  e native SQLite 
1c0f0 6c 69 62 72 61 72 79 20 79 65 74 3f 0d 0a 20 20  library yet?..  
1c100 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20          #..     
1c110 20 20 20 20 20 69 66 20 7b 21 5b 68 61 76 65 43       if {![haveC
1c120 6f 6e 73 74 72 61 69 6e 74 20 66 69 6c 65 5f 73  onstraint file_s
1c130 71 6c 69 74 65 33 2e 64 6c 6c 5d 7d 20 74 68 65  qlite3.dll]} the
1c140 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n {..           
1c150 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   #..            
1c160 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20  # NOTE: Attempt 
1c170 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 70 61  to obtain the pa
1c180 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66  th information f
1c190 6f 72 20 74 68 65 20 55 6e 69 78 0d 0a 20 20 20  or the Unix..   
1c1a0 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20           #      
1c1b0 20 67 6c 6f 62 61 6c 20 6c 69 62 72 61 72 79 20   global library 
1c1c0 64 69 72 65 63 74 6f 72 79 20 77 69 74 68 6f 75  directory withou
1c1d0 74 20 74 68 65 20 70 72 6f 63 65 73 73 6f 72 20  t the processor 
1c1e0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  name...         
1c1f0 20 20 20 23 20 20 20 20 20 20 20 54 68 69 73 20     #       This 
1c200 77 69 6c 6c 20 6e 6f 74 20 77 6f 72 6b 20 66 6f  will not work fo
1c210 72 20 6e 61 74 69 76 65 20 54 63 6c 2e 0d 0a 20  r native Tcl... 
1c220 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20             #..  
1c230 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 63            if {[c
1c240 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
1c250 20 20 20 20 20 20 69 6e 66 6f 20 70 61 74 68 20        info path 
1c260 22 3d 4e 61 74 69 76 65 4c 69 62 72 61 72 79 20  "=NativeLibrary 
1c270 2d 4c 6f 63 61 6c 20 2b 4e 6f 50 72 6f 63 65 73  -Local +NoProces
1c280 73 6f 72 22 0d 0a 20 20 20 20 20 20 20 20 20 20  sor"..          
1c290 20 20 7d 20 6c 69 62 5f 64 69 72 5d 20 3d 3d 20    } lib_dir] == 
1c2a0 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20  0} then {..     
1c2b0 20 20 20 20 20 20 20 20 20 23 0d 0a 20 20 20 20           #..    
1c2c0 20 20 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45            # NOTE
1c2d0 3a 20 4f 6b 2c 20 6e 6f 77 20 74 72 79 20 74 6f  : Ok, now try to
1c2e0 20 63 68 65 63 6b 20 66 6f 72 20 74 68 65 20 6d   check for the m
1c2f0 61 63 68 69 6e 65 20 73 70 65 63 69 66 69 63 20  achine specific 
1c300 6e 61 74 69 76 65 0d 0a 20 20 20 20 20 20 20 20  native..        
1c310 20 20 20 20 20 20 23 20 20 20 20 20 20 20 53 51        #       SQ
1c320 4c 69 74 65 20 6c 69 62 72 61 72 79 2c 20 69 6e  Lite library, in
1c330 20 74 68 65 20 55 6e 69 78 20 67 6c 6f 62 61 6c   the Unix global
1c340 20 6c 69 62 72 61 72 79 20 64 69 72 65 63 74 6f   library directo
1c350 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
1c360 20 20 20 23 20 20 20 20 20 20 20 61 6e 64 20 74     #       and t
1c370 68 65 20 55 6e 69 78 20 66 69 6c 65 20 6e 61 6d  he Unix file nam
1c380 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
1c390 20 20 23 0d 0a 20 20 20 20 20 20 20 20 20 20 20    #..           
1c3a0 20 20 20 63 68 65 63 6b 46 6f 72 46 69 6c 65 20     checkForFile 
1c3b0 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 66  $test_channel [f
1c3c0 69 6c 65 20 6a 6f 69 6e 20 24 6c 69 62 5f 64 69  ile join $lib_di
1c3d0 72 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d  r [appendArgs \.
1c3e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c3f0 20 20 20 6c 69 62 73 71 6c 69 74 65 33 20 5b 69     libsqlite3 [i
1c400 6e 66 6f 20 73 68 61 72 65 64 6c 69 62 65 78 74  nfo sharedlibext
1c410 65 6e 73 69 6f 6e 5d 5d 5d 20 73 71 6c 69 74 65  ension]]] sqlite
1c420 33 2e 64 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20  3.dll..         
1c430 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1c440 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 75  }....          u
1c450 6e 73 65 74 20 6c 69 62 5f 64 69 72 0d 0a 20 20  nset lib_dir..  
1c460 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
1c470 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69  ..    }....    i
1c480 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1c490 20 6e 6f 28 53 79 73 74 65 6d 2e 44 61 74 61 2e   no(System.Data.
1c4a0 53 51 4c 69 74 65 2e 64 6c 6c 29 5d 7d 20 74 68  SQLite.dll)]} th
1c4b0 65 6e 20 7b 0d 0a 20 20 20 20 20 20 63 68 65 63  en {..      chec
1c4c0 6b 46 6f 72 46 69 6c 65 20 24 74 65 73 74 5f 63  kForFile $test_c
1c4d0 68 61 6e 6e 65 6c 20 5b 66 69 6c 65 20 6a 6f 69  hannel [file joi
1c4e0 6e 20 24 63 6f 72 65 5f 62 69 6e 5f 70 61 74 68  n $core_bin_path
1c4f0 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 53 79   \..          Sy
1c500 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
1c510 2e 64 6c 6c 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  .dll]..    }....
1c520 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
1c530 78 69 73 74 73 20 6e 6f 28 74 65 73 74 2e 73 71  xists no(test.sq
1c540 6c 69 74 65 33 29 5d 7d 20 74 68 65 6e 20 7b 0d  lite3)]} then {.
1c550 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f 72 46  .      checkForF
1c560 69 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ile $test_channe
1c570 6c 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 74 65  l [file join $te
1c580 73 74 5f 64 61 74 61 5f 70 61 74 68 20 74 65 73  st_data_path tes
1c590 74 2e 73 71 6c 69 74 65 33 5d 0d 0a 20 20 20 20  t.sqlite3]..    
1c5a0 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20  }..  }....  #.. 
1c5b0 20 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74   # NOTE: Check t
1c5c0 68 65 20 63 6f 72 65 20 74 65 73 74 20 63 6f 6e  he core test con
1c5d0 73 74 72 61 69 6e 74 73 20 75 6e 6c 65 73 73 20  straints unless 
1c5e0 74 68 65 79 20 68 61 76 65 20 62 65 65 6e 0d 0a  they have been..
1c5f0 20 20 23 20 20 20 20 20 20 20 65 78 70 6c 69 63    #       explic
1c600 69 74 6c 79 20 64 69 73 61 62 6c 65 64 2e 0d 0a  itly disabled...
1c610 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
1c620 6f 20 65 78 69 73 74 73 20 6e 6f 28 70 6c 61 74  o exists no(plat
1c630 66 6f 72 6d 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  form)]} then {..
1c640 20 20 20 20 63 68 65 63 6b 46 6f 72 50 6c 61 74      checkForPlat
1c650 66 6f 72 6d 20 24 74 65 73 74 5f 63 68 61 6e 6e  form $test_chann
1c660 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
1c670 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1c680 6f 28 77 69 6e 64 6f 77 73 56 65 72 73 69 6f 6e  o(windowsVersion
1c690 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1c6a0 63 68 65 63 6b 46 6f 72 57 69 6e 64 6f 77 73 56  checkForWindowsV
1c6b0 65 72 73 69 6f 6e 20 24 74 65 73 74 5f 63 68 61  ersion $test_cha
1c6c0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1c6d0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1c6e0 20 6e 6f 28 67 65 74 49 6e 73 74 61 6c 6c 65 64   no(getInstalled
1c6f0 55 70 64 61 74 65 73 29 5d 7d 20 74 68 65 6e 20  Updates)]} then 
1c700 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 47  {..    checkForG
1c710 65 74 49 6e 73 74 61 6c 6c 65 64 55 70 64 61 74  etInstalledUpdat
1c720 65 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  es $test_channel
1c730 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1c740 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1c750 6f 70 65 72 61 74 69 6e 67 53 79 73 74 65 6d 55  operatingSystemU
1c760 70 64 61 74 65 73 29 5d 7d 20 74 68 65 6e 20 7b  pdates)]} then {
1c770 0d 0a 20 20 20 20 69 66 20 7b 5b 69 73 45 61 67  ..    if {[isEag
1c780 6c 65 5d 20 26 26 20 5b 69 6e 66 6f 20 65 78 69  le] && [info exi
1c790 73 74 73 20 74 63 6c 5f 70 6c 61 74 66 6f 72 6d  sts tcl_platform
1c7a0 28 6f 73 45 78 74 72 61 29 5d 7d 20 74 68 65 6e  (osExtra)]} then
1c7b0 20 7b 0d 0a 20 20 20 20 20 20 76 77 61 69 74 57   {..      vwaitW
1c7c0 69 74 68 54 69 6d 65 6f 75 74 20 74 63 6c 5f 70  ithTimeout tcl_p
1c7d0 6c 61 74 66 6f 72 6d 28 6f 73 45 78 74 72 61 29  latform(osExtra)
1c7e0 20 24 74 65 73 74 5f 74 69 6d 65 6f 75 74 0d 0a   $test_timeout..
1c7f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 63 68 65      }....    che
1c800 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e 67 53 79  ckForOperatingSy
1c810 73 74 65 6d 55 70 64 61 74 65 20 24 74 65 73 74  stemUpdate $test
1c820 5f 63 68 61 6e 6e 65 6c 20 4b 42 39 33 36 39 32  _channel KB93692
1c830 39 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4f  9..    checkForO
1c840 70 65 72 61 74 69 6e 67 53 79 73 74 65 6d 55 70  peratingSystemUp
1c850 64 61 74 65 20 24 74 65 73 74 5f 63 68 61 6e 6e  date $test_chann
1c860 65 6c 20 4b 42 39 37 36 39 33 32 0d 0a 20 20 20  el KB976932..   
1c870 20 63 68 65 63 6b 46 6f 72 4f 70 65 72 61 74 69   checkForOperati
1c880 6e 67 53 79 73 74 65 6d 55 70 64 61 74 65 20 24  ngSystemUpdate $
1c890 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 22 4e 6f  test_channel "No
1c8a0 76 65 6d 62 65 72 20 55 70 64 61 74 65 22 0d 0a  vember Update"..
1c8b0 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 70 65 72      checkForOper
1c8c0 61 74 69 6e 67 53 79 73 74 65 6d 55 70 64 61 74  atingSystemUpdat
1c8d0 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  e $test_channel 
1c8e0 22 41 6e 6e 69 76 65 72 73 61 72 79 20 55 70 64  "Anniversary Upd
1c8f0 61 74 65 22 0d 0a 20 20 20 20 63 68 65 63 6b 46  ate"..    checkF
1c900 6f 72 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65  orOperatingSyste
1c910 6d 55 70 64 61 74 65 20 24 74 65 73 74 5f 63 68  mUpdate $test_ch
1c920 61 6e 6e 65 6c 20 22 43 72 65 61 74 6f 72 73 20  annel "Creators 
1c930 55 70 64 61 74 65 22 0d 0a 20 20 20 20 63 68 65  Update"..    che
1c940 63 6b 46 6f 72 4f 70 65 72 61 74 69 6e 67 53 79  ckForOperatingSy
1c950 73 74 65 6d 55 70 64 61 74 65 20 24 74 65 73 74  stemUpdate $test
1c960 5f 63 68 61 6e 6e 65 6c 20 22 46 61 6c 6c 20 43  _channel "Fall C
1c970 72 65 61 74 6f 72 73 20 55 70 64 61 74 65 22 0d  reators Update".
1c980 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 70 65  .    checkForOpe
1c990 72 61 74 69 6e 67 53 79 73 74 65 6d 55 70 64 61  ratingSystemUpda
1c9a0 74 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  te $test_channel
1c9b0 20 22 41 70 72 69 6c 20 32 30 31 38 20 55 70 64   "April 2018 Upd
1c9c0 61 74 65 22 0d 0a 20 20 20 20 63 68 65 63 6b 46  ate"..    checkF
1c9d0 6f 72 4f 70 65 72 61 74 69 6e 67 53 79 73 74 65  orOperatingSyste
1c9e0 6d 55 70 64 61 74 65 20 24 74 65 73 74 5f 63 68  mUpdate $test_ch
1c9f0 61 6e 6e 65 6c 20 22 4f 63 74 6f 62 65 72 20 32  annel "October 2
1ca00 30 31 38 20 55 70 64 61 74 65 22 0d 0a 20 20 20  018 Update"..   
1ca10 20 63 68 65 63 6b 46 6f 72 4f 70 65 72 61 74 69   checkForOperati
1ca20 6e 67 53 79 73 74 65 6d 55 70 64 61 74 65 20 24  ngSystemUpdate $
1ca30 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 22 4d 61  test_channel "Ma
1ca40 79 20 32 30 31 39 20 55 70 64 61 74 65 22 0d 0a  y 2019 Update"..
1ca50 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1ca60 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 73 63  nfo exists no(sc
1ca70 72 69 70 74 4c 69 62 72 61 72 79 29 5d 7d 20 74  riptLibrary)]} t
1ca80 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1ca90 46 6f 72 53 63 72 69 70 74 4c 69 62 72 61 72 79  ForScriptLibrary
1caa0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1cab0 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1cac0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63  nfo exists no(tc
1cad0 6c 4f 70 74 69 6f 6e 73 29 5d 7d 20 74 68 65 6e  lOptions)]} then
1cae0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1caf0 54 63 6c 4f 70 74 69 6f 6e 73 20 24 74 65 73 74  TclOptions $test
1cb00 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1cb10 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1cb20 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72  ists no(checkFor
1cb30 42 69 67 4c 69 73 74 73 29 5d 7d 20 74 68 65 6e  BigLists)]} then
1cb40 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1cb50 42 69 67 4c 69 73 74 73 20 24 74 65 73 74 5f 63  BigLists $test_c
1cb60 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
1cb70 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1cb80 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72 50 72  ts no(checkForPr
1cb90 6f 63 65 73 73 6f 72 49 6e 74 65 6e 73 69 76 65  ocessorIntensive
1cba0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1cbb0 63 68 65 63 6b 46 6f 72 50 72 6f 63 65 73 73 6f  checkForProcesso
1cbc0 72 49 6e 74 65 6e 73 69 76 65 20 24 74 65 73 74  rIntensive $test
1cbd0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1cbe0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1cbf0 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46 6f 72  ists no(checkFor
1cc00 54 69 6d 65 49 6e 74 65 6e 73 69 76 65 29 5d 7d  TimeIntensive)]}
1cc10 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1cc20 63 6b 46 6f 72 54 69 6d 65 49 6e 74 65 6e 73 69  ckForTimeIntensi
1cc30 76 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ve $test_channel
1cc40 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1cc50 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1cc60 63 68 65 63 6b 46 6f 72 46 75 6c 6c 54 65 73 74  checkForFullTest
1cc70 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1cc80 63 68 65 63 6b 46 6f 72 46 75 6c 6c 54 65 73 74  checkForFullTest
1cc90 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1cca0 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1ccb0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 63 68  nfo exists no(ch
1ccc0 65 63 6b 46 6f 72 4d 65 6d 6f 72 79 49 6e 74 65  eckForMemoryInte
1ccd0 6e 73 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  nsive)]} then {.
1cce0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4d 65 6d  .    checkForMem
1ccf0 6f 72 79 49 6e 74 65 6e 73 69 76 65 20 24 74 65  oryIntensive $te
1cd00 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
1cd10 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
1cd20 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46  exists no(checkF
1cd30 6f 72 53 74 61 63 6b 49 6e 74 65 6e 73 69 76 65  orStackIntensive
1cd40 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1cd50 63 68 65 63 6b 46 6f 72 53 74 61 63 6b 49 6e 74  checkForStackInt
1cd60 65 6e 73 69 76 65 20 24 74 65 73 74 5f 63 68 61  ensive $test_cha
1cd70 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1cd80 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1cd90 20 6e 6f 28 63 68 65 63 6b 46 6f 72 53 74 61 63   no(checkForStac
1cda0 6b 53 69 7a 65 29 5d 7d 20 74 68 65 6e 20 7b 0d  kSize)]} then {.
1cdb0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 53 74 61  .    checkForSta
1cdc0 63 6b 53 69 7a 65 20 24 74 65 73 74 5f 63 68 61  ckSize $test_cha
1cdd0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1cde0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1cdf0 20 6e 6f 28 77 69 6e 64 6f 77 73 43 6f 6d 6d 61   no(windowsComma
1ce00 6e 64 50 72 6f 63 65 73 73 6f 72 29 5d 7d 20 74  ndProcessor)]} t
1ce10 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1ce20 46 6f 72 57 69 6e 64 6f 77 73 43 6f 6d 6d 61 6e  ForWindowsComman
1ce30 64 50 72 6f 63 65 73 73 6f 72 20 24 74 65 73 74  dProcessor $test
1ce40 5f 63 68 61 6e 6e 65 6c 20 63 6d 64 2e 65 78 65  _channel cmd.exe
1ce50 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1ce60 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1ce70 66 6f 73 73 69 6c 29 5d 7d 20 74 68 65 6e 20 7b  fossil)]} then {
1ce80 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 46 6f  ..    checkForFo
1ce90 73 73 69 6c 20 24 74 65 73 74 5f 63 68 61 6e 6e  ssil $test_chann
1cea0 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
1ceb0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1cec0 6f 28 74 65 73 74 52 65 70 6f 73 69 74 6f 72 79  o(testRepository
1ced0 55 72 6c 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  Url)]} then {.. 
1cee0 20 20 20 63 68 65 63 6b 46 6f 72 56 61 72 69 61     checkForVaria
1cef0 62 6c 65 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ble $test_channe
1cf00 6c 20 74 65 73 74 5f 72 65 70 6f 73 69 74 6f 72  l test_repositor
1cf10 79 5f 75 72 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  y_url..  }....  
1cf20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1cf30 73 20 6e 6f 28 74 65 73 74 52 65 70 6f 73 69 74  s no(testReposit
1cf40 6f 72 79 46 69 6c 65 29 5d 7d 20 74 68 65 6e 20  oryFile)]} then 
1cf50 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 56  {..    checkForV
1cf60 61 72 69 61 62 6c 65 20 24 74 65 73 74 5f 63 68  ariable $test_ch
1cf70 61 6e 6e 65 6c 20 74 65 73 74 5f 72 65 70 6f 73  annel test_repos
1cf80 69 74 6f 72 79 5f 66 69 6c 65 0d 0a 20 20 7d 0d  itory_file..  }.
1cf90 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
1cfa0 65 78 69 73 74 73 20 6e 6f 28 76 65 72 73 69 6f  exists no(versio
1cfb0 6e 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  n)]} then {..   
1cfc0 20 63 68 65 63 6b 46 6f 72 56 65 72 73 69 6f 6e   checkForVersion
1cfd0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1cfe0 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1cff0 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 65 61  nfo exists no(ea
1d000 67 6c 65 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  gle)]} then {.. 
1d010 20 20 20 63 68 65 63 6b 46 6f 72 45 61 67 6c 65     checkForEagle
1d020 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1d030 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1d040 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e 6f  nfo exists no(no
1d050 4c 6f 67 46 69 6c 65 29 5d 7d 20 74 68 65 6e 20  LogFile)]} then 
1d060 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4c  {..    checkForL
1d070 6f 67 46 69 6c 65 20 24 74 65 73 74 5f 63 68 61  ogFile $test_cha
1d080 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1d090 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1d0a0 20 6e 6f 28 65 78 65 63 75 74 61 62 6c 65 53 79   no(executableSy
1d0b0 6d 62 6f 6c 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  mbols)]} then {.
1d0c0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 53 79 6d  .    checkForSym
1d0d0 62 6f 6c 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  bols $test_chann
1d0e0 65 6c 20 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66 65  el [info nameofe
1d0f0 78 65 63 75 74 61 62 6c 65 5d 20 65 78 65 63 75  xecutable] execu
1d100 74 61 62 6c 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  table..  }....  
1d110 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1d120 73 20 6e 6f 28 67 61 72 75 64 61 29 5d 7d 20 74  s no(garuda)]} t
1d130 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1d140 46 6f 72 47 61 72 75 64 61 20 24 74 65 73 74 5f  ForGaruda $test_
1d150 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
1d160 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1d170 73 74 73 20 6e 6f 28 73 68 65 6c 6c 29 5d 7d 20  sts no(shell)]} 
1d180 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1d190 6b 46 6f 72 53 68 65 6c 6c 20 24 74 65 73 74 5f  kForShell $test_
1d1a0 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
1d1b0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1d1c0 73 74 73 20 6e 6f 28 6f 66 66 69 63 69 61 6c 53  sts no(officialS
1d1d0 74 61 62 6c 65 52 65 6c 65 61 73 65 49 6e 50 72  tableReleaseInPr
1d1e0 6f 67 72 65 73 73 29 5d 7d 20 74 68 65 6e 20 7b  ogress)]} then {
1d1f0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4f 66  ..    checkForOf
1d200 66 69 63 69 61 6c 53 74 61 62 6c 65 52 65 6c 65  ficialStableRele
1d210 61 73 65 49 6e 50 72 6f 67 72 65 73 73 20 24 74  aseInProgress $t
1d220 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
1d230 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
1d240 20 65 78 69 73 74 73 20 6e 6f 28 64 65 62 75 67   exists no(debug
1d250 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1d260 63 68 65 63 6b 46 6f 72 44 65 62 75 67 20 24 74  checkForDebug $t
1d270 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d  est_channel..  }
1d280 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54  ....  #..  # NOT
1d290 45 3a 20 48 61 73 20 54 6b 20 74 65 73 74 69 6e  E: Has Tk testin
1d2a0 67 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  g support been d
1d2b0 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20  isabled?..  #.. 
1d2c0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1d2d0 74 73 20 6e 6f 28 74 6b 29 5d 7d 20 74 68 65 6e  ts no(tk)]} then
1d2e0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1d2f0 54 6b 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  Tk $test_channel
1d300 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
1d310 23 20 4e 4f 54 45 3a 20 48 61 73 20 6e 61 74 69  # NOTE: Has nati
1d320 76 65 20 63 6f 64 65 20 64 65 74 65 63 74 69 6f  ve code detectio
1d330 6e 20 73 75 70 70 6f 72 74 20 62 65 65 6e 20 64  n support been d
1d340 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20  isabled?..  #.. 
1d350 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1d360 74 73 20 6e 6f 28 6e 61 74 69 76 65 29 5d 7d 20  ts no(native)]} 
1d370 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1d380 6b 46 6f 72 4e 61 74 69 76 65 43 6f 64 65 20 24  kForNativeCode $
1d390 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1d3a0 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1d3b0 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 76 61  TE: Check for va
1d3c0 72 69 6f 75 73 20 65 78 74 72 61 20 63 6f 6d 6d  rious extra comm
1d3d0 61 6e 64 73 20 74 68 61 74 20 6d 61 79 20 62 65  ands that may be
1d3e0 20 70 72 65 73 65 6e 74 2e 0d 0a 20 20 23 0d 0a   present...  #..
1d3f0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1d400 73 74 73 20 6e 6f 28 62 61 73 65 36 34 43 6f 6d  sts no(base64Com
1d410 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  mand)]} then {..
1d420 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d      checkForComm
1d430 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  and $test_channe
1d440 6c 20 62 61 73 65 36 34 0d 0a 20 20 7d 0d 0a 0d  l base64..  }...
1d450 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1d460 69 73 74 73 20 6e 6f 28 62 67 65 72 72 6f 72 43  ists no(bgerrorC
1d470 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b  ommand)]} then {
1d480 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f  ..    checkForCo
1d490 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e  mmand $test_chan
1d4a0 6e 65 6c 20 62 67 65 72 72 6f 72 0d 0a 20 20 7d  nel bgerror..  }
1d4b0 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
1d4c0 20 65 78 69 73 74 73 20 6e 6f 28 63 61 6c 6c 62   exists no(callb
1d4d0 61 63 6b 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68  ackCommand)]} th
1d4e0 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1d4f0 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  orCommand $test_
1d500 63 68 61 6e 6e 65 6c 20 63 61 6c 6c 62 61 63 6b  channel callback
1d510 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1d520 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1d530 64 65 62 75 67 43 6f 6d 6d 61 6e 64 29 5d 7d 20  debugCommand)]} 
1d540 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1d550 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73  kForCommand $tes
1d560 74 5f 63 68 61 6e 6e 65 6c 20 64 65 62 75 67 0d  t_channel debug.
1d570 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1d580 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 64  info exists no(d
1d590 6f 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  oCommand)]} then
1d5a0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1d5b0 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
1d5c0 61 6e 6e 65 6c 20 64 6f 0d 0a 20 20 7d 0d 0a 0d  annel do..  }...
1d5d0 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1d5e0 69 73 74 73 20 6e 6f 28 64 6f 77 6e 6c 65 76 65  ists no(downleve
1d5f0 6c 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e  lCommand)]} then
1d600 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1d610 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68  Command $test_ch
1d620 61 6e 6e 65 6c 20 64 6f 77 6e 6c 65 76 65 6c 0d  annel downlevel.
1d630 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b  .  }....  if {![
1d640 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 67  info exists no(g
1d650 75 69 64 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68  uidCommand)]} th
1d660 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1d670 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f  orCommand $test_
1d680 63 68 61 6e 6e 65 6c 20 67 75 69 64 0d 0a 20 20  channel guid..  
1d690 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1d6a0 6f 20 65 78 69 73 74 73 20 6e 6f 28 68 61 73 68  o exists no(hash
1d6b0 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20  Command)]} then 
1d6c0 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43  {..    checkForC
1d6d0 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
1d6e0 6e 6e 65 6c 20 68 61 73 68 0d 0a 20 20 7d 0d 0a  nnel hash..  }..
1d6f0 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65  ..  if {![info e
1d700 78 69 73 74 73 20 6e 6f 28 68 6f 73 74 43 6f 6d  xists no(hostCom
1d710 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  mand)]} then {..
1d720 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d      checkForComm
1d730 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  and $test_channe
1d740 6c 20 68 6f 73 74 0d 0a 20 20 7d 0d 0a 0d 0a 20  l host..  }.... 
1d750 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1d760 74 73 20 6e 6f 28 69 6e 76 6f 6b 65 43 6f 6d 6d  ts no(invokeComm
1d770 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
1d780 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
1d790 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
1d7a0 20 69 6e 76 6f 6b 65 0d 0a 20 20 7d 0d 0a 0d 0a   invoke..  }....
1d7b0 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1d7c0 73 74 73 20 6e 6f 28 6b 69 6c 6c 43 6f 6d 6d 61  sts no(killComma
1d7d0 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
1d7e0 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
1d7f0 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
1d800 6b 69 6c 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  kill..  }....  i
1d810 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1d820 20 6e 6f 28 6c 67 65 74 43 6f 6d 6d 61 6e 64 29   no(lgetCommand)
1d830 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
1d840 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24  heckForCommand $
1d850 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6c 67 65  test_channel lge
1d860 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  t..  }....  if {
1d870 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1d880 28 6c 69 62 72 61 72 79 43 6f 6d 6d 61 6e 64 29  (libraryCommand)
1d890 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
1d8a0 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24  heckForCommand $
1d8b0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6c 69 62  test_channel lib
1d8c0 72 61 72 79 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  rary..  }....  i
1d8d0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1d8e0 20 6e 6f 28 6c 72 65 6d 6f 76 65 43 6f 6d 6d 61   no(lremoveComma
1d8f0 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nd)]} then {..  
1d900 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e    checkForComman
1d910 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  d $test_channel 
1d920 6c 72 65 6d 6f 76 65 0d 0a 20 20 7d 0d 0a 0d 0a  lremove..  }....
1d930 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1d940 73 74 73 20 6e 6f 28 6e 6f 70 43 6f 6d 6d 61 6e  sts no(nopComman
1d950 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
1d960 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64   checkForCommand
1d970 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6e   $test_channel n
1d980 6f 70 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  op..  }....  if 
1d990 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1d9a0 6f 28 6e 70 72 6f 63 43 6f 6d 6d 61 6e 64 29 5d  o(nprocCommand)]
1d9b0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1d9c0 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74  eckForCommand $t
1d9d0 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6e 70 72 6f  est_channel npro
1d9e0 63 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  c..  }....  if {
1d9f0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1da00 28 6f 62 6a 65 63 74 43 6f 6d 6d 61 6e 64 29 5d  (objectCommand)]
1da10 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1da20 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74  eckForCommand $t
1da30 65 73 74 5f 63 68 61 6e 6e 65 6c 20 6f 62 6a 65  est_channel obje
1da40 63 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  ct..  }....  if 
1da50 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1da60 6f 28 70 61 72 73 65 43 6f 6d 6d 61 6e 64 29 5d  o(parseCommand)]
1da70 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1da80 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74  eckForCommand $t
1da90 65 73 74 5f 63 68 61 6e 6e 65 6c 20 70 61 72 73  est_channel pars
1daa0 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  e..  }....  if {
1dab0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1dac0 28 73 63 6f 70 65 43 6f 6d 6d 61 6e 64 29 5d 7d  (scopeCommand)]}
1dad0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1dae0 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65  ckForCommand $te
1daf0 73 74 5f 63 68 61 6e 6e 65 6c 20 73 63 6f 70 65  st_channel scope
1db00 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1db10 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1db20 73 6f 63 6b 65 74 43 6f 6d 6d 61 6e 64 29 5d 7d  socketCommand)]}
1db30 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1db40 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65  ckForCommand $te
1db50 73 74 5f 63 68 61 6e 6e 65 6c 20 73 6f 63 6b 65  st_channel socke
1db60 74 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  t..  }....  if {
1db70 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1db80 28 73 71 6c 43 6f 6d 6d 61 6e 64 29 5d 7d 20 74  (sqlCommand)]} t
1db90 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1dba0 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74  ForCommand $test
1dbb0 5f 63 68 61 6e 6e 65 6c 20 73 71 6c 0d 0a 20 20  _channel sql..  
1dbc0 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1dbd0 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 63 6c 43  o exists no(tclC
1dbe0 6f 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b  ommand)]} then {
1dbf0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f  ..    checkForCo
1dc00 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e  mmand $test_chan
1dc10 6e 65 6c 20 74 63 6c 0d 0a 20 20 7d 0d 0a 0d 0a  nel tcl..  }....
1dc20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69    if {![info exi
1dc30 73 74 73 20 6e 6f 28 74 68 72 6f 77 43 6f 6d 6d  sts no(throwComm
1dc40 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  and)]} then {.. 
1dc50 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61     checkForComma
1dc60 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
1dc70 20 74 68 72 6f 77 0d 0a 20 20 7d 0d 0a 0d 0a 20   throw..  }.... 
1dc80 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1dc90 74 73 20 6e 6f 28 74 72 75 6e 63 61 74 65 43 6f  ts no(truncateCo
1dca0 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
1dcb0 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
1dcc0 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
1dcd0 65 6c 20 74 72 75 6e 63 61 74 65 0d 0a 20 20 7d  el truncate..  }
1dce0 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
1dcf0 20 65 78 69 73 74 73 20 6e 6f 28 74 72 79 43 6f   exists no(tryCo
1dd00 6d 6d 61 6e 64 29 5d 7d 20 74 68 65 6e 20 7b 0d  mmand)]} then {.
1dd10 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 43 6f 6d  .    checkForCom
1dd20 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e  mand $test_chann
1dd30 65 6c 20 74 72 79 0d 0a 20 20 7d 0d 0a 0d 0a 20  el try..  }.... 
1dd40 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1dd50 74 73 20 6e 6f 28 75 72 69 43 6f 6d 6d 61 6e 64  ts no(uriCommand
1dd60 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1dd70 63 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20  checkForCommand 
1dd80 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 75 72  $test_channel ur
1dd90 69 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b  i..  }....  if {
1dda0 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f  ![info exists no
1ddb0 28 76 65 72 73 69 6f 6e 43 6f 6d 6d 61 6e 64 29  (versionCommand)
1ddc0 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63  ]} then {..    c
1ddd0 68 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24  heckForCommand $
1dde0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 76 65 72  test_channel ver
1ddf0 73 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  sion..  }....  i
1de00 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1de10 20 6e 6f 28 78 6d 6c 43 6f 6d 6d 61 6e 64 29 5d   no(xmlCommand)]
1de20 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1de30 65 63 6b 46 6f 72 43 6f 6d 6d 61 6e 64 20 24 74  eckForCommand $t
1de40 65 73 74 5f 63 68 61 6e 6e 65 6c 20 78 6d 6c 0d  est_channel xml.
1de50 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
1de60 20 4e 4f 54 45 3a 20 48 61 73 20 22 65 66 6f 72   NOTE: Has "efor
1de70 6d 61 74 22 20 64 65 74 65 63 74 69 6f 6e 20 73  mat" detection s
1de80 75 70 70 6f 72 74 20 62 65 65 6e 20 64 69 73 61  upport been disa
1de90 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20 20 69 66  bled?..  #..  if
1dea0 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20   {![info exists 
1deb0 6e 6f 28 65 66 6f 72 6d 61 74 29 5d 7d 20 74 68  no(eformat)]} th
1dec0 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1ded0 6f 72 45 46 6f 72 6d 61 74 20 24 74 65 73 74 5f  orEFormat $test_
1dee0 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
1def0 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
1df00 61 73 20 6e 61 6d 65 73 70 61 63 65 20 64 65 74  as namespace det
1df10 65 63 74 69 6f 6e 20 73 75 70 70 6f 72 74 20 62  ection support b
1df20 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
1df30 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
1df40 20 65 78 69 73 74 73 20 6e 6f 28 6e 61 6d 65 73   exists no(names
1df50 70 61 63 65 73 29 5d 7d 20 74 68 65 6e 20 7b 0d  paces)]} then {.
1df60 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 61 6d  .    checkForNam
1df70 65 73 70 61 63 65 73 20 24 74 65 73 74 5f 63 68  espaces $test_ch
1df80 61 6e 6e 65 6c 20 5b 68 61 76 65 43 6f 6e 73 74  annel [haveConst
1df90 72 61 69 6e 74 20 71 75 69 65 74 5d 0d 0a 20 20  raint quiet]..  
1dfa0 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
1dfb0 54 45 3a 20 43 68 65 63 6b 20 66 6f 72 20 76 61  TE: Check for va
1dfc0 72 69 6f 75 73 20 6e 61 74 69 76 65 20 54 63 6c  rious native Tcl
1dfd0 20 66 65 61 74 75 72 65 73 20 74 68 61 74 20 77   features that w
1dfe0 65 72 65 20 61 64 64 65 64 0d 0a 20 20 23 20 20  ere added..  #  
1dff0 20 20 20 20 20 28 6f 72 20 73 69 6d 70 6c 79 20       (or simply 
1e000 70 72 6f 70 6f 73 65 64 29 20 74 68 72 6f 75 67  proposed) throug
1e010 68 20 74 68 65 20 54 49 50 20 70 72 6f 63 65 73  h the TIP proces
1e020 73 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21  s...  #..  if {!
1e030 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1e040 74 69 70 31 32 37 29 5d 7d 20 74 68 65 6e 20 7b  tip127)]} then {
1e050 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69  ..    checkForTi
1e060 70 31 32 37 20 24 74 65 73 74 5f 63 68 61 6e 6e  p127 $test_chann
1e070 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
1e080 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1e090 6f 28 74 69 70 31 39 34 29 5d 7d 20 74 68 65 6e  o(tip194)]} then
1e0a0 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1e0b0 54 69 70 31 39 34 20 24 74 65 73 74 5f 63 68 61  Tip194 $test_cha
1e0c0 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1e0d0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1e0e0 20 6e 6f 28 74 69 70 32 30 37 29 5d 7d 20 74 68   no(tip207)]} th
1e0f0 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1e100 6f 72 54 69 70 32 30 37 20 24 74 65 73 74 5f 63  orTip207 $test_c
1e110 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
1e120 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1e130 74 73 20 6e 6f 28 74 69 70 32 34 31 29 5d 7d 20  ts no(tip241)]} 
1e140 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1e150 6b 46 6f 72 54 69 70 32 34 31 20 24 74 65 73 74  kForTip241 $test
1e160 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1e170 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1e180 69 73 74 73 20 6e 6f 28 74 69 70 32 38 35 29 5d  ists no(tip285)]
1e190 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1e1a0 65 63 6b 46 6f 72 54 69 70 32 38 35 20 24 74 65  eckForTip285 $te
1e1b0 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
1e1c0 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  ...  if {![info 
1e1d0 65 78 69 73 74 73 20 6e 6f 28 74 69 70 34 30 35  exists no(tip405
1e1e0 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  )]} then {..    
1e1f0 63 68 65 63 6b 46 6f 72 54 69 70 34 30 35 20 24  checkForTip405 $
1e200 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20  test_channel..  
1e210 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1e220 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69 70 34  o exists no(tip4
1e230 32 31 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  21)]} then {..  
1e240 20 20 63 68 65 63 6b 46 6f 72 54 69 70 34 32 31    checkForTip421
1e250 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1e260 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69    }....  if {![i
1e270 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 74 69  nfo exists no(ti
1e280 70 34 32 36 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a  p426)]} then {..
1e290 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69 70 34      checkForTip4
1e2a0 32 36 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  26 $test_channel
1e2b0 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21  ..  }....  if {!
1e2c0 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1e2d0 74 69 70 34 32 39 29 5d 7d 20 74 68 65 6e 20 7b  tip429)]} then {
1e2e0 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 54 69  ..    checkForTi
1e2f0 70 34 32 39 20 24 74 65 73 74 5f 63 68 61 6e 6e  p429 $test_chann
1e300 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  el..  }....  if 
1e310 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e  {![info exists n
1e320 6f 28 74 69 70 34 34 30 29 5d 7d 20 74 68 65 6e  o(tip440)]} then
1e330 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72   {..    checkFor
1e340 54 69 70 34 34 30 20 24 74 65 73 74 5f 63 68 61  Tip440 $test_cha
1e350 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  nnel..  }....  i
1e360 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1e370 20 6e 6f 28 74 69 70 34 36 31 29 5d 7d 20 74 68   no(tip461)]} th
1e380 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1e390 6f 72 54 69 70 34 36 31 20 24 74 65 73 74 5f 63  orTip461 $test_c
1e3a0 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a 20  hannel..  }.... 
1e3b0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1e3c0 74 73 20 6e 6f 28 74 69 70 34 36 33 29 5d 7d 20  ts no(tip463)]} 
1e3d0 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63  then {..    chec
1e3e0 6b 46 6f 72 54 69 70 34 36 33 20 24 74 65 73 74  kForTip463 $test
1e3f0 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d  _channel..  }...
1e400 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
1e410 69 73 74 73 20 6e 6f 28 74 69 70 34 37 31 29 5d  ists no(tip471)]
1e420 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68  } then {..    ch
1e430 65 63 6b 46 6f 72 54 69 70 34 37 31 20 24 74 65  eckForTip471 $te
1e440 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d  st_channel..  }.
1e450 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45  ...  #..  # NOTE
1e460 3a 20 48 61 73 20 70 65 72 66 6f 72 6d 61 6e 63  : Has performanc
1e470 65 20 74 65 73 74 69 6e 67 20 62 65 65 6e 20 64  e testing been d
1e480 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20  isabled?..  #.. 
1e490 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1e4a0 74 73 20 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20  ts no(core)] && 
1e4b0 5c 0d 0a 20 20 20 20 20 20 21 5b 69 6e 66 6f 20  \..      ![info 
1e4c0 65 78 69 73 74 73 20 6e 6f 28 63 68 65 63 6b 46  exists no(checkF
1e4d0 6f 72 50 65 72 66 6f 72 6d 61 6e 63 65 29 5d 7d  orPerformance)]}
1e4e0 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65   then {..    che
1e4f0 63 6b 46 6f 72 50 65 72 66 6f 72 6d 61 6e 63 65  ckForPerformance
1e500 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 0d 0a   $test_channel..
1e510 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
1e520 4e 4f 54 45 3a 20 48 61 76 65 20 61 6e 79 20 74  NOTE: Have any t
1e530 69 6d 69 6e 67 20 72 65 6c 61 74 65 64 20 63 6f  iming related co
1e540 6e 73 74 72 61 69 6e 74 73 20 62 65 65 6e 20 64  nstraints been d
1e550 69 73 61 62 6c 65 64 3f 0d 0a 20 20 23 0d 0a 20  isabled?..  #.. 
1e560 20 23 20 42 55 47 42 55 47 3a 20 49 6e 20 45 61   # BUGBUG: In Ea
1e570 67 6c 65 2c 20 74 68 65 73 65 20 63 68 65 63 6b  gle, these check
1e580 73 20 66 6f 72 20 22 70 72 65 63 69 73 69 6f 6e  s for "precision
1e590 22 20 74 69 6d 69 6e 67 20 61 72 65 20 6e 6f 74  " timing are not
1e5a0 20 6f 76 65 72 6c 79 0d 0a 20 20 23 20 20 20 20   overly..  #    
1e5b0 20 20 20 20 20 72 65 6c 69 61 62 6c 65 2e 20 20       reliable.  
1e5c0 54 68 69 73 20 6d 61 79 20 62 65 20 64 75 65 20  This may be due 
1e5d0 74 6f 20 74 68 65 20 73 65 6d 69 2d 72 61 6e 64  to the semi-rand
1e5e0 6f 6d 20 6e 61 74 75 72 65 20 6f 66 20 74 68 65  om nature of the
1e5f0 0d 0a 20 20 23 20 20 20 20 20 20 20 20 20 67 61  ..  #         ga
1e600 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  rbage collection
1e610 2e 20 20 4d 6f 72 65 20 72 65 73 65 61 72 63 68  .  More research
1e620 20 69 6e 74 6f 20 74 68 65 20 70 72 65 63 69 73   into the precis
1e630 65 20 63 61 75 73 65 20 6f 66 0d 0a 20 20 23 20  e cause of..  # 
1e640 20 20 20 20 20 20 20 20 74 69 6d 69 6e 67 20 69          timing i
1e650 73 73 75 65 73 20 69 73 20 63 65 72 74 61 69 6e  ssues is certain
1e660 6c 79 20 77 61 72 72 61 6e 74 65 64 2e 0d 0a 20  ly warranted... 
1e670 20 23 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b 21   #..  #..  if {!
1e680 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28  [info exists no(
1e690 63 6f 72 65 29 5d 20 26 26 20 5c 0d 0a 20 20 20  core)] && \..   
1e6a0 20 20 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73     ![info exists
1e6b0 20 6e 6f 28 74 69 6d 69 6e 67 29 5d 7d 20 74 68   no(timing)]} th
1e6c0 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b 46  en {..    checkF
1e6d0 6f 72 54 69 6d 69 6e 67 20 24 74 65 73 74 5f 63  orTiming $test_c
1e6e0 68 61 6e 6e 65 6c 20 35 30 3b 20 23 20 31 2f 32  hannel 50; # 1/2
1e6f0 30 74 68 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 7d  0th second...  }
1e700 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ....  if {![info
1e710 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72 65 29   exists no(core)
1e720 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b  ] && \..      ![
1e730 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 70  info exists no(p
1e740 72 65 63 69 73 65 54 69 6d 69 6e 67 29 5d 7d 20  reciseTiming)]} 
1e750 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20  then {..    #.. 
1e760 20 20 20 23 20 4e 4f 54 45 3a 20 4e 6f 72 6d 61     # NOTE: Norma
1e770 6c 6c 79 2c 20 74 68 65 20 22 70 72 65 63 69 73  lly, the "precis
1e780 65 54 69 6d 69 6e 67 22 20 63 6f 6e 73 74 72 61  eTiming" constra
1e790 69 6e 74 20 69 6d 70 6c 69 63 69 74 6c 79 20 72  int implicitly r
1e7a0 65 71 75 69 72 65 73 20 74 68 61 74 0d 0a 20 20  equires that..  
1e7b0 20 20 23 20 20 20 20 20 20 20 74 68 65 20 22 74    #       the "t
1e7c0 69 6d 69 6e 67 22 20 63 6f 6e 73 74 72 61 69 6e  iming" constrain
1e7d0 74 20 62 65 20 70 72 65 73 65 6e 74 20 61 73 20  t be present as 
1e7e0 77 65 6c 6c 3b 20 68 6f 77 65 76 65 72 2c 20 74  well; however, t
1e7f0 68 61 74 20 63 61 6e 20 62 65 0d 0a 20 20 20 20  hat can be..    
1e800 23 20 20 20 20 20 20 20 6f 76 65 72 72 69 64 64  #       overridd
1e810 65 6e 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20  en...    #..    
1e820 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
1e830 20 6e 6f 28 72 65 71 75 69 72 65 54 69 6d 69 6e   no(requireTimin
1e840 67 29 5d 20 7c 7c 20 5c 0d 0a 20 20 20 20 20 20  g)] || \..      
1e850 20 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e    [haveConstrain
1e860 74 20 74 69 6d 69 6e 67 5d 7d 20 74 68 65 6e 20  t timing]} then 
1e870 7b 0d 0a 20 20 20 20 20 20 63 68 65 63 6b 46 6f  {..      checkFo
1e880 72 54 69 6d 69 6e 67 20 24 74 65 73 74 5f 63 68  rTiming $test_ch
1e890 61 6e 6e 65 6c 20 32 35 20 70 72 65 63 69 73 65  annel 25 precise
1e8a0 54 69 6d 69 6e 67 3b 20 23 20 31 2f 34 30 74 68  Timing; # 1/40th
1e8b0 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 20 20 7d 0d   second...    }.
1e8c0 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  .  }....  #..  #
1e8d0 20 4e 4f 54 45 3a 20 48 61 73 20 69 6e 74 65 72   NOTE: Has inter
1e8e0 61 63 74 69 76 65 20 74 65 73 74 69 6e 67 20 62  active testing b
1e8f0 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
1e900 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
1e910 20 65 78 69 73 74 73 20 6e 6f 28 69 6e 74 65 72   exists no(inter
1e920 61 63 74 69 76 65 29 5d 7d 20 74 68 65 6e 20 7b  active)]} then {
1e930 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 49 6e  ..    checkForIn
1e940 74 65 72 61 63 74 69 76 65 20 24 74 65 73 74 5f  teractive $test_
1e950 63 68 61 6e 6e 65 6c 0d 0a 20 20 7d 0d 0a 0d 0a  channel..  }....
1e960 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 48    #..  # NOTE: H
1e970 61 73 20 69 6e 74 65 72 61 63 74 69 76 65 20 63  as interactive c
1e980 6f 6d 6d 61 6e 64 20 74 65 73 74 69 6e 67 20 62  ommand testing b
1e990 65 65 6e 20 64 69 73 61 62 6c 65 64 3f 0d 0a 20  een disabled?.. 
1e9a0 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f   #..  if {![info
1e9b0 20 65 78 69 73 74 73 20 6e 6f 28 63 6f 72 65 29   exists no(core)
1e9c0 5d 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 21 5b  ] && \..      ![
1e9d0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 69  info exists no(i
1e9e0 6e 74 65 72 61 63 74 69 76 65 43 6f 6d 6d 61 6e  nteractiveComman
1e9f0 64 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  d)]} then {..   
1ea00 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
1ea10 46 6f 72 20 74 65 73 74 20 22 64 65 62 75 67 2d  For test "debug-
1ea20 31 2e 38 22 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  1.8"...    #..  
1ea30 20 20 63 68 65 63 6b 46 6f 72 49 6e 74 65 72 61    checkForIntera
1ea40 63 74 69 76 65 43 6f 6d 6d 61 6e 64 20 24 74 65  ctiveCommand $te
1ea50 73 74 5f 63 68 61 6e 6e 65 6c 20 67 6f 0d 0a 0d  st_channel go...
1ea60 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
1ea70 54 45 3a 20 46 6f 72 20 74 65 73 74 20 22 64 65  TE: For test "de
1ea80 62 75 67 2d 31 2e 39 22 2e 0d 0a 20 20 20 20 23  bug-1.9"...    #
1ea90 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 49 6e  ..    checkForIn
1eaa0 74 65 72 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64  teractiveCommand
1eab0 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 64   $test_channel d
1eac0 6f 6e 65 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20  one....    #..  
1ead0 20 20 23 20 4e 4f 54 45 3a 20 46 6f 72 20 74 65    # NOTE: For te
1eae0 73 74 20 22 6f 62 6a 65 63 74 2d 31 35 2e 39 22  st "object-15.9"
1eaf0 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 63 68  ...    #..    ch
1eb00 65 63 6b 46 6f 72 49 6e 74 65 72 61 63 74 69 76  eckForInteractiv
1eb10 65 43 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63  eCommand $test_c
1eb20 68 61 6e 6e 65 6c 20 61 72 67 73 0d 0a 0d 0a 20  hannel args.... 
1eb30 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45     #..    # NOTE
1eb40 3a 20 46 6f 72 20 74 65 73 74 20 22 64 65 62 75  : For test "debu
1eb50 67 2d 31 30 2e 31 22 2e 0d 0a 20 20 20 20 23 0d  g-10.1"...    #.
1eb60 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 49 6e 74  .    checkForInt
1eb70 65 72 61 63 74 69 76 65 43 6f 6d 6d 61 6e 64 20  eractiveCommand 
1eb80 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 65 78  $test_channel ex
1eb90 69 74 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72  it..    checkFor
1eba0 49 6e 74 65 72 61 63 74 69 76 65 43 6f 6d 6d 61  InteractiveComma
1ebb0 6e 64 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  nd $test_channel
1ebc0 20 70 61 75 73 65 0d 0a 20 20 20 20 63 68 65 63   pause..    chec
1ebd0 6b 46 6f 72 49 6e 74 65 72 61 63 74 69 76 65 43  kForInteractiveC
1ebe0 6f 6d 6d 61 6e 64 20 24 74 65 73 74 5f 63 68 61  ommand $test_cha
1ebf0 6e 6e 65 6c 20 75 6e 70 61 75 73 65 0d 0a 20 20  nnel unpause..  
1ec00 7d 0d 0a 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66  }....  if {![inf
1ec10 6f 20 65 78 69 73 74 73 20 6e 6f 28 75 73 65 72  o exists no(user
1ec20 49 6e 74 65 72 61 63 74 69 6f 6e 29 5d 7d 20 74  Interaction)]} t
1ec30 68 65 6e 20 7b 0d 0a 20 20 20 20 63 68 65 63 6b  hen {..    check
1ec40 46 6f 72 55 73 65 72 49 6e 74 65 72 61 63 74 69  ForUserInteracti
1ec50 6f 6e 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  on $test_channel
1ec60 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
1ec70 23 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 66 6f  # NOTE: Check fo
1ec80 72 20 6e 65 74 77 6f 72 6b 20 63 6f 6e 6e 65 63  r network connec
1ec90 74 69 76 69 74 79 20 74 6f 20 6f 75 72 20 74 65  tivity to our te
1eca0 73 74 20 68 6f 73 74 20 28 69 2e 65 2e 0d 0a 20  st host (i.e... 
1ecb0 20 23 20 20 20 20 20 20 20 74 68 65 20 45 61 67   #       the Eag
1ecc0 6c 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20  le distribution 
1ecd0 73 69 74 65 29 2e 0d 0a 20 20 23 0d 0a 20 20 69  site)...  #..  i
1ece0 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1ecf0 20 6e 6f 28 63 6f 72 65 29 5d 20 26 26 20 21 5b   no(core)] && ![
1ed00 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 6e  info exists no(n
1ed10 65 74 77 6f 72 6b 29 5d 7d 20 74 68 65 6e 20 7b  etwork)]} then {
1ed20 0d 0a 20 20 20 20 63 68 65 63 6b 46 6f 72 4e 65  ..    checkForNe
1ed30 74 77 6f 72 6b 20 24 74 65 73 74 5f 63 68 61 6e  twork $test_chan
1ed40 6e 65 6c 20 24 74 65 73 74 5f 68 6f 73 74 20 24  nel $test_host $
1ed50 74 65 73 74 5f 74 69 6d 65 6f 75 74 0d 0a 20 20  test_timeout..  
1ed60 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23 23 23  }....  #########
1ed70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ed80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ed90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1eda0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1edb0 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  ####....  #..  #
1edc0 20 4e 4f 54 45 3a 20 46 69 67 75 72 65 20 6f 75   NOTE: Figure ou
1edd0 74 20 74 68 65 20 61 70 70 72 6f 78 69 6d 61 74  t the approximat
1ede0 65 20 72 65 6c 61 74 69 76 65 20 70 65 72 66 6f  e relative perfo
1edf0 72 6d 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6d  rmance of this m
1ee00 61 63 68 69 6e 65 2e 0d 0a 20 20 23 0d 0a 20 20  achine...  #..  
1ee10 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
1ee20 73 20 6e 6f 28 62 6f 67 6f 43 6f 70 73 29 5d 20  s no(bogoCops)] 
1ee30 26 26 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69  && [haveConstrai
1ee40 6e 74 20 70 65 72 66 6f 72 6d 61 6e 63 65 5d 7d  nt performance]}
1ee50 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 74 70 75   then {..    tpu
1ee60 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c  ts $test_channel
1ee70 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d   \..        "---
1ee80 2d 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 62  - checking for b
1ee90 61 73 65 6c 69 6e 65 20 42 6f 67 6f 43 6f 70 73  aseline BogoCops
1eea0 20 28 63 6f 6d 6d 61 6e 64 73 2d 70 65 72 2d 73   (commands-per-s
1eeb0 65 63 6f 6e 64 29 2e 2e 2e 20 22 0d 0a 0d 0a 20  econd)... ".... 
1eec0 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78     if {![info ex
1eed0 69 73 74 73 20 74 65 73 74 5f 62 61 73 65 5f 63  ists test_base_c
1eee0 6f 70 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ops]} then {..  
1eef0 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20 4e      #..      # N
1ef00 4f 54 45 3a 20 54 68 65 20 65 78 70 65 63 74 65  OTE: The expecte
1ef10 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6e 75  d performance nu
1ef20 6d 62 65 72 73 20 66 6f 72 20 61 6c 6c 20 74 68  mbers for all th
1ef30 65 0d 0a 20 20 20 20 20 20 23 20 20 20 20 20 20  e..      #      
1ef40 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 74 65 73   performance tes
1ef50 74 73 20 77 69 6c 6c 20 62 65 20 63 61 6c 69 62  ts will be calib
1ef60 72 61 74 65 64 20 62 61 73 65 64 20 6f 6e 0d 0a  rated based on..
1ef70 20 20 20 20 20 20 23 20 20 20 20 20 20 20 74 68        #       th
1ef80 69 73 20 6e 75 6d 62 65 72 20 28 77 68 69 63 68  is number (which
1ef90 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65   is based on the
1efa0 20 6d 65 61 73 75 72 65 64 0d 0a 20 20 20 20 20   measured..     
1efb0 20 23 20 20 20 20 20 20 20 70 65 72 66 6f 72 6d   #       perform
1efc0 61 6e 63 65 20 6f 66 20 74 68 65 20 61 63 74 75  ance of the actu
1efd0 61 6c 20 6d 61 63 68 69 6e 65 20 74 68 61 74 20  al machine that 
1efe0 77 61 73 0d 0a 20 20 20 20 20 20 23 20 20 20 20  was..      #    
1eff0 20 20 20 75 73 65 64 20 74 6f 20 64 65 74 65 72     used to deter
1f000 6d 69 6e 65 20 74 68 6f 73 65 20 65 78 70 65 63  mine those expec
1f010 74 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 0d  ted performance.
1f020 0a 20 20 20 20 20 20 23 20 20 20 20 20 20 20 6e  .      #       n
1f030 75 6d 62 65 72 73 29 2e 0d 0a 20 20 20 20 20 20  umbers)...      
1f040 23 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 69 73  #..      if {[is
1f050 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20 7b 0d 0a  Eagle]} then {..
1f060 20 20 20 20 20 20 20 20 73 65 74 20 74 65 73 74          set test
1f070 5f 62 61 73 65 5f 63 6f 70 73 20 33 36 30 30 30  _base_cops 36000
1f080 2e 30 3b 20 23 20 4e 4f 54 45 3a 20 45 61 67 6c  .0; # NOTE: Eagl
1f090 65 20 31 2e 30 20 57 69 6e 33 32 0d 0a 20 20 20  e 1.0 Win32..   
1f0a0 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
1f0b0 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 62 61       set test_ba
1f0c0 73 65 5f 63 6f 70 73 20 31 35 37 30 30 30 30 2e  se_cops 1570000.
1f0d0 30 3b 20 23 20 4e 4f 54 45 3a 20 54 63 6c 20 38  0; # NOTE: Tcl 8
1f0e0 2e 34 2e 31 39 20 57 69 6e 33 32 0d 0a 20 20 20  .4.19 Win32..   
1f0f0 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
1f100 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
1f110 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
1f120 67 73 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f  gs $test_base_co
1f130 70 73 20 5c 6e 5d 0d 0a 20 20 20 20 74 70 75 74  ps \n]..    tput
1f140 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
1f150 5c 0d 0a 20 20 20 20 20 20 20 20 22 2d 2d 2d 2d  \..        "----
1f160 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 62 61   checking for ba
1f170 73 65 6c 69 6e 65 20 42 6f 67 6f 43 6f 70 73 20  seline BogoCops 
1f180 6d 75 6c 74 69 70 6c 69 65 72 73 2e 2e 2e 20 22  multipliers... "
1f190 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e  ....    if {![in
1f1a0 66 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 62  fo exists test_b
1f1b0 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69 70 6c  ase_cops_multipl
1f1c0 69 65 72 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20  iers]} then {.. 
1f1d0 20 20 20 20 20 73 65 74 20 74 65 73 74 5f 62 61       set test_ba
1f1e0 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69 70 6c 69  se_cops_multipli
1f1f0 65 72 73 20 5b 6c 69 73 74 20 5c 0d 0a 20 20 20  ers [list \..   
1f200 20 20 20 20 20 20 20 32 20 34 20 38 20 31 30 20         2 4 8 10 
1f210 31 36 20 32 30 20 33 32 20 35 30 20 36 34 20 31  16 20 32 50 64 1
1f220 30 30 20 31 30 30 30 20 31 30 30 30 30 20 31 30  00 1000 10000 10
1f230 30 30 30 30 20 31 30 30 30 30 30 30 5d 0d 0a 20  0000 1000000].. 
1f240 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 74 70 75 74     }....    tput
1f250 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20  s $test_channel 
1f260 5b 61 70 70 65 6e 64 41 72 67 73 20 24 74 65 73  [appendArgs $tes
1f270 74 5f 62 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74  t_base_cops_mult
1f280 69 70 6c 69 65 72 73 20 5c 6e 5d 0d 0a 20 20 20  ipliers \n]..   
1f290 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61   tputs $test_cha
1f2a0 6e 6e 65 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20  nnel \..        
1f2b0 22 2d 2d 2d 2d 20 63 68 65 63 6b 69 6e 67 20 66  "---- checking f
1f2c0 6f 72 20 63 75 72 72 65 6e 74 20 42 6f 67 6f 43  or current BogoC
1f2d0 6f 70 73 20 28 63 6f 6d 6d 61 6e 64 73 2d 70 65  ops (commands-pe
1f2e0 72 2d 73 65 63 6f 6e 64 29 2e 2e 2e 20 22 0d 0a  r-second)... "..
1f2f0 0d 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f  ..    if {![info
1f300 20 65 78 69 73 74 73 20 74 65 73 74 5f 63 6f 70   exists test_cop
1f310 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  s]} then {..    
1f320 20 20 73 65 74 20 74 65 73 74 5f 63 6f 70 73 20    set test_cops 
1f330 5b 63 61 6c 63 75 6c 61 74 65 42 6f 67 6f 43 6f  [calculateBogoCo
1f340 70 73 5d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ps]..    }....  
1f350 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
1f360 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
1f370 73 20 5b 66 6f 72 6d 61 74 44 65 63 69 6d 61 6c  s [formatDecimal
1f380 20 24 74 65 73 74 5f 63 6f 70 73 5d 20 5c 6e 5d   $test_cops] \n]
1f390 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73  ..    tputs $tes
1f3a0 74 5f 63 68 61 6e 6e 65 6c 20 5c 0d 0a 20 20 20  t_channel \..   
1f3b0 20 20 20 20 20 22 2d 2d 2d 2d 20 63 68 65 63 6b       "---- check
1f3c0 69 6e 67 20 66 6f 72 20 63 75 72 72 65 6e 74 20  ing for current 
1f3d0 42 6f 67 6f 43 6f 70 73 20 61 67 61 69 6e 73 74  BogoCops against
1f3e0 20 62 61 73 65 6c 69 6e 65 20 42 6f 67 6f 43 6f   baseline BogoCo
1f3f0 70 73 2e 2e 2e 20 22 0d 0a 0d 0a 20 20 20 20 69  ps... "....    i
1f400 66 20 7b 24 74 65 73 74 5f 63 6f 70 73 20 3e 20  f {$test_cops > 
1f410 24 74 65 73 74 5f 62 61 73 65 5f 63 6f 70 73 7d  $test_base_cops}
1f420 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 69   then {..      i
1f430 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73  f {![info exists
1f440 20 6e 6f 28 66 61 73 74 65 72 42 6f 67 6f 43 6f   no(fasterBogoCo
1f450 70 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  ps)]} then {..  
1f460 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72 61        addConstra
1f470 69 6e 74 20 73 61 6d 65 4f 72 46 61 73 74 65 72  int sameOrFaster
1f480 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20 20 20  BogoCops..      
1f490 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74 20    addConstraint 
1f4a0 66 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 0d 0a  fasterBogoCops..
1f4b0 0d 0a 20 20 20 20 20 20 20 20 69 66 20 7b 21 5b  ..        if {![
1f4c0 69 6e 66 6f 20 65 78 69 73 74 73 20 6e 6f 28 62  info exists no(b
1f4d0 6f 67 6f 43 6f 70 73 4d 75 6c 74 69 70 6c 69 65  ogoCopsMultiplie
1f4e0 72 73 29 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  rs)]} then {..  
1f4f0 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
1f500 6d 75 6c 74 69 70 6c 69 65 72 20 24 74 65 73 74  multiplier $test
1f510 5f 62 61 73 65 5f 63 6f 70 73 5f 6d 75 6c 74 69  _base_cops_multi
1f520 70 6c 69 65 72 73 20 7b 0d 0a 20 20 20 20 20 20  pliers {..      
1f530 20 20 20 20 20 20 69 66 20 7b 24 74 65 73 74 5f        if {$test_
1f540 63 6f 70 73 20 3e 3d 20 24 74 65 73 74 5f 62 61  cops >= $test_ba
1f550 73 65 5f 63 6f 70 73 20 2a 20 24 6d 75 6c 74 69  se_cops * $multi
1f560 70 6c 69 65 72 7d 20 74 68 65 6e 20 7b 0d 0a 20  plier} then {.. 
1f570 20 20 20 20 20 20 20 20 20 20 20 20 20 61 64 64               add
1f580 43 6f 6e 73 74 72 61 69 6e 74 20 5b 61 70 70 65  Constraint [appe
1f590 6e 64 41 72 67 73 20 66 61 73 74 65 72 42 6f 67  ndArgs fasterBog
1f5a0 6f 43 6f 70 73 42 79 20 24 6d 75 6c 74 69 70 6c  oCopsBy $multipl
1f5b0 69 65 72 20 58 5d 0d 0a 20 20 20 20 20 20 20 20  ier X]..        
1f5c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1f5d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1f5e0 75 6e 73 65 74 20 6d 75 6c 74 69 70 6c 69 65 72  unset multiplier
1f5f0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1f600 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 74 70     }....      tp
1f610 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
1f620 6c 20 66 61 73 74 65 72 5c 6e 0d 0a 20 20 20 20  l faster\n..    
1f630 7d 20 65 6c 73 65 69 66 20 7b 24 74 65 73 74 5f  } elseif {$test_
1f640 63 6f 70 73 20 3c 20 24 74 65 73 74 5f 62 61 73  cops < $test_bas
1f650 65 5f 63 6f 70 73 7d 20 74 68 65 6e 20 7b 0d 0a  e_cops} then {..
1f660 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
1f670 20 65 78 69 73 74 73 20 6e 6f 28 73 6c 6f 77 65   exists no(slowe
1f680 72 42 6f 67 6f 43 6f 70 73 29 5d 7d 20 74 68 65  rBogoCops)]} the
1f690 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 61 64 64  n {..        add
1f6a0 43 6f 6e 73 74 72 61 69 6e 74 20 73 61 6d 65 4f  Constraint sameO
1f6b0 72 53 6c 6f 77 65 72 42 6f 67 6f 43 6f 70 73 0d  rSlowerBogoCops.
1f6c0 0a 20 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73  .        addCons
1f6d0 74 72 61 69 6e 74 20 73 6c 6f 77 65 72 42 6f 67  traint slowerBog
1f6e0 6f 43 6f 70 73 0d 0a 0d 0a 20 20 20 20 20 20 20  oCops....       
1f6f0 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73   if {![info exis
1f700 74 73 20 6e 6f 28 62 6f 67 6f 43 6f 70 73 4d 75  ts no(bogoCopsMu
1f710 6c 74 69 70 6c 69 65 72 73 29 5d 7d 20 74 68 65  ltipliers)]} the
1f720 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  n {..          f
1f730 6f 72 65 61 63 68 20 6d 75 6c 74 69 70 6c 69 65  oreach multiplie
1f740 72 20 24 74 65 73 74 5f 62 61 73 65 5f 63 6f 70  r $test_base_cop
1f750 73 5f 6d 75 6c 74 69 70 6c 69 65 72 73 20 7b 0d  s_multipliers {.
1f760 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
1f770 7b 24 6d 75 6c 74 69 70 6c 69 65 72 20 21 3d 20  {$multiplier != 
1f780 30 20 26 26 20 5c 0d 0a 20 20 20 20 20 20 20 20  0 && \..        
1f790 20 20 20 20 20 20 20 20 24 74 65 73 74 5f 63 6f          $test_co
1f7a0 70 73 20 3c 3d 20 24 74 65 73 74 5f 62 61 73 65  ps <= $test_base
1f7b0 5f 63 6f 70 73 20 2a 20 28 31 2e 30 20 2f 20 24  _cops * (1.0 / $
1f7c0 6d 75 6c 74 69 70 6c 69 65 72 29 7d 20 74 68 65  multiplier)} the
1f7d0 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n {..           
1f7e0 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74     addConstraint
1f7f0 20 5b 61 70 70 65 6e 64 41 72 67 73 20 73 6c 6f   [appendArgs slo
1f800 77 65 72 42 6f 67 6f 43 6f 70 73 42 79 20 24 6d  werBogoCopsBy $m
1f810 75 6c 74 69 70 6c 69 65 72 20 58 5d 0d 0a 20 20  ultiplier X]..  
1f820 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1f830 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1f840 20 20 20 20 20 20 75 6e 73 65 74 20 6d 75 6c 74        unset mult
1f850 69 70 6c 69 65 72 0d 0a 20 20 20 20 20 20 20 20  iplier..        
1f860 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  }..      }....  
1f870 20 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f      tputs $test_
1f880 63 68 61 6e 6e 65 6c 20 73 6c 6f 77 65 72 5c 6e  channel slower\n
1f890 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a  ..    } else {..
1f8a0 20 20 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f        if {![info
1f8b0 20 65 78 69 73 74 73 20 6e 6f 28 73 61 6d 65 42   exists no(sameB
1f8c0 6f 67 6f 43 6f 70 73 29 5d 7d 20 74 68 65 6e 20  ogoCops)]} then 
1f8d0 7b 0d 0a 20 20 20 20 20 20 20 20 61 64 64 43 6f  {..        addCo
1f8e0 6e 73 74 72 61 69 6e 74 20 73 61 6d 65 4f 72 46  nstraint sameOrF
1f8f0 61 73 74 65 72 42 6f 67 6f 43 6f 70 73 0d 0a 20  asterBogoCops.. 
1f900 20 20 20 20 20 20 20 61 64 64 43 6f 6e 73 74 72         addConstr
1f910 61 69 6e 74 20 73 61 6d 65 4f 72 53 6c 6f 77 65  aint sameOrSlowe
1f920 72 42 6f 67 6f 43 6f 70 73 0d 0a 20 20 20 20 20  rBogoCops..     
1f930 20 20 20 61 64 64 43 6f 6e 73 74 72 61 69 6e 74     addConstraint
1f940 20 73 61 6d 65 42 6f 67 6f 43 6f 70 73 0d 0a 20   sameBogoCops.. 
1f950 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1f960 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
1f970 6e 65 6c 20 73 61 6d 65 5c 6e 0d 0a 20 20 20 20  nel same\n..    
1f980 7d 0d 0a 0d 0a 20 20 20 20 73 65 74 20 70 65 72  }....    set per
1f990 63 65 6e 74 20 5b 65 78 70 72 20 7b 5b 63 61 6c  cent [expr {[cal
1f9a0 63 75 6c 61 74 65 52 65 6c 61 74 69 76 65 50 65  culateRelativePe
1f9b0 72 66 6f 72 6d 61 6e 63 65 20 69 74 65 72 61 74  rformance iterat
1f9c0 69 6f 6e 73 20 31 5d 20 2a 20 31 30 30 7d 5d 0d  ions 1] * 100}].
1f9d0 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
1f9e0 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
1f9f0 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20  ndArgs \..      
1fa00 20 20 22 2d 2d 2d 2d 20 63 75 72 72 65 6e 74 20    "---- current 
1fa10 42 6f 67 6f 43 6f 70 73 20 28 63 6f 6d 6d 61 6e  BogoCops (comman
1fa20 64 73 2d 70 65 72 2d 73 65 63 6f 6e 64 29 20 69  ds-per-second) i
1fa30 73 20 22 20 5b 66 6f 72 6d 61 74 44 65 63 69 6d  s " [formatDecim
1fa40 61 6c 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 65  al \..        [e
1fa50 78 70 72 20 7b 24 70 65 72 63 65 6e 74 20 3e 20  xpr {$percent > 
1fa60 31 30 30 20 3f 20 24 70 65 72 63 65 6e 74 20 2d  100 ? $percent -
1fa70 20 31 30 30 20 3a 20 24 70 65 72 63 65 6e 74 7d   100 : $percent}
1fa80 5d 20 32 5d 20 22 25 20 22 20 5c 0d 0a 20 20 20  ] 2] "% " \..   
1fa90 20 20 20 20 20 5b 65 78 70 72 20 7b 24 70 65 72       [expr {$per
1faa0 63 65 6e 74 20 3e 20 31 30 30 20 3f 20 22 66 61  cent > 100 ? "fa
1fab0 73 74 65 72 20 74 68 61 6e 22 20 3a 20 22 61 73  ster than" : "as
1fac0 20 66 61 73 74 20 61 73 22 7d 5d 20 5c 0d 0a 20   fast as"}] \.. 
1fad0 20 20 20 20 20 20 20 22 20 74 68 65 20 62 61 73         " the bas
1fae0 65 6c 69 6e 65 5c 6e 22 5d 0d 0a 0d 0a 20 20 20  eline\n"]....   
1faf0 20 75 6e 73 65 74 20 70 65 72 63 65 6e 74 0d 0a   unset percent..
1fb00 20 20 7d 0d 0a 0d 0a 20 20 23 23 23 23 23 23 23    }....  #######
1fb10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fb20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fb30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fb40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fb50 23 23 23 23 23 23 0d 0a 0d 0a 20 20 23 0d 0a 20  ######....  #.. 
1fb60 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 74 65 73   # NOTE: The tes
1fb70 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 73 68  t constraints sh
1fb80 6f 75 6c 64 20 6e 6f 77 20 62 65 20 66 75 6c 6c  ould now be full
1fb90 79 20 62 75 69 6c 74 2c 20 63 61 63 68 65 20 74  y built, cache t
1fba0 68 65 6d 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  hem...  #..  if 
1fbb0 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 74  {![info exists t
1fbc0 65 73 74 5f 63 6f 6e 73 74 72 61 69 6e 74 73 5d  est_constraints]
1fbd0 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 73 65  } then {..    se
1fbe0 74 20 74 65 73 74 5f 63 6f 6e 73 74 72 61 69 6e  t test_constrain
1fbf0 74 73 20 5b 67 65 74 43 6f 6e 73 74 72 61 69 6e  ts [getConstrain
1fc00 74 73 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 23  ts]..  }....  ##
1fc10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc50 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20 23  ###########..  #
1fc60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc70 23 23 23 23 23 23 23 20 45 4e 44 20 45 61 67 6c  ####### END Eagl
1fc80 65 20 26 20 54 63 6c 20 43 6f 6e 73 74 72 61 69  e & Tcl Constrai
1fc90 6e 74 73 20 23 23 23 23 23 23 23 23 23 23 23 23  nts ############
1fca0 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 20 20  ############..  
1fcb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fcc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fcd0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fce0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fcf0 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d  #############...
1fd00 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
1fd10 46 6f 72 20 45 61 67 6c 65 2c 20 64 75 6d 70 20  For Eagle, dump 
1fd20 74 68 65 20 70 6c 61 74 66 6f 72 6d 20 69 6e 66  the platform inf
1fd30 6f 72 6d 61 74 69 6f 6e 2c 20 69 6e 63 6c 75 64  ormation, includ
1fd40 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 65 0d  ing the compile.
1fd50 0a 20 20 23 20 20 20 20 20 20 20 6f 70 74 69 6f  .  #       optio
1fd60 6e 73 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20 7b  ns...  #..  if {
1fd70 5b 69 73 45 61 67 6c 65 5d 7d 20 74 68 65 6e 20  [isEagle]} then 
1fd80 7b 0d 0a 20 20 20 20 73 65 74 20 74 69 6d 65 53  {..    set timeS
1fd90 74 61 6d 70 20 5b 67 65 74 50 6c 61 74 66 6f 72  tamp [getPlatfor
1fda0 6d 49 6e 66 6f 20 74 69 6d 65 53 74 61 6d 70 20  mInfo timeStamp 
1fdb0 22 22 5d 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 5b  ""]....    if {[
1fdc0 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74  string length $t
1fdd0 69 6d 65 53 74 61 6d 70 5d 20 3e 20 30 7d 20 74  imeStamp] > 0} t
1fde0 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 23 23 23  hen {..      ###
1fdf0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fe00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fe10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fe20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fe30 23 23 23 23 23 23 0d 0a 20 20 20 20 20 20 23 20  ######..      # 
1fe40 4d 4f 4e 4f 3a 20 42 75 67 2c 20 73 65 65 3a 20  MONO: Bug, see: 
1fe50 68 74 74 70 73 3a 2f 2f 62 75 67 7a 69 6c 6c 61  https://bugzilla
1fe60 2e 6e 6f 76 65 6c 6c 2e 63 6f 6d 2f 73 68 6f 77  .novell.com/show
1fe70 5f 62 75 67 2e 63 67 69 3f 69 64 3d 34 37 39 30  _bug.cgi?id=4790
1fe80 36 31 0d 0a 20 20 20 20 20 20 23 23 23 23 23 23  61..      ######
1fe90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1feb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fec0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fed0 23 23 23 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20  ###....      if 
1fee0 7b 5b 69 73 4d 6f 6e 6f 5d 7d 20 74 68 65 6e 20  {[isMono]} then 
1fef0 7b 0d 0a 20 20 20 20 20 20 20 20 23 0d 0a 20 20  {..        #..  
1ff00 20 20 20 20 20 20 23 20 48 41 43 4b 3a 20 57 65        # HACK: We
1ff10 20 6e 65 65 64 20 73 6f 6d 65 74 68 69 6e 67 20   need something 
1ff20 74 6f 20 67 6f 20 69 6e 74 6f 20 74 68 65 20 6c  to go into the l
1ff30 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20 20 20 20  og file...      
1ff40 20 20 23 0d 0a 20 20 20 20 20 20 20 20 73 65 74    #..        set
1ff50 20 74 69 6d 65 53 74 61 6d 70 20 5b 6c 69 6e 64   timeStamp [lind
1ff60 65 78 20 24 74 69 6d 65 53 74 61 6d 70 20 30 5d  ex $timeStamp 0]
1ff70 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b  ..      } else {
1ff80 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 74 69  ..        set ti
1ff90 6d 65 53 74 61 6d 70 20 5b 66 6f 72 6d 61 74 54  meStamp [formatT
1ffa0 69 6d 65 53 74 61 6d 70 20 5b 63 6c 6f 63 6b 20  imeStamp [clock 
1ffb0 73 63 61 6e 20 24 74 69 6d 65 53 74 61 6d 70 5d  scan $timeStamp]
1ffc0 5d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ]..      }..    
1ffd0 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
1ffe0 73 65 74 20 74 69 6d 65 53 74 61 6d 70 20 3c 6e  set timeStamp <n
1fff0 6f 6e 65 3e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  one>..    }.... 
20000 20 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63     tputs $test_c
20010 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72  hannel [appendAr
20020 67 73 20 22 2d 2d 2d 2d 20 62 75 69 6c 64 3a 20  gs "---- build: 
20030 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69  " \..        [li
20040 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49  st [getPlatformI
20050 6e 66 6f 20 65 6e 67 69 6e 65 20 3c 6e 6f 6e 65  nfo engine <none
20060 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20 20 20 20 20  >]] " " \..     
20070 20 20 20 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61     [list [getPla
20080 74 66 6f 72 6d 49 6e 66 6f 20 70 61 74 63 68 4c  tformInfo patchL
20090 65 76 65 6c 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20  evel <none>]] " 
200a0 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69  " \..        [li
200b0 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49  st [getPlatformI
200c0 6e 66 6f 20 74 61 67 20 3c 6e 6f 6e 65 3e 5d 5d  nfo tag <none>]]
200d0 20 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20   " " \..        
200e0 5b 6c 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f  [list [getPlatfo
200f0 72 6d 49 6e 66 6f 20 72 65 6c 65 61 73 65 20 3c  rmInfo release <
20100 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20  none>]] " " \.. 
20110 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67 65         [list [ge
20120 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 74 65  tPlatformInfo te
20130 78 74 20 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20  xt <none>]] " " 
20140 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c 69 73 74  \..        [list
20150 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
20160 6f 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  o configuration 
20170 3c 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a  <none>]] " " \..
20180 20 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67          [list [g
20190 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 73  etPlatformInfo s
201a0 75 66 66 69 78 20 3c 6e 6f 6e 65 3e 5d 5d 20 22  uffix <none>]] "
201b0 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 6c   " \..        [l
201c0 69 73 74 20 24 74 69 6d 65 53 74 61 6d 70 5d 20  ist $timeStamp] 
201d0 22 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  " " \..        [
201e0 6c 69 73 74 20 5b 67 65 74 50 6c 61 74 66 6f 72  list [getPlatfor
201f0 6d 49 6e 66 6f 20 73 6f 75 72 63 65 49 64 20 3c  mInfo sourceId <
20200 6e 6f 6e 65 3e 5d 5d 20 22 20 22 20 5c 0d 0a 20  none>]] " " \.. 
20210 20 20 20 20 20 20 20 5b 6c 69 73 74 20 5b 67 65         [list [ge
20220 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 73 6f  tPlatformInfo so
20230 75 72 63 65 54 69 6d 65 53 74 61 6d 70 20 3c 6e  urceTimeStamp <n
20240 6f 6e 65 3e 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  one>]] \n]....  
20250 20 20 75 6e 73 65 74 20 74 69 6d 65 53 74 61 6d    unset timeStam
20260 70 0d 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24  p....    tputs $
20270 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
20280 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6f  pendArgs "---- o
20290 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20  s: " \..        
202a0 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f  [getPlatformInfo
202b0 20 6f 73 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d   os <none>] \n].
202c0 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
202d0 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
202e0 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 67 6c 6f  ndArgs "---- glo
202f0 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65  balAssemblyCache
20300 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  : " \..        [
20310 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20  getPlatformInfo 
20320 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61  globalAssemblyCa
20330 63 68 65 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d  che <none>] \n].
20340 0a 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65  ...    tputs $te
20350 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65  st_channel [appe
20360 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 6d 6f 64  ndArgs "---- mod
20370 75 6c 65 56 65 72 73 69 6f 6e 49 64 3a 20 22 20  uleVersionId: " 
20380 5c 0d 0a 20 20 20 20 20 20 20 20 5b 67 65 74 50  \..        [getP
20390 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 6d 6f 64 75  latformInfo modu
203a0 6c 65 56 65 72 73 69 6f 6e 49 64 20 3c 6e 6f 6e  leVersionId <non
203b0 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 74  e>] \n]....    t
203c0 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
203d0 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
203e0 2d 2d 2d 2d 20 63 6f 6d 70 69 6c 65 4f 70 74 69  ---- compileOpti
203f0 6f 6e 73 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20  ons: " \..      
20400 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 20 5b 67    [formatList [g
20410 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f 20 63  etPlatformInfo c
20420 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 20 3c 6e  ompileOptions <n
20430 6f 6e 65 3e 5d 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  one>]] \n]....  
20440 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
20450 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
20460 73 20 22 2d 2d 2d 2d 20 73 74 72 6f 6e 67 4e 61  s "---- strongNa
20470 6d 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20  me: " \..       
20480 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66   [getPlatformInf
20490 6f 20 73 74 72 6f 6e 67 4e 61 6d 65 20 3c 6e 6f  o strongName <no
204a0 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20  ne>] \n]....    
204b0 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
204c0 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
204d0 22 2d 2d 2d 2d 20 63 65 72 74 69 66 69 63 61 74  "---- certificat
204e0 65 3a 20 22 20 5c 0d 0a 20 20 20 20 20 20 20 20  e: " \..        
204f0 5b 67 65 74 50 6c 61 74 66 6f 72 6d 49 6e 66 6f  [getPlatformInfo
20500 20 63 65 72 74 69 66 69 63 61 74 65 20 3c 6e 6f   certificate <no
20510 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20  ne>] \n]....    
20520 74 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e  tputs $test_chan
20530 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20  nel [appendArgs 
20540 22 2d 2d 2d 2d 20 74 61 72 67 65 74 46 72 61 6d  "---- targetFram
20550 65 77 6f 72 6b 3a 20 22 20 5c 0d 0a 20 20 20 20  ework: " \..    
20560 20 20 20 20 5b 67 65 74 50 6c 61 74 66 6f 72 6d      [getPlatform
20570 49 6e 66 6f 20 74 61 72 67 65 74 46 72 61 6d 65  Info targetFrame
20580 77 6f 72 6b 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d  work <none>] \n]
20590 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20  ..  }....  #..  
205a0 23 20 4e 4f 54 45 3a 20 53 68 6f 77 20 74 68 65  # NOTE: Show the
205b0 20 63 75 72 72 65 6e 74 20 74 65 73 74 20 66 69   current test fi
205c0 6c 65 20 6e 61 6d 65 2c 20 69 66 20 61 6e 79 2e  le name, if any.
205d0 0d 0a 20 20 23 0d 0a 20 20 74 70 75 74 73 20 24  ..  #..  tputs $
205e0 74 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70  test_channel [ap
205f0 70 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74  pendArgs "---- t
20600 65 73 74 20 66 69 6c 65 3a 20 22 20 5c 0d 0a 20  est file: " \.. 
20610 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69 6e 66       [expr {[inf
20620 6f 20 65 78 69 73 74 73 20 74 65 73 74 5f 66 69  o exists test_fi
20630 6c 65 5d 20 26 26 20 5b 73 74 72 69 6e 67 20 6c  le] && [string l
20640 65 6e 67 74 68 20 24 74 65 73 74 5f 66 69 6c 65  ength $test_file
20650 5d 20 3e 20 30 20 3f 20 5c 0d 0a 20 20 20 20 20  ] > 0 ? \..     
20660 20 24 74 65 73 74 5f 66 69 6c 65 20 3a 20 22 3c   $test_file : "<
20670 6e 6f 6e 65 3e 22 7d 5d 20 5c 6e 5d 0d 0a 0d 0a  none>"}] \n]....
20680 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53    #..  # NOTE: S
20690 68 6f 77 20 74 68 65 20 61 63 74 69 76 65 20 61  how the active a
206a0 6e 64 20 63 61 63 68 65 64 20 74 65 73 74 20 63  nd cached test c
206b0 6f 6e 73 74 72 61 69 6e 74 73 2e 0d 0a 20 20 23  onstraints...  #
206c0 0d 0a 20 20 74 70 75 74 73 20 24 74 65 73 74 5f  ..  tputs $test_
206d0 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41  channel [appendA
206e0 72 67 73 20 22 2d 2d 2d 2d 20 61 63 74 69 76 65  rgs "---- active
206f0 20 63 6f 6e 73 74 72 61 69 6e 74 73 3a 20 22 20   constraints: " 
20700 5c 0d 0a 20 20 20 20 20 20 5b 66 6f 72 6d 61 74  \..      [format
20710 4c 69 73 74 20 5b 6c 73 6f 72 74 20 5b 67 65 74  List [lsort [get
20720 43 6f 6e 73 74 72 61 69 6e 74 73 5d 5d 20 3c 6e  Constraints]] <n
20730 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20 74  one>] \n]....  t
20740 70 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e  puts $test_chann
20750 65 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22  el [appendArgs "
20760 2d 2d 2d 2d 20 63 61 63 68 65 64 20 63 6f 6e 73  ---- cached cons
20770 74 72 61 69 6e 74 73 3a 20 22 20 5c 0d 0a 20 20  traints: " \..  
20780 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 20      [formatList 
20790 5b 6c 73 6f 72 74 20 5b 67 65 74 43 61 63 68 65  [lsort [getCache
207a0 64 43 6f 6e 73 74 72 61 69 6e 74 73 5d 5d 20 3c  dConstraints]] <
207b0 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d 0a 20 20  none>] \n]....  
207c0 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 53 68 6f  #..  # NOTE: Sho
207d0 77 20 74 68 65 20 6c 69 73 74 73 20 6f 66 20 22  w the lists of "
207e0 77 65 6c 6c 20 6b 6e 6f 77 6e 22 20 6d 65 74 61  well known" meta
207f0 64 61 74 61 2e 0d 0a 20 20 23 0d 0a 20 20 74 70  data...  #..  tp
20800 75 74 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  uts $test_channe
20810 6c 20 5b 61 70 70 65 6e 64 41 72 67 73 20 22 2d  l [appendArgs "-
20820 2d 2d 2d 20 77 65 6c 6c 20 6b 6e 6f 77 6e 20 6d  --- well known m
20830 65 74 61 64 61 74 61 3a 20 22 20 5c 0d 0a 20 20  etadata: " \..  
20840 20 20 20 20 5b 66 6f 72 6d 61 74 4c 69 73 74 41      [formatListA
20850 73 44 69 63 74 20 5b 61 72 72 61 79 20 67 65 74  sDict [array get
20860 20 74 65 73 74 5f 77 65 6c 6c 5f 6b 6e 6f 77 6e   test_well_known
20870 5d 20 3c 6e 6f 6e 65 3e 5d 20 5c 6e 5d 0d 0a 0d  ] <none>] \n]...
20880 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20  .  #..  # NOTE: 
20890 53 68 6f 77 20 74 68 65 20 73 74 61 72 74 69 6e  Show the startin
208a0 67 20 63 6f 6d 6d 61 6e 64 20 63 6f 75 6e 74 20  g command count 
208b0 28 66 6f 72 20 62 6f 74 68 20 54 63 6c 20 61 6e  (for both Tcl an
208c0 64 20 45 61 67 6c 65 29 2e 0d 0a 20 20 23 0d 0a  d Eagle)...  #..
208d0 20 20 74 70 75 74 73 20 24 74 65 73 74 5f 63 68    tputs $test_ch
208e0 61 6e 6e 65 6c 20 5b 61 70 70 65 6e 64 41 72 67  annel [appendArg
208f0 73 20 22 2d 2d 2d 2d 20 73 74 61 72 74 69 6e 67  s "---- starting
20900 20 63 6f 6d 6d 61 6e 64 20 63 6f 75 6e 74 3a 20   command count: 
20910 22 20 5c 0d 0a 20 20 20 20 20 20 5b 69 6e 66 6f  " \..      [info
20920 20 63 6d 64 63 6f 75 6e 74 5d 20 5c 6e 5d 0d 0a   cmdcount] \n]..
20930 0d 0a 20 20 69 66 20 7b 5b 69 73 45 61 67 6c 65  ..  if {[isEagle
20940 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23  ]} then {..    #
20950 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 53 68  ..    # NOTE: Sh
20960 6f 77 20 74 68 65 20 73 74 61 72 74 69 6e 67 20  ow the starting 
20970 6f 70 65 72 61 74 69 6f 6e 20 63 6f 75 6e 74 20  operation count 
20980 28 66 6f 72 20 45 61 67 6c 65 20 6f 6e 6c 79 29  (for Eagle only)
20990 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 69 66  ...    #..    if
209a0 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 69 6e 66 6f   {[llength [info
209b0 20 63 6f 6d 6d 61 6e 64 73 20 6f 62 6a 65 63 74   commands object
209c0 5d 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a  ]] > 0} then {..
209d0 20 20 20 20 20 20 63 61 74 63 68 20 7b 0d 0a 20        catch {.. 
209e0 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 69 6e         object in
209f0 76 6f 6b 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e  voke -flags +Non
20a00 50 75 62 6c 69 63 20 49 6e 74 65 72 70 72 65 74  Public Interpret
20a10 65 72 2e 47 65 74 41 63 74 69 76 65 20 4f 70 65  er.GetActive Ope
20a20 72 61 74 69 6f 6e 43 6f 75 6e 74 0d 0a 20 20 20  rationCount..   
20a30 20 20 20 7d 20 6f 70 65 72 61 74 69 6f 6e 43 6f     } operationCo
20a40 75 6e 74 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20  unt..    } else 
20a50 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 6f 70 65  {..      set ope
20a60 72 61 74 69 6f 6e 43 6f 75 6e 74 20 75 6e 61 76  rationCount unav
20a70 61 69 6c 61 62 6c 65 0d 0a 20 20 20 20 7d 0d 0a  ailable..    }..
20a80 0d 0a 20 20 20 20 74 70 75 74 73 20 24 74 65 73  ..    tputs $tes
20a90 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70 65 6e  t_channel [appen
20aa0 64 41 72 67 73 20 22 2d 2d 2d 2d 20 73 74 61 72  dArgs "---- star
20ab0 74 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 20 63  ting operation c
20ac0 6f 75 6e 74 3a 20 22 20 5c 0d 0a 20 20 20 20 20  ount: " \..     
20ad0 20 20 20 24 6f 70 65 72 61 74 69 6f 6e 43 6f 75     $operationCou
20ae0 6e 74 20 5c 6e 5d 0d 0a 0d 0a 20 20 20 20 75 6e  nt \n]....    un
20af0 73 65 74 20 6f 70 65 72 61 74 69 6f 6e 43 6f 75  set operationCou
20b00 6e 74 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20  nt....    #..   
20b10 20 23 20 4e 4f 54 45 3a 20 52 65 63 6f 72 64 20   # NOTE: Record 
20b20 74 68 65 20 72 61 77 20 73 74 61 72 74 69 6e 67  the raw starting
20b30 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 63 6f 75   performance cou
20b40 6e 74 2c 20 66 6f 72 20 6c 61 74 65 72 20 75 73  nt, for later us
20b50 65 20 69 6e 0d 0a 20 20 20 20 23 20 20 20 20 20  e in..    #     
20b60 20 20 63 61 6c 63 75 6c 61 74 69 6e 67 20 74 68    calculating th
20b70 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75  e approximate nu
20b80 6d 62 65 72 20 6f 66 20 6d 69 63 72 6f 73 65 63  mber of microsec
20b90 6f 6e 64 73 20 65 6c 61 70 73 65 64 2e 0d 0a 20  onds elapsed... 
20ba0 20 20 20 23 0d 0a 20 20 20 20 63 61 74 63 68 20     #..    catch 
20bb0 7b 73 65 74 20 74 65 73 74 5f 74 69 6d 65 73 74  {set test_timest
20bc0 61 6d 70 28 73 74 61 72 74 43 6f 75 6e 74 29 20  amp(startCount) 
20bd0 5b 63 6c 6f 63 6b 20 73 74 61 72 74 5d 7d 0d 0a  [clock start]}..
20be0 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
20bf0 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 6e 20  NOTE: Show when 
20c00 74 68 65 20 74 65 73 74 73 20 61 63 74 75 61 6c  the tests actual
20c10 6c 79 20 62 65 67 61 6e 20 28 6e 6f 77 29 2e 0d  ly began (now)..
20c20 0a 20 20 23 0d 0a 20 20 74 70 75 74 73 20 24 74  .  #..  tputs $t
20c30 65 73 74 5f 63 68 61 6e 6e 65 6c 20 5b 61 70 70  est_channel [app
20c40 65 6e 64 41 72 67 73 20 22 2d 2d 2d 2d 20 74 65  endArgs "---- te
20c50 73 74 73 20 73 74 61 72 74 65 64 20 61 74 20 22  sts started at "
20c60 20 5c 0d 0a 20 20 20 20 20 20 5b 66 6f 72 6d 61   \..      [forma
20c70 74 54 69 6d 65 53 74 61 6d 70 20 5b 73 65 74 20  tTimeStamp [set 
20c80 74 65 73 74 5f 74 69 6d 65 73 74 61 6d 70 28 73  test_timestamp(s
20c90 74 61 72 74 53 65 63 6f 6e 64 73 29 20 5c 0d 0a  tartSeconds) \..
20ca0 20 20 20 20 20 20 5b 63 6c 6f 63 6b 20 73 65 63        [clock sec
20cb0 6f 6e 64 73 5d 5d 5d 20 5c 6e 5d 0d 0a 7d 0d 0a  onds]]] \n]..}..