aglinxinyuan opened a new issue, #7987: URL: https://github.com/apache/texera/issues/7987
### Task Summary Three small workflow-operator gaps, bundled because none is worth a PR alone: | File | Coverage | |---|---| | `visualization/barChart/BarChartOpDesc.scala` | 88.2% — 1 missed + 3 partial of 34 | | `huggingFace/HuggingFaceSentimentAnalysisOpDesc.scala` | 88.0% — 0 missed + 3 partial of 25 | | `source/fetcher/RandomUserAgent.java` | 85.2% — 2 missed + 2 partial of 27, and **no spec at all** | Note the shape: `HuggingFaceSentimentAnalysisOpDesc` is already at 100% JaCoCo line-hit, so its entire gap is unclosed branch arms on lines that already execute — the case Codecov penalises and line-hit hides. `HashJoinProbeOpExec` and `OPVersion.java` look like they belong here and do not: assess them separately rather than assuming. Traps: 1. **`WorkflowOperator/jacoco` needs `FileScanSourceOpExecSpec` excluded, but not for the reason usually given.** That suite runs its 7 tests successfully and then aborts at *suite* level with `java.nio.file.FileSystemException: ...test_large_binary.txt: The process cannot access the file because it is being used by another process` — a Windows file-lock in its own cleanup, because a reader is still open. The `RepositoryNotFoundException` that appears in the same log comes from `OPVersion.<clinit>` → `LogicalOp.getOperatorVersion`, is caught by `OPVersion`'s own try/catch, and is unrelated to the abort. The exclusion is still right for measurement; the mechanism matters because it tells you the file **is** leaked into the source tree on any unfiltered run, and it must be deleted before committing or it trips the licence-header check. 2. Since sbt-jacoco runs unforked, a failing test task skips `saveRuntimeData` and emits an **all-zero** report rather than a partial one — so an unexcluded run gives you nothing, not less. 3. **Module-wide branch totals are not quotable here.** `IntervalJoinOpExec`'s covering spec uses an unseeded RNG, so its branch count drifts run to run. Report per-file figures. 4. For the descriptors: `pyb` interpolation encodes nested encodable strings, so assert on arg-markers and structure rather than raw interpolated values. The house convention, enforced in review, is a JSON round-trip test per LogicalOp-subtype spec. Do **not** define a descriptor subclass inside a spec — `PythonCodeRawInvalidTextSpec` instantiates every subclass by reflection and a test-only subtype breaks it. 5. `RandomUserAgent.java` is Java, so the Scala `$anonfun`/`SyntheticFilter` reasoning does not apply; check what javac emitted. ### 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]
