summaryrefslogtreecommitdiffstats
path: root/tests/trace.test
diff options
context:
space:
mode:
authormig <mig>2012-02-06 16:46:17 (GMT)
committermig <mig>2012-02-06 16:46:17 (GMT)
commitf58a7aa024e0f44f2671e9814efa46c3192d4c3d (patch)
tree61bb17debaf1681940374fbcaff97b26005846c3 /tests/trace.test
parent940c636e5b31b593ce5195e2ec2e09932fa90bf0 (diff)
parentce0bed6e24611fae430cf6eb73c9e7dd9bc27646 (diff)
downloadtcl-f58a7aa024e0f44f2671e9814efa46c3192d4c3d.zip
tcl-f58a7aa024e0f44f2671e9814efa46c3192d4c3d.tar.gz
tcl-f58a7aa024e0f44f2671e9814efa46c3192d4c3d.tar.bz2
Fix for [Bug 3484621]: insure that execution traces on bytecoded commands bump the interp's compile epoch.
Diffstat (limited to 'tests/trace.test')
-rw-r--r--tests/trace.test33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/trace.test b/tests/trace.test
index 5767860..254ff62 100644
--- a/tests/trace.test
+++ b/tests/trace.test
@@ -2558,6 +2558,39 @@ set base {
}
runbase {{- *} {-* *} {- *} {- *}} $base
+test trace-39 {bug #3484621: tracing Bc'ed commands} -setup {
+ set ::traceLog 0
+ set ::traceCalls 0
+ set ::bar [list 0 1 2 3]
+ set res {}
+ proc dotrace args {
+ incr ::traceLog
+ }
+ proc foo {} {
+ incr ::traceCalls
+ # choose a BC'ed command that is 'unlikely' to interfere with tcltest's
+ # internals
+ lset ::bar 1 2
+ }
+} -body {
+ foo
+ lappend res $::traceLog
+
+ trace add execution lset enter dotrace
+ foo
+ lappend res $::traceLog
+
+ trace remove execution lset enter dotrace
+ foo
+ lappend res $::traceLog
+
+ list $::traceCalls | {*}$res
+} -cleanup {
+ unset ::traceLog ::traceCalls ::bar res
+ rename dotrace {}
+ rename foo {}
+} -result {3 | 0 1 1}
+
# Delete procedures when done, so we don't clash with other tests