From 5b4f6cebf7306396ff0830e3a1eedb5e40b8f614 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 4 Jul 2018 22:09:52 +0200 Subject: [PATCH] always reset singleton if running a unit test --- .../org/sufficientlysecure/keychain/Constants.java | 10 ++++++++++ .../sufficientlysecure/keychain/KeychainDatabase.java | 7 ++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index fce89989b..c3b2687de 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -37,6 +37,8 @@ public final class Constants { public static final boolean DEBUG_SYNC_REMOVE_CONTACTS = false; public static final boolean DEBUG_KEYSERVER_SYNC = false; + public static final boolean IS_RUNNING_UNITTEST = isRunningUnitTest(); + public static final String TAG = DEBUG ? "Keychain D" : "Keychain"; public static final String PACKAGE_NAME = "org.sufficientlysecure.keychain"; @@ -211,4 +213,12 @@ public final class Constants { public static final KeyFormat SECURITY_TOKEN_V2_DEC = new RSAKeyFormat(2048, ELEN, RSAKeyFormat.RSAAlgorithmFormat.CRT_WITH_MODULUS); public static final KeyFormat SECURITY_TOKEN_V2_AUTH = new RSAKeyFormat(2048, ELEN, RSAKeyFormat.RSAAlgorithmFormat.CRT_WITH_MODULUS); + private static boolean isRunningUnitTest() { + try { + Class.forName("org.sufficientlysecure.keychain.KeychainTestRunner"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java index f8ae8bf5d..cbcf7e451 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainDatabase.java @@ -58,15 +58,12 @@ public class KeychainDatabase { private static KeychainDatabase sInstance; public static KeychainDatabase getInstance(Context context) { + if (sInstance == null || Constants.IS_RUNNING_UNITTEST) { sInstance = new KeychainDatabase(context.getApplicationContext()); + } return sInstance; } - @VisibleForTesting - public static void resetSingleton() { - sInstance = null; - } - public interface Tables { String KEY_RINGS_PUBLIC = "keyrings_public"; String KEYS = "keys";