aboutsummaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2024-03-21expr: add support for =* and =~expr-glob-regexp-opSteve Bennett2-0/+28
glob match and regexp match operators 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>
2022-07-31tests: Fix SIGPIPE testsSteve Bennett1-9/+3
These tests were only working accidentally (typo >$@w). In fact since open |... already provides a pipe on output there is no need to create one manually, so the first test can run under Tcl too. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-07-25unset: don't return a result with -nocomplainSteve Bennett1-0/+6
unset -nocomplain abc(missing) was still returning an error message, but as a normal return. It should return an empty result. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-05-08tests: add tests for wait -1Steve Bennett2-0/+11
Only on unix systems, wait for any child process This was broken with a recent commit, so add an explicit test Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-04-14aio: TIP 603 - Implement stat of an open file handleSteve Bennett1-0/+18
Although the interface is different ('$handle stat' vs 'chan configure -stat') the behaviour is the same. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-04-14win32: Fix process handle vs pid distinctionSteve Bennett1-1/+1
On win32, a process is identified by a HANDLE, but for identifying a running process we should use GetProcessId() to return a meaningful integer. This means we need to be able to back and forth between a pid and a process handle (phandle). We also need to be careful to get the pid before the process handle closes since it isn't available afterwards. Also call the handle to intptr_t for open_osfhandle() to avoid a compiler warning. Fixes #217 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-04-14try: add support for trapSteve Bennett1-0/+44
In addition to "on codes ..." it is now possible to trap on errorcode with "trap sublist ..." e.g. try { ... } trap CHILDSTATUS {msg opts} { ... } Fixes #204 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-04-12getref, setref: No need to allow for leading, trailing spaceSteve Bennett1-2/+1
There is no reason to allow a reference to contain leading and/or trailing white space, so remove this check and simply treat it as an invalid reference. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-04-11getref, setref: reference may be qualifiedSteve Bennett1-0/+19
oo.tcl returns globally qualified names like ::<reference.<tree___>.00000000000000000000> So allow getref and setref to handle these qualified references Fixes #218 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2022-02-23tests: Fix load.test when jimsh not yet installedSteve Bennett1-19/+17
Needs include, lib paths when jim is not installed Fixes: #216 Signed-off-by: Steve Bennett <steveb@workware.net.au>
2021-12-13dict: Fix possible duplicate entries when settingSteve Bennett1-0/+13
Due to the way hash collisions are managed it is possible to have a sequence where an entry is removed and then another entry is replaced, however the replacement adds an additional entry instead of updating the existing entry. Can be reproduced like this as there is a hash collision between these two keys: dict set d 0,13 X dict set d 8,4 Y dict unset d 0,13 dict set d 8,4 Z Should result in one entry in the dictionary, but instead ends with two. Signed-off-by: Steve Bennett <steveb@workware.net.au>
2021-07-09tests: move garabage collection test to ref.testSteve Bennett2-17/+24
bootstrap jimsh doesn't have garbage collection, so move such tests into ref.test Signed-off-by: Steve Bennett <steveb@workware.net.au>