*** tests/info.test~	Mon Apr 10 13:19:00 2000
--- tests/info.test	Fri Sep 14 14:50:11 2001
***************
*** 267,273 ****
      list [catch {info exists 1 2} msg] $msg
  } {1 {wrong # args: should be "info exists varName"}}
  
! test info-8.1 {info globals option} {
      set x 1
      set y 2
      set value 23
--- 267,305 ----
      list [catch {info exists 1 2} msg] $msg
  } {1 {wrong # args: should be "info exists varName"}}
  
! test info-8.1 {info fullargs option} {
!     proc t1 {a bbb c} {return foo}
!     info fullargs t1
! } {a bbb c}
! test info-8.2 {info fullargs option} {
!     proc t1 {{a default1} {bbb default2} {c default3} args} {return foo}
!     info f t1
! } {{a default1} {bbb default2} {c default3} args}
! test info-8.3 {info fullargs option} {
!     proc t1 "" {return foo}
!     info fullargs t1
! } {}
! test info-8.4 {info fullargs option} {
!     catch {rename t1 {}}
!     list [catch {info fullargs t1} msg] $msg
! } {1 {"t1" isn't a procedure}}
! test info-8.5 {info fullargs option} {
!     list [catch {info fullargs set} msg] $msg
! } {1 {"set" isn't a procedure}}
! test info-8.6 {info fullargs option} {
!     proc t1 {a b} {set c 123; set d $c}
!     t1 1 2
!     info fullargs t1
! } {a b}
! test info-8.7 {info fullargs option} {
!     catch {namespace delete test_ns_info2}
!     namespace eval test_ns_info2 {
!         namespace import ::test_ns_info1::*
!         list [info fullargs p] [info fullargs q]
!     }
! } {x {{y 27} {z {}}}}
! 
! test info-9.1 {info globals option} {
      set x 1
      set y 2
      set value 23
***************
*** 275,293 ****
      list [string match {* x *} $a] [string match {* y *} $a] \
              [string match {* value *} $a] [string match {* _foobar_ *} $a]
  } {1 1 1 0}
! test info-8.2 {info globals option} {
      set _xxx1 1
      set _xxx2 2
      lsort [info g _xxx*]
  } {_xxx1 _xxx2}
! test info-8.3 {info globals option} {
      list [catch {info globals 1 2} msg] $msg
  } {1 {wrong # args: should be "info globals ?pattern?"}}
  
! test info-9.1 {info level option} {
      info level
  } 0
! test info-9.2 {info level option} {
      proc t1 {a b} {
          set x [info le]
          set y [info level 1]
--- 307,325 ----
      list [string match {* x *} $a] [string match {* y *} $a] \
              [string match {* value *} $a] [string match {* _foobar_ *} $a]
  } {1 1 1 0}
! test info-9.2 {info globals option} {
      set _xxx1 1
      set _xxx2 2
      lsort [info g _xxx*]
  } {_xxx1 _xxx2}
! test info-9.3 {info globals option} {
      list [catch {info globals 1 2} msg] $msg
  } {1 {wrong # args: should be "info globals ?pattern?"}}
  
! test info-10.1 {info level option} {
      info level
  } 0
! test info-10.2 {info level option} {
      proc t1 {a b} {
          set x [info le]
          set y [info level 1]
***************
*** 295,301 ****
      }
      t1 146 testString
  } {1 {t1 146 testString}}
! test info-9.3 {info level option} {
      proc t1 {a b} {
          t2 [expr $a*2] $b
      }
--- 327,333 ----
      }
      t1 146 testString
  } {1 {t1 146 testString}}
! test info-10.3 {info level option} {
      proc t1 {a b} {
          t2 [expr $a*2] $b
      }
***************
*** 305,311 ****
      }
      t1 146 {a {b c} {{{c}}}}
  } {2 {t1 146 {a {b c} {{{c}}}}} {t2 292 {a {b c} {{{c}}}}} {t1 146 {a {b c} {{{c}}}}} {t2 292 {a {b c} {{{c}}}}}}
! test info-9.4 {info level option} {
      proc t1 {} {
          set x [info level]
          set y [info level 1]
--- 337,343 ----
      }
      t1 146 {a {b c} {{{c}}}}
  } {2 {t1 146 {a {b c} {{{c}}}}} {t2 292 {a {b c} {{{c}}}}} {t1 146 {a {b c} {{{c}}}}} {t2 292 {a {b c} {{{c}}}}}}
! test info-10.4 {info level option} {
      proc t1 {} {
          set x [info level]
          set y [info level 1]
***************
*** 313,358 ****
      }
      t1
  } {1 t1}
! test info-9.5 {info level option} {
      list [catch {info level 1 2} msg] $msg
  } {1 {wrong # args: should be "info level ?number?"}}
! test info-9.6 {info level option} {
      list [catch {info level 123a} msg] $msg
  } {1 {expected integer but got "123a"}}
! test info-9.7 {info level option} {
      list [catch {info level 0} msg] $msg
  } {1 {bad level "0"}}
! test info-9.8 {info level option} {
      proc t1 {} {info level -1}
      list [catch {t1} msg] $msg
  } {1 {bad level "-1"}}
! test info-9.9 {info level option} {
      proc t1 {x} {info level $x}
      list [catch {t1 -3} msg] $msg
  } {1 {bad level "-3"}}
  
  set savedLibrary $tcl_library
! test info-10.1 {info library option} {
      list [catch {info library x} msg] $msg
  } {1 {wrong # args: should be "info library"}}
! test info-10.2 {info library option} {
      set tcl_library 12345
      info library
  } {12345}
! test info-10.3 {info library option} {
      unset tcl_library
      list [catch {info library} msg] $msg
  } {1 {no library has been specified for Tcl}}
  set tcl_library $savedLibrary
  
! test info-11.1 {info loaded option} {
      list [catch {info loaded a b} msg] $msg
  } {1 {wrong # args: should be "info loaded ?interp?"}}
! test info-11.2 {info loaded option} {
      list [catch {info loaded {}}] [catch {info loaded gorp} msg] $msg
  } {0 1 {could not find interpreter "gorp"}}
  
! test info-12.1 {info locals option} {
      set a 22
      proc t1 {x y} {
          set b 13
--- 345,390 ----
      }
      t1
  } {1 t1}
! test info-10.5 {info level option} {
      list [catch {info level 1 2} msg] $msg
  } {1 {wrong # args: should be "info level ?number?"}}
! test info-10.6 {info level option} {
      list [catch {info level 123a} msg] $msg
  } {1 {expected integer but got "123a"}}
! test info-10.7 {info level option} {
      list [catch {info level 0} msg] $msg
  } {1 {bad level "0"}}
! test info-10.8 {info level option} {
      proc t1 {} {info level -1}
      list [catch {t1} msg] $msg
  } {1 {bad level "-1"}}
! test info-10.9 {info level option} {
      proc t1 {x} {info level $x}
      list [catch {t1 -3} msg] $msg
  } {1 {bad level "-3"}}
  
  set savedLibrary $tcl_library
! test info-11.1 {info library option} {
      list [catch {info library x} msg] $msg
  } {1 {wrong # args: should be "info library"}}
! test info-11.2 {info library option} {
      set tcl_library 12345
      info library
  } {12345}
! test info-11.3 {info library option} {
      unset tcl_library
      list [catch {info library} msg] $msg
  } {1 {no library has been specified for Tcl}}
  set tcl_library $savedLibrary
  
! test info-12.1 {info loaded option} {
      list [catch {info loaded a b} msg] $msg
  } {1 {wrong # args: should be "info loaded ?interp?"}}
! test info-12.2 {info loaded option} {
      list [catch {info loaded {}}] [catch {info loaded gorp} msg] $msg
  } {0 1 {could not find interpreter "gorp"}}
  
! test info-13.1 {info locals option} {
      set a 22
      proc t1 {x y} {
          set b 13
***************
*** 362,368 ****
      }
      lsort [t1 23 24]
  } {b c x y}
! test info-12.2 {info locals option} {
      proc t1 {x y} {
          set xx1 2
          set xx2 3
--- 394,400 ----
      }
      lsort [t1 23 24]
  } {b c x y}
! test info-13.2 {info locals option} {
      proc t1 {x y} {
          set xx1 2
          set xx2 3
***************
*** 371,387 ****
      }
      lsort [t1 2 3]
  } {x xx1 xx2}
! test info-12.3 {info locals option} {
      list [catch {info locals 1 2} msg] $msg
  } {1 {wrong # args: should be "info locals ?pattern?"}}
! test info-12.4 {info locals option} {
      info locals
  } {}
! test info-12.5 {info locals option} {
      proc t1 {} {return [info locals]}
      t1
  } {}
! test info-12.6 {info locals vs unset compiled locals} {
      proc t1 {lst} {
          foreach $lst $lst {}
          unset lst
--- 403,419 ----
      }
      lsort [t1 2 3]
  } {x xx1 xx2}
! test info-13.3 {info locals option} {
      list [catch {info locals 1 2} msg] $msg
  } {1 {wrong # args: should be "info locals ?pattern?"}}
! test info-13.4 {info locals option} {
      info locals
  } {}
! test info-13.5 {info locals option} {
      proc t1 {} {return [info locals]}
      t1
  } {}
! test info-13.6 {info locals vs unset compiled locals} {
      proc t1 {lst} {
          foreach $lst $lst {}
          unset lst
***************
*** 389,395 ****
      }
      lsort [t1 {a b c c d e f}]
  } {a b c d e f}
! test info-12.7 {info locals with temporary variables} {
      proc t1 {} {
          foreach a {b c} {}
          info locals
--- 421,427 ----
      }
      lsort [t1 {a b c c d e f}]
  } {a b c d e f}
! test info-13.7 {info locals with temporary variables} {
      proc t1 {} {
          foreach a {b c} {}
          info locals
***************
*** 397,414 ****
      t1
  } {a}
  
! test info-13.1 {info nameofexecutable option} {
      list [catch {info nameofexecutable foo} msg] $msg
  } {1 {wrong # args: should be "info nameofexecutable"}}
  
! test info-14.1 {info patchlevel option} {
      set a [info patchlevel]
      regexp {[0-9]+\.[0-9]+([p[0-9]+)?} $a
  } 1
! test info-14.2 {info patchlevel option} {
      list [catch {info patchlevel a} msg] $msg
  } {1 {wrong # args: should be "info patchlevel"}}
! test info-14.3 {info patchlevel option} {
      set t $tcl_patchLevel
      unset tcl_patchLevel
      set result [list [catch {info patchlevel} msg] $msg]
--- 429,446 ----
      t1
  } {a}
  
! test info-14.1 {info nameofexecutable option} {
      list [catch {info nameofexecutable foo} msg] $msg
  } {1 {wrong # args: should be "info nameofexecutable"}}
  
! test info-15.1 {info patchlevel option} {
      set a [info patchlevel]
      regexp {[0-9]+\.[0-9]+([p[0-9]+)?} $a
  } 1
! test info-15.2 {info patchlevel option} {
      list [catch {info patchlevel a} msg] $msg
  } {1 {wrong # args: should be "info patchlevel"}}
! test info-15.3 {info patchlevel option} {
      set t $tcl_patchLevel
      unset tcl_patchLevel
      set result [list [catch {info patchlevel} msg] $msg]
***************
*** 416,439 ****
      set result
  } {1 {can't read "tcl_patchLevel": no such variable}}
  
! test info-15.1 {info procs option} {
      proc t1 {} {}
      proc t2 {} {}
      set x " [info procs] "
      list [string match {* t1 *} $x] [string match {* t2 *} $x] \
              [string match {* _undefined_ *} $x]
  } {1 1 0}
! test info-15.2 {info procs option} {
      proc _tt1 {} {}
      proc _tt2 {} {}
      lsort [info pr _tt*]
  } {_tt1 _tt2}
  catch {rename _tt1 {}}
  catch {rename _tt2 {}}
! test info-15.3 {info procs option} {
      list [catch {info procs 2 3} msg] $msg
  } {1 {wrong # args: should be "info procs ?pattern?"}}
! test info-15.4 {info procs option} {
      catch {namespace delete test_ns_info2}
      namespace eval test_ns_info2 {
          namespace import ::test_ns_info1::*
--- 448,471 ----
      set result
  } {1 {can't read "tcl_patchLevel": no such variable}}
  
! test info-16.1 {info procs option} {
      proc t1 {} {}
      proc t2 {} {}
      set x " [info procs] "
      list [string match {* t1 *} $x] [string match {* t2 *} $x] \
              [string match {* _undefined_ *} $x]
  } {1 1 0}
! test info-16.2 {info procs option} {
      proc _tt1 {} {}
      proc _tt2 {} {}
      lsort [info pr _tt*]
  } {_tt1 _tt2}
  catch {rename _tt1 {}}
  catch {rename _tt2 {}}
! test info-16.3 {info procs option} {
      list [catch {info procs 2 3} msg] $msg
  } {1 {wrong # args: should be "info procs ?pattern?"}}
! test info-16.4 {info procs option} {
      catch {namespace delete test_ns_info2}
      namespace eval test_ns_info2 {
          namespace import ::test_ns_info1::*
***************
*** 441,447 ****
          list [info procs] [info procs p*]
      }
  } {{p q r} p}
! test info-15.5 {info procs option with a proc in a namespace} {
      catch {namespace delete test_ns_info2}
      namespace eval test_ns_info2 {
  	proc p1 { arg } {
--- 473,479 ----
          list [info procs] [info procs p*]
      }
  } {{p q r} p}
! test info-16.5 {info procs option with a proc in a namespace} {
      catch {namespace delete test_ns_info2}
      namespace eval test_ns_info2 {
  	proc p1 { arg } {
***************
*** 453,459 ****
      }
      info procs ::test_ns_info2::p1
  } {::test_ns_info2::p1}
! test info-15.6 {info procs option with a pattern in a namespace} {
      catch {namespace delete test_ns_info2}
      namespace eval test_ns_info2 {
  	proc p1 { arg } {
--- 485,491 ----
      }
      info procs ::test_ns_info2::p1
  } {::test_ns_info2::p1}
! test info-16.6 {info procs option with a pattern in a namespace} {
      catch {namespace delete test_ns_info2}
      namespace eval test_ns_info2 {
  	proc p1 { arg } {
***************
*** 465,471 ****
      }
      lsort [info procs ::test_ns_info2::p*]
  } [lsort [list ::test_ns_info2::p1 ::test_ns_info2::p2]]
! test info-15.7 {info procs option with a global shadowing proc} {
      catch {namespace delete test_ns_info2}
      proc string_cmd { arg } {
          puts cmd
--- 497,503 ----
      }
      lsort [info procs ::test_ns_info2::p*]
  } [lsort [list ::test_ns_info2::p1 ::test_ns_info2::p2]]
! test info-16.7 {info procs option with a global shadowing proc} {
      catch {namespace delete test_ns_info2}
      proc string_cmd { arg } {
          puts cmd
***************
*** 481,487 ****
  # that the implementation of "info procs" looks into the global namespace,
  # which it does not (in contrast to "info commands")
  if {0} {
! test info-15.8 {info procs option with a global shadowing proc} {
      catch {namespace delete test_ns_info2}
      proc string_cmd { arg } {
          puts cmd
--- 513,519 ----
  # that the implementation of "info procs" looks into the global namespace,
  # which it does not (in contrast to "info commands")
  if {0} {
! test info-16.8 {info procs option with a global shadowing proc} {
      catch {namespace delete test_ns_info2}
      proc string_cmd { arg } {
          puts cmd
***************
*** 500,538 ****
  } [lsort [list string_cmd string_cmd2]]
  }
  
! test info-16.1 {info script option} {
      list [catch {info script x} msg] $msg
  } {1 {wrong # args: should be "info script"}}
! test info-16.2 {info script option} {
      file tail [info sc]
  } "info.test"
  removeFile gorp.info
  makeFile "info script\n" gorp.info
! test info-16.3 {info script option} {
      list [source gorp.info] [file tail [info script]]
  } [list gorp.info info.test]
! test info-16.4 {resetting "info script" after errors} {
      catch {source ~_nobody_/foo}
      file tail [info script]
  } "info.test"
! test info-16.5 {resetting "info script" after errors} {
      catch {source _nonexistent_}
      file tail [info script]
  } "info.test"
  removeFile gorp.info
  
! test info-17.1 {info sharedlibextension option} {
      list [catch {info sharedlibextension foo} msg] $msg
  } {1 {wrong # args: should be "info sharedlibextension"}}
  
! test info-18.1 {info tclversion option} {
      set x [info tclversion]
      scan $x "%d.%d%c" a b c
  } 2
! test info-18.2 {info tclversion option} {
      list [catch {info t 2} msg] $msg
  } {1 {wrong # args: should be "info tclversion"}}
! test info-18.3 {info tclversion option} {
      set t $tcl_version
      unset tcl_version
      set result [list [catch {info tclversion} msg] $msg]
--- 532,570 ----
  } [lsort [list string_cmd string_cmd2]]
  }
  
! test info-17.1 {info script option} {
      list [catch {info script x} msg] $msg
  } {1 {wrong # args: should be "info script"}}
! test info-17.2 {info script option} {
      file tail [info sc]
  } "info.test"
  removeFile gorp.info
  makeFile "info script\n" gorp.info
! test info-17.3 {info script option} {
      list [source gorp.info] [file tail [info script]]
  } [list gorp.info info.test]
! test info-17.4 {resetting "info script" after errors} {
      catch {source ~_nobody_/foo}
      file tail [info script]
  } "info.test"
! test info-17.5 {resetting "info script" after errors} {
      catch {source _nonexistent_}
      file tail [info script]
  } "info.test"
  removeFile gorp.info
  
! test info-18.1 {info sharedlibextension option} {
      list [catch {info sharedlibextension foo} msg] $msg
  } {1 {wrong # args: should be "info sharedlibextension"}}
  
! test info-19.1 {info tclversion option} {
      set x [info tclversion]
      scan $x "%d.%d%c" a b c
  } 2
! test info-19.2 {info tclversion option} {
      list [catch {info t 2} msg] $msg
  } {1 {wrong # args: should be "info tclversion"}}
! test info-19.3 {info tclversion option} {
      set t $tcl_version
      unset tcl_version
      set result [list [catch {info tclversion} msg] $msg]
***************
*** 540,546 ****
      set result
  } {1 {can't read "tcl_version": no such variable}}
  
! test info-19.1 {info vars option} {
      set a 1
      set b 2
      proc t1 {x y} {
--- 572,578 ----
      set result
  } {1 {can't read "tcl_version": no such variable}}
  
! test info-20.1 {info vars option} {
      set a 1
      set b 2
      proc t1 {x y} {
***************
*** 550,556 ****
      }
      lsort [t1 18 19]
  } {a b c x y}
! test info-19.2 {info vars option} {
      set xxx1 1
      set xxx2 2
      proc t1 {xxa y} {
--- 582,588 ----
      }
      lsort [t1 18 19]
  } {a b c x y}
! test info-20.2 {info vars option} {
      set xxx1 1
      set xxx2 2
      proc t1 {xxa y} {
***************
*** 560,572 ****
      }
      lsort [t1 18 19]
  } {xxa xxx1 xxx2}
! test info-19.3 {info vars option} {
      lsort [info vars]
  } [lsort [info globals]]
! test info-19.4 {info vars option} {
      list [catch {info vars a b} msg] $msg
  } {1 {wrong # args: should be "info vars ?pattern?"}}
! test info-19.5 {info vars with temporary variables} {
      proc t1 {} {
          foreach a {b c} {}
          info vars
--- 592,604 ----
      }
      lsort [t1 18 19]
  } {xxa xxx1 xxx2}
! test info-20.3 {info vars option} {
      lsort [info vars]
  } [lsort [info globals]]
! test info-20.4 {info vars option} {
      list [catch {info vars a b} msg] $msg
  } {1 {wrong # args: should be "info vars ?pattern?"}}
! test info-20.5 {info vars with temporary variables} {
      proc t1 {} {
          foreach a {b c} {}
          info vars
***************
*** 574,594 ****
      t1
  } {a}
  
! test info-20.1 {miscellaneous error conditions} {
      list [catch {info} msg] $msg
  } {1 {wrong # args: should be "info option ?arg arg ...?"}}
! test info-20.2 {miscellaneous error conditions} {
      list [catch {info gorp} msg] $msg
! } {1 {bad option "gorp": must be args, body, cmdcount, commands, complete, default, exists, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
! test info-20.3 {miscellaneous error conditions} {
      list [catch {info c} msg] $msg
! } {1 {ambiguous option "c": must be args, body, cmdcount, commands, complete, default, exists, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
! test info-20.4 {miscellaneous error conditions} {
      list [catch {info l} msg] $msg
! } {1 {ambiguous option "l": must be args, body, cmdcount, commands, complete, default, exists, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
! test info-20.5 {miscellaneous error conditions} {
      list [catch {info s} msg] $msg
! } {1 {ambiguous option "s": must be args, body, cmdcount, commands, complete, default, exists, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
  
  # cleanup
  catch {namespace delete test_ns_info1 test_ns_info2}
--- 606,626 ----
      t1
  } {a}
  
! test info-21.0 {miscellaneous error conditions} {
      list [catch {info} msg] $msg
  } {1 {wrong # args: should be "info option ?arg arg ...?"}}
! test info-21.2 {miscellaneous error conditions} {
      list [catch {info gorp} msg] $msg
! } {1 {bad option "gorp": must be args, body, cmdcount, commands, complete, default, exists, fullargs, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
! test info-21.3 {miscellaneous error conditions} {
      list [catch {info c} msg] $msg
! } {1 {ambiguous option "c": must be args, body, cmdcount, commands, complete, default, exists, fullargs, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
! test info-21.4 {miscellaneous error conditions} {
      list [catch {info l} msg] $msg
! } {1 {ambiguous option "l": must be args, body, cmdcount, commands, complete, default, exists, fullargs, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
! test info-21.5 {miscellaneous error conditions} {
      list [catch {info s} msg] $msg
! } {1 {ambiguous option "s": must be args, body, cmdcount, commands, complete, default, exists, fullargs, globals, hostname, level, library, loaded, locals, nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, or vars}}
  
  # cleanup
  catch {namespace delete test_ns_info1 test_ns_info2}
