summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpooryorick <com.digitalsmarties@pooryorick.com>2021-05-19 07:15:10 (GMT)
committerpooryorick <com.digitalsmarties@pooryorick.com>2021-05-19 07:15:10 (GMT)
commit93e207f19d5bf8e298a86aa95c881aab05036144 (patch)
tree2619b17f2323e86b45125924f21769a3fdbdf520
parenta201f0f3838bd1574ea59075e9d4db242d2e6a61 (diff)
downloadtcl-93e207f19d5bf8e298a86aa95c881aab05036144.zip
tcl-93e207f19d5bf8e298a86aa95c881aab05036144.tar.gz
tcl-93e207f19d5bf8e298a86aa95c881aab05036144.tar.bz2
new test for issue [e39cb3f462631a99], namespace is removed from other
namespace paths before deletion is complete
-rw-r--r--tests/namespace.test62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/namespace.test b/tests/namespace.test
index f826599..64f237d 100644
--- a/tests/namespace.test
+++ b/tests/namespace.test
@@ -211,6 +211,68 @@ test namespace-7.8 {Bug ba1419303b4c} -setup {
namespace delete ns1
} -result {}
+
+test namespace-7.9 {
+ Bug e39cb3f462631a99
+
+ A namespace being deleted should not be removed from other namespace paths
+ until the contents of the namespace are entirely removed.
+} -setup {
+
+
+
+
+} -body {
+
+ variable res {}
+
+
+ namespace eval ns1 {
+ proc p1 caller {
+ lappend [namespace parent]::res $caller
+ }
+ }
+
+
+ namespace eval ns1a {
+ namespace path [namespace parent]::ns1
+
+ proc t1 {old new op} {
+ $old t1
+ }
+ }
+
+ namespace eval ns2 {
+ proc p1 caller {
+ lappend [namespace parent]::res $caller
+ }
+ }
+
+ namespace eval ns2a {
+ namespace path [namespace parent]::ns2
+
+ proc t1 {old new op} {
+ [namespace tail $old] t2
+ }
+ }
+
+
+ trace add command ns1::p1 delete ns1a::t1
+ namespace delete ns1
+
+ trace add command ns2::p1 delete ns2a::t1
+ namespace delete ns2
+
+ return $res
+
+} -cleanup {
+ namespace delete ns1a
+ namespace delete ns2a
+ unset res
+} -result {t1 t2}
+
+
+
test namespace-8.1 {TclTeardownNamespace, delete global namespace} {
catch {interp delete test_interp}
interp create test_interp