aglinxinyuan opened a new issue, #7882:
URL: https://github.com/apache/texera/issues/7882
### Task Summary
Two operator-evaluation files in `common/workflow-operator` have gaps that
are entirely branch-arm partials on already-executed lines:
| File | Coverage |
|---|---|
| `dictionary/DictionaryMatcherOpExec.scala` | 88.0% — 0 missed, 6 partial
of 50 lines |
| `filter/FilterPredicate.java` | 90.0% — 1 missed, 5 partial of 60 lines |
Both are pure — no DB, no actors, no network — so anything blocked here is
blocked structurally.
Two things are worth knowing beyond coverage, because the behaviour is less
pinned than the percentages suggest:
- **`FilterPredicate`'s comparison switch is barely constrained.** Four of
its six comparison arms can be swapped for a neighbouring arm and stay green
against the whole module. That is a correctness hole rather than a counting
exercise.
- **`URL_STOP_WORDS_SET` has no proof it does anything.** A test that only
exercises one entry leaves the rest free: truncating the list to a single
element survives. Pin every entry, or the list is decoration.
Traps:
1. **There is a spec-order landmine in `DictionaryMatcherOpExecSpec`.**
`opExec` is a shared `var`, and the final test ("close properly") asserts
`tokenizedDictionaryEntries == null` on whatever the *previous* test left
behind. That only holds because the preceding test uses `SUBSTRING`: `close()`
clears `tokenizedDictionaryEntries` but never nulls it — only
`dictionaryEntries` and `luceneAnalyzer` are nulled. Insert any
`CONJUNCTION_INDEXBASED` test immediately above "close properly" and that
pre-existing test **fails**. New tests must be appended *after* it.
2. **`FilterPredicate.java` is Java**, so the Scala `$anonfun` /
`SyntheticFilter` reasoning does not apply. Check what javac emitted. Four of
its remaining gap lines are dead: a private-static default arm and two null
ternaries the caller already guards.
3. **A bare `WorkflowOperator/jacoco` can produce no report at all.**
`FileScanSourceOpExecSpec` aborts locally on a Windows file lock, and since
sbt-jacoco runs unforked a failing test task skips `saveRuntimeData` entirely —
you get no `report/` directory rather than an all-zero one. Exclude that suite
by name, identically in the before and after run.
4. Running the module suite writes `test_large_binary.txt` into the source
tree as an untracked file; delete it or it lands in the commit and trips the
license-header check.
`DictionaryMatcherOpExec` line 62 keeps one structurally unreachable arm, so
it cannot exceed 49/50.
### Task Type
- [ ] Refactor / Cleanup
- [ ] DevOps / Deployment / CI
- [x] Testing / QA
- [ ] Documentation
- [ ] Performance
- [ ] Other
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]