Task Summary
The PyBuilder sbt project is defined in the root build.sbt but not listed in the TexeraProject aggregate(...). As a result, running sbt test or sbt compile from the repository root silently skips it. CI explicitly invokes sbt "PyBuilder/jacoco" so coverage is still reported, but the inconsistency means a local sbt test does not match the CI matrix.
Additionally, while PythonLexerUtils and the pyb"..." macro are well-covered, a few non-macro pieces of PythonTemplateBuilder are not exercised by any spec:
PythonTemplateBuilder.+(String) which throws UnsupportedOperationException
fromInterpolated parts/args length precondition
render() CR/CRLF → LF normalization
PyStringTypes.{EncodableStringFactory, PyLiteralFactory} factories and their empty constants
wrapWithPythonDecoderExpr directly
concatChunks cross-boundary text merging
Add PyBuilder to the root aggregate, and add a unit spec covering the gaps above.
Task Type
Task Summary
The
PyBuildersbt project is defined in the rootbuild.sbtbut not listed in theTexeraProjectaggregate(...). As a result, runningsbt testorsbt compilefrom the repository root silently skips it. CI explicitly invokessbt "PyBuilder/jacoco"so coverage is still reported, but the inconsistency means a localsbt testdoes not match the CI matrix.Additionally, while
PythonLexerUtilsand thepyb"..."macro are well-covered, a few non-macro pieces ofPythonTemplateBuilderare not exercised by any spec:PythonTemplateBuilder.+(String)which throwsUnsupportedOperationExceptionfromInterpolatedparts/args length preconditionrender()CR/CRLF → LF normalizationPyStringTypes.{EncodableStringFactory, PyLiteralFactory}factories and theiremptyconstantswrapWithPythonDecoderExprdirectlyconcatChunkscross-boundary text mergingAdd
PyBuilderto the root aggregate, and add a unit spec covering the gaps above.Task Type