From c3ceb9d30ba33dc2b955d9f731171355147cd7ba Mon Sep 17 00:00:00 2001 From: Raluca Sauciuc Date: Fri, 9 Jul 2021 12:37:37 -0700 Subject: Update the stubbed GraphicsDevice to not assume headless mode AndroidStudioUsageTrackerTest.testGetMachineDetails fails when running from the IDE on Windows: java.lang.AssertionError at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.fail(Assert.java:95) at com.android.tools.analytics.stubs.StubGraphicsConfiguration.getDevice(StubGraphicsConfiguration.kt:34) at com.intellij.ui.scale.JBUIScale.sysScale(JBUIScale.java:278) at com.android.tools.idea.stats.AndroidStudioUsageTracker.getDisplayDetails(AndroidStudioUsageTracker.kt:152) at com.android.tools.idea.stats.AndroidStudioUsageTracker.getMachineDetails(AndroidStudioUsageTracker.kt:172) at com.android.tools.idea.stats.AndroidStudioUsageTrackerTest.testGetMachineDetails(AndroidStudioUsageTrackerTest.kt:104) This is because JBUIScale.sysScale determines HiDPI status based on the running JRE and the java.awt.headless property. The headless property was only set during IdeaTestSuiteBase initialization, as part of the early TestApplication setup, which explains why the test passes CI and only fails when running by itself. We're trying to clean up the early TestApplication initialization, which means StubGraphicsDevice has to work no matter what the headless status is. Bug: 193111860 Test: AndroidStudioUsageTrackerTest Change-Id: Idaea660929579810ca88552d736956ea3261597c --- .../tools/analytics/stubs/StubGraphicsDevice.kt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'shared') diff --git a/shared/src/test/java/com/android/tools/analytics/stubs/StubGraphicsDevice.kt b/shared/src/test/java/com/android/tools/analytics/stubs/StubGraphicsDevice.kt index 7bfb862..59b5ae6 100644 --- a/shared/src/test/java/com/android/tools/analytics/stubs/StubGraphicsDevice.kt +++ b/shared/src/test/java/com/android/tools/analytics/stubs/StubGraphicsDevice.kt @@ -21,6 +21,7 @@ import org.junit.Assert.fail import java.awt.GraphicsConfiguration import java.awt.GraphicsDevice import java.awt.Rectangle +import java.awt.geom.AffineTransform /** * A Stub implementation of [GraphicsDevice] for use in tests. By default fails on any call. @@ -51,16 +52,21 @@ open class StubGraphicsDevice : GraphicsDevice() { @JvmStatic /** Creates a GraphicsDevice with specified width & height. */ - fun withBounds(width: Int, height: Int): GraphicsDevice { - return object : StubGraphicsDevice() { - override fun getDefaultConfiguration(): GraphicsConfiguration? { - return object : StubGraphicsConfiguration() { - override fun getBounds(): Rectangle? { - return Rectangle(width, height) - } - } + fun withBounds(width: Int, height: Int): GraphicsDevice = + StubGraphicsDeviceWithBounds(width, height) + + private class StubGraphicsDeviceWithBounds constructor( + val width: Int, + val height: Int + ) : StubGraphicsDevice() { + override fun getDefaultConfiguration(): GraphicsConfiguration { + return object : StubGraphicsConfiguration() { + override fun getBounds() = Rectangle(width, height) + override fun getDevice() = this@StubGraphicsDeviceWithBounds + override fun getDefaultTransform() = AffineTransform() } } + override fun getType(): Int = TYPE_RASTER_SCREEN } } } -- cgit v1.2.3