From 92a674d8443392a586310d88a407496ed9cfbf08 Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Fri, 3 Oct 2025 09:00:37 -0400 Subject: [PATCH] Test for GTK4 crashes when creating and closing many shells --- .../swt/tests/junit/AllNonBrowserTests.java | 1 + .../junit/OpenShellManyManyTimesTest.java | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/OpenShellManyManyTimesTest.java diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java index a125c34ad3..36ce2c8066 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java @@ -39,6 +39,7 @@ // Rest of tests alphabetically DPIUtilTests.class, // JSVGRasterizerTest.class, // + OpenShellManyManyTimesTest.class, // Test_org_eclipse_swt_accessibility_Accessible.class, // Test_org_eclipse_swt_accessibility_AccessibleControlEvent.class, // Test_org_eclipse_swt_accessibility_AccessibleEvent.class, // diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/OpenShellManyManyTimesTest.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/OpenShellManyManyTimesTest.java new file mode 100644 index 0000000000..25fdc7b2f2 --- /dev/null +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/OpenShellManyManyTimesTest.java @@ -0,0 +1,36 @@ +/******************************************************************************* + * Copyright (c) 2025 Kichwa Coders Canada, Inc. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.swt.tests.junit; + +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.junit.jupiter.api.RepeatedTest; + + +public class OpenShellManyManyTimesTest { + + @RepeatedTest(value = 1000) + public void test_OpenShell() { + Display display = Display.getCurrent(); + if (display == null) { + display = Display.getDefault(); + } + + Shell shell = new Shell(display); + try { + shell.open(); + shell.setFocus(); + SwtTestUtil.processEvents(); + } finally { + shell.dispose(); + } + } +}