From 8f81bf0cb9f914efa88aedd1ee955d51203d9bca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 1 Jul 2020 21:29:18 +0200 Subject: [PATCH] Use androidx.test artifacts for tests not just androidTests - this allows replacing deprecated RuntimeEnvironment.application --- app/build.gradle | 15 ++++++------- .../org/fdroid/fdroid/PreferencesTest.java | 4 +++- .../java/org/fdroid/fdroid/TestUtils.java | 4 +++- .../java/org/fdroid/fdroid/UtilsTest.java | 5 ++++- .../org/fdroid/fdroid/data/DBHelperTest.java | 6 +++--- .../fdroid/fdroid/data/DatabaseMigration.java | 5 ++++- .../fdroid/data/FDroidProviderTest.java | 8 +++---- .../fdroid/data/InstalledAppProviderTest.java | 9 ++++---- .../fdroid/fdroid/data/ProviderUriTests.java | 21 +++++++++---------- .../fdroid/views/AppDetailsAdapterTest.java | 4 ++-- .../fdroid/nearby/LocalHTTPDManagerTest.java | 6 ++++-- .../fdroid/fdroid/nearby/LocalHTTPDTest.java | 8 ++++--- .../fdroid/nearby/LocalRepoKeyStoreTest.java | 6 ++++-- .../fdroid/fdroid/updater/SwapRepoTest.java | 13 ++++++------ 14 files changed, 63 insertions(+), 51 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f37efd26f..d1044e7ef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -169,21 +169,18 @@ dependencies { fullImplementation 'org.nanohttpd:nanohttpd:2.3.1' testImplementation 'org.robolectric:robolectric:4.3' - testImplementation 'androidx.test:monitor:1.1.1' + testImplementation 'junit:junit:4.12' testImplementation 'org.bouncycastle:bcprov-jdk15on:1.60' - testImplementation 'junit:junit:4.13' - testImplementation 'org.hamcrest:hamcrest:2.2' testImplementation 'org.mockito:mockito-core:2.7.22' - - androidTestImplementation 'androidx.test:core:1.2.0' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test:rules:1.2.0' + testImplementation 'androidx.test:core:1.2.0' + testImplementation 'androidx.test:runner:1.2.0' + testImplementation 'androidx.test:rules:1.2.0' + testImplementation 'androidx.test:monitor:1.2.0' + testImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' - androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' - androidTestImplementation 'androidx.annotation:annotation:1.1.0' } checkstyle { diff --git a/app/src/test/java/org/fdroid/fdroid/PreferencesTest.java b/app/src/test/java/org/fdroid/fdroid/PreferencesTest.java index 930dd0b86..b990e18dc 100644 --- a/app/src/test/java/org/fdroid/fdroid/PreferencesTest.java +++ b/app/src/test/java/org/fdroid/fdroid/PreferencesTest.java @@ -21,6 +21,8 @@ package org.fdroid.fdroid; import android.content.Context; import android.content.SharedPreferences; import androidx.preference.PreferenceManager; +import androidx.test.core.app.ApplicationProvider; + import android.util.Log; import org.junit.Before; import org.junit.Test; @@ -39,7 +41,7 @@ import static org.junit.Assert.assertTrue; public class PreferencesTest { private static final String TAG = "PreferencesTest"; - private static final Context CONTEXT = RuntimeEnvironment.application; + private static final Context CONTEXT = ApplicationProvider.getApplicationContext(); private SharedPreferences defaults; diff --git a/app/src/test/java/org/fdroid/fdroid/TestUtils.java b/app/src/test/java/org/fdroid/fdroid/TestUtils.java index b5bc1beaa..5b84bfeb6 100644 --- a/app/src/test/java/org/fdroid/fdroid/TestUtils.java +++ b/app/src/test/java/org/fdroid/fdroid/TestUtils.java @@ -8,6 +8,8 @@ import android.content.ContextWrapper; import android.content.pm.ProviderInfo; import android.net.Uri; +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.ApkProvider; import org.fdroid.fdroid.data.App; @@ -158,7 +160,7 @@ public class TestUtils { */ public static ContextWrapper createContextWithContentResolver(ContentResolver contentResolver) { final ContentResolver resolver = mock(ContentResolver.class, AdditionalAnswers.delegatesTo(contentResolver)); - return new ContextWrapper(RuntimeEnvironment.application.getApplicationContext()) { + return new ContextWrapper(ApplicationProvider.getApplicationContext()) { @Override public ContentResolver getContentResolver() { return resolver; diff --git a/app/src/test/java/org/fdroid/fdroid/UtilsTest.java b/app/src/test/java/org/fdroid/fdroid/UtilsTest.java index 71c2fec7b..bc89e3c77 100644 --- a/app/src/test/java/org/fdroid/fdroid/UtilsTest.java +++ b/app/src/test/java/org/fdroid/fdroid/UtilsTest.java @@ -2,6 +2,9 @@ package org.fdroid.fdroid; import android.content.Context; + +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.views.AppDetailsRecyclerViewAdapter; import org.junit.Test; import org.junit.runner.RunWith; @@ -85,7 +88,7 @@ public class UtilsTest { @Test public void testFormatFingerprint() { - Context context = RuntimeEnvironment.application; + Context context = ApplicationProvider.getApplicationContext(); String badResult = Utils.formatFingerprint(context, ""); // real fingerprints String formatted; diff --git a/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java b/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java index 53c6441c8..27cdda382 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java @@ -1,10 +1,11 @@ package org.fdroid.fdroid.data; import android.content.Context; -import androidx.test.platform.app.InstrumentationRegistry; import android.text.TextUtils; import android.util.Log; +import androidx.test.core.app.ApplicationProvider; + import org.apache.commons.io.IOUtils; import org.fdroid.fdroid.R; import org.fdroid.fdroid.TestUtils; @@ -12,7 +13,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import org.xmlpull.v1.XmlPullParserException; import java.io.File; @@ -47,7 +47,7 @@ public class DBHelperTest { @Before public final void setupBase() { - context = RuntimeEnvironment.application.getApplicationContext(); + context = ApplicationProvider.getApplicationContext(); } @Test diff --git a/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java b/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java index 8411a4b36..d8a4c5cd5 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java +++ b/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java @@ -7,6 +7,9 @@ import android.content.Context; import android.content.ContextWrapper; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; + +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.TestUtils; @@ -29,7 +32,7 @@ public class DatabaseMigration { @Before public final void setupBase() { - contentResolver = RuntimeEnvironment.application.getContentResolver(); + contentResolver = ApplicationProvider.getApplicationContext().getContentResolver(); context = TestUtils.createContextWithContentResolver(contentResolver); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); } diff --git a/app/src/test/java/org/fdroid/fdroid/data/FDroidProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/FDroidProviderTest.java index 98ea912da..53551d1f9 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/FDroidProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/FDroidProviderTest.java @@ -3,12 +3,12 @@ package org.fdroid.fdroid.data; import android.content.ContentResolver; import android.content.ContentValues; import android.content.ContextWrapper; + +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.TestUtils; import org.junit.After; import org.junit.Before; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; -import org.robolectric.shadows.ShadowContentResolver; public abstract class FDroidProviderTest { // NOPMD This abstract class does not have any abstract methods @@ -17,7 +17,7 @@ public abstract class FDroidProviderTest { // NOPMD This abstract class does not @Before public final void setupBase() { - contentResolver = RuntimeEnvironment.application.getContentResolver(); + contentResolver = ApplicationProvider.getApplicationContext().getContentResolver(); context = TestUtils.createContextWithContentResolver(contentResolver); TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class); } diff --git a/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java index 8d27d60e0..7e6131476 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java @@ -4,7 +4,9 @@ import android.app.Application; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; -import org.fdroid.fdroid.BuildConfig; + +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.data.Schema.InstalledAppTable.Cols; @@ -12,7 +14,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.Map; @@ -36,7 +37,7 @@ public class InstalledAppProviderTest extends FDroidProviderTest { @Test public void insertSingleApp() { - Map foundBefore = InstalledAppProvider.Helper.lastUpdateTimes(RuntimeEnvironment.application); + Map foundBefore = InstalledAppProvider.Helper.lastUpdateTimes(ApplicationProvider.getApplicationContext()); assertEquals(foundBefore.size(), 0); ContentValues values = new ContentValues(); @@ -50,7 +51,7 @@ public class InstalledAppProviderTest extends FDroidProviderTest { values.put(Cols.SIGNATURE, "000111222333444555666777888999aaabbbcccdddeeefff"); contentResolver.insert(InstalledAppProvider.getContentUri(), values); - Map foundAfter = InstalledAppProvider.Helper.lastUpdateTimes(RuntimeEnvironment.application); + Map foundAfter = InstalledAppProvider.Helper.lastUpdateTimes(ApplicationProvider.getApplicationContext()); assertEquals(1, foundAfter.size()); assertEquals(100000000L, foundAfter.get("org.example.test-app").longValue()); diff --git a/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java b/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java index 060488aca..12950b026 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java +++ b/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java @@ -1,12 +1,9 @@ package org.fdroid.fdroid.data; -import static org.fdroid.fdroid.Assert.assertInvalidUri; -import static org.fdroid.fdroid.Assert.assertValidUri; - import android.content.ContentResolver; -import java.util.ArrayList; -import java.util.List; -import org.fdroid.fdroid.BuildConfig; + +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.data.Schema.InstalledAppTable; import org.fdroid.fdroid.mock.MockApk; @@ -15,10 +12,12 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; -import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowContentResolver; + +import java.util.ArrayList; +import java.util.List; + +import static org.fdroid.fdroid.Assert.assertInvalidUri; +import static org.fdroid.fdroid.Assert.assertValidUri; @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") @@ -33,7 +32,7 @@ public class ProviderUriTests { @Before public void setup() { - resolver = RuntimeEnvironment.application.getContentResolver(); + resolver = ApplicationProvider.getApplicationContext().getContentResolver(); } @After diff --git a/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java b/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java index 3a20398bf..88a17ccfd 100644 --- a/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java @@ -8,6 +8,7 @@ import android.view.ViewGroup; import androidx.appcompat.view.ContextThemeWrapper; import androidx.recyclerview.widget.RecyclerView; +import androidx.test.core.app.ApplicationProvider; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; @@ -27,7 +28,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import static org.junit.Assert.assertEquals; @@ -48,7 +48,7 @@ public class AppDetailsAdapterTest extends FDroidProviderTest { app = AppProviderTest.insertApp(contentResolver, context, "com.example.app", "Test App", new ContentValues(), repo.getId()); - themeContext = new ContextThemeWrapper(RuntimeEnvironment.application, R.style.AppBaseThemeDark); + themeContext = new ContextThemeWrapper(ApplicationProvider.getApplicationContext(), R.style.AppBaseThemeDark); } @After diff --git a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDManagerTest.java b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDManagerTest.java index 1236f2b71..9219b0160 100644 --- a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDManagerTest.java +++ b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDManagerTest.java @@ -1,12 +1,14 @@ package org.fdroid.fdroid.nearby; import android.content.Context; + +import androidx.test.core.app.ApplicationProvider; + import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Utils; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowLog; import java.util.concurrent.CountDownLatch; @@ -23,7 +25,7 @@ public class LocalHTTPDManagerTest { @Test public void testStartStop() throws InterruptedException { ShadowLog.stream = System.out; - Context context = RuntimeEnvironment.application; + Context context = ApplicationProvider.getApplicationContext(); final String host = "localhost"; final int port = 8888; diff --git a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDTest.java b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDTest.java index b720d1bd1..d08264ce2 100644 --- a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDTest.java +++ b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalHTTPDTest.java @@ -35,6 +35,9 @@ package org.fdroid.fdroid.nearby; import android.content.Context; import android.text.TextUtils; + +import androidx.test.core.app.ApplicationProvider; + import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.fdroid.fdroid.Utils; @@ -45,7 +48,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowLog; import java.io.File; @@ -88,7 +90,7 @@ public class LocalHTTPDTest { assertFalse(Utils.isServerSocketInUse(port)); - final Context context = RuntimeEnvironment.application.getApplicationContext(); + final Context context = ApplicationProvider.getApplicationContext(); webRoot = context.getFilesDir(); FileUtils.deleteDirectory(webRoot); assertTrue(webRoot.mkdir()); @@ -266,7 +268,7 @@ public class LocalHTTPDTest { @Override public void run() { LocalHTTPD localHttpd = new LocalHTTPD( - RuntimeEnvironment.application, + ApplicationProvider.getApplicationContext(), "localhost", testPort, webRoot, diff --git a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java index 027d41074..8681ddbe9 100644 --- a/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java +++ b/app/src/testFull/java/org/fdroid/fdroid/nearby/LocalRepoKeyStoreTest.java @@ -2,13 +2,15 @@ package org.fdroid.fdroid.nearby; import android.content.Context; import android.text.TextUtils; + +import androidx.test.core.app.ApplicationProvider; + import org.apache.commons.io.IOUtils; import org.fdroid.fdroid.IndexUpdater; import org.fdroid.fdroid.Utils; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; import java.io.BufferedOutputStream; import java.io.File; @@ -29,7 +31,7 @@ public class LocalRepoKeyStoreTest { @Test public void testSignZip() throws IOException, LocalRepoKeyStore.InitException, IndexUpdater.SigningException { - Context context = RuntimeEnvironment.application; + Context context = ApplicationProvider.getApplicationContext(); File xmlIndexJarUnsigned = File.createTempFile(getClass().getName(), "unsigned.jar"); BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(xmlIndexJarUnsigned)); diff --git a/app/src/testFull/java/org/fdroid/fdroid/updater/SwapRepoTest.java b/app/src/testFull/java/org/fdroid/fdroid/updater/SwapRepoTest.java index 1f6b1518e..8f83fce73 100644 --- a/app/src/testFull/java/org/fdroid/fdroid/updater/SwapRepoTest.java +++ b/app/src/testFull/java/org/fdroid/fdroid/updater/SwapRepoTest.java @@ -7,6 +7,9 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.text.TextUtils; + +import androidx.test.core.app.ApplicationProvider; + import org.apache.commons.net.util.SubnetUtils; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Hasher; @@ -23,23 +26,19 @@ import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.data.Schema; import org.fdroid.fdroid.data.ShadowApp; import org.fdroid.fdroid.data.TempAppProvider; +import org.fdroid.fdroid.nearby.LocalHTTPD; import org.fdroid.fdroid.nearby.LocalRepoKeyStore; import org.fdroid.fdroid.nearby.LocalRepoManager; import org.fdroid.fdroid.nearby.LocalRepoService; import org.fdroid.fdroid.nearby.WifiStateChangeService; -import org.fdroid.fdroid.nearby.LocalHTTPD; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.ShadowLog; -import org.robolectric.shadows.ShadowPackageManager; import java.io.File; import java.io.IOException; @@ -72,9 +71,9 @@ public class SwapRepoTest { public void setUp() { ShadowLog.stream = System.out; - contentResolver = RuntimeEnvironment.application.getContentResolver(); + contentResolver = ApplicationProvider.getApplicationContext().getContentResolver(); - context = new ContextWrapper(RuntimeEnvironment.application.getApplicationContext()) { + context = new ContextWrapper(ApplicationProvider.getApplicationContext()) { @Override public ContentResolver getContentResolver() { return contentResolver;