summaryrefslogtreecommitdiffstats
path: root/tests/namespace.test
diff options
context:
space:
mode:
authorpooryorick <com.digitalsmarties@pooryorick.com>2021-05-18 22:09:41 (GMT)
committerpooryorick <com.digitalsmarties@pooryorick.com>2021-05-18 22:09:41 (GMT)
commita201f0f3838bd1574ea59075e9d4db242d2e6a61 (patch)
tree94f06df3543375dc0f15d7c6e76ed93dfdc6a366 /tests/namespace.test
parent1c9f5c87416a863ae166c4ec0938d0b72a238636 (diff)
downloadtcl-a201f0f3838bd1574ea59075e9d4db242d2e6a61.zip
tcl-a201f0f3838bd1574ea59075e9d4db242d2e6a61.tar.gz
tcl-a201f0f3838bd1574ea59075e9d4db242d2e6a61.tar.bz2
Fix for issue [e39cb3f462631a99], namespace is removed from other namespace
paths before deletion is complete
Diffstat (limited to 'tests/namespace.test')
-rw-r--r--tests/namespace.test28
1 files changed, 18 insertions, 10 deletions
diff --git a/tests/namespace.test b/tests/namespace.test
index 1a18096..f826599 100644
--- a/tests/namespace.test
+++ b/tests/namespace.test
@@ -182,8 +182,8 @@ test namespace-7.6 {recursive Tcl_DeleteNamespace, no active call frames in ns}
} {}
test namespace-7.7 {Bug 1655305} -setup {
interp create child
- # Can't invoke through the ensemble, since deleting the global namespace
- # (indirectly, via deleting ::tcl) deletes the ensemble.
+ # Can't invoke through the ensemble, since deleting ::tcl
+ # (indirectly, via deleting the global namespace) deletes the ensemble.
child eval {rename ::tcl::info::commands ::infocommands}
child hide infocommands
child eval {
@@ -207,7 +207,7 @@ test namespace-7.8 {Bug ba1419303b4c} -setup {
namespace delete ns1
}
} -body {
- # No segmentation fault given --enable-symbols=mem.
+ # No segmentation fault given --enable-symbols.
namespace delete ns1
} -result {}
@@ -2723,7 +2723,11 @@ test namespace-51.12 {name resolution path control} -body {
catch {namespace delete ::test_ns_3}
catch {namespace delete ::test_ns_4}
}
-test namespace-51.13 {name resolution path control} -body {
+test namespace-51.13 {
+ name resolution path control
+ when the trace fires, ns_2 is being deleted but isn't gone yet, and is
+ still visible for the trace
+} -body {
set ::result {}
namespace eval ::test_ns_1 {
proc foo {} {lappend ::result 1}
@@ -2746,8 +2750,7 @@ test namespace-51.13 {name resolution path control} -body {
}
bar
}
- # Should the result be "2 {} {2 3 2 1}" instead?
-} -result {2 {} {2 3 1 1}} -cleanup {
+} -result {2 {} {2 3 2 1}} -cleanup {
catch {namespace delete ::test_ns_1}
catch {namespace delete ::test_ns_2}
catch {namespace delete ::test_ns_3}
@@ -3344,11 +3347,15 @@ test namespace-56.6 {
Namespace deletion traces on both the original routine and the imported
routine should run without any memory error under a debug build.
} -body {
- variable res 0
+ variable res {}
proc ondelete {old new op} {
- $old
+ variable res
+ set tail [namespace tail $old]
+ set up [namespace tail [namespace qualifiers $old]]
+ lappend res [list $up $tail]
}
+
namespace eval ns1 {} {
namespace export *
@@ -3360,17 +3367,18 @@ test namespace-56.6 {
}
namespace eval ns2 {} {
- namespace import ::ns1::p1
+ namespace import [namespace parent]::ns1::p1
trace add command p1 delete ondelete
}
namespace delete ns1
namespace delete ns2
+ after 1
return $res
} -cleanup {
unset res
rename ondelete {}
-} -result 2
+} -result {{ns1 p1} {ns2 p1}}
test namespace-57.0 {