Use robolectric:4.3

- remove constants annotation
- Most @Implementation methods in shadow classes are now protected instead of public.
  Tests should always prefer to call SDK methods directly on Android classes rather
  than on their shadows
This commit is contained in:
Dominik Schürmann 2020-07-01 20:05:01 +02:00
parent c784274b98
commit cefd706aeb
27 changed files with 75 additions and 82 deletions

View File

@ -168,18 +168,22 @@ dependencies {
fullImplementation 'org.jmdns:jmdns:3.5.5' fullImplementation 'org.jmdns:jmdns:3.5.5'
fullImplementation 'org.nanohttpd:nanohttpd:2.3.1' fullImplementation 'org.nanohttpd:nanohttpd:2.3.1'
testImplementation 'org.robolectric:robolectric:3.8' testImplementation 'org.robolectric:robolectric:4.3'
testImplementation 'androidx.test:monitor:1.1.1' testImplementation 'androidx.test:monitor:1.1.1'
testImplementation 'org.bouncycastle:bcprov-jdk15on:1.60' testImplementation 'org.bouncycastle:bcprov-jdk15on:1.60'
testImplementation 'junit:junit:4.13' testImplementation 'junit:junit:4.13'
testImplementation 'org.hamcrest:hamcrest:2.2' testImplementation 'org.hamcrest:hamcrest:2.2'
testImplementation 'org.mockito:mockito-core:2.7.22' testImplementation 'org.mockito:mockito-core:2.7.22'
androidTestImplementation 'androidx.annotation:annotation:1.1.0'
androidTestImplementation 'androidx.test:core:1.2.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
androidTestImplementation 'androidx.annotation:annotation:1.1.0'
} }
checkstyle { checkstyle {

View File

@ -23,7 +23,7 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AntiFeaturesTest extends FDroidProviderTest { public class AntiFeaturesTest extends FDroidProviderTest {

View File

@ -1,5 +1,6 @@
package org.fdroid.fdroid; package org.fdroid.fdroid;
import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
@ -13,7 +14,6 @@ import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.Schema.ApkTable; import org.fdroid.fdroid.data.Schema.ApkTable;
import org.fdroid.fdroid.data.Schema.AppMetadataTable; import org.fdroid.fdroid.data.Schema.AppMetadataTable;
import org.fdroid.fdroid.data.Schema.InstalledAppTable; import org.fdroid.fdroid.data.Schema.InstalledAppTable;
import org.robolectric.shadows.ShadowContentResolver;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -86,7 +86,7 @@ public class Assert {
} }
} }
public static void assertCantDelete(ShadowContentResolver resolver, Uri uri) { public static void assertCantDelete(ContentResolver resolver, Uri uri) {
try { try {
resolver.delete(uri, null, null); resolver.delete(uri, null, null);
fail(); fail();
@ -97,7 +97,7 @@ public class Assert {
} }
} }
public static void assertCantUpdate(ShadowContentResolver resolver, Uri uri) { public static void assertCantUpdate(ContentResolver resolver, Uri uri) {
try { try {
resolver.update(uri, new ContentValues(), null, null); resolver.update(uri, new ContentValues(), null, null);
fail(); fail();
@ -108,36 +108,36 @@ public class Assert {
} }
} }
public static void assertInvalidUri(ShadowContentResolver resolver, String uri) { public static void assertInvalidUri(ContentResolver resolver, String uri) {
assertInvalidUri(resolver, Uri.parse(uri)); assertInvalidUri(resolver, Uri.parse(uri));
} }
public static void assertValidUri(ShadowContentResolver resolver, String uri, String[] projection) { public static void assertValidUri(ContentResolver resolver, String uri, String[] projection) {
assertValidUri(resolver, Uri.parse(uri), projection); assertValidUri(resolver, Uri.parse(uri), projection);
} }
public static void assertInvalidUri(ShadowContentResolver resolver, Uri uri) { public static void assertInvalidUri(ContentResolver resolver, Uri uri) {
Cursor cursor = resolver.query(uri, new String[]{}, null, null, null); Cursor cursor = resolver.query(uri, new String[]{}, null, null, null);
assertNull(cursor); assertNull(cursor);
} }
public static void assertValidUri(ShadowContentResolver resolver, Uri uri, String[] projection) { public static void assertValidUri(ContentResolver resolver, Uri uri, String[] projection) {
Cursor cursor = resolver.query(uri, projection, null, null, null); Cursor cursor = resolver.query(uri, projection, null, null, null);
assertNotNull(cursor); assertNotNull(cursor);
cursor.close(); cursor.close();
} }
public static void assertValidUri(ShadowContentResolver resolver, Uri actualUri, String expectedUri, public static void assertValidUri(ContentResolver resolver, Uri actualUri, String expectedUri,
String[] projection) { String[] projection) {
assertValidUri(resolver, actualUri, projection); assertValidUri(resolver, actualUri, projection);
assertEquals(expectedUri, actualUri.toString()); assertEquals(expectedUri, actualUri.toString());
} }
public static void assertResultCount(ShadowContentResolver resolver, int expectedCount, Uri uri) { public static void assertResultCount(ContentResolver resolver, int expectedCount, Uri uri) {
assertResultCount(resolver, expectedCount, uri, new String[]{}); assertResultCount(resolver, expectedCount, uri, new String[]{});
} }
public static void assertResultCount(ShadowContentResolver resolver, int expectedCount, Uri uri, public static void assertResultCount(ContentResolver resolver, int expectedCount, Uri uri,
String[] projection) { String[] projection) {
Cursor cursor = resolver.query(uri, projection, null, null, null); Cursor cursor = resolver.query(uri, projection, null, null, null);
assertResultCount(expectedCount, cursor); assertResultCount(expectedCount, cursor);
@ -154,7 +154,7 @@ public class Assert {
assertEquals(expectedCount, result.getCount()); assertEquals(expectedCount, result.getCount());
} }
public static void assertIsInstalledVersionInDb(ShadowContentResolver resolver, public static void assertIsInstalledVersionInDb(ContentResolver resolver,
String appId, int versionCode, String versionName) { String appId, int versionCode, String versionName) {
Uri uri = InstalledAppProvider.getAppUri(appId); Uri uri = InstalledAppProvider.getAppUri(appId);

View File

@ -16,7 +16,6 @@ import java.util.List;
/** /**
* @author Michael Poehn (michael.poehn@fsfe.org) * @author Michael Poehn (michael.poehn@fsfe.org)
*/ */
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class ProvisionerTest { public class ProvisionerTest {

View File

@ -19,7 +19,6 @@ import org.fdroid.fdroid.data.Schema;
import org.mockito.AdditionalAnswers; import org.mockito.AdditionalAnswers;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.shadows.ShadowContentResolver;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -157,7 +156,7 @@ public class TestUtils {
* {@link ContextWrapper} which is able to return a proper content * {@link ContextWrapper} which is able to return a proper content
* resolver that delegates to the Robolectric shadow object. * resolver that delegates to the Robolectric shadow object.
*/ */
public static ContextWrapper createContextWithContentResolver(ShadowContentResolver contentResolver) { public static ContextWrapper createContextWithContentResolver(ContentResolver contentResolver) {
final ContentResolver resolver = mock(ContentResolver.class, AdditionalAnswers.delegatesTo(contentResolver)); final ContentResolver resolver = mock(ContentResolver.class, AdditionalAnswers.delegatesTo(contentResolver));
return new ContextWrapper(RuntimeEnvironment.application.getApplicationContext()) { return new ContextWrapper(RuntimeEnvironment.application.getApplicationContext()) {
@Override @Override

View File

@ -19,7 +19,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class UtilsTest { public class UtilsTest {

View File

@ -31,7 +31,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class ApkProviderTest extends FDroidProviderTest { public class ApkProviderTest extends FDroidProviderTest {

View File

@ -15,7 +15,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AppPrefsProviderTest extends FDroidProviderTest { public class AppPrefsProviderTest extends FDroidProviderTest {

View File

@ -16,7 +16,6 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowContentResolver;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -31,7 +30,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class AppProviderTest extends FDroidProviderTest { public class AppProviderTest extends FDroidProviderTest {
@ -315,11 +314,11 @@ public class AppProviderTest extends FDroidProviderTest {
return insertApp(contentResolver, context, id, name, additionalValues); return insertApp(contentResolver, context, id, name, additionalValues);
} }
public static App insertApp(ShadowContentResolver contentResolver, Context context, String id, String name, ContentValues additionalValues) { public static App insertApp(ContentResolver contentResolver, Context context, String id, String name, ContentValues additionalValues) {
return insertApp(contentResolver, context, id, name, additionalValues, 1); return insertApp(contentResolver, context, id, name, additionalValues, 1);
} }
public static App insertApp(ShadowContentResolver contentResolver, Context context, String id, String name, ContentValues additionalValues, long repoId) { public static App insertApp(ContentResolver contentResolver, Context context, String id, String name, ContentValues additionalValues, long repoId) {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(Cols.Package.PACKAGE_NAME, id); values.put(Cols.Package.PACKAGE_NAME, id);

View File

@ -24,7 +24,7 @@ import static org.fdroid.fdroid.Assert.assertContainsOnly;
import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class CategoryProviderTest extends FDroidProviderTest { public class CategoryProviderTest extends FDroidProviderTest {

View File

@ -12,6 +12,7 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
import java.io.File; import java.io.File;
@ -46,7 +47,7 @@ public class DBHelperTest {
@Before @Before
public final void setupBase() { public final void setupBase() {
context = InstrumentationRegistry.getContext(); context = RuntimeEnvironment.application.getApplicationContext();
} }
@Test @Test

View File

@ -20,7 +20,7 @@ import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.ShadowContentResolver;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class DatabaseMigration { public class DatabaseMigration {
@ -30,7 +30,7 @@ public class DatabaseMigration {
@Before @Before
public final void setupBase() { public final void setupBase() {
contentResolver = RuntimeEnvironment.application.getContentResolver(); contentResolver = RuntimeEnvironment.application.getContentResolver();
context = TestUtils.createContextWithContentResolver(Shadows.shadowOf(contentResolver)); context = TestUtils.createContextWithContentResolver(contentResolver);
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
} }

View File

@ -18,7 +18,7 @@ public abstract class FDroidProviderTest { // NOPMD This abstract class does not
@Before @Before
public final void setupBase() { public final void setupBase() {
contentResolver = RuntimeEnvironment.application.getContentResolver(); contentResolver = RuntimeEnvironment.application.getContentResolver();
context = TestUtils.createContextWithContentResolver(Shadows.shadowOf(contentResolver)); context = TestUtils.createContextWithContentResolver(contentResolver);
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
} }

View File

@ -24,7 +24,7 @@ import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class InstalledAppProviderTest extends FDroidProviderTest { public class InstalledAppProviderTest extends FDroidProviderTest {

View File

@ -13,7 +13,7 @@ import org.robolectric.annotation.Config;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class PreferredSignatureTest extends FDroidProviderTest { public class PreferredSignatureTest extends FDroidProviderTest {

View File

@ -20,7 +20,6 @@ import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.ShadowContentResolver;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class ProviderUriTests { public class ProviderUriTests {
@ -45,67 +44,67 @@ public class ProviderUriTests {
@Test @Test
public void invalidInstalledAppProviderUris() { public void invalidInstalledAppProviderUris() {
TestUtils.registerContentProvider(InstalledAppProvider.getAuthority(), InstalledAppProvider.class); TestUtils.registerContentProvider(InstalledAppProvider.getAuthority(), InstalledAppProvider.class);
assertInvalidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getAuthority()); assertInvalidUri(resolver, InstalledAppProvider.getAuthority());
assertInvalidUri(Shadows.shadowOf(resolver), "blah"); assertInvalidUri(resolver, "blah");
} }
@Test @Test
public void validInstalledAppProviderUris() { public void validInstalledAppProviderUris() {
TestUtils.registerContentProvider(InstalledAppProvider.getAuthority(), InstalledAppProvider.class); TestUtils.registerContentProvider(InstalledAppProvider.getAuthority(), InstalledAppProvider.class);
String[] projection = new String[]{InstalledAppTable.Cols._ID}; String[] projection = new String[]{InstalledAppTable.Cols._ID};
assertValidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getContentUri(), projection); assertValidUri(resolver, InstalledAppProvider.getContentUri(), projection);
assertValidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getAppUri("org.example.app"), projection); assertValidUri(resolver, InstalledAppProvider.getAppUri("org.example.app"), projection);
assertValidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getSearchUri("blah"), projection); assertValidUri(resolver, InstalledAppProvider.getSearchUri("blah"), projection);
assertValidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getSearchUri("\"blah\""), projection); assertValidUri(resolver, InstalledAppProvider.getSearchUri("\"blah\""), projection);
assertValidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getSearchUri("blah & sneh"), projection); assertValidUri(resolver, InstalledAppProvider.getSearchUri("blah & sneh"), projection);
assertValidUri(Shadows.shadowOf(resolver), InstalledAppProvider.getSearchUri("http://blah.example.com?sneh=\"sneh\""), projection); assertValidUri(resolver, InstalledAppProvider.getSearchUri("http://blah.example.com?sneh=\"sneh\""), projection);
} }
@Test @Test
public void invalidRepoProviderUris() { public void invalidRepoProviderUris() {
TestUtils.registerContentProvider(RepoProvider.getAuthority(), RepoProvider.class); TestUtils.registerContentProvider(RepoProvider.getAuthority(), RepoProvider.class);
assertInvalidUri(Shadows.shadowOf(resolver), RepoProvider.getAuthority()); assertInvalidUri(resolver, RepoProvider.getAuthority());
assertInvalidUri(Shadows.shadowOf(resolver), "blah"); assertInvalidUri(resolver, "blah");
} }
@Test @Test
public void validRepoProviderUris() { public void validRepoProviderUris() {
TestUtils.registerContentProvider(RepoProvider.getAuthority(), RepoProvider.class); TestUtils.registerContentProvider(RepoProvider.getAuthority(), RepoProvider.class);
String[] projection = new String[]{Schema.RepoTable.Cols._ID}; String[] projection = new String[]{Schema.RepoTable.Cols._ID};
assertValidUri(Shadows.shadowOf(resolver), RepoProvider.getContentUri(), projection); assertValidUri(resolver, RepoProvider.getContentUri(), projection);
assertValidUri(Shadows.shadowOf(resolver), RepoProvider.getContentUri(10000L), projection); assertValidUri(resolver, RepoProvider.getContentUri(10000L), projection);
assertValidUri(Shadows.shadowOf(resolver), RepoProvider.allExceptSwapUri(), projection); assertValidUri(resolver, RepoProvider.allExceptSwapUri(), projection);
} }
@Test @Test
public void invalidAppProviderUris() { public void invalidAppProviderUris() {
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
assertInvalidUri(Shadows.shadowOf(resolver), AppProvider.getAuthority()); assertInvalidUri(resolver, AppProvider.getAuthority());
assertInvalidUri(Shadows.shadowOf(resolver), "blah"); assertInvalidUri(resolver, "blah");
} }
@Test @Test
public void validAppProviderUris() { public void validAppProviderUris() {
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
String[] projection = new String[]{Schema.AppMetadataTable.Cols._ID}; String[] projection = new String[]{Schema.AppMetadataTable.Cols._ID};
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getContentUri(), APP_PROVIDER_URI_BASE, projection); assertValidUri(resolver, AppProvider.getContentUri(), APP_PROVIDER_URI_BASE, projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri("'searching!'", null), APP_PROVIDER_URI_BASE + "/search/'searching!'", projection); assertValidUri(resolver, AppProvider.getSearchUri("'searching!'", null), APP_PROVIDER_URI_BASE + "/search/'searching!'", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri("'searching!'", "Games"), APP_PROVIDER_URI_BASE + "/search/'searching!'/Games", projection); assertValidUri(resolver, AppProvider.getSearchUri("'searching!'", "Games"), APP_PROVIDER_URI_BASE + "/search/'searching!'/Games", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri("/", null), APP_PROVIDER_URI_BASE + "/search/%2F", projection); assertValidUri(resolver, AppProvider.getSearchUri("/", null), APP_PROVIDER_URI_BASE + "/search/%2F", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri("/", "Games"), APP_PROVIDER_URI_BASE + "/search/%2F/Games", projection); assertValidUri(resolver, AppProvider.getSearchUri("/", "Games"), APP_PROVIDER_URI_BASE + "/search/%2F/Games", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri("", null), APP_PROVIDER_URI_BASE, projection); assertValidUri(resolver, AppProvider.getSearchUri("", null), APP_PROVIDER_URI_BASE, projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri("", "Games"), APP_PROVIDER_URI_BASE + "/category/Games", projection); assertValidUri(resolver, AppProvider.getSearchUri("", "Games"), APP_PROVIDER_URI_BASE + "/category/Games", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getCategoryUri("Games"), APP_PROVIDER_URI_BASE + "/category/Games", projection); assertValidUri(resolver, AppProvider.getCategoryUri("Games"), APP_PROVIDER_URI_BASE + "/category/Games", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri((String) null, null), APP_PROVIDER_URI_BASE, projection); assertValidUri(resolver, AppProvider.getSearchUri((String) null, null), APP_PROVIDER_URI_BASE, projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSearchUri((String) null, "Games"), APP_PROVIDER_URI_BASE + "/category/Games", projection); assertValidUri(resolver, AppProvider.getSearchUri((String) null, "Games"), APP_PROVIDER_URI_BASE + "/category/Games", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getInstalledUri(), APP_PROVIDER_URI_BASE + "/installed", projection); assertValidUri(resolver, AppProvider.getInstalledUri(), APP_PROVIDER_URI_BASE + "/installed", projection);
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getCanUpdateUri(), APP_PROVIDER_URI_BASE + "/canUpdate", projection); assertValidUri(resolver, AppProvider.getCanUpdateUri(), APP_PROVIDER_URI_BASE + "/canUpdate", projection);
App app = new App(); App app = new App();
app.repoId = 1; app.repoId = 1;
app.packageName = "org.fdroid.fdroid"; app.packageName = "org.fdroid.fdroid";
assertValidUri(Shadows.shadowOf(resolver), AppProvider.getSpecificAppUri(app.packageName, app.repoId), assertValidUri(resolver, AppProvider.getSpecificAppUri(app.packageName, app.repoId),
APP_PROVIDER_URI_BASE + "/app/1/org.fdroid.fdroid", projection); APP_PROVIDER_URI_BASE + "/app/1/org.fdroid.fdroid", projection);
} }
@ -116,22 +115,22 @@ public class ProviderUriTests {
// Required so that the `assertValidUri` calls below will indeed have a real temp_fdroid_app // Required so that the `assertValidUri` calls below will indeed have a real temp_fdroid_app
// table to query. // table to query.
TempAppProvider.Helper.init(TestUtils.createContextWithContentResolver(Shadows.shadowOf(resolver)), 123); TempAppProvider.Helper.init(TestUtils.createContextWithContentResolver(resolver), 123);
List<String> packageNames = new ArrayList<>(2); List<String> packageNames = new ArrayList<>(2);
packageNames.add("org.fdroid.fdroid"); packageNames.add("org.fdroid.fdroid");
packageNames.add("com.example.com"); packageNames.add("com.example.com");
assertValidUri(Shadows.shadowOf(resolver), TempAppProvider.getAppsUri(packageNames, 1), assertValidUri(resolver, TempAppProvider.getAppsUri(packageNames, 1),
TEMP_APP_PROVIDER_URI_BASE + "/apps/1/org.fdroid.fdroid%2Ccom.example.com", projection); TEMP_APP_PROVIDER_URI_BASE + "/apps/1/org.fdroid.fdroid%2Ccom.example.com", projection);
assertValidUri(Shadows.shadowOf(resolver), TempAppProvider.getContentUri(), TEMP_APP_PROVIDER_URI_BASE, projection); assertValidUri(resolver, TempAppProvider.getContentUri(), TEMP_APP_PROVIDER_URI_BASE, projection);
} }
@Test @Test
public void invalidApkProviderUris() { public void invalidApkProviderUris() {
TestUtils.registerContentProvider(ApkProvider.getAuthority(), ApkProvider.class); TestUtils.registerContentProvider(ApkProvider.getAuthority(), ApkProvider.class);
assertInvalidUri(Shadows.shadowOf(resolver), ApkProvider.getAuthority()); assertInvalidUri(resolver, ApkProvider.getAuthority());
assertInvalidUri(Shadows.shadowOf(resolver), "blah"); assertInvalidUri(resolver, "blah");
} }
@Test @Test
@ -144,15 +143,15 @@ public class ProviderUriTests {
apks.add(new MockApk("com.example." + i, i)); apks.add(new MockApk("com.example." + i, i));
} }
assertValidUri(Shadows.shadowOf(resolver), ApkProvider.getContentUri(), assertValidUri(resolver, ApkProvider.getContentUri(),
APK_PROVIDER_URI_BASE, projection); APK_PROVIDER_URI_BASE, projection);
assertValidUri(Shadows.shadowOf(resolver), ApkProvider.getAppUri("org.fdroid.fdroid"), assertValidUri(resolver, ApkProvider.getAppUri("org.fdroid.fdroid"),
APK_PROVIDER_URI_BASE + "/app/org.fdroid.fdroid", projection); APK_PROVIDER_URI_BASE + "/app/org.fdroid.fdroid", projection);
assertValidUri(Shadows.shadowOf(resolver), ApkProvider.getApkFromAnyRepoUri(new MockApk("org.fdroid.fdroid", 100)), assertValidUri(resolver, ApkProvider.getApkFromAnyRepoUri(new MockApk("org.fdroid.fdroid", 100)),
APK_PROVIDER_URI_BASE + "/apk-any-repo/100/org.fdroid.fdroid", projection); APK_PROVIDER_URI_BASE + "/apk-any-repo/100/org.fdroid.fdroid", projection);
assertValidUri(Shadows.shadowOf(resolver), ApkProvider.getApkFromAnyRepoUri("org.fdroid.fdroid", 100, null), assertValidUri(resolver, ApkProvider.getApkFromAnyRepoUri("org.fdroid.fdroid", 100, null),
APK_PROVIDER_URI_BASE + "/apk-any-repo/100/org.fdroid.fdroid", projection); APK_PROVIDER_URI_BASE + "/apk-any-repo/100/org.fdroid.fdroid", projection);
assertValidUri(Shadows.shadowOf(resolver), ApkProvider.getRepoUri(1000), assertValidUri(resolver, ApkProvider.getRepoUri(1000),
APK_PROVIDER_URI_BASE + "/repo/1000", projection); APK_PROVIDER_URI_BASE + "/repo/1000", projection);
} }
} }

View File

@ -45,7 +45,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class RepoProviderTest extends FDroidProviderTest { public class RepoProviderTest extends FDroidProviderTest {

View File

@ -58,7 +58,6 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class RepoXMLHandlerTest { public class RepoXMLHandlerTest {
private static final String TAG = "RepoXMLHandlerTest"; private static final String TAG = "RepoXMLHandlerTest";

View File

@ -16,7 +16,7 @@ import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class SuggestedVersionTest extends FDroidProviderTest { public class SuggestedVersionTest extends FDroidProviderTest {

View File

@ -15,7 +15,6 @@ import java.net.URL;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class HttpDownloaderTest { public class HttpDownloaderTest {

View File

@ -18,7 +18,6 @@ import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AcceptableMultiIndexUpdaterTest extends MultiIndexUpdaterTest { public class AcceptableMultiIndexUpdaterTest extends MultiIndexUpdaterTest {
private static final String TAG = "AcceptableMultiRepoTest"; private static final String TAG = "AcceptableMultiRepoTest";

View File

@ -21,7 +21,6 @@ import static org.junit.Assert.assertThat;
* Check whether app icons are loaded from the correct repository. The repository with the * Check whether app icons are loaded from the correct repository. The repository with the
* highest priority should be where we decide to load icons from. * highest priority should be where we decide to load icons from.
*/ */
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class AppIconsTest extends MultiIndexUpdaterTest { public class AppIconsTest extends MultiIndexUpdaterTest {

View File

@ -13,7 +13,6 @@ import org.robolectric.annotation.Config;
* because there is so much metadata to parse in the main repo, covering many different aspects * because there is so much metadata to parse in the main repo, covering many different aspects
* of the available metadata. Some apps will be added, others updated, and it should all just work. * of the available metadata. Some apps will be added, others updated, and it should all just work.
*/ */
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class FDroidRepoUpdateTest extends MultiIndexUpdaterTest { public class FDroidRepoUpdateTest extends MultiIndexUpdaterTest {

View File

@ -62,7 +62,6 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class IndexV1UpdaterTest extends FDroidProviderTest { public class IndexV1UpdaterTest extends FDroidProviderTest {
public static final String TAG = "IndexV1UpdaterTest"; public static final String TAG = "IndexV1UpdaterTest";

View File

@ -17,7 +17,6 @@ import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@Config(constants = BuildConfig.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@SuppressWarnings("LineLength") @SuppressWarnings("LineLength")
public class Issue763MultiRepo extends MultiIndexUpdaterTest { public class Issue763MultiRepo extends MultiIndexUpdaterTest {

View File

@ -33,7 +33,7 @@ import java.util.Map;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
@Config(constants = BuildConfig.class, shadows = ProperMultiIndexUpdaterTest.ArmSystemProperties.class) @Config(shadows = ProperMultiIndexUpdaterTest.ArmSystemProperties.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class ProperMultiIndexUpdaterTest extends MultiIndexUpdaterTest { public class ProperMultiIndexUpdaterTest extends MultiIndexUpdaterTest {
private static final String TAG = "ProperMultiRepoSupport"; private static final String TAG = "ProperMultiRepoSupport";

View File

@ -27,7 +27,7 @@ import org.robolectric.annotation.Config;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@Config(constants = BuildConfig.class, application = Application.class) @Config(application = Application.class)
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AppDetailsAdapterTest extends FDroidProviderTest { public class AppDetailsAdapterTest extends FDroidProviderTest {