aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2025-04-22try: Fix bug with `errorCode` being shorter than `match`Mason Jones1-1/+8
Currently jimtcl compares each element of `errorCode` against each `match` element. But, it doesn't account for the situation where `errorCode` is shorter than `match`. In this case the match should always fail (rather than segfaulting).
2025-04-22Fix abort on boolean negation/plus unary operatorsMason Jones1-0/+7
Currently jimtcl will abort if there is any unary operator besides ! in front of a boolean. It is possible to construct an expression with - or + before a boolean literal (e.g. expr {-true}) that currently aborts, but should return an error. I implemented this error handling with tcl's error message for this situation.
2025-02-07aio: add support for translation binary|textSteve Bennett1-0/+26
Mainly to support changing stdout,stderr to binary mode on Windows. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2025-01-10jimsh.test: update for new behaviourSteve Bennett1-21/+9
When stdin is not a tty Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-11-05add support for 'package forget'Steve Bennett2-0/+15
Sometimes useful if replacing a package that has already been loaded Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-09-20event.test: don't rely on 'stdin readable'Steve Bennett1-2/+2
Use after instead because otherwise the alarm in the readable script which confuses things later. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-09-20event.test: Fix spurious stderr outputSteve Bennett1-6/+13
Expect output to stderr when an error happens inside bgerror, so catch it. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-09-20shorten the name of breakcontinue.testSteve Bennett1-0/+0
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-08-28json::decode preserve line numbers if possibleSteve Bennett1-2/+14
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-08-28json::decode: run parser in strict modeSteve Bennett1-5/+5
To avoid invalid JSON causing core dumps. Minor changes to the jsmn parser to still allow Infinity and NaN. Fix some tests that didn't use strictly correct JSON. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-08-28lsort tests: some tests require utf-8 supportSteve Bennett1-2/+2
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-08-28lsort: add support for -dictSteve Bennett1-1/+128
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-02-15subst: don't ignore vars after first failed varSteve Bennett1-0/+5
If $ is followed by something that isn't a variable name, previously all subsequent variables were being ignored. Fixes #296 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-02-04aio: tty: Add support for vstart and vstopSteve Bennett1-1/+1
xonxoff start and stop chars Signed-off-by: Steve Bennett <steveb@workware.net.au>
2024-01-29regexp: implement regsub -commandSteve Bennett1-2/+41
Per Tcl 8.7 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-11-02tests: timer: skip unreliable testsSteve Bennett1-15/+34
On systems where we aren't getting enough cpu time. Heuristic check, but probably good enough in practice. Fixes #282 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-13jimsh, interp, tests: fixes when line editing is disabledSteve Bennett2-6/+8
- Set jim::lineedit to indicate if line editing is configured - Ensure that aio tty works even if line editing is disabled - Skip some tests if line editing is not configured Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-13tests: misc: improve 'info statics' testSteve Bennett1-3/+5
To show that it returns the current values, not just the original values Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-12tests: socket: hurd vs LinuxSteve Bennett1-2/+13
hurd does not return the path for unix domain sockets via getsockname() Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-08-12tests: support hurdSteve Bennett2-4/+4
socket operation on non-socket gives a different message Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-10tests: event.test: increase waits in event-11.4Steve Bennett1-3/+3
This test can be at bit flaky on slower machines (perhaps running under a VM or qemu). Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-10info script: return real current source fileSteve Bennett1-0/+10
And allow current source file to be set Fixes: #268 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-05tests: Fix/add some constraint checksSteve Bennett2-1/+3
In case socket pty, interp are not available Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04core: add support for proc statics by referenceSteve Bennett1-0/+168
set a 5 proc b {} {&a} { incr a } b Now a is 6 because b captured a by reference instead of by value Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04debug: convert to use subcmdSteve Bennett1-2/+2
This means we get -commands and usage via -help Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04dict: convert to use subcmdSteve Bennett1-1/+1
This means we get -commands and usage via -help And update dict2.test for minor difference in usage Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04interactive: enable hint supportSteve Bennett1-2/+10
And add a default implementation of tcl::stdhint to add hinting for some built-in commands. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04tests: add aio.test for open -nocloseSteve Bennett1-2/+19
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04tests: tty.test: use a pty pair if stdin/stdout is not a ttySteve Bennett1-12/+25
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04tests: expect.tcl: leave the channel in non-blocking modeSteve Bennett1-2/+1
This is simpler now that we can write to a non-blocking socket even if it is "full". Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04tcltest: rework constraint systemSteve Bennett34-137/+92
Now 'constraint cmd|package' is like 'needs' but sets a constraint The command to 'needs cmd' and 'constraint cmd' can now take a subcommand to check. Add 'constraint|needs eval|expr' to make some constraint checks simpler. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-07-04aio: change to use unix io, not stdioSteve Bennett4-27/+251
This changes especially makes buffered I/O work with non-blocking channels. - separate read and write buffering - support for timeout on blocking read - read/write on same channel in event loop with buffering - read buffer is the same across read, gets, copyto - autoflush non-blocking writes via event loop - copyto can now copy to any filehandle-like command - add some copyto tests Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-06-21core: Display errors in a more "pythonesque" waySteve Bennett5-68/+77
A typical error message now looks like this: t4.tcl:2: Error: syntax error in expression: "blah" Traceback (most recent call last): File "t4.tcl", line 14 c 1 2 3 File "t4.tcl", line 10, in c b a c File "t4.tcl", line 6, in b a A14 File "t4.tcl", line 2, in a expr blah This is produced by stackdump (that can be replaced), called by errorInfo. Note that now stacktraces (stacktrace, info stacktrace, $opts(-errorinfo)) include the running command at each level in addition to proc, file, line. In order for scripts to detect this new format, a new entry tcl_platform entry has been added: tcl_platform(stackFormat) = 4 (to signify 4 elements per frame) In addition, instead of building the error stack frame as the stack is unwound in response to an error, instead the entire current stack trace is captured by stacktrace. This means that the trace extends beyond the try/catch right back to the initial interpreter command. The 'stacktrace' command is now implemented in C based on the same code that generates the error stacktrace. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-05-25tests: for multi-level break, continueSteve Bennett1-0/+127
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-05-25core: support multi-level while, break from loopsSteve Bennett1-7/+15
loop i 5 { loop j 6 { # This breaks out of both loops break 2 } } Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-05-06jim: info frame improvementsSteve Bennett1-14/+17
always include 'proc' even if introspection disabled correctly set 'proc' at the eval frame level that is currently running in the given proc. This makes it easier to produce an accurate level stacktrace even across uplevel, etc. Update stacktrace to use the new info frame. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-04-19regexp: fix incorrect check for invalid escape sequence at end of charsetSteve Bennett1-0/+4
Fixes #259 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-04-19regexp: fix check for termination in [[:class:]]Steve Bennett1-0/+4
Fixes #259 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-02-24dict with: return script resultSteve Bennett2-2/+19
Previously dict with returned the new dict value. Also fix an issue in the case where a dict element mirrors the name of the dictionary. Fixes: #241 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-02-13ensemble: Add a simple ensemble commandSteve Bennett2-0/+122
Uses a prefix to automatically map from subcommand to implementation. Includes support for namespace ensemble Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-02-13vwait: add support for vwait -signalSteve Bennett1-6/+6
To break vwait if a handled signal is received. In this case, the handled signal(s) can be returned by signal check ?-clear? Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-02-13Tcl-compatible 'info frame'Steve Bennett2-13/+17
Returns a dictionary with file, line, cmd, (possibly) proc and level. And support 'info frame 0' for the current command. Note that now all evaluation frames are captured, not just call frames. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-02-06tests: exec2: may need to set default SIGPIPE dispositionSteve Bennett1-1/+1
Signed-off-by: Steve Bennett <steveb@workware.net.au>
2023-02-06tests: Don't run exec2 in a child interpreterSteve Bennett2-3/+4
Since signals aren't supported there and we need signals for some of these tests. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-12-26tests: add garbage collection testsSteve Bennett1-0/+80
These tests provoke the issues raised in #245 plus some additional issues. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-12-03regexp: fix end of word checkSteve Bennett1-0/+4
The end of word check was wrong and return true when it should not. Fixes #246 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-08-29tests: lock.test: child lock test should be more reliableSteve Bennett1-1/+1
Some systems need a little extra time for the child process to start and acquire the lock. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-08-21tree: node ids are now simple integersSteve Bennett1-1/+1
Dictionary lookups with simple integers are more efficient than with "node<integer>" Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-08-21tests: Fix file.test on WindowsSteve Bennett1-1/+1
file executable doesn't do anything useful on Windows Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-08-21tests: file.test - increase code coverageSteve Bennett1-0/+50
Signed-off-by: Steve Bennett <steveb@workware.net.au>