Lines Matching refs:namespace

4 # namespaces. Other namespace-related tests appear in namespace.test
17 if {[lsearch [namespace children] ::tcltest] == -1} {
19 namespace import -force ::tcltest::*
23 catch {namespace delete {*}[namespace children :: test_ns_*]}
25 test namespace-old-1.1 {usage for "namespace" command} {
26 list [catch {namespace} msg] $msg
27 } {1 {wrong # args: should be "namespace subcommand ?arg ...?"}}
29 test namespace-old-1.2 {global namespace's name is "::" or {}} {
30 list [namespace current] [namespace eval {} {namespace current}]
33 test namespace-old-1.3 {usage for "namespace eval"} {
34 list [catch {namespace eval} msg] $msg
35 } {1 {wrong # args: should be "namespace eval name arg ?arg...?"}}
37 test namespace-old-1.4 {create new namespaces} {
38 list [lsort [namespace children :: test_ns_simple*]] \
39 [namespace eval test_ns_simple {}] \
40 [namespace eval test_ns_simple2 {}] \
41 [lsort [namespace children :: test_ns_simple*]]
44 test namespace-old-1.5 {access a new namespace} {
45 namespace eval test_ns_simple { namespace current }
48 test namespace-old-1.6 {usage for "namespace eval"} {
49 list [catch {namespace eval} msg] $msg
50 } {1 {wrong # args: should be "namespace eval name arg ?arg...?"}}
52 test namespace-old-1.7 {usage for "namespace eval"} {
53 list [catch {namespace eval test_ns_xyzzy} msg] $msg
54 } {1 {wrong # args: should be "namespace eval name arg ?arg...?"}}
56 test namespace-old-1.8 {command "namespace eval" concatenates args} {
57 namespace eval test_ns_simple namespace current
60 test namespace-old-1.9 {add elements to a namespace} {
61 namespace eval test_ns_simple {
69 test namespace-old-1.10 {commands in a namespace} {
70 namespace eval test_ns_simple { info commands [namespace current]::*}
73 test namespace-old-1.11 {variables in a namespace} {
74 namespace eval test_ns_simple { info vars [namespace current]::* }
77 test namespace-old-1.12 {global vars are separate from locals vars} {
81 test namespace-old-1.13 {add to an existing namespace} {
82 namespace eval test_ns_simple {
90 test namespace-old-1.14 {commands in a namespace} {
91 lsort [namespace eval test_ns_simple {info commands [namespace current]::*}]
94 test namespace-old-1.15 {variables in a namespace} {
95 lsort [namespace eval test_ns_simple {info vars [namespace current]::*}]
97 test namespace-old-1.16 {variables in a namespace} {
101 test namespace-old-1.17 {commands in a namespace are hidden} {
104 test namespace-old-1.18 {using namespace qualifiers} {
107 test namespace-old-1.19 {using absolute namespace qualifiers} {
111 test namespace-old-1.20 {variables in a namespace are hidden} {
114 test namespace-old-1.21 {using namespace qualifiers} {
118 test namespace-old-1.22 {using absolute namespace qualifiers} {
122 test namespace-old-1.23 {variables can be accessed within a namespace} {
130 test namespace-old-1.24 {setting global variables} {
132 namespace eval test_ns_simple {set test_ns_x}
135 test namespace-old-1.25 {qualified variables don't need a global declaration} {
136 namespace eval test_ns_another { variable test_ns_x 456 }
142 test namespace-old-1.26 {namespace qualifiers are okay after $'s} {
143 namespace eval test_ns_simple { set test_ns_x 12; set test_ns_y 34 }
148 test namespace-old-1.27 {can create commands with null names} {
153 # TEST: using "info" in namespace contexts
155 test namespace-old-2.1 {querying: info commands} {
156 lsort [test_ns_simple::_backdoor {info commands [namespace current]::*}]
159 test namespace-old-2.2 {querying: info procs} {
163 test namespace-old-2.3 {querying: info vars} {
167 test namespace-old-2.4 {querying: info vars} {
168 lsort [test_ns_simple::_backdoor {info vars [namespace current]::*}]
171 test namespace-old-2.5 {querying: info locals} {
175 test namespace-old-2.6 {querying: info exists} {
179 test namespace-old-2.7 {querying: info exists} {
183 test namespace-old-2.8 {querying: info args} {
187 test namespace-old-2.9 {querying: info body} {
192 # TEST: namespace qualifiers, namespace tail
194 test namespace-old-3.1 {usage for "namespace qualifiers"} {
195 list [catch "namespace qualifiers" msg] $msg
196 } {1 {wrong # args: should be "namespace qualifiers string"}}
198 test namespace-old-3.2 {querying: namespace qualifiers} {
199 list [namespace qualifiers ""] \
200 [namespace qualifiers ::] \
201 [namespace qualifiers x] \
202 [namespace qualifiers ::x] \
203 [namespace qualifiers foo::x] \
204 [namespace qualifiers ::foo::bar::xyz]
207 test namespace-old-3.3 {usage for "namespace tail"} {
208 list [catch "namespace tail" msg] $msg
209 } {1 {wrong # args: should be "namespace tail string"}}
211 test namespace-old-3.4 {querying: namespace tail} {
212 list [namespace tail ""] \
213 [namespace tail ::] \
214 [namespace tail x] \
215 [namespace tail ::x] \
216 [namespace tail foo::x] \
217 [namespace tail ::foo::bar::xyz]
223 test namespace-old-4.1 {define test namespaces} {
224 namespace eval test_ns_delete {
225 namespace eval ns1 {
229 namespace eval ns2 {
233 namespace eval another {}
234 lsort [namespace children]
238 test namespace-old-4.2 {it's okay to invoke "namespace delete" with no args} {
239 list [catch {namespace delete} msg] $msg
242 test namespace-old-4.3 {command "namespace delete" doesn't support patterns} {
244 namespace eval test_ns_delete {namespace delete ns*}
247 } {1 {unknown namespace "ns*" in namespace delete command}}
249 test namespace-old-4.4 {command "namespace delete" handles multiple args} {
251 namespace eval test_ns_delete {
252 namespace delete \
253 {*}[namespace children [namespace current] ns?]
256 list [catch $cmd msg] $msg [namespace children test_ns_delete]
260 # TEST: namespace hierarchy
262 test namespace-old-5.1 {define nested namespaces} {
266 namespace eval test_ns_hier1 {
271 proc test_ns_show {} {return "[namespace current]: 1"}
273 namespace eval test_ns_hier2 {
278 proc test_ns_show {} {return "[namespace current]: 2"}
280 namespace eval test_ns_hier3a {}
281 namespace eval test_ns_hier3b {}
284 namespace eval test_ns_hier2a {}
285 namespace eval test_ns_hier2b {}
289 test namespace-old-5.2 {namespaces can be nested} {
290 list [namespace eval test_ns_hier1 {namespace current}] \
291 [namespace eval test_ns_hier1 {
292 namespace eval test_ns_hier2 {namespace current}
296 test namespace-old-5.3 {namespace qualifiers work in namespace command} {
297 list [namespace eval ::test_ns_hier1 {namespace current}] \
298 [namespace eval test_ns_hier1::test_ns_hier2 {namespace current}] \
299 [namespace eval ::test_ns_hier1::test_ns_hier2 {namespace current}]
302 test namespace-old-5.4 {nested namespaces can access global namespace} {
303 list [namespace eval test_ns_hier1 {set test_ns_var_global}] \
304 [namespace eval test_ns_hier1 {test_ns_cmd_global}] \
305 [namespace eval test_ns_hier1::test_ns_hier2 {set test_ns_var_global}] \
306 [namespace eval test_ns_hier1::test_ns_hier2 {test_ns_cmd_global}]
309 test namespace-old-5.5 {variables in different namespaces don't conflict} {
314 test namespace-old-5.6 {commands in different namespaces don't conflict} {
319 test namespace-old-5.7 {nested namespaces don't see variables in parent} {
321 namespace eval test_ns_hier1::test_ns_hier2 {set test_ns_var_hier1}
326 test namespace-old-5.8 {nested namespaces don't see commands in parent} {
328 namespace eval test_ns_hier1::test_ns_hier2 {test_ns_cmd_hier1}
333 test namespace-old-5.9 {usage for "namespace children"} {
334 list [catch {namespace children test_ns_hier1 y z} msg] $msg
335 } {1 {wrong # args: should be "namespace children ?name? ?pattern?"}}
337 test namespace-old-5.10 {command "namespace children" must get valid namespace} -body {
338 namespace children xyzzy
339 } -returnCodes error -result {namespace "xyzzy" not found in "::"}
341 test namespace-old-5.11 {querying namespace children} {
342 lsort [namespace children :: test_ns_hier*]
345 test namespace-old-5.12 {querying namespace children} {
346 lsort [namespace children test_ns_hier1]
349 test namespace-old-5.13 {querying namespace children} {
350 lsort [namespace eval test_ns_hier1 {namespace children}]
353 test namespace-old-5.14 {querying namespace children} {
354 lsort [namespace children test_ns_hier1::test_ns_hier2]
357 test namespace-old-5.15 {querying namespace children} {
358 lsort [namespace eval test_ns_hier1::test_ns_hier2 {namespace children}]
361 test namespace-old-5.16 {querying namespace children with patterns} {
362 lsort [namespace children test_ns_hier1::test_ns_hier2 test_ns_*]
365 test namespace-old-5.17 {querying namespace children with patterns} {
366 lsort [namespace children test_ns_hier1::test_ns_hier2 *b]
369 test namespace-old-5.18 {usage for "namespace parent"} {
370 list [catch {namespace parent x y} msg] $msg
371 } {1 {wrong # args: should be "namespace parent ?name?"}}
373 test namespace-old-5.19 {command "namespace parent" must get valid namespace} -body {
374 namespace parent xyzzy
375 } -returnCodes error -result {namespace "xyzzy" not found in "::"}
377 test namespace-old-5.20 {querying namespace parent} {
378 list [namespace eval :: {namespace parent}] \
379 [namespace eval test_ns_hier1 {namespace parent}] \
380 [namespace eval test_ns_hier1::test_ns_hier2 {namespace parent}] \
381 [namespace eval test_ns_hier1::test_ns_hier2::test_ns_hier3a {namespace parent}] \
384 test namespace-old-5.21 {querying namespace parent for explicit namespace} {
385 list [namespace parent ::] \
386 [namespace parent test_ns_hier1] \
387 [namespace parent test_ns_hier1::test_ns_hier2] \
388 [namespace parent test_ns_hier1::test_ns_hier2::test_ns_hier3a]
394 test namespace-old-6.1 {relative ns names only looked up in current ns} {
395 namespace eval test_ns_cache1 {}
396 namespace eval test_ns_cache2 {}
397 namespace eval test_ns_cache2::test_ns_cache3 {}
399 namespace eval test_ns_cache2 {namespace current}
402 namespace eval test_ns_cache2::test_ns_cache3 {namespace current}
404 list [namespace eval test_ns_cache1 $trigger] \
405 [namespace eval test_ns_cache1 $trigger2]
408 test namespace-old-6.2 {relative ns names only looked up in current ns} {
409 namespace eval test_ns_cache1::test_ns_cache2 {}
410 list [namespace eval test_ns_cache1 $trigger] \
411 [namespace eval test_ns_cache1 $trigger2]
414 test namespace-old-6.3 {relative ns names only looked up in current ns} {
415 namespace eval test_ns_cache1::test_ns_cache2::test_ns_cache3 {}
416 list [namespace eval test_ns_cache1 $trigger] \
417 [namespace eval test_ns_cache1 $trigger2]
420 test namespace-old-6.4 {relative ns names only looked up in current ns} {
421 namespace delete test_ns_cache1::test_ns_cache2
422 list [namespace eval test_ns_cache1 $trigger] \
423 [namespace eval test_ns_cache1 $trigger2]
426 test namespace-old-6.5 {define test commands} {
430 namespace eval test_ns_cache1 {
438 test namespace-old-6.6 {one-level check for command shadowing} {
445 test namespace-old-6.7 {renaming commands changes command epoch} {
446 namespace eval test_ns_cache1 {
452 test namespace-old-6.8 {renaming back handles shadowing} {
453 namespace eval test_ns_cache1 {
459 test namespace-old-6.9 {deleting commands changes command epoch} {
460 namespace eval test_ns_cache1 {
466 test namespace-old-6.10 {define test namespaces} {
467 namespace eval test_ns_cache2 {
472 namespace eval test_ns_cache1 {
477 namespace eval test_ns_cache1::test_ns_cache2 {
485 test namespace-old-6.11 {commands affect all parent namespaces} {
492 test namespace-old-6.12 {define test variables} {
495 namespace eval test_ns_cache1 $trigger
498 test namespace-old-6.13 {one-level check for variable shadowing} {
499 namespace eval test_ns_cache1 {
502 namespace eval test_ns_cache1 $trigger
505 test namespace-old-6.14 {deleting variables changes variable epoch} {
506 namespace eval test_ns_cache1 {
509 namespace eval test_ns_cache1 $trigger
512 test namespace-old-6.15 {define test namespaces} {
513 namespace eval test_ns_cache2 {
517 list [namespace eval test_ns_cache1 $trigger2] \
518 [namespace eval test_ns_cache1::test_ns_cache2 $trigger]
521 test namespace-old-6.16 {public variables affect all parent namespaces} {
523 list [namespace eval test_ns_cache1 $trigger2] \
524 [namespace eval test_ns_cache1::test_ns_cache2 $trigger]
527 test namespace-old-6.17 {usage for "namespace which"} {
528 list [catch "namespace which -baz x" msg] $msg
529 } {1 {wrong # args: should be "namespace which ?-command? ?-variable? name"}}
530 test namespace-old-6.18 {usage for "namespace which"} {
532 namespace which -command
535 test namespace-old-6.19 {querying: namespace which -command} {
539 list [namespace eval :: {namespace which test_ns_cache_cmd}] \
540 [namespace eval test_ns_cache1 {namespace which test_ns_cache_cmd}] \
541 [namespace eval :: {namespace which -command test_ns_cache_cmd}] \
542 [namespace eval test_ns_cache1 {namespace which -command test_ns_cache_cmd}]
545 test namespace-old-6.20 {command "namespace which" may not find commands} {
546 namespace eval test_ns_cache1 {namespace which -command xyzzy}
549 test namespace-old-6.21 {querying: namespace which -variable} {
550 namespace eval test_ns_cache1::test_ns_cache2 {
551 namespace which -variable test_ns_cache_var
555 test namespace-old-6.22 {command "namespace which" may not find variables} {
556 namespace eval test_ns_cache1 {namespace which -variable xyzzy}
560 # TEST: uplevel/upvar across namespace boundaries
562 test namespace-old-7.1 {define test namespace} {
563 namespace eval test_ns_uplevel {
573 namespace eval ::test_ns_uplevel " return \[show_vars $num\] "
577 test namespace-old-7.2 {uplevel can access namespace call frame} {
581 test namespace-old-7.3 {uplevel can go beyond namespace call frame} {
584 test namespace-old-7.4 {uplevel can go up to global context} {
588 test namespace-old-7.5 {absolute call frame references work too} {
592 test namespace-old-7.6 {absolute call frame references work too} {
595 test namespace-old-7.7 {absolute call frame references work too} {
599 test namespace-old-7.8 {namespaces are included in the call stack} {
600 namespace eval test_ns_upvar {
609 namespace eval ::test_ns_upvar " return \[show_val scope $num\] "
613 test namespace-old-7.9 {upvar can access namespace call frame} {
616 test namespace-old-7.10 {upvar can go beyond namespace call frame} {
619 test namespace-old-7.11 {absolute call frame references work too} {
622 test namespace-old-7.12 {absolute call frame references work too} {
627 # TEST: variable traces across namespace boundaries
629 test namespace-old-8.1 {traces work across namespace boundaries} {
630 namespace eval test_ns_trace {
631 namespace eval foo {
640 trace variable foo::x rwu [namespace code monitor]
646 namespace eval test_ns_trace { set status }
652 test namespace-old-9.1 {empty "namespace export" list} {
653 list [catch "namespace export" msg] $msg
655 test namespace-old-9.2 {usage for "namespace export" command} {
656 list [catch "namespace export test_ns_trace::zzz" msg] $msg
657 } {1 {invalid export pattern "test_ns_trace::zzz": pattern can't specify a namespace}}
659 test namespace-old-9.3 {define test namespaces for import} {
660 namespace eval test_ns_export {
661 namespace export cmd1 cmd2 cmd3
672 test namespace-old-9.4 {check export status} {
674 namespace eval test_ns_import {
675 namespace export cmd1 cmd2
676 namespace import ::test_ns_export::*
684 test namespace-old-9.5 {empty import list in "namespace import" command} {
685 lsort [namespace import]
688 test namespace-old-9.7 {empty forget list for "namespace forget" command} {
689 namespace forget
697 test namespace-old-9.8 {only exported commands are imported} {
698 namespace import test_ns_import::cmd*
702 test namespace-old-9.9 {imported commands work just the same as original} {
706 test namespace-old-9.10 {commands can be imported from many namespaces} {
707 namespace eval test_ns_import2 {
708 namespace export ncmd ncmd1 ncmd2
714 namespace import test_ns_import2::*
718 test namespace-old-9.11 {imported commands can be removed by deleting them} {
723 test namespace-old-9.12 {command "namespace forget" checks for valid namespaces} {
724 list [catch {namespace forget xyzzy::*} msg] $msg
725 } {1 {unknown namespace in namespace forget pattern "xyzzy::*"}}
727 test namespace-old-9.13 {command "namespace forget" ignores patterns that don't match} {
728 list [catch {namespace forget test_ns_import::xy*zzy} msg] $msg \
732 test namespace-old-9.14 {imported commands can be removed} {
733 namespace forget test_ns_import::cmd?
738 test namespace-old-9.15 {existing commands can't be overwritten} {
742 list [catch {namespace import test_ns_import::cmd?} msg] $msg \
746 test namespace-old-9.16 {use "-force" option to override existing commands} {
748 [namespace import -force test_ns_import::cmd?] \
752 test namespace-old-9.17 {commands can be imported into many namespaces} {
753 namespace eval test_ns_import_use {
754 namespace import ::test_ns_import::* ::test_ns_import2::ncmd?
760 test namespace-old-9.18 {when command is deleted, imported commands go away} {
761 namespace eval test_ns_import { rename cmd1 "" }
763 [namespace eval test_ns_import_use {info commands cmd1}]
766 test namespace-old-9.19 {when namesp is deleted, all imported commands go away} {
767 namespace delete test_ns_import test_ns_import2
770 [namespace eval test_ns_import_use {info commands cmd*}] \
771 [namespace eval test_ns_import_use {info commands ncmd*}] \
777 test namespace-old-10.1 {define namespace for scope test} {
778 namespace eval test_ns_inscope {
790 test namespace-old-10.2 {command "namespace code" requires one argument} {
791 list [catch {namespace code} msg] $msg
792 } {1 {wrong # args: should be "namespace code arg"}}
794 test namespace-old-10.3 {command "namespace code" requires one argument} {
795 list [catch {namespace code first "second arg" third} msg] $msg
796 } {1 {wrong # args: should be "namespace code arg"}}
798 test namespace-old-10.4 {command "namespace code" gets current namesp context} {
799 namespace eval test_ns_inscope {
800 namespace code {"1 2 3" "4 5" 6}
802 } {::namespace inscope ::test_ns_inscope {"1 2 3" "4 5" 6}}
804 test namespace-old-10.5 {with one arg, first "scope" sticks} {
805 set sval [namespace eval test_ns_inscope {namespace code {one two}}]
806 namespace code $sval
807 } {::namespace inscope ::test_ns_inscope {one two}}
809 test namespace-old-10.6 {with many args, each "scope" adds new args} {
810 set sval [namespace eval test_ns_inscope {namespace code {one two}}]
811 namespace code "$sval three"
812 } {::namespace inscope ::test_ns_inscope {one two} three}
814 test namespace-old-10.7 {scoped commands work with eval} {
815 set cref [namespace eval test_ns_inscope {namespace code show}]
819 test namespace-old-10.8 {scoped commands execute in namespace context} {
820 set cref [namespace eval test_ns_inscope {
821 namespace code {set x "some new value"}
843 eval namespace delete [namespace children :: test_ns_*]