Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4034eaec authored by George Mount's avatar George Mount
Browse files

Fix broken LoaderLifecycleTest#loaderIdentityTest

Bug 37994415

We have a preemptive check for getLoaderManager() to ensure that
the host is set before returning a value. In this test, the host
was not set because the fragment was restored and on the back stack.

The solution is to pop the back stack to ensure that it is added
so that it comes up to the proper state before getting the loader
manager.

Test: ran the broken test
Change-Id: Ic91cc5ca9468da22bdfef28cda1d4488b2f737f0
parent 83478acb
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -17,6 +17,13 @@

package android.app;

import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertNotSame;
import static junit.framework.TestCase.assertSame;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import android.content.Context;
import android.os.Handler;
import android.os.Parcelable;
@@ -24,14 +31,11 @@ import android.support.test.filters.MediumTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.util.ArrayMap;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertNotSame;
import static junit.framework.TestCase.assertSame;

@RunWith(AndroidJUnit4.class)
public class LoaderLifecycleTest {
    @Rule
@@ -203,6 +207,16 @@ public class LoaderLifecycleTest {

            // Test that the fragments are in the configuration we expect
            final Fragment restoredOne = fm2.findFragmentByTag("one");
            try {
                restoredOne.getLoaderManager();
                fail("A restored fragment on the back stack doesn't have a host, so it should "
                        + "throw an exception");
            } catch (IllegalStateException e) {
                // expected
            }
            fm2.popBackStackImmediate();
            // Now restoredOne should be added and should be in a good state.
            assertTrue(restoredOne.isAdded());
            final LoaderManager lm2 = restoredOne.getLoaderManager();

            assertSame("didn't get same LoaderManager instance back", lm2, lm1);