This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/grails-intellij-plugin.git


The following commit(s) were added to refs/heads/main by this push:
     new bef3709  Use a real JDK for GrailsCodecTest (needs Swing/AWT) on 2026.2
bef3709 is described below

commit bef370915b9065aece97e3621645309ddace3a67
Author: James Daugherty <[email protected]>
AuthorDate: Sun Jul 19 08:49:34 2026 -0400

    Use a real JDK for GrailsCodecTest (needs Swing/AWT) on 2026.2
    
    Make the test JDK in GrailsTestCase overridable via getTestJdk() (default 
Mock
    JDK 11). GrailsCodecTest's MmmCodec returns javax.swing.JButton/JPanel, so
    getBackground()/getUI() resolution needs java.awt/javax.swing, which the 
minimal
    Mock JDK 11 omits; override getTestJdk() there to use a real JDK.
---
 .../org/jetbrains/plugins/groovy/grails/GrailsCodecTest.java | 12 ++++++++++++
 .../org/jetbrains/plugins/groovy/grails/GrailsTestCase.java  | 12 +++++++++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/test/org/jetbrains/plugins/groovy/grails/GrailsCodecTest.java 
b/test/org/jetbrains/plugins/groovy/grails/GrailsCodecTest.java
index 6761dd1..f0ca4bf 100644
--- a/test/org/jetbrains/plugins/groovy/grails/GrailsCodecTest.java
+++ b/test/org/jetbrains/plugins/groovy/grails/GrailsCodecTest.java
@@ -16,12 +16,24 @@
 
 package org.jetbrains.plugins.groovy.grails;
 
+import com.intellij.openapi.projectRoots.JavaSdk;
+import com.intellij.openapi.projectRoots.Sdk;
 import com.intellij.psi.PsiFile;
+import com.intellij.testFramework.IdeaTestUtil;
 import com.intellij.usageView.UsageInfo;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.Collection;
+import java.util.function.Supplier;
 
 public class GrailsCodecTest extends GrailsTestCase {
+  // MmmCodec returns javax.swing types (JButton/JPanel), so this test needs a 
real JDK:
+  // the minimal Mock JDK 11 omits javax.swing/java.awt, leaving 
getBackground()/getUI() unresolved.
+  @Override
+  protected @NotNull Supplier<Sdk> getTestJdk() {
+    return () -> JavaSdk.getInstance().createJdk("TEST_JDK", 
IdeaTestUtil.requireRealJdkHome(), false);
+  }
+
   public void testHighlighting() {
     myFixture.addFileToProject("grails-app/utils/ccc/MmmCodec.groovy", """
       
diff --git 
a/testFramework/src/org/jetbrains/plugins/groovy/grails/GrailsTestCase.java 
b/testFramework/src/org/jetbrains/plugins/groovy/grails/GrailsTestCase.java
index f0047c8..c68410c 100644
--- a/testFramework/src/org/jetbrains/plugins/groovy/grails/GrailsTestCase.java
+++ b/testFramework/src/org/jetbrains/plugins/groovy/grails/GrailsTestCase.java
@@ -246,6 +246,14 @@ public abstract class GrailsTestCase extends 
LightJavaCodeInsightFixtureTestCase
     return false;
   }
 
+  /**
+   * The JDK for the test project. Defaults to Mock JDK 11 (see {@link 
#getProjectDescriptor()});
+   * override to supply a real JDK when a test needs classes the minimal mock 
omits (e.g. Swing/AWT).
+   */
+  protected @NotNull 
java.util.function.Supplier<com.intellij.openapi.projectRoots.Sdk> getTestJdk() 
{
+    return IdeaTestUtil::getMockJdk11;
+  }
+
   @NotNull
   @Override
   protected LightProjectDescriptor getProjectDescriptor() {
@@ -253,7 +261,9 @@ public abstract class GrailsTestCase extends 
LightJavaCodeInsightFixtureTestCase
     // by default) no longer exists: mock JDKs with feature <= 9 resolve to a 
filesystem path that is
     // not shipped with the platform distribution, so java.lang.*/java.util.* 
become unresolvable.
     // Mock JDK 11+ is resolved from the artifacts repository instead, so pin 
it explicitly.
-    return new DefaultLightProjectDescriptor(IdeaTestUtil::getMockJdk11) {
+    // Tests that need JDK classes absent from the minimal mock (e.g. 
javax.swing/java.awt) can
+    // override getTestJdk() to use a real JDK.
+    return new DefaultLightProjectDescriptor(getTestJdk()) {
       @Override
       public void configureModule(@NotNull Module module, @NotNull 
ModifiableRootModel model, @NotNull ContentEntry contentEntry) {
         super.configureModule(module, model, contentEntry);

Reply via email to