OSDN Git Service

Add checks against incorrect context use in sysui tests
authorJason Monk <jmonk@google.com>
Thu, 1 Jun 2017 15:21:14 +0000 (11:21 -0400)
committerJason Monk <jmonk@google.com>
Thu, 1 Jun 2017 15:21:14 +0000 (11:21 -0400)
Fix incorrect usages found by this check.

Test: runtest systemui
Bug: 62251903
Change-Id: I45a762f96838e617833c1cbe003e583087bb8176

packages/SystemUI/tests/src/com/android/systemui/SysuiBaseFragmentTest.java
packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
packages/SystemUI/tests/src/com/android/systemui/util/wakelock/WakeLockTest.java
tests/testables/src/android/testing/ViewUtils.java

index 15cebc7..8905d72 100644 (file)
 
 package com.android.systemui;
 
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
 import android.app.Fragment;
+import android.app.Instrumentation;
 import android.support.test.InstrumentationRegistry;
 import android.testing.BaseFragmentTest;
 
 import com.android.systemui.utils.leaks.LeakCheckedTest;
 import com.android.systemui.utils.leaks.LeakCheckedTest.SysuiLeakCheck;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 
@@ -33,6 +38,7 @@ public abstract class SysuiBaseFragmentTest extends BaseFragmentTest {
 
     protected final TestableDependency mDependency = new TestableDependency(mContext);
     protected SysuiTestableContext mSysuiContext;
+    private Instrumentation mRealInstrumentation;
 
     public SysuiBaseFragmentTest(Class<? extends Fragment> cls) {
         super(cls);
@@ -44,6 +50,20 @@ public abstract class SysuiBaseFragmentTest extends BaseFragmentTest {
         SystemUIFactory.createFromConfig(mContext);
         // TODO: Figure out another way to give reference to a SysuiTestableContext.
         mSysuiContext = (SysuiTestableContext) mContext;
+
+        mRealInstrumentation = InstrumentationRegistry.getInstrumentation();
+        Instrumentation inst = spy(mRealInstrumentation);
+        when(inst.getContext()).thenThrow(new RuntimeException(
+                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
+        when(inst.getTargetContext()).thenThrow(new RuntimeException(
+                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
+        InstrumentationRegistry.registerInstance(inst, InstrumentationRegistry.getArguments());
+    }
+
+    @After
+    public void SysuiTeardown() {
+        InstrumentationRegistry.registerInstance(mRealInstrumentation,
+                InstrumentationRegistry.getArguments());
     }
 
     @Override
index 9b67529..361a20f 100644 (file)
  */
 package com.android.systemui;
 
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.app.Instrumentation;
 import android.content.Context;
 import android.os.Handler;
 import android.os.Looper;
@@ -24,6 +28,7 @@ import android.support.test.filters.SmallTest;
 import android.testing.LeakCheck;
 import android.util.Log;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 
@@ -42,11 +47,26 @@ public abstract class SysuiTestCase {
     public SysuiTestableContext mContext = new SysuiTestableContext(
             InstrumentationRegistry.getContext(), getLeakCheck());
     public TestableDependency mDependency = new TestableDependency(mContext);
+    private Instrumentation mRealInstrumentation;
 
     @Before
     public void SysuiSetup() throws Exception {
         System.setProperty("dexmaker.share_classloader", "true");
         SystemUIFactory.createFromConfig(mContext);
+
+        mRealInstrumentation = InstrumentationRegistry.getInstrumentation();
+        Instrumentation inst = spy(mRealInstrumentation);
+        when(inst.getContext()).thenThrow(new RuntimeException(
+                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
+        when(inst.getTargetContext()).thenThrow(new RuntimeException(
+                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
+        InstrumentationRegistry.registerInstance(inst, InstrumentationRegistry.getArguments());
+    }
+
+    @After
+    public void SysuiTeardown() {
+        InstrumentationRegistry.registerInstance(mRealInstrumentation,
+                InstrumentationRegistry.getArguments());
     }
 
     protected LeakCheck getLeakCheck() {
index 9b7c597..d925364 100644 (file)
@@ -41,9 +41,7 @@ public class WakeLockTest extends SysuiTestCase {
 
     @Before
     public void setUp() {
-        Context context = InstrumentationRegistry.getContext();
-
-        mInner = WakeLock.createPartialInner(context, WakeLockTest.class.getName());
+        mInner = WakeLock.createPartialInner(mContext, WakeLockTest.class.getName());
         mWakeLock = WakeLock.wrap(mInner);
     }
 
index 5a651aa..fca44ae 100644 (file)
@@ -31,12 +31,10 @@ public class ViewUtils {
                 LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
                 LayoutParams.TYPE_APPLICATION_OVERLAY,
                 0, PixelFormat.TRANSLUCENT);
-        InstrumentationRegistry.getContext()
-                .getSystemService(WindowManager.class).addView(view, lp);
+        view.getContext().getSystemService(WindowManager.class).addView(view, lp);
     }
 
     public static void detachView(View view) {
-        InstrumentationRegistry.getContext()
-                .getSystemService(WindowManager.class).removeViewImmediate(view);
+        view.getContext().getSystemService(WindowManager.class).removeViewImmediate(view);
     }
 }