The GitHub Actions job "Groovy Snapshot Canary Build" on grails-core.git/chore/cleanup-AbstractCriteriaBuilder has failed. Run started by GitHub user jdaugherty (triggered by jdaugherty).
Head commit for run: c0471a1c8800628a331158f38c77c996d8951f2d / Walter Duque de Estrada <[email protected]> Clean up AbstractCriteriaBuilder and add unit test coverage AbstractCriteriaBuilder had no direct unit tests and, being abstract, can only be exercised through its concrete subclasses. Adds a mock-collaborator CriteriaBuilderSpec in grails-datamapping-core (via grails.gorm.CriteriaBuilder) and extends the matching spec in grails-datamapping-rx. The previous SimpleMapDatastore-backed spec moves to CriteriaBuilderIntegrationSpec. Every DSL call is verified against the exact Query.Criterion class, property and value it adds, rather than a wildcard add(_) interaction. Along the way: - grails.gorm.CriteriaBuilder's cache/readOnly/join(String)/select overrides duplicated AbstractCriteriaBuilder's bodies only to narrow the return type for chaining. They now cast-and-delegate to super, matching the pattern already used by grails.gorm.rx.DetachedCriteria. - scroll(Closure) re-entered invokeMethod(SCROLL_CALL, [c]) to reuse the criteria-construction logic. A zero-arg or null call resolved, via the meta-method lookup, back to scroll(Closure) with a null argument and recursed until StackOverflowError. The shared logic is extracted into executeCriteriaConstruction() and scroll() calls it directly. - ltSome(String, QueryableCriteria) added a LessThanEqualsSome criterion instead of LessThanSome; AbstractDetachedCriteria already built the right one. Surfaced by the exact-criterion assertions in the new spec. - rlike validated and reported its property under the "like" label. - Static-analysis cleanup: missing @Override annotations, parameterized raw Class/PersistentProperty/Closure/QueryableCriteria/DetachedCriteria uses, instanceof pattern variables, getLast()/removeLast(), the duplicated MetaMethod lookup extracted into a helper with a NOT_FOUND sentinel, and the construction-method check and order() using the class's own constants instead of reaching into the grails.gorm.CriteriaBuilder subclass. in/inList(String, Collection) keep the raw Collection parameter because Criteria declares them raw. Co-Authored-By: Claude Sonnet 5 <[email protected]> Report URL: https://github.com/apache/grails-core/actions/runs/36738032411 With regards, GitHub Actions via GitBox
