diff options
author | pooryorick <com.digitalsmarties@pooryorick.com> | 2021-05-19 07:15:10 (GMT) |
---|---|---|
committer | pooryorick <com.digitalsmarties@pooryorick.com> | 2021-05-19 07:15:10 (GMT) |
commit | 93e207f19d5bf8e298a86aa95c881aab05036144 (patch) | |
tree | 2619b17f2323e86b45125924f21769a3fdbdf520 | |
parent | a201f0f3838bd1574ea59075e9d4db242d2e6a61 (diff) | |
download | tcl-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.test | 62 |
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 |