Skip to content

GROOVY-12055: Assess toLower/UpperCase calls which should use Locale.…#2579

Merged
paulk-asert merged 1 commit into
apache:masterfrom
paulk-asert:groovy12055
Jun 1, 2026
Merged

GROOVY-12055: Assess toLower/UpperCase calls which should use Locale.…#2579
paulk-asert merged 1 commit into
apache:masterfrom
paulk-asert:groovy12055

Conversation

@paulk-asert
Copy link
Copy Markdown
Contributor

…ROOT

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR makes locale-sensitive case conversions deterministic by using Locale.ROOT for internal identifiers, option parsing, OS checks, file extensions, and enum lookups across Groovy modules.

Changes:

  • Replaces default-locale toLowerCase() / toUpperCase() calls with Locale.ROOT.
  • Adds java.util.Locale imports where needed in Java sources.
  • Applies the change across console, groovysh, SQL, Swing, Grape, GroovyDoc, templates, and core utilities.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
subprojects/groovy-typecheckers/src/main/groovy/groovy/typecheckers/PurityChecker.groovy Normalizes allow-list parsing with root locale.
subprojects/groovy-test/src/main/groovy/groovy/mock/interceptor/MockInterceptor.groovy Uses root locale for mock getter/setter name construction.
subprojects/groovy-templates/src/main/groovy/groovy/text/markup/MarkupBuilderCodeTransformer.java Uses root locale for include type lookup.
subprojects/groovy-swing/src/main/groovy/groovy/swing/SwingBuilder.groovy Normalizes focus condition strings with root locale.
subprojects/groovy-swing/src/main/groovy/groovy/swing/factory/LayoutFactory.groovy Checks uppercase layout constants with root locale.
subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java Uses root locale during SQL keyword scanning.
subprojects/groovy-sql/src/main/java/groovy/sql/ResultSetMetaDataWrapper.java Uses root locale for metadata getter name construction.
subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyEngine.java Normalizes groovysh serialization formats with root locale.
subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyConsoleEngine.groovy Uses root locale for command enum lookup.
subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyCommands.groovy Normalizes command format option values with root locale.
subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyBuiltins.groovy Uses root locale for built-in command enum lookup.
subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/GroovyDocTool.java Normalizes Java language level strings with root locale.
subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/antlr4/GroovyDocParser.java Normalizes GroovyDoc parser phase names with root locale.
subprojects/groovy-grape-maven/src/main/groovy/groovy/grape/maven/GrapeMaven.groovy Normalizes OS name and architecture detection with root locale.
subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/GinqAstWalker.groovy Uses root locale when checking join names.
subprojects/groovy-console/src/main/groovy/groovy/console/ui/ThemeManager.groovy Normalizes theme keys, OS checks, and style parsing with root locale.
subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleTextEditor.java Uses root locale for macOS detection.
subprojects/groovy-console/src/main/groovy/groovy/console/ui/Console.groovy Uses root locale for OS name and file extension normalization.
src/main/java/org/codehaus/groovy/tools/javac/JavaStubCompilationUnit.java Uses root locale for accepted file extension checks.
src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java Normalizes warning-level configuration with root locale.
src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java Uses root locale for accessor-to-property name conversion.
src/main/java/groovy/util/ObjectGraphBuilder.java Uses root locale for generated class/node name casing.
src/main/groovy/groovy/grape/GrapeUtil.groovy Uses root locale for JAR extension detection.
src/main/groovy/groovy/beans/ListenerListASTStubber.groovy Uses root locale for generated listener method names.

Comment thread subprojects/groovy-sql/src/main/java/groovy/sql/Sql.java Outdated
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 31, 2026

Codecov Report

❌ Patch coverage is 52.83019% with 25 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.1776%. Comparing base (9a560a6) to head (7696025).
⚠️ Report is 5 commits behind head on master.

Files with missing lines Patch % Lines
...c/main/groovy/groovy/cli/picocli/CliBuilder.groovy 33.3333% 0 Missing and 4 partials ⚠️
src/main/java/groovy/util/ObjectGraphBuilder.java 40.0000% 3 Missing ⚠️
...e/src/main/groovy/groovy/console/ui/Console.groovy 0.0000% 2 Missing ⚠️
.../main/groovy/groovy/console/ui/ThemeManager.groovy 75.0000% 1 Missing and 1 partial ⚠️
...c/main/groovy/groovy/grape/maven/GrapeMaven.groovy 0.0000% 2 Missing ⚠️
...apache/groovy/groovysh/jline/GroovyBuiltins.groovy 0.0000% 2 Missing ⚠️
src/main/groovy/groovy/grape/GrapeUtil.groovy 0.0000% 0 Missing and 1 partial ⚠️
...us/groovy/tools/javac/JavaStubCompilationUnit.java 0.0000% 1 Missing ⚠️
...c/main/groovy/groovy/cli/commons/CliBuilder.groovy 75.0000% 0 Missing and 1 partial ⚠️
...in/groovy/groovy/cli/commons/OptionAccessor.groovy 0.0000% 0 Missing and 1 partial ⚠️
... and 6 more
Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##               master      #2579        +/-   ##
==================================================
- Coverage     68.1789%   68.1776%   -0.0013%     
  Complexity      33164      33164                
==================================================
  Files            1511       1511                
  Lines          126237     126232         -5     
  Branches        22897      22897                
==================================================
- Hits            86067      86062         -5     
- Misses          32529      32530         +1     
+ Partials         7641       7640         -1     
Files with missing lines Coverage Δ
.../groovy/groovy/beans/ListenerListASTStubber.groovy 67.5000% <100.0000%> (ø)
...va/org/apache/groovy/ast/tools/ClassNodeUtils.java 85.4839% <100.0000%> (ø)
...codehaus/groovy/control/CompilerConfiguration.java 72.6351% <100.0000%> (ø)
...oovy/ginq/provider/collection/GinqAstWalker.groovy 90.2864% <100.0000%> (ø)
...codehaus/groovy/tools/groovydoc/GroovyDocTool.java 80.3279% <100.0000%> (ø)
...e/groovy/groovysh/jline/GroovyConsoleEngine.groovy 75.0000% <100.0000%> (ø)
...main/java/groovy/sql/ResultSetMetaDataWrapper.java 70.5882% <100.0000%> (ø)
...jects/groovy-sql/src/main/java/groovy/sql/Sql.java 67.7858% <100.0000%> (ø)
...oovy/text/markup/MarkupBuilderCodeTransformer.java 89.4737% <100.0000%> (ø)
...ovy/groovy/mock/interceptor/MockInterceptor.groovy 68.4210% <100.0000%> (ø)
... and 17 more

... and 6 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@testlens-app
Copy link
Copy Markdown

testlens-app Bot commented May 31, 2026

✅ All tests passed ✅

🏷️ Commit: 7696025
▶️ Tests: 100159 executed
⚪️ Checks: 30/30 completed


Learn more about TestLens at testlens.app.

@paulk-asert paulk-asert merged commit 016b083 into apache:master Jun 1, 2026
31 checks passed
@paulk-asert paulk-asert deleted the groovy12055 branch June 1, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants