This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch openformula in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit 0292ac91eb5b62e869c79e72baebd567056c678e Author: Pedro Giffuni <[email protected]> AuthorDate: Wed Nov 11 16:35:53 2026 -0500 docs/test: final Small Group inventory corrections (E.1.1) Reconcile grand total (144 applicable + 4 NOT_APPLICABLE allowances = 148 inventory entries); COUNTBLANK empty-string retained as diagnostic with expected '-'; DATE FN-016 normative expected value set to '-' with calcval AOO-diagnostic distinction; add SYN-001-criteria calcval row; document macOS harness portability constraints. Test data/docs only; no production changes. --- openformula-small-group-audit.md | 18 +++++++++--------- openformula-small-group-test-plan.md | 11 +++++++++++ test/odf-validate/calcval-cases14.tsv | 3 ++- test/odf-validate/openformula-small-group-1.4.tsv | 4 ++-- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/openformula-small-group-audit.md b/openformula-small-group-audit.md index 80a6d08d32..275151825a 100644 --- a/openformula-small-group-audit.md +++ b/openformula-small-group-audit.md @@ -145,14 +145,14 @@ The Small Group requires 110 functions (§2.3.2.E). All 110 have opcodes and imp | Category | Total | Status | Count | |----------|-------|--------|-------| -| Basic Limits | 4 | UNVERIFIED runtime | 0 verified, 4 UNVERIFIED | -| Syntax | 11 | UNVERIFIED runtime | 0 verified, 11 UNVERIFIED (SG-SYN-001 criteria §4.11.11 now included in E.1 test inventory) | +| Basic Limits | 4 | Awaiting runtime | 0 verified, 4 awaiting | +| Syntax | 11 | Awaiting runtime | 0 verified, 11 awaiting (SG-SYN-001 criteria §4.11.11 now included in E.1 test inventory) | | Conversions | 5 | IMPLEMENTED_UNVERIFIED | 0 verified, 5 UNVERIFIED | | Operators | 14 | IMPLEMENTED_UNVERIFIED | 0 verified, 14 UNVERIFIED | | Functions | 110 | IMPLEMENTED_UNVERIFIED | 0 verified, 110 UNVERIFIED | -| Allowances | 4 | Documented | 4 documented | +| Allowances | 4 | NOT_APPLICABLE | 4 documented (§2.3.2.F/G explicit permissions to omit) | -**Grand total: 148 requirements (4 Basic Limits + 11 Syntax + 5 Conversions + 14 Operators + 110 Functions + 4 Allowances), 0 runtime-verified, 148 UNVERIFIED.** +**Grand total: 148 inventory entries — 144 applicable requirements awaiting runtime verification (Basic Limits 4 + Syntax 11 + Conversions 5 + Operators 14 + Functions 110), 4 explicit allowances marked NOT_APPLICABLE (§2.3.2.F/G: inline arrays, complex numbers, multi-area references, reference union), 0 runtime-verified.** --- @@ -162,9 +162,9 @@ The Small Group requires 110 functions (§2.3.2.E). All 110 have opcodes and imp |---------------|---------|-------------|-------------------|----------|--------| | INDEX row-vector single-arg | 6.14.6 | Returns error (Milestone A fix: removed ODF 1.3 row-vector shortcut) | Error (ODF 1.4 removed rule) | Fixed in Milestone A; regression risk | interpr1.cxx; KNOWN-LIMITATIONS:71 | | CONVERT atm | 6.16.18 | 101325.1 Pa (Milestone C fix: corrected from 101324.996583 Pa) | 101325.1 Pa | Fixed in Milestone C | interpr2.cxx; KNOWN-LIMITATIONS:72 | -| DATE pre-1583 (FN-016-DATE-pre1583) | 6.10.2 | AOO observed #VALUE! for `DATE(1500;1;1)` (outside 1904 ≤ Year ≤ 9956) | §6.10.2 constrains Year/Month/Day; evaluators may evaluate out-of-constraint but `DATE(1500;1;1)` is implementation-defined/diagnostic, not a mandatory `#ERR` | Impl-defined/diagnostic (E.1 reclassified) | interpr2.cxx; IMPLEMENTATION-DEFINED:155 | +| DATE pre-1583 (FN-016-DATE-pre1583) | 6.10.2 | AOO observed #VALUE! for `DATE(1500;1;1)` (outside 1904 ≤ Year ≤ 9956) | §6.10.2 constrains Year/Month/Day; evaluators may evaluate out-of-constraint but `DATE(1500;1;1)` is implementation-defined/diagnostic, not a mandatory `#ERR`. Normative expected value is `-` (not an ODF conformance error assertion); calcval `DATE.pre1583` retains `#ERR` only as explicitly identified AOO-specific diagnostic. | Impl-defined/diagnostic (E.1 reclassified [...] | COUNTA empty cells / empty string | 6.13.7 | ODF 1.3 semantics | ODF 1.4 §6.13.7: counts non-blank cells; empty string `""` is not blank. E.1 adds fixtures for empty cells and `""` (where harness-expressible). | UNVERIFIED | interpr1.cxx:ScCount2 | -| COUNTBLANK "" in cell | 6.13.8 | Unverified | §6.13.8: implementation-defined whether a cell returning `""` is blank. E.1 documents limitation: calcval harness cannot place `""` into a data cell (scratch AA1:AF12 cleared each case); range fixtures cover truly empty cells. | Impl-defined/UNVERIFIED | interpr1.cxx:ScCountEmptyCells | +| COUNTBLANK "" in cell | 6.13.8 | Unverified | §6.13.8: implementation-defined whether a cell returning `""` is blank. `FN-014-COUNTBLANK-empty-cells` covers truly empty cells; `FN-014-COUNTBLANK-empty-string` retained as diagnostic only with expected `-` (NOT testing `""`-in-cell). `""`-in-cell blankness is impl-defined; calcval harness cannot place `""` into a data cell. | Impl-defined/UNVERIFIED | interpr1.cxx:ScCountEmptyCells | --- @@ -176,9 +176,9 @@ The Small Group requires 110 functions (§2.3.2.E). All 110 have opcodes and imp - **SG-BL-004**: corrected to 7 genuinely nested function levels (`IF(TRUE;IF(...IF(TRUE;1;2)...))`, 7 nested IF calls), balanced parens, deterministic result 1. - **SG-SYN-001**: added Criteria syntax §4.11.11 test `SYN-001-criteria` (`=DCOUNT(R1:T6;;V1:V2)`, expected 4) using existing calcval database/criteria fixtures. - **SG-SYN-009**: marked not directly executable in calcval harness (requires pre-defined named expression `MYNAME`); test remains UNVERIFIED with explicit note. -- **SG-FN-013/COUNTA**: fixtures added for truly empty cells and empty string `""` per §6.13.7 (empty string non-blank). Harness-expressible via inline args; empty-cell cases use unset D6:D7. -- **SG-FN-014/COUNTBLANK**: fixtures added for truly empty cells; `""`-in-range-cell case documented as implementation-defined per §6.13.8 and not directly reproducible because calcval clears scratch AA1:AF12 and does not pre-populate `""` cells. -- **SG-FN-016/FN-016-DATE-pre1583**: reclassified as implementation-defined/diagnostic (out-of-constraint Year < 1904), not mandatory `#ERR`; AOO observed `#VALUE!`. +- **SG-FN-013/COUNTA**: fixtures added for truly empty cells and empty string "" per §6.13.7 (empty string non-blank). Harness-expressible via inline args; empty-cell cases use unset D6:D7. +- **SG-FN-014/COUNTBLANK**: FN-014-COUNTBLANK-empty-cells (=COUNTBLANK(D6:D7), expected 2) covers truly empty cells. FN-014-COUNTBLANK-empty-string is retained as diagnostic only with expected - — it uses =COUNTBLANK(D6:D7) (genuinely empty cells, not ""), clearly labeled as NOT testing a cell containing ""; the required ""-in-cell fixture cannot be established by calcval harness (scratch cleared each case; no pre-populated "" data cells). ""-in-cell blankness is impl-defined per §6.13.8. +- **SG-FN-016/FN-016-DATE-pre1583**: reclassified as implementation-defined/diagnostic (out-of-constraint Year < 1904), not mandatory #ERR. Normative expected value is - (not an ODF conformance error assertion). The calcval DATE.pre1583 row retains #ERR only as an explicitly identified AOO-specific diagnostic assertion (AOO observed #VALUE!), clearly labeled as not an ODF conformance assertion. - **BITAND arity**: confirmed `BITAND.3params` (`=BITAND(6;3;1)` expected `#ERR`) remains valid per §6.6.2 (`BITAND(Integer X; Integer Y)`); no classification change. - **Runtime verification**: not performed (no AOO build tree; calcval harness macOS-only). Only static/syntax/fixture checks applied. diff --git a/openformula-small-group-test-plan.md b/openformula-small-group-test-plan.md index a6cb5cf26a..fb53b98130 100644 --- a/openformula-small-group-test-plan.md +++ b/openformula-small-group-test-plan.md @@ -72,6 +72,17 @@ The following cannot be verified until a configured AOO build tree exists: | ODF save/reload round-trip | No built office available | | Excel import/export | No built office available | +## Calcval Harness Portability Constraints + +The `test/odf-validate/` calcval launcher is macOS-only and is NOT directly Linux-compatible. It is not ported in this milestone. + +- **zsh shebangs and `${0:A:h}` path expansion**: `start.sh`, `runpy.sh`, and `env.sh` use `#!/bin/zsh` and `${0:A:h}` (zsh-specific path resolution) at `test/odf-validate/start.sh:1,23`, `test/odf-validate/runpy.sh:1,23`, `test/odf-validate/env.sh:23`. +- **macOS application bundle path**: `env.sh` sets `APP=${ODFV_APP:-$D/app/OpenOffice.app}/Contents`, and `start.sh:25` launches `$APP/MacOS/soffice` (an `.app` bundle structure, macOS-only). +- **Apple Python Framework default**: `env.sh:28` defaults `PY=/usr/local/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14` (macOS Python Framework path). +- **`lsof` startup check**: `start.sh:28` polls with `lsof -nP -iTCP:$2 -sTCP:LISTEN` to wait for the office socket — macOS/BSD-specific `lsof` invocation. + +No production source or runtime behavior changed. All corrections are test data/docs only. + ## Relationship to Milestones - **Milestone D**: Established the 110-function Small Group inventory diff --git a/test/odf-validate/calcval-cases14.tsv b/test/odf-validate/calcval-cases14.tsv index 41c2a8bb9f..da4e7cb0b5 100644 --- a/test/odf-validate/calcval-cases14.tsv +++ b/test/odf-validate/calcval-cases14.tsv @@ -147,7 +147,8 @@ COUNTA.empty =COUNTA(D6:D7) cell 0 6.13.7 COUNTA: truly empty cells are not coun COUNTA.emptystr =COUNTA(1;"";"x") cell 3 6.13.7 COUNTA: empty string "" is non-blank and counted COUNTBLANK.range =COUNTBLANK(D1:D3) cell 0 6.13.8 COUNTBLANK over range with no empty cells COUNTBLANK.empty =COUNTBLANK(D6:D7) cell 2 6.13.8 COUNTBLANK: truly empty cells are counted (D6:D7 unset) -DATE.pre1583 =DATE(1500;1;1) cell #ERR 6.10.2 DATE(1500;1;1) outside constraints (Year>=1904); impl-defined/diagnostic, not mandatory #ERR (AOO observed #VALUE!) +DATE.pre1583 =DATE(1500;1;1) cell #ERR 6.10.2 DATE(1500;1;1) outside constraints (Year>=1904); impl-defined/diagnostic per ODF 1.4 — NOT mandatory #ERR. THIS CALCVAL ASSERTION IS AOO-SPECIFIC DIAGNOSTIC ONLY (observed #VALUE!), not an ODF conformance assertion. +SYN-001-criteria =DCOUNT(R1:T6;;V1:V2) cell 4 6.x Criteria syntax §4.11.11 via DCOUNT against existing R1:T6 database and V1:V2 criteria fixtures (Age>=30 → B,C,D,E) INDEX.rowvec.single =INDEX(H1:L1;3) cell #ERR 6.14.6 INDEX row vector single arg: ODF 1.4 error (Milestone A fix) INDEX.rowvec.colarg =INDEX(H1:L1;;3) cell 30 6.14.6 INDEX row vector with column arg only (col 3 of H1:L1=10,20,30,40,50) INDEX.row.outrange =INDEX(D1:D5;6) cell #ERR 6.14.6 INDEX row out of range diff --git a/test/odf-validate/openformula-small-group-1.4.tsv b/test/odf-validate/openformula-small-group-1.4.tsv index f0cd7ed5cf..2cdaae78de 100644 --- a/test/odf-validate/openformula-small-group-1.4.tsv +++ b/test/odf-validate/openformula-small-group-1.4.tsv @@ -67,10 +67,10 @@ SG-FN-013 6.13.7 FN-013-COUNTA-empty-cells =COUNTA(D6:D7) 0 - UNVERIFIED COUNTA SG-FN-013 6.13.7 FN-013-COUNTA-empty-string =COUNTA(1;"";"x") 3 - UNVERIFIED COUNTA counts empty string "" as non-blank per §6.13.7 SG-FN-014 6.13.8 FN-014-COUNTBLANK-nonempty =COUNTBLANK(D1:D3) 0 - UNVERIFIED COUNTBLANK over range with no empty cells SG-FN-014 6.13.8 FN-014-COUNTBLANK-empty-cells =COUNTBLANK(D6:D7) 2 - UNVERIFIED COUNTBLANK over truly empty cells (D6:D7 unset) -SG-FN-014 6.13.8 FN-014-COUNTBLANK-empty-string =COUNTBLANK(D6:D7) 2 - UNVERIFIED COUNTBLANK does not count "" text values as blank in ranges; harness cannot place "" in data cells (scratch cleared), so this verifies only empty-cell counting; ""-in-cell case impl-defined per §6.13.8 +SG-FN-014 6.13.8 FN-014-COUNTBLANK-empty-string =COUNTBLANK(D6:D7) - - UNVERIFIED DIAGNOSTIC: does NOT test cell containing "" — D6:D7 are genuinely empty cells, already covered by FN-014-COUNTBLANK-empty-cells. Required ""-in-cell fixture cannot be established by calcval harness (scratch AA1:AF12 cleared each case; no pre-populated "" data cells). ""-in-cell blankness is impl-defined per §6.13.8. # ===== Functions (§6.x) — Priority 2: DATE pre-1583 ===== -SG-FN-016 6.10.2 FN-016-DATE-pre1583 =DATE(1500;1;1) #ERR - UNVERIFIED DATE(1500;1;1) outside §6.10.2 constraints (Year>=1904); impl-defined/evaluator-diagnostic, not mandatory #ERR (AOO observed #VALUE!) +SG-FN-016 6.10.2 FN-016-DATE-pre1583 =DATE(1500;1;1) - - UNVERIFIED DATE(1500;1;1) outside §6.10.2 constraints (Year>=1904); result impl-defined/diagnostic, NOT a mandatory ODF error. AOO observed #VALUE! as a diagnostic only — not a conformance assertion. SG-FN-067 6.13.27 FN-067-NA =NA() #N/A - UNVERIFIED NA function returns #N/A error # ===== Functions (§6.x) — Priority 3: INDEX =====
