Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import java.lang.reflect.Method;
      4 import org.junit.runner.RunWith;
      5 import org.junit.runners.model.FrameworkMethod;
      6 import org.junit.runners.model.InitializationError;
      7 import org.robolectric.RobolectricTestRunner;
      8 import org.robolectric.internal.bytecode.Sandbox;
      9 import org.robolectric.shadows.ShadowNewPackageManagerTest.ManifestParserTestRunner;
     10 
     11 /** Test shadow package mgr with new framework manifest parser */
     12 @RunWith(ManifestParserTestRunner.class)
     13 public final class ShadowNewPackageManagerTest extends ShadowPackageManagerTest {
     14 
     15   /**
     16    * Custom test runner that turns on framework manifest parsing.
     17    *
     18    * <p>A custom test runnner is needed because it needs to change state before
     19    * setUpApplicationState is called.
     20    */
     21   public static class ManifestParserTestRunner extends RobolectricTestRunner {
     22 
     23     public ManifestParserTestRunner(Class<?> testClass) throws InitializationError {
     24       super(testClass);
     25     }
     26 
     27     @Override
     28     protected void beforeTest(Sandbox sandbox, FrameworkMethod method, Method bootstrappedMethod)
     29         throws Throwable {
     30       System.setProperty("use_framework_manifest_parser", "true");
     31       super.beforeTest(sandbox, method, bootstrappedMethod);
     32     }
     33 
     34     @Override
     35     protected void afterTest(FrameworkMethod method, Method bootstrappedMethod) {
     36       System.setProperty("use_framework_manifest_parser", "false");
     37       super.afterTest(method, bootstrappedMethod);
     38     }
     39   }
     40 }
     41