Add a way to detect if code runs as instrumentation test

and disable some dialogs to make tests easier to write
This commit is contained in:
Torsten Grote
2021-03-25 13:52:51 -03:00
parent a12166c13b
commit f971533a5b
9 changed files with 31 additions and 8 deletions

View File

@@ -19,4 +19,6 @@ public interface BriarApplication extends BrambleApplication {
SharedPreferences getDefaultSharedPreferences();
boolean isRunningInBackground();
boolean isInstrumentationTest();
}

View File

@@ -151,4 +151,9 @@ public class BriarApplicationImpl extends Application
ActivityManager.getMyMemoryState(info);
return (info.importance != IMPORTANCE_FOREGROUND);
}
@Override
public boolean isInstrumentationTest() {
return false;
}
}

View File

@@ -301,7 +301,9 @@ public class BriarService extends Service {
LOG.info("Interrupted while waiting for shutdown");
}
LOG.info("Exiting");
System.exit(0);
if (!app.isInstrumentationTest()) {
System.exit(0);
}
}, "BackgroundShutdown");
}, "BackgroundShutdown");
}

View File

@@ -44,7 +44,6 @@ import static androidx.lifecycle.Lifecycle.State.STARTED;
import static java.util.Collections.emptyList;
import static java.util.logging.Level.INFO;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.briar.BuildConfig.FLAVOR;
import static org.briarproject.briar.android.TestingConstants.PREVENT_SCREENSHOTS;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
@@ -194,7 +193,9 @@ public abstract class BaseActivity extends AppCompatActivity
}
private boolean showScreenFilterWarning() {
if (FLAVOR == "screenshot") return false;
if (((BriarApplication) getApplication()).isInstrumentationTest()) {
return false;
}
// If the dialog is already visible, filter the tap
ScreenFilterDialogFragment f = findDialogFragment();
if (f != null && f.isVisible()) return false;

View File

@@ -10,6 +10,7 @@ import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.bramble.api.system.Wakeful;
import org.briarproject.briar.R;
import org.briarproject.briar.android.BriarApplication;
import org.briarproject.briar.android.account.UnlockActivity;
import org.briarproject.briar.android.controller.BriarController;
import org.briarproject.briar.android.controller.DbController;
@@ -236,7 +237,8 @@ public abstract class BriarActivity extends BaseActivity {
if (SDK_INT >= 21) finishAndRemoveTask();
else supportFinishAfterTransition();
LOG.info("Exiting");
System.exit(0);
BriarApplication app = (BriarApplication) getApplication();
if (!app.isInstrumentationTest()) System.exit(0);
}
@Deprecated

View File

@@ -12,6 +12,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.settings.Settings;
import org.briarproject.bramble.api.settings.SettingsManager;
import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.briar.android.BriarApplication;
import org.briarproject.briar.android.BriarService;
import org.briarproject.briar.android.BriarService.BriarServiceConnection;
import org.briarproject.briar.android.controller.handler.ResultHandler;
@@ -104,7 +105,8 @@ public class BriarControllerImpl implements BriarController {
@Override
public void hasDozed(ResultHandler<Boolean> handler) {
if (!dozeWatchdog.getAndResetDozeFlag()
BriarApplication app = (BriarApplication) activity.getApplication();
if (app.isInstrumentationTest() || !dozeWatchdog.getAndResetDozeFlag()
|| !needsDozeWhitelisting(activity)) {
handler.onResult(false);
return;

View File

@@ -27,6 +27,7 @@ import org.briarproject.bramble.api.plugin.Plugin.State;
import org.briarproject.bramble.api.plugin.TorConstants;
import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.briar.R;
import org.briarproject.briar.android.BriarApplication;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BriarActivity;
import org.briarproject.briar.android.blog.FeedFragment;
@@ -71,7 +72,6 @@ import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleS
import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING;
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
import static org.briarproject.briar.BuildConfig.FLAVOR;
import static org.briarproject.briar.android.BriarService.EXTRA_STARTUP_FAILED;
import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD;
import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_PASSWORD;
@@ -135,7 +135,8 @@ public class NavDrawerActivity extends BriarActivity implements
navDrawerViewModel = provider.get(NavDrawerViewModel.class);
pluginViewModel = provider.get(PluginViewModel.class);
if (IS_DEBUG_BUILD && (FLAVOR != "screenshot")) {
BriarApplication app = (BriarApplication) getApplication();
if (IS_DEBUG_BUILD && !app.isInstrumentationTest()) {
navDrawerViewModel.showExpiryWarning()
.observe(this, this::showExpiryWarning);
}

View File

@@ -10,6 +10,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.settings.Settings;
import org.briarproject.bramble.api.settings.SettingsManager;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.BriarApplication;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import java.util.concurrent.Executor;
@@ -120,7 +121,9 @@ public class NavDrawerViewModel extends DbViewModel {
@UiThread
void checkDozeWhitelisting() {
// check this first, to hit the DbThread only when really necessary
if (!needsDozeWhitelisting(getApplication())) {
BriarApplication app = (BriarApplication) getApplication();
if (app.isInstrumentationTest() ||
!needsDozeWhitelisting(getApplication())) {
shouldAskForDozeWhitelisting.setValue(false);
return;
}