aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:45:13 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:39 +1000
commitfe81bfe03290dac465c71cd6854d3acc93b4518c (patch)
tree7968e938b99998807cacc717d97fbbcbdde0233f
parentc52b491011be94e796ce8c28a16249ca62256084 (diff)
downloadjimtcl-fe81bfe03290dac465c71cd6854d3acc93b4518c.zip
jimtcl-fe81bfe03290dac465c71cd6854d3acc93b4518c.tar.gz
jimtcl-fe81bfe03290dac465c71cd6854d3acc93b4518c.tar.bz2
Bugs and tests
jimsh argv0 was wrong *: Should be the name of the script when run non-interactively Missed adding jim.h changes for errorProc Add lsort -command tests to jim/tests Handle the case of a script with no tokens ------------------------------------------------------------------------
-rw-r--r--jim.c2
-rw-r--r--jim.h1
-rw-r--r--tests/lsortcmd.test34
-rw-r--r--tests/stacktrace.test2
4 files changed, 38 insertions, 1 deletions
diff --git a/jim.c b/jim.c
index 043912a..207db79 100644
--- a/jim.c
+++ b/jim.c
@@ -8364,7 +8364,7 @@ int Jim_EvalObj(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
j = 0; /* on normal termination, the argv array is already
Jim_DecrRefCount-ed. */
err:
- retcode = JimAddErrorToStack(interp, retcode, script->fileName, cmdtoken->linenr);
+ retcode = JimAddErrorToStack(interp, retcode, script->fileName, cmdtoken ? cmdtoken->linenr : 0);
Jim_FreeIntRep(interp, scriptObjPtr);
scriptObjPtr->typePtr = &scriptObjType;
Jim_SetIntRepPtr(scriptObjPtr, script);
diff --git a/jim.h b/jim.h
index ecfb9ac..2ef069c 100644
--- a/jim.h
+++ b/jim.h
@@ -515,6 +515,7 @@ typedef struct Jim_Interp {
time_t lastCollectTime; /* unix time of the last GC execution */
struct Jim_HashTable sharedStrings; /* Shared Strings hash table */
Jim_Obj *stackTrace; /* Stack trace object. */
+ Jim_Obj *errorProc; /* Name of last procedure which returned an error */
Jim_Obj *unknown; /* Unknown command cache */
int unknown_called; /* The unknown command has been invoked */
int errorFlag; /* Set if an error occurred during execution. */
diff --git a/tests/lsortcmd.test b/tests/lsortcmd.test
new file mode 100644
index 0000000..3631855
--- /dev/null
+++ b/tests/lsortcmd.test
@@ -0,0 +1,34 @@
+package require testing
+
+section "lsort -command"
+
+set list {b d a c z}
+
+proc sorter {a v1 v2} {
+ set ::arg $a
+ return [string compare $v1 $v2]
+}
+
+proc test_lsort_cmd {test cmd list exp} {
+ lsort -command $cmd $list
+ if {$::arg != $exp} {
+ error "$test: Failed"
+ }
+}
+
+test lsortcmd-1.1 "Sort with one arg" {
+ lsort -command "sorter arg1" $list
+ set arg
+} {arg1}
+
+test lsortcmd-1.2 "Sort with one arg containg spaces" {
+ lsort -command {sorter "arg with space"} $list
+ set arg
+} {arg with space}
+
+test lsortcmd-1.3 "Sort with arg as list containg spaces" {
+ lsort -command [list sorter [list arg with list "last with spaces"]] $list
+ set arg
+} {arg with list {last with spaces}}
+
+testreport
diff --git a/tests/stacktrace.test b/tests/stacktrace.test
index c23675e..f7d131c 100644
--- a/tests/stacktrace.test
+++ b/tests/stacktrace.test
@@ -64,3 +64,5 @@ Can't find package 'dummy'} {{} dummy.tcl 3 dummyproc dummy.tcl 6 {} errors.tcl
}
main
+
+testreport