Menu

SVN-Code Commit Log


Commit Date  
[r13034] by mikeaubury

Fix tests 671, 672 and 673 - two defects in the tests themselves.

DATETIME FRACTION TO FRACTION is a degenerate qualifier and binding an
uninitialised one fails conversion, which aborted all three programs long
before they tested anything interesting. Removed those two fields; SECOND
TO SECOND and SECOND TO FRACTION are kept.

673 then failed with -217 on a second, older defect that the first had
been masking: its record field names and its CREATE TABLE column names had
drifted apart, and the explicit UPDATE/SELECT column lists used the record
spelling. Every name that differs is one the CREATE had shortened to fit
an 18 character identifier limit - aCharacterWithSize became
aCharacterWithSz, aIntervalMinPrecMin became aIntervalMinPreM, and so on -
so the lists asked for columns the table does not have. Corrected the 14
column-list entries; record definitions and r_. references are untouched.

All three now pass. Found with the debug trace restored in r13033.

2026-09-01 17:02:44 Tree
[r13033] by mikeaubury

Restore debug tracing, and make it the default again.

The runtime's tracing all sits inside #ifdef DEBUG, and nothing has been
defining DEBUG since the configure rewrite, so DEBUG=ALL has silently
produced nothing at all.

Three things were wrong. configure defaulted debug off, where the old
configure.in had it on unless --enable-optimised was given. --enable-debug
only added -g -O0 and never defined DEBUG, so the option did not work
either. And Makefile-common resets CFLAGS, so the flag cannot travel that
way - the template already had the right hook, DDEBUG=@DBGFLAG@, but
DBGFLAG was never substituted.

Now on by default, --enable-optimised to opt out. A run of test 671 that
previously gave no diagnostic at all now writes 450K of trace and names
the failing bind directly.

2026-09-01 16:55:09 Tree
[r13032] by mikeaubury

Mark the eight broken/invalid tests as expected failures.

484 491 527 674 contain no .4gl and no .expected at all - the directories
are empty, so there is nothing to run. 545 546 547 548 are CREATE/DROP
DATABASE tests whose own descriptions say the test is invalid.

All eight already declare obsolete_test=1, and functions_inc.sh has a skip
for that (IS_OBSOLETE_TEST), but it never fires - runs still report
Skipped: 0 and count them as failures. Listing them here uses the
mechanism that works; they can come back out if the skip is ever fixed.

Takes the unexpected-failure count from 18 to 10.

2026-09-01 13:29:59 Tree
[r13031] by mikeaubury

Test 1705 (ansi outer join) passes - drop it from the expected-to-fail lists.

Verified under -esqli -tui. It was listed in both the shared list and the
esqli one, and the shared list is unioned into every configuration, so it
had to come out of both.

2026-09-01 09:51:45 Tree
[r13030] by mikeaubury

Bump version to 1.8.1.

configure is regenerated along with it. configure.ac reads the version
with m4_esyscmd_s at autoreconf time, so a bump needs autoreconf before
configure - otherwise the build keeps writing plug-ins to the old
plugins-<version> directory while the runtime, which gets its version
from lib/generated/project.c at make time, looks in the new one.

2026-09-01 08:36:55 Tree
[r13029] by mikeaubury

Optional, consent-based build reporting in configure.

configure can now send one line to the project saying that a build
happened and which back ends were detected, so we have some idea how
many people build Aubit and which drivers are still worth maintaining.

It only asks on a terminal, defaults to no, and never runs in a scripted
or CI build. --enable-usage-report sends without asking,
--disable-usage-report never asks, and DO_NOT_TRACK is honoured. The
prompt shows exactly what would be sent, and nothing is sent when
building or running programs afterwards - only here, and only on a yes.

Note the prompt reads /dev/tty rather than stdin. Autoconf detaches
stdin near the top of every generated configure

test -n "$DJDIR" || exec 7<&0 </dev/null

so that configure can never block on input, which means a prompt reading
stdin silently does nothing at all.

2026-09-01 08:21:54 Tree
[r13028] by mikeaubury

Test 217: put the test's own directory on the library path.

217 builds libprog2.so with "4glpc --as-dll" and links prog.4gl against
it, but nothing added that directory to LD_LIBRARY_PATH and the program
carries no rpath, so it died with "cannot open shared object file". That
is what the README.fail has meant since 2004 by "don't know why yet".

Also drops 240 from EXPECT_TO_FAIL_TESTS - the USING fix in r13027 makes
it pass.

2026-08-31 19:28:39 Tree
[r13027] by mikeaubury

Fix USING floating signs and the window message line.

USING: a floating sign was landing in the wrong column. Informix puts it
on the rightmost of its own mask positions that the digits and currency
symbol have not taken, and a single occurrence does not float at all.

---,###.## -12.34 " - 12.34" its positions are 1-3 only
----,--$.&& -123.45 " -$123.45" 6-7 hold digits, so it stops at 4
(($$,$$$.&&) -1.23 " ( $1.23)" the paren stops at its own pair

A suppressed thousands separator counts as one of those positions only
where the run of signs carries on past it. Test 240 now passes and comes
off the expected-to-fail list, verified with -esqli -tui.

Message line: a message line past the bottom of a window was clamped to
the last line; Informix uses the first line inside the window. The
correct behaviour was already there behind MSGLINEFIXUP but was not the
default. Test 230 matches all 28 of its captured Informix screens now.
Set MSGLINEFIXUP to keep the old clamp.

Suite: 1098 run, 29 failed, against 32 before.

2026-08-31 19:28:25 Tree
[r13026] by mikeaubury

Honour DBMONEY for MONEY formatting.

The runtime never read DBMONEY, so the currency symbol and decimal
separator were fixed at "$" and ".". It is now parsed the way Informix
defines it, [front][. or ,][back], into a money format alongside the
existing per context separators.

DBMONEY=DM, -> DM1234,56
DBMONEY=£. -> £1234.56
DBMONEY=,DM -> 1234,56DM

resource.c carries an internal default of "#." for DBMONEY, so only a
value differing from that counts as user set - MONEY keeps following
A4GL_NUMERIC otherwise, and default output is unchanged.

A symbol longer than one byte (DM, or £ in UTF-8) takes the extra from
the blanks left of the placeholder, leaving the digits where they are.
Where the field has no room the symbol is left off rather than pushing
digits out of it.

Suite: 1099 run, 32 failed, unchanged from r13025. Test 240 still fails
on its existing USING alignment bug, with byte identical output.

2026-08-31 18:47:23 Tree
[r13025] by mikeaubury

Add test 1906: NCHAR/NVCHAR semantics on multi byte data.

Covers character based length, subscripts and truncation, locale aware
case folding, and the NVARCHAR cases fixed in r13024. Skips itself if
the machine has no UTF-8 locale.

2026-08-31 17:39:09 Tree
Older >