The GitHub Actions job "SiteMesh 2 Compatibility" on grails-core.git/feat/gorm-registry-core-impl has succeeded. Run started by GitHub user borinquenkid (triggered by borinquenkid).
Head commit for run: 33ec62c3166d924dace9bbaf92408430af517592 / Walter Duque de Estrada <[email protected]> test(grails-datamapping-core): add DynamicFinderCoverageSpec closing PR #15780 coverage gap DynamicFinder.java had 19.4% Codecov patch coverage (worst remaining item in the PR #15780 coverage checklist). The pre-existing DynamicFinderSpec only covered the static buildMatchSpec helper. Added DynamicFinderCoverageSpec, exercising the real method-name-parsing / expression-building pipeline through actual dynamic finder calls on a SimpleMapDatastore-backed entity (Equal, GreaterThan/LessThan/Between, Like/InList/NotEqual, IsNull/IsNotNull, Not-negation, And/Or combination, MissingMethodException on arg-count/conversion failures), list(Map) argument handling (sort as string/Map, fetch as FetchType map/string alias, cache, no-sort fallback), getFetchMode's alias table, where{}.list() detached criteria fetch/order, registerNewMethodExpression's custom-clause extension hook, the MappingContext-only constructor, the invoke(..., DetachedCriteria, ...) overload, and populateArgumentsForCriteria(BuildableCriteria, Map) directly (confirmed via repo-wide grep to be dead code - no production caller uses this overload, only the (Class, Query, Map) one - but still a public static API worth covering). Notable findings, neither a bug: - The operator-style where{ age > 20 } DSL relies on a compile-time AST transform this plain test-module compilation doesn't apply; the method-call DSL (where { gt('age', 20) }) works without it. - A custom MethodExpression's finder clause keyword is the registered class's simple name exactly (e.g. class AlwaysTrue -> findAllByXAlwaysTrue), not a suffixed variant. - CriteriaBuilder instances from a bare createCriteria() (outside an active query-execution closure) have a null internal query field, so join()/ cache() NPE when called directly; populateArgumentsForCriteria(BuildableCriteria, Map) is therefore only exercised here via its sort/order branches. DynamicFinder.java line coverage: 46.5% (194/417) before this item's work -> 74.0% (305/412) after, per local JaCoCo. Full grails-datamapping-core suite and codeStyle both pass with no regressions. Co-Authored-By: Claude Sonnet 5 <[email protected]> Report URL: https://github.com/apache/grails-core/actions/runs/29181868504 With regards, GitHub Actions via GitBox
