diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-24 10:45:13 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:39 +1000 |
commit | fe81bfe03290dac465c71cd6854d3acc93b4518c (patch) | |
tree | 7968e938b99998807cacc717d97fbbcbdde0233f | |
parent | c52b491011be94e796ce8c28a16249ca62256084 (diff) | |
download | jimtcl-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.c | 2 | ||||
-rw-r--r-- | jim.h | 1 | ||||
-rw-r--r-- | tests/lsortcmd.test | 34 | ||||
-rw-r--r-- | tests/stacktrace.test | 2 |
4 files changed, 38 insertions, 1 deletions
@@ -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); @@ -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 |