diff options
author | Tomasz Mikolajewski <mtomasz@google.com> | 2017-02-28 15:42:50 +0900 |
---|---|---|
committer | Tomasz Mikolajewski <mtomasz@google.com> | 2017-02-28 16:20:50 +0900 |
commit | b96eb04b2a8ff4b7d47b09b4b2b5493c032e4d36 (patch) | |
tree | dcbe552021c8c0e30be3499e4652de6c21eea2e3 | |
parent | bdd2c887bbce4290c8f28bd0b4dec0c9988cfab6 (diff) | |
download | UnifiedEmail-b96eb04b2a8ff4b7d47b09b4b2b5493c032e4d36.tar.gz |
Fix tests for apps/UnifiedEmail.
They stopped compiling due to changes in O.
Issues fixed:
- Handler created on a thread without Looper.
- Method not visible from userdebug built tests.
- Exception thrown due to mismatching authorities in ContentProvider.
Test: The tests compile and pass.
Bug: 33609522
Change-Id: Ibe74c1d2f7c9a3cb16839ad0db1117146757c523
-rw-r--r-- | proguard-test.flags | 4 | ||||
-rw-r--r-- | src/com/android/mail/ui/ActionableToastBar.java | 2 | ||||
-rw-r--r-- | src/com/android/mail/utils/Utils.java | 2 | ||||
-rw-r--r-- | tests/src/com/android/mail/browse/ConversationCursorTests.java | 3 | ||||
-rw-r--r-- | tests/src/com/android/mail/browse/EmlMessageLoaderTest.java | 4 | ||||
-rw-r--r-- | tests/src/com/android/mail/browse/TestProvider.java | 24 | ||||
-rw-r--r-- | tests/src/com/android/mail/browse/TestProviderTests.java | 26 |
7 files changed, 24 insertions, 41 deletions
diff --git a/proguard-test.flags b/proguard-test.flags index 2eb8cfa59..b73581421 100644 --- a/proguard-test.flags +++ b/proguard-test.flags @@ -29,10 +29,6 @@ public static boolean updateMessageFields(...); } --keep class com.android.mail.utils.Utils { - public static android.text.Spanned insertStringWithStyle(...); -} - -keepclasseswithmembers class * { *** findProviderForDomain(...); } diff --git a/src/com/android/mail/ui/ActionableToastBar.java b/src/com/android/mail/ui/ActionableToastBar.java index 8ad98287a..c6bf99090 100644 --- a/src/com/android/mail/ui/ActionableToastBar.java +++ b/src/com/android/mail/ui/ActionableToastBar.java @@ -459,4 +459,4 @@ public class ActionableToastBar extends FrameLayout { public interface ActionClickedListener { public void onActionClicked(Context context); } -}
\ No newline at end of file +} diff --git a/src/com/android/mail/utils/Utils.java b/src/com/android/mail/utils/Utils.java index a9c93bf16..95e8ee6ce 100644 --- a/src/com/android/mail/utils/Utils.java +++ b/src/com/android/mail/utils/Utils.java @@ -36,6 +36,7 @@ import android.os.Build; import android.os.Bundle; import android.provider.Browser; import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import android.text.SpannableString; import android.text.Spanned; import android.text.TextUtils; @@ -1069,6 +1070,7 @@ public class Utils { * Applies the given appearance on the given subString, and inserts that as a parameter in the * given parentString. */ + @VisibleForTesting public static Spanned insertStringWithStyle(Context context, String entireString, String subString, int appearance) { final int index = entireString.indexOf(subString); diff --git a/tests/src/com/android/mail/browse/ConversationCursorTests.java b/tests/src/com/android/mail/browse/ConversationCursorTests.java index bd8c928b2..50345263b 100644 --- a/tests/src/com/android/mail/browse/ConversationCursorTests.java +++ b/tests/src/com/android/mail/browse/ConversationCursorTests.java @@ -25,6 +25,7 @@ import android.content.ContentValues; import android.content.Context; import android.content.OperationApplicationException; import android.net.Uri; +import android.os.Looper; import android.os.RemoteException; import android.test.ProviderTestCase2; import android.test.mock.MockContentResolver; @@ -47,6 +48,7 @@ public class ConversationCursorTests extends ProviderTestCase2<TestProvider> { public ConversationCursorTests() { super(TestProvider.class, TestProvider.AUTHORITY); + Looper.prepare(); mActivity = new Activity() { @Override public ContentResolver getContentResolver() { @@ -60,7 +62,6 @@ public class ConversationCursorTests extends ProviderTestCase2<TestProvider> { super.setUp(); mMockContext = getMockContext(); mMockResolver = (MockContentResolver)mMockContext.getContentResolver(); - mMockResolver.addProvider(TestProvider.AUTHORITY, new TestProvider(mMockContext)); } @Override diff --git a/tests/src/com/android/mail/browse/EmlMessageLoaderTest.java b/tests/src/com/android/mail/browse/EmlMessageLoaderTest.java index 8e4b803e4..54f1a254c 100644 --- a/tests/src/com/android/mail/browse/EmlMessageLoaderTest.java +++ b/tests/src/com/android/mail/browse/EmlMessageLoaderTest.java @@ -54,8 +54,8 @@ public class EmlMessageLoaderTest extends LoaderTestCase { @SmallTest public void testLoadingBlankEml() throws Exception { - final Uri emptyEmlUri = TestProvider.uri( - new Uri.Builder().scheme("content").authority("empty").path("empty").build()); + final Uri emptyEmlUri = new Uri.Builder().scheme("content").authority( + TestProvider.AUTHORITY).path("empty").build(); final ContentValues cv = new ContentValues(2); cv.put(OpenableColumns.DISPLAY_NAME, "Empty.eml"); cv.put(OpenableColumns.SIZE, 0); diff --git a/tests/src/com/android/mail/browse/TestProvider.java b/tests/src/com/android/mail/browse/TestProvider.java index df305b579..19d5ec30e 100644 --- a/tests/src/com/android/mail/browse/TestProvider.java +++ b/tests/src/com/android/mail/browse/TestProvider.java @@ -21,6 +21,7 @@ import android.content.ContentProvider; import android.content.ContentValues; import android.content.Context; import android.content.UriMatcher; +import android.content.pm.ProviderInfo; import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; @@ -54,9 +55,6 @@ import java.util.Set; * delete() and update() do not allow non-null selection or selectionArgs arguments; the presence * of these will result in an UnsupportedOperationException * - * NOTE: When using any operation other than applyBatch, the Uri to be used must be created with - * MockProvider.uri(yourUri). This guarantees that the operation is sent to MockProvider - * * NOTE: MockProvider only simulates direct storage/retrieval of rows; it does not (and can not) * simulate other actions (e.g. creation of ancillary data) that the actual provider might perform * @@ -64,6 +62,7 @@ import java.util.Set; **/ public class TestProvider extends ContentProvider { public static final String AUTHORITY = "com.android.mail.mock.provider"; + /* package */static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH); /* package */static final int TABLE = 100; @@ -77,7 +76,9 @@ public class TestProvider extends ContentProvider { public TestProvider(Context context) { this(); - attachInfo(context, null); + ProviderInfo info = new ProviderInfo(); + info.authority = AUTHORITY; + attachInfo(context, info); } // We'll store our values here @@ -85,17 +86,6 @@ public class TestProvider extends ContentProvider { // And we'll generate new id's from here long mMockId = 1; - /** - * Create a Uri for MockProvider from a given Uri - * - * @param uri the Uri from which the MockProvider Uri will be created - * @return a Uri that can be used with MockProvider - */ - public static Uri uri(Uri uri) { - return new Uri.Builder().scheme("content").authority(AUTHORITY) - .path(uri.getPath().substring(1)).build(); - } - @Override public int delete(Uri uri, String selection, String[] selectionArgs) { if (selection != null || selectionArgs != null) { @@ -144,7 +134,7 @@ public class TestProvider extends ContentProvider { if (selection != null || selectionArgs != null || sortOrder != null || projection == null) { throw new UnsupportedOperationException(); } - final int match = sURIMatcher.match(uri(uri)); + final int match = sURIMatcher.match(uri); ArrayList<ContentValues> valuesList = new ArrayList<ContentValues>(); switch (match) { case TABLE: @@ -182,7 +172,7 @@ public class TestProvider extends ContentProvider { if (selection != null || selectionArgs != null) { throw new UnsupportedOperationException(); } - final int match = sURIMatcher.match(uri(uri)); + final int match = sURIMatcher.match(uri); ArrayList<ContentValues> updateValuesList = new ArrayList<ContentValues>(); String path = uri.getPath(); switch (match) { diff --git a/tests/src/com/android/mail/browse/TestProviderTests.java b/tests/src/com/android/mail/browse/TestProviderTests.java index 0e26980c5..be45655ba 100644 --- a/tests/src/com/android/mail/browse/TestProviderTests.java +++ b/tests/src/com/android/mail/browse/TestProviderTests.java @@ -37,7 +37,6 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { Context mMockContext; MockContentResolver mMockResolver; - private static final String CANHAZ_AUTHORITY = "com.android.canhaz"; private static final String PONY_TABLE = "pony"; private static final String PONY_COLUMN_NAME = "name"; private static final String PONY_COLUMN_TYPE = "type"; @@ -60,7 +59,6 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { super.setUp(); mMockContext = getMockContext(); mMockResolver = (MockContentResolver)mMockContext.getContentResolver(); - mMockResolver.addProvider(CANHAZ_AUTHORITY, new TestProvider(mMockContext)); } @Override @@ -79,8 +77,7 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { private ContentProviderResult[] setupPonies() throws RemoteException, OperationApplicationException { - // The Uri is content://com.android.canhaz/pony - Uri uri = new Uri.Builder().scheme("content").authority(CANHAZ_AUTHORITY) + Uri uri = new Uri.Builder().scheme("content").authority(TestProvider.AUTHORITY) .path(PONY_TABLE).build(); // Our array of CPO's to be used with applyBatch ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); @@ -95,12 +92,11 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { } private static Uri getPonyUri() { - return new Uri.Builder().scheme("content").authority(CANHAZ_AUTHORITY) + return new Uri.Builder().scheme("content").authority(TestProvider.AUTHORITY) .path(PONY_TABLE).build(); } public void testInsertQueryandDelete() throws RemoteException, OperationApplicationException { - // The Uri is content://com.android.canhaz/pony ContentProviderResult[] results = setupPonies(); Uri uri = getPonyUri(); @@ -108,10 +104,9 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { assertNotNull(results); assertEquals(2, results.length); // Make sure that we've created matcher entries for pony and pony/# - assertEquals(TestProvider.TABLE, TestProvider.sURIMatcher.match(TestProvider.uri(uri))); - assertEquals(TestProvider.RECORD, - TestProvider.sURIMatcher.match(TestProvider.uri(results[0].uri))); - Cursor c = mMockResolver.query(TestProvider.uri(uri), PONY_PROJECTION, null, null, null); + assertEquals(TestProvider.TABLE, TestProvider.sURIMatcher.match(uri)); + assertEquals(TestProvider.RECORD, TestProvider.sURIMatcher.match(results[0].uri)); + Cursor c = mMockResolver.query(uri, PONY_PROJECTION, null, null, null); assertNotNull(c); assertEquals(2, c.getCount()); long eliseId = -1; @@ -138,9 +133,9 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { assertNotSame(-1, eliseId); assertNotSame(-1, flickaId); // Delete the elise record - assertEquals(1, mMockResolver.delete(ContentUris.withAppendedId(TestProvider.uri(uri), + assertEquals(1, mMockResolver.delete(ContentUris.withAppendedId(uri, eliseId), null, null)); - c = mMockResolver.query(TestProvider.uri(uri), PONY_PROJECTION, null, null, null); + c = mMockResolver.query(uri, PONY_PROJECTION, null, null, null); assertNotNull(c); // There should be one left (Flicka) assertEquals(1, c.getCount()); @@ -149,17 +144,16 @@ public class TestProviderTests extends ProviderTestCase2<TestProvider> { } public void testUpdate() throws RemoteException, OperationApplicationException { - // The Uri is content://com.android.canhaz/pony Uri uri = getPonyUri(); setupPonies(); - Cursor c = mMockResolver.query(TestProvider.uri(uri), PONY_PROJECTION, null, null, null); + Cursor c = mMockResolver.query(uri, PONY_PROJECTION, null, null, null); assertNotNull(c); assertEquals(2, c.getCount()); // Give all the ponies 5 legs ContentValues cv = new ContentValues(); cv.put(PONY_COLUMN_LEGS, 5); - assertEquals(2, mMockResolver.update(TestProvider.uri(uri), cv, null, null)); - c = mMockResolver.query(TestProvider.uri(uri), PONY_PROJECTION, null, null, null); + assertEquals(2, mMockResolver.update(uri, cv, null, null)); + c = mMockResolver.query(uri, PONY_PROJECTION, null, null, null); assertNotNull(c); // We should still have two records, and each should have 5 legs, but otherwise be the same assertEquals(2, c.getCount()); |