Bug #11724
dropdown box 4GL and FWD deviations against the known tests suites.
Added by Sergey Ivanovskiy 2 days ago. Updated 2 days ago.
0%
COMPARISON.textile
(7.98 KB)
Sergey Ivanovskiy, 08/10/2026 10:23 AM
History
#2 Updated by Sergey Ivanovskiy 2 days ago
- File COMPARISON.md added
The attached file lists the current deviations against the known test cases.
#4 Updated by Sergey Ivanovskiy 2 days ago
- File deleted (
COMPARISON.md)
#5 Updated by Sergey Ivanovskiy 2 days ago
- File COMPARISON.textile
added
The deviations of 4GL and FWD in wiki format ShowHide
#11180 suites — trunk p2j vs 11180c¶
Side-by-side comparison of the two recorded runs in this directory:
| Run | Engine | Report |
|---|---|---|
| trunk | /home/sbi/projects/p2j, brz trunk rev ca@goldencode.com-20260807191255 (2026-08-07) |
"p2j/RESULTS.md":p2j/RESULTS.md |
| 11180c | /home/sbi/projects/11180c, brz revno 16697, rev-id sbi@goldencode.com-20260731102243 (2026-07-31) |
"11180c/RESULTS.md":11180c/RESULTS.md |
Both runs used the identical harness — same abl/launcher.p ?prog= driving, same click coordinates, same client reaping, no server restarts, 27 program runs each — so the differences below are engine-attributable, subject to the confound in §6.
Expected results throughout are the native OpenEdge baselines in docs/testsuite/*.md and docs/screen-testsuite.md. FWD behaviour is never the expectation.
1. Verdict tallies¶
| Suite | trunk | 11180c | |
|---|---|---|---|
| File-logged (10) | Pass / match | 3 | 6 |
| Partial | 2 | 2 | |
| Fail | 5 | 2 | |
| On-screen (17) | Match | 4 | 11 |
| Partial / deviates | 1 | 2 | |
| Undetermined | 2 | 0 | |
| Fail | 8 | 2 | |
| OE inconclusive | 2 | 2 |
2. File-logged suite — per test, with the exact log delta¶
< = trunk, > = 11180c. Diffs taken between p2j/logs/ and 11180c/logs/.
| # | Test | trunk | 11180c | Log delta |
|---|---|---|---|---|
| 1 | tc11180d_false_steal |
FAIL | FAIL | logs identical |
| 2 | tc11180e_dest_browse_leave |
FAIL | PARTIAL | < 08 FOCUS is now: <none/invalid> → > 08 FOCUS is now: FILL-IN/fC |
| 3 | tc11180f_btn |
PARTIAL | PASS | > 13 fSib LEAVE added |
| 4 | tc11180f_btn_browse |
PARTIAL | PARTIAL | > 13 fSib LEAVE added |
| 5 | tc11180f_btn_browse_ovl |
PASS | PASS | > 13 fSib LEAVE added |
| 6 | tc11180f_btn_browse_sep |
FAIL | PASS | 09 frmB ENTRY → 09 fDest LEAVE; settled focus <none/invalid> → FILL-IN/fSib; + 14 fSib LEAVE, 15 frmB LEAVE, 16 frMain ENTRY |
| 7 | test-11180-f-redirect-to-target |
FAIL | PASS | < 08 FOCUS is now: <none/invalid> → > 08 FOCUS is now: FILL-IN/fT |
| 8 | test-11180-g-teardown-apply |
PASS | PASS | identical |
| 9 | test-11180-g-teardown-hide-apply |
PASS | PASS | identical |
| 10 | test-11180-g-teardown-mouse |
FAIL | FAIL | identical |
Four logs are byte-identical (1, 8, 9, 10) — those code paths are untouched by 11180c.
The _sep change at line 09 is a substitution, not an addition: trunk's cosmetic frmB ENTRY is replaced by the fDest LEAVE that the OE baseline requires there.
3. On-screen suite — per probe¶
| Probe | trunk | 11180c | Movement |
|---|---|---|---|
A -entry-choose-leave |
FAIL | MATCH | Fixed — teardown pair fires twice; originating defect gone |
B1 -reentrant-leave-fillin |
MATCH | MATCH | unchanged |
B2 -reentrant-leave-browse |
MATCH | MATCH | unchanged |
B3 -reentrant-leave-frameleave |
undetermined | MATCH | trace unchanged; verdict resolved by evidence, not by a fix (§5) |
B4 -reentrant-leave-delete |
undetermined | DEVIATES | behaviour changed — 12 → 14 lines, abandoned-target LEAVE pair added |
B5 -reentrant-leave-browse-caller |
FAIL | MATCH | Fixed — Effect B correct, focus fiZ |
B6 -reentrant-leave-browse-nodelete |
MATCH | MATCH | unchanged |
B7 test-11180-1 |
PARTIAL | DEVIATES | focus fixed (<invalid> → fiThird), but LEAVE pair added |
C1 -d-false-steal |
FAIL | MATCH | Fixed — focus fB |
C2 -e-dest-browse-leave |
FAIL | MATCH | Fixed — Effect B + focus fC |
C3 -e-mouse-dest-browse-leave |
FAIL | FAIL | unchanged |
C4 -f-redirect-to-target-gui |
FAIL | MATCH | Fixed — focus fT; residual frmB ENTRY also gone |
C5 -g-teardown-apply-gui |
consistent | consistent | unchanged (OE inconclusive) |
C6 -g-teardown-hide-apply-gui |
MATCH | MATCH | unchanged |
C7 -g-teardown-mouse-gui |
diverges | diverges | unchanged (OE inconclusive) |
C8 -h-redirect-to-sibling-gui |
FAIL | MATCH | Fixed — fA LEAVE emitted in OE order; both residuals gone |
C9 -i-mouse-frame-leave-gui |
FAIL | FAIL | unchanged |
4. What the comparison shows¶
Six probes and three file tests went FAIL → MATCH, and every one sits on the APPLY 'ENTRY' path (Site A). The common mechanism: focus now settles on a real widget instead of <invalid>, and the abandoned-target LEAVE is emitted where OE emits it. The originating CounterAct defect (group A) is resolved.
Nothing on the mouse path moved. C3, C9, C7 and file test 10 are unchanged, and three of the four byte-identical logs are here. This matches the source: FocusManager.java is byte-identical between the two trees, so Site B received no change. docs/screen-testsuite.md §1 requires the two engine sites to agree; after 11180c they diverge more than before — Site A now emits Effect B, Site B still emits nothing and lets the clicked destination win.
Two probes moved the wrong way (B4, B7): the abandoned-target LEAVE pair is now emitted where OE emits nothing. Both are new in 11180c. The underlying reason is symmetrical and worth stating plainly — neither engine implements OE's both-Browse gate on that emit:
| Probe | Old focus → target | OE | trunk | 11180c |
|---|---|---|---|---|
B5 -browse-caller |
browse → browse | emits | silent ✗ | emits ✓ |
C2 -e-dest-browse-leave |
browse → browse | emits | silent ✗ | emits ✓ |
B4 -reentrant-leave-delete |
fill-in → browse | silent | silent ✓ | emits ✗ |
B7 test-11180-1 |
browse → fill-in | silent | silent ✓ | emits ✗ |
Trunk is uniformly silent, so it accidentally satisfies the two cases where OE is silent and fails the two where OE speaks. 11180c is uniformly loud, so it satisfies the opposite pair. Probes 4 and 7 exist precisely to pin this gate down. Focus outcomes are unaffected in both directions; the cost of the 11180c side is spurious LEAVE triggers on widgets that were never entered.
The same-frame sibling-redirect path is not affected on either engine: tc11180f_btn and tc11180f_btn_browse correctly emit no fDest LEAVE, and _sep correctly does.
5. Two verdict changes that are not behaviour changes¶
B3 and B4 were scored "undetermined" on trunk only because the probes' own dynamic overlay hides the trailing -- FOCUS now = … line on the FWD web canvas (see p2j/RESULTS.md §D3). In the 11180c run their event identities were resolved from line ordering — frame-before-widget is the ENTRY pair, widget-before-frame the LEAVE pair, as fixed by B2/B5 where the full text is legible and by the probe source, which registers only ENTRY/LEAVE loggers for those widgets.
- B3's trace is identical across the two runs. Its upgrade to MATCH is better evidence, not a fix.
- B4's trace genuinely changed (12 → 14 lines), so its move to DEVIATES is a real behaviour change.
6. Confound¶
11180c is revno 16697 (2026-07-31); the trunk tested is 2026-08-07. The two trees therefore differ by roughly a week of trunk drift plus the #11180 work, and the 119-line ThinClient.java diff contains both. The attributions in §4 are supported by the history entry (1105, HC 20260723 / SBI 20260731) and by the shape of the code (pendingEntryTarget, the destroyFrame() recovery, the downMouseButtonNewFocus relaxation), but a strictly clean A/B would compare 11180c against its own merge base rather than current trunk.
7. Open items after 11180c¶
- Site B (
FocusManager) has no corresponding change — the mouse path still drops the clicked target and never emits Effect B (3 failing probes, 1 inconclusive). - The abandoned-target
LEAVEfires without the both-Browse gate — 2 probes over-emit (§4). - The head-less twins of review points #1 and #2 still fail where their GUI twins pass —
tc11180dvs-d-false-steal,tc11180evs-e-dest-browse-leave. Same topology, opposite outcome, depending on whether the transfer is driven by a synchronous top-levelAPPLYchain or from inside theWAIT-FORloop. The file-logged suite therefore currently understates the fix and should be resolved before it is used as the regression gate.
Note: this directory lives under
deploy/, which is regenerated byant deployappand removed byant clean.all. An earlier rebuild already deletedp2j/logs/*.logonce (restored from the run's scratchpad). Copy this tree elsewhere if it needs to survive a rebuild.