📄 interp.test
字号:
proc h1 {} { upvar z z set z 91 } } a hide h1 a alias a1 a1 proc a1 {} { interp invokehidden a h1 } set r [interp eval a p1] interp delete a set r} 91test interp-20.42 {safe, invokehidden at local level} { catch {interp delete a} interp create a -safe a eval { proc p1 {} { a1 set z } proc h1 {} { upvar z z set z 91 } } a hide h1 a alias a1 a1 proc a1 {} { interp invokehidden a h1 } set r [interp eval a p1] interp delete a set r} 91test interp-20.43 {invokehidden at global level} { catch {interp delete a} interp create a a eval { proc p1 {} { a1 set z } proc h1 {} { upvar z z set z 91 } } a hide h1 a alias a1 a1 proc a1 {} { interp invokehidden a -global h1 } set r [catch {interp eval a p1} msg] interp delete a list $r $msg} {1 {can't read "z": no such variable}}test interp-20.44 {invokehidden at global level} { catch {interp delete a} interp create a a eval { proc p1 {} { global z a1 set z } proc h1 {} { upvar z z set z 91 } } a hide h1 a alias a1 a1 proc a1 {} { interp invokehidden a -global h1 } set r [catch {interp eval a p1} msg] interp delete a list $r $msg} {0 91}test interp-20.45 {interp hide vs namespaces} { catch {interp delete a} interp create a a eval { namespace eval foo {} proc foo::x {} {} } set l [list [catch {interp hide a foo::x} msg] $msg] interp delete a set l} {1 {cannot use namespace qualifiers as hidden commandtoken (rename)}}test interp-20.46 {interp hide vs namespaces} { catch {interp delete a} interp create a a eval { namespace eval foo {} proc foo::x {} {} } set l [list [catch {interp hide a foo::x x} msg] $msg] interp delete a set l} {1 {can only hide global namespace commands (use rename then hide)}}test interp-20.47 {interp hide vs namespaces} { catch {interp delete a} interp create a a eval { proc x {} {} } set l [list [catch {interp hide a x foo::x} msg] $msg] interp delete a set l} {1 {cannot use namespace qualifiers as hidden commandtoken (rename)}}test interp-20.48 {interp hide vs namespaces} { catch {interp delete a} interp create a a eval { namespace eval foo {} proc foo::x {} {} } set l [list [catch {interp hide a foo::x bar::x} msg] $msg] interp delete a set l} {1 {cannot use namespace qualifiers as hidden commandtoken (rename)}}test interp-21.1 {interp hidden} { interp hidden {}} ""test interp-21.2 {interp hidden} { interp hidden} ""test interp-21.3 {interp hidden vs interp hide, interp expose} { set l "" lappend l [interp hidden] interp hide {} pwd lappend l [interp hidden] interp expose {} pwd lappend l [interp hidden] set l} {{} pwd {}}test interp-21.4 {interp hidden} { catch {interp delete a} interp create a set l [interp hidden a] interp delete a set l} ""test interp-21.5 {interp hidden} { catch {interp delete a} interp create -safe a set l [lsort [interp hidden a]] interp delete a set l} $hidden_cmds test interp-21.6 {interp hidden vs interp hide, interp expose} { catch {interp delete a} interp create a set l "" lappend l [interp hidden a] interp hide a pwd lappend l [interp hidden a] interp expose a pwd lappend l [interp hidden a] interp delete a set l} {{} pwd {}}test interp-21.7 {interp hidden} { catch {interp delete a} interp create a set l [a hidden] interp delete a set l} ""test interp-21.8 {interp hidden} { catch {interp delete a} interp create a -safe set l [lsort [a hidden]] interp delete a set l} $hidden_cmdstest interp-21.9 {interp hidden vs interp hide, interp expose} { catch {interp delete a} interp create a set l "" lappend l [a hidden] a hide pwd lappend l [a hidden] a expose pwd lappend l [a hidden] interp delete a set l} {{} pwd {}}test interp-22.1 {testing interp marktrusted} { catch {interp delete a} interp create a set l "" lappend l [a issafe] lappend l [a marktrusted] lappend l [a issafe] interp delete a set l} {0 {} 0}test interp-22.2 {testing interp marktrusted} { catch {interp delete a} interp create a set l "" lappend l [interp issafe a] lappend l [interp marktrusted a] lappend l [interp issafe a] interp delete a set l} {0 {} 0}test interp-22.3 {testing interp marktrusted} { catch {interp delete a} interp create a -safe set l "" lappend l [a issafe] lappend l [a marktrusted] lappend l [a issafe] interp delete a set l} {1 {} 0}test interp-22.4 {testing interp marktrusted} { catch {interp delete a} interp create a -safe set l "" lappend l [interp issafe a] lappend l [interp marktrusted a] lappend l [interp issafe a] interp delete a set l} {1 {} 0}test interp-22.5 {testing interp marktrusted} { catch {interp delete a} interp create a -safe interp create {a b} catch {a eval {interp marktrusted b}} msg interp delete a set msg} {"interp marktrusted" can only be invoked from a trusted interpreter}test interp-22.6 {testing interp marktrusted} { catch {interp delete a} interp create a -safe interp create {a b} catch {a eval {b marktrusted}} msg interp delete a set msg} {"b marktrusted" can only be invoked from a trusted interpreter}test interp-22.7 {testing interp marktrusted} { catch {interp delete a} interp create a -safe set l "" lappend l [interp issafe a] interp marktrusted a interp create {a b} lappend l [interp issafe a] lappend l [interp issafe {a b}] interp delete a set l} {1 0 0}test interp-22.8 {testing interp marktrusted} { catch {interp delete a} interp create a -safe set l "" lappend l [interp issafe a] interp create {a b} lappend l [interp issafe {a b}] interp marktrusted a interp create {a c} lappend l [interp issafe a] lappend l [interp issafe {a c}] interp delete a set l} {1 1 0 0}test interp-22.9 {testing interp marktrusted} { catch {interp delete a} interp create a -safe set l "" lappend l [interp issafe a] interp create {a b} lappend l [interp issafe {a b}] interp marktrusted {a b} lappend l [interp issafe a] lappend l [interp issafe {a b}] interp create {a b c} lappend l [interp issafe {a b c}] interp delete a set l} {1 1 1 0 0}test interp-23.1 {testing hiding vs aliases} { catch {interp delete a} interp create a set l "" lappend l [interp hidden a] a alias bar bar lappend l [interp aliases a] lappend l [interp hidden a] a hide bar lappend l [interp aliases a] lappend l [interp hidden a] a alias bar {} lappend l [interp aliases a] lappend l [interp hidden a] interp delete a set l} {{} bar {} bar bar {} {}}test interp-23.2 {testing hiding vs aliases} {pc || unix} { catch {interp delete a} interp create a -safe set l "" lappend l [lsort [interp hidden a]] a alias bar bar lappend l [interp aliases a] lappend l [lsort [interp hidden a]] a hide bar lappend l [interp aliases a] lappend l [lsort [interp hidden a]] a alias bar {} lappend l [interp aliases a] lappend l [lsort [interp hidden a]] interp delete a set l} {{cd exec exit fconfigure file glob load open pwd socket source} bar {cd exec exit fconfigure file glob load open pwd socket source} bar {bar cd exec exit fconfigure file glob load open pwd socket source} {} {cd exec exit fconfigure file glob load open pwd socket source}} test interp-23.3 {testing hiding vs aliases} {macOnly} { catch {interp delete a} interp create a -safe set l "" lappend l [lsort [interp hidden a]] a alias bar bar lappend l [interp aliases a] lappend l [lsort [interp hidden a]] a hide bar lappend l [interp aliases a] lappend l [lsort [interp hidden a]] a alias bar {} lappend l [interp aliases a] lappend l [lsort [interp hidden a]] interp delete a set l} {{beep cd echo exit fconfigure file glob load ls open pwd socket source} bar {beep cd echo exit fconfigure file glob load ls open pwd socket source} bar {bar beep cd echo exit fconfigure file glob load ls open pwd socket source} {} {beep cd echo exit fconfigure file glob load ls open pwd socket source}} test interp-24.1 {result resetting on error} { catch {interp delete a} interp create a proc foo args {error $args} interp alias a foo {} foo set l [interp eval a { set l {} lappend l [catch {foo 1 2 3} msg] lappend l $msg lappend l [catch {foo 3 4 5} msg] lappend l $msg set l }] interp delete a set l} {1 {1 2 3} 1 {3 4 5}}test interp-24.2 {result resetting on error} { catch {interp delete a} interp create a -safe proc foo args {error $args} interp alias a foo {} foo set l [interp eval a { set l {} lappend l [catch {foo 1 2 3} msg] lappend l $msg lappend l [catch {foo 3 4 5} msg] lappend l $msg set l }] interp delete a set l} {1 {1 2 3} 1 {3 4 5}}test interp-24.3 {result resetting on error} { catch {interp delete a} interp create a interp create {a b} interp eval a { proc foo args {error $args} } interp alias {a b} foo a foo set l [interp eval {a b} { set l {} lappend l [catch {foo 1 2 3} msg] lappend l $msg lappend l [catch {foo 3 4 5} msg] lappend l $msg set l }] interp delete a set l} {1 {1 2 3} 1 {3 4 5}}test interp-24.4 {result resetting on error} { catch {interp delete a} interp create a -safe interp create {a b} interp eval a { proc foo args {error $args} } interp alias {a b} foo a foo set l [interp eval {a b} { set l {} lappend l [catch {foo 1 2 3} msg] lappend l $msg lappend l [catch {foo 3 4 5} msg] lappend l $msg set l }] interp delete a set l} {1 {1 2 3} 1 {3 4 5}}test interp-24.5 {result resetting on error} { catch {interp delete a} catch {interp delete b} interp create a interp create b interp eval a { proc foo args {error $args} } interp alias b foo a foo set l [interp eval b { set l {} lappend l [catch {foo 1 2 3} msg] lappend l $msg lappend l [catch {foo 3 4 5} msg] lappend l $msg set l }] interp delete a set l} {1 {1 2 3} 1 {3 4 5}}test interp-24.6 {result resetting on error} { catch {interp delete a} catch {interp delete b} interp create a -safe interp create b -safe interp eval a { proc foo args {error $args} } interp alias b foo a foo set l [interp eval b { set l {} lappend l [catch {foo 1 2 3} msg] lappend l $msg lappend l [catch {foo 3 4 5} msg] lappend l $msg set l }] interp delete a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -