diff --git a/maven/javase/src/test/java/com/codename1/impl/javase/JavaSEPortFontMappingTest.java b/maven/javase/src/test/java/com/codename1/impl/javase/JavaSEPortFontMappingTest.java index e865aa191b..c7528ca498 100644 --- a/maven/javase/src/test/java/com/codename1/impl/javase/JavaSEPortFontMappingTest.java +++ b/maven/javase/src/test/java/com/codename1/impl/javase/JavaSEPortFontMappingTest.java @@ -5,14 +5,28 @@ import java.lang.reflect.Field; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; public class JavaSEPortFontMappingTest { - + private Boolean originalIsIOS; + private JavaSEPort originalInstance; + private boolean instanceCaptured; + + @BeforeEach + public void captureInstance() { + // new JavaSEPort() inside the loadTrueTypeFont tests overwrites the + // global JavaSEPort.instance via the port's constructor. Other test + // classes (CodenameOneExtensionTest) reach back through that static + // to drive the live Display, so leaking the throwaway port across + // test classes causes order-dependent failures. + originalInstance = JavaSEPort.instance; + instanceCaptured = true; + } @AfterEach public void tearDown() throws Exception { @@ -20,6 +34,9 @@ public void tearDown() throws Exception { if (originalIsIOS != null) { setIsIOS(originalIsIOS.booleanValue()); } + if (instanceCaptured) { + JavaSEPort.instance = originalInstance; + } } private void setIsIOS(boolean value) throws Exception {