Unverified Commit 6f71ce26 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

Place terminalUi flag on terminal interface (#39214)

parent a37239e5
...@@ -448,7 +448,6 @@ class AndroidDevice extends Device { ...@@ -448,7 +448,6 @@ class AndroidDevice extends Device {
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool ipv6 = false, bool ipv6 = false,
bool usesTerminalUi = true,
}) async { }) async {
if (!await _checkForSupportedAdbVersion() || !await _checkForSupportedAndroidVersion()) if (!await _checkForSupportedAdbVersion() || !await _checkForSupportedAndroidVersion())
return LaunchResult.failed(); return LaunchResult.failed();
......
...@@ -110,6 +110,11 @@ class AnsiTerminal { ...@@ -110,6 +110,11 @@ class AnsiTerminal {
bool get supportsColor => platform.stdoutSupportsAnsi ?? false; bool get supportsColor => platform.stdoutSupportsAnsi ?? false;
final RegExp _boldControls = RegExp('(${RegExp.escape(resetBold)}|${RegExp.escape(bold)})'); final RegExp _boldControls = RegExp('(${RegExp.escape(resetBold)}|${RegExp.escape(bold)})');
/// Whether we are interacting with the flutter tool via the terminal.
///
/// If not set, defaults to false.
bool usesTerminalUi = false;
String bolden(String message) { String bolden(String message) {
assert(message != null); assert(message != null);
if (!supportsColor || message.isEmpty) if (!supportsColor || message.isEmpty)
...@@ -186,6 +191,8 @@ class AnsiTerminal { ...@@ -186,6 +191,8 @@ class AnsiTerminal {
/// null, and the user presses enter without any other input, the return value /// null, and the user presses enter without any other input, the return value
/// will be the character in `acceptedCharacters` at the index given by /// will be the character in `acceptedCharacters` at the index given by
/// `defaultChoiceIndex`. /// `defaultChoiceIndex`.
///
/// If [usesTerminalUi] is false, throws a [StateError].
Future<String> promptForCharInput( Future<String> promptForCharInput(
List<String> acceptedCharacters, { List<String> acceptedCharacters, {
String prompt, String prompt,
...@@ -196,6 +203,9 @@ class AnsiTerminal { ...@@ -196,6 +203,9 @@ class AnsiTerminal {
assert(acceptedCharacters.isNotEmpty); assert(acceptedCharacters.isNotEmpty);
assert(prompt == null || prompt.isNotEmpty); assert(prompt == null || prompt.isNotEmpty);
assert(displayAcceptedCharacters != null); assert(displayAcceptedCharacters != null);
if (!usesTerminalUi) {
throw StateError('cannot prompt without a terminal ui');
}
List<String> charactersToDisplay = acceptedCharacters; List<String> charactersToDisplay = acceptedCharacters;
if (defaultChoiceIndex != null) { if (defaultChoiceIndex != null) {
assert(defaultChoiceIndex >= 0 && defaultChoiceIndex < acceptedCharacters.length); assert(defaultChoiceIndex >= 0 && defaultChoiceIndex < acceptedCharacters.length);
......
...@@ -60,7 +60,6 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -60,7 +60,6 @@ class ResidentWebRunner extends ResidentRunner {
target: target, target: target,
debuggingOptions: debuggingOptions, debuggingOptions: debuggingOptions,
ipv6: ipv6, ipv6: ipv6,
usesTerminalUi: true,
stayResident: true, stayResident: true,
); );
......
...@@ -11,6 +11,7 @@ import '../base/common.dart'; ...@@ -11,6 +11,7 @@ import '../base/common.dart';
import '../base/context.dart'; import '../base/context.dart';
import '../base/file_system.dart'; import '../base/file_system.dart';
import '../base/io.dart'; import '../base/io.dart';
import '../base/terminal.dart';
import '../base/utils.dart'; import '../base/utils.dart';
import '../cache.dart'; import '../cache.dart';
import '../commands/daemon.dart'; import '../commands/daemon.dart';
...@@ -269,13 +270,13 @@ class AttachCommand extends FlutterCommand { ...@@ -269,13 +270,13 @@ class AttachCommand extends FlutterCommand {
flutterDevice.observatoryUris = <Uri>[ observatoryUri ]; flutterDevice.observatoryUris = <Uri>[ observatoryUri ];
final List<FlutterDevice> flutterDevices = <FlutterDevice>[flutterDevice]; final List<FlutterDevice> flutterDevices = <FlutterDevice>[flutterDevice];
final DebuggingOptions debuggingOptions = DebuggingOptions.enabled(getBuildInfo()); final DebuggingOptions debuggingOptions = DebuggingOptions.enabled(getBuildInfo());
terminal.usesTerminalUi = daemon == null;
final ResidentRunner runner = useHot ? final ResidentRunner runner = useHot ?
hotRunnerFactory.build( hotRunnerFactory.build(
flutterDevices, flutterDevices,
target: targetFile, target: targetFile,
debuggingOptions: debuggingOptions, debuggingOptions: debuggingOptions,
packagesFilePath: globalResults['packages'], packagesFilePath: globalResults['packages'],
usesTerminalUi: daemon == null,
projectRootPath: argResults['project-root'], projectRootPath: argResults['project-root'],
dillOutputPath: argResults['output-dill'], dillOutputPath: argResults['output-dill'],
ipv6: usesIpv6, ipv6: usesIpv6,
...@@ -356,7 +357,6 @@ class HotRunnerFactory { ...@@ -356,7 +357,6 @@ class HotRunnerFactory {
List<FlutterDevice> devices, { List<FlutterDevice> devices, {
String target, String target,
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
bool usesTerminalUi = true,
bool benchmarkMode = false, bool benchmarkMode = false,
File applicationBinary, File applicationBinary,
bool hostIsIde = false, bool hostIsIde = false,
...@@ -370,7 +370,6 @@ class HotRunnerFactory { ...@@ -370,7 +370,6 @@ class HotRunnerFactory {
devices, devices,
target: target, target: target,
debuggingOptions: debuggingOptions, debuggingOptions: debuggingOptions,
usesTerminalUi: usesTerminalUi,
benchmarkMode: benchmarkMode, benchmarkMode: benchmarkMode,
applicationBinary: applicationBinary, applicationBinary: applicationBinary,
hostIsIde: hostIsIde, hostIsIde: hostIsIde,
......
...@@ -426,7 +426,6 @@ class AppDomain extends Domain { ...@@ -426,7 +426,6 @@ class AppDomain extends Domain {
<FlutterDevice>[flutterDevice], <FlutterDevice>[flutterDevice],
target: target, target: target,
debuggingOptions: options, debuggingOptions: options,
usesTerminalUi: false,
applicationBinary: applicationBinary, applicationBinary: applicationBinary,
projectRootPath: projectRootPath, projectRootPath: projectRootPath,
packagesFilePath: packagesFilePath, packagesFilePath: packagesFilePath,
...@@ -440,7 +439,6 @@ class AppDomain extends Domain { ...@@ -440,7 +439,6 @@ class AppDomain extends Domain {
target: target, target: target,
debuggingOptions: options, debuggingOptions: options,
applicationBinary: applicationBinary, applicationBinary: applicationBinary,
usesTerminalUi: false,
ipv6: ipv6, ipv6: ipv6,
); );
} }
......
...@@ -270,7 +270,6 @@ Future<LaunchResult> _startApp(DriveCommand command) async { ...@@ -270,7 +270,6 @@ Future<LaunchResult> _startApp(DriveCommand command) async {
), ),
platformArgs: platformArgs, platformArgs: platformArgs,
prebuiltApplication: !command.shouldBuild, prebuiltApplication: !command.shouldBuild,
usesTerminalUi: false,
); );
if (!result.started) { if (!result.started) {
......
...@@ -8,6 +8,7 @@ import 'package:args/command_runner.dart'; ...@@ -8,6 +8,7 @@ import 'package:args/command_runner.dart';
import '../base/common.dart'; import '../base/common.dart';
import '../base/file_system.dart'; import '../base/file_system.dart';
import '../base/terminal.dart';
import '../base/time.dart'; import '../base/time.dart';
import '../base/utils.dart'; import '../base/utils.dart';
import '../build_info.dart'; import '../build_info.dart';
...@@ -334,6 +335,7 @@ class RunCommand extends RunCommandBase { ...@@ -334,6 +335,7 @@ class RunCommand extends RunCommandBase {
endTimeOverride: appStartedTime, endTimeOverride: appStartedTime,
); );
} }
terminal.usesTerminalUi = true;
if (argResults['dart-flags'] != null && !FlutterVersion.instance.isMaster) { if (argResults['dart-flags'] != null && !FlutterVersion.instance.isMaster) {
throw UsageException('--dart-flags is not available on the stable ' throw UsageException('--dart-flags is not available on the stable '
......
...@@ -381,11 +381,6 @@ abstract class Device { ...@@ -381,11 +381,6 @@ abstract class Device {
/// ///
/// [platformArgs] allows callers to pass platform-specific arguments to the /// [platformArgs] allows callers to pass platform-specific arguments to the
/// start call. The build mode is not used by all platforms. /// start call. The build mode is not used by all platforms.
///
/// If [usesTerminalUi] is true, Flutter Tools may attempt to prompt the
/// user to resolve fixable issues such as selecting a signing certificate
/// for iOS device deployment. Set to false if stdin cannot be read from while
/// attempting to start the app.
Future<LaunchResult> startApp( Future<LaunchResult> startApp(
ApplicationPackage package, { ApplicationPackage package, {
String mainPath, String mainPath,
...@@ -394,7 +389,6 @@ abstract class Device { ...@@ -394,7 +389,6 @@ abstract class Device {
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool ipv6 = false, bool ipv6 = false,
bool usesTerminalUi = true,
}); });
/// Whether this device implements support for hot reload. /// Whether this device implements support for hot reload.
......
...@@ -226,7 +226,6 @@ class FuchsiaDevice extends Device { ...@@ -226,7 +226,6 @@ class FuchsiaDevice extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
if (!prebuiltApplication) { if (!prebuiltApplication) {
......
...@@ -94,7 +94,6 @@ final RegExp _certificateOrganizationalUnitExtractionPattern = RegExp(r'OU=([a-z ...@@ -94,7 +94,6 @@ final RegExp _certificateOrganizationalUnitExtractionPattern = RegExp(r'OU=([a-z
/// project has a development team set in the project's build settings. /// project has a development team set in the project's build settings.
Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
BuildableIOSApp iosApp, BuildableIOSApp iosApp,
bool usesTerminalUi = true,
}) async { }) async {
final Map<String, String> buildSettings = iosApp.project.buildSettings; final Map<String, String> buildSettings = iosApp.project.buildSettings;
if (buildSettings == null) if (buildSettings == null)
...@@ -140,7 +139,7 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({ ...@@ -140,7 +139,7 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
.toSet() // Unique. .toSet() // Unique.
.toList(); .toList();
final String signingIdentity = await _chooseSigningIdentity(validCodeSigningIdentities, usesTerminalUi); final String signingIdentity = await _chooseSigningIdentity(validCodeSigningIdentities);
// If none are chosen, return null. // If none are chosen, return null.
if (signingIdentity == null) if (signingIdentity == null)
...@@ -185,7 +184,7 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({ ...@@ -185,7 +184,7 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
}; };
} }
Future<String> _chooseSigningIdentity(List<String> validCodeSigningIdentities, bool usesTerminalUi) async { Future<String> _chooseSigningIdentity(List<String> validCodeSigningIdentities) async {
// The user has no valid code signing identities. // The user has no valid code signing identities.
if (validCodeSigningIdentities.isEmpty) { if (validCodeSigningIdentities.isEmpty) {
printError(noCertificatesInstruction, emphasis: true); printError(noCertificatesInstruction, emphasis: true);
...@@ -209,7 +208,7 @@ Future<String> _chooseSigningIdentity(List<String> validCodeSigningIdentities, b ...@@ -209,7 +208,7 @@ Future<String> _chooseSigningIdentity(List<String> validCodeSigningIdentities, b
// If terminal UI can't be used, just attempt with the first valid certificate // If terminal UI can't be used, just attempt with the first valid certificate
// since we can't ask the user. // since we can't ask the user.
if (!usesTerminalUi) if (!terminal.usesTerminalUi)
return validCodeSigningIdentities.first; return validCodeSigningIdentities.first;
final int count = validCodeSigningIdentities.length; final int count = validCodeSigningIdentities.length;
......
...@@ -263,7 +263,6 @@ class IOSDevice extends Device { ...@@ -263,7 +263,6 @@ class IOSDevice extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
if (!prebuiltApplication) { if (!prebuiltApplication) {
...@@ -279,7 +278,6 @@ class IOSDevice extends Device { ...@@ -279,7 +278,6 @@ class IOSDevice extends Device {
buildInfo: debuggingOptions.buildInfo, buildInfo: debuggingOptions.buildInfo,
targetOverride: mainPath, targetOverride: mainPath,
buildForDevice: true, buildForDevice: true,
usesTerminalUi: usesTerminalUi,
activeArch: iosArch, activeArch: iosArch,
); );
if (!buildResult.success) { if (!buildResult.success) {
......
...@@ -267,7 +267,7 @@ Future<XcodeBuildResult> buildXcodeProject({ ...@@ -267,7 +267,7 @@ Future<XcodeBuildResult> buildXcodeProject({
bool buildForDevice, bool buildForDevice,
DarwinArch activeArch, DarwinArch activeArch,
bool codesign = true, bool codesign = true,
bool usesTerminalUi = true,
}) async { }) async {
if (!upgradePbxProjWithFlutterAssets(app.project)) if (!upgradePbxProjWithFlutterAssets(app.project))
return XcodeBuildResult(success: false); return XcodeBuildResult(success: false);
...@@ -324,7 +324,7 @@ Future<XcodeBuildResult> buildXcodeProject({ ...@@ -324,7 +324,7 @@ Future<XcodeBuildResult> buildXcodeProject({
Map<String, String> autoSigningConfigs; Map<String, String> autoSigningConfigs;
if (codesign && buildForDevice) if (codesign && buildForDevice)
autoSigningConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app, usesTerminalUi: usesTerminalUi); autoSigningConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app);
// Before the build, all service definitions must be updated and the dylibs // Before the build, all service definitions must be updated and the dylibs
// copied over to a location that is suitable for Xcodebuild to find them. // copied over to a location that is suitable for Xcodebuild to find them.
......
...@@ -329,14 +329,13 @@ class IOSSimulator extends Device { ...@@ -329,14 +329,13 @@ class IOSSimulator extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
if (!prebuiltApplication && package is BuildableIOSApp) { if (!prebuiltApplication && package is BuildableIOSApp) {
printTrace('Building ${package.name} for $id.'); printTrace('Building ${package.name} for $id.');
try { try {
await _setupUpdatedApplicationBundle(package, debuggingOptions.buildInfo, mainPath, usesTerminalUi); await _setupUpdatedApplicationBundle(package, debuggingOptions.buildInfo, mainPath);
} on ToolExit catch (e) { } on ToolExit catch (e) {
printError(e.message); printError(e.message);
return LaunchResult.failed(); return LaunchResult.failed();
...@@ -406,7 +405,7 @@ class IOSSimulator extends Device { ...@@ -406,7 +405,7 @@ class IOSSimulator extends Device {
} }
} }
Future<void> _setupUpdatedApplicationBundle(covariant BuildableIOSApp app, BuildInfo buildInfo, String mainPath, bool usesTerminalUi) async { Future<void> _setupUpdatedApplicationBundle(covariant BuildableIOSApp app, BuildInfo buildInfo, String mainPath) async {
await _sideloadUpdatedAssetsForInstalledApplicationBundle(app, buildInfo, mainPath); await _sideloadUpdatedAssetsForInstalledApplicationBundle(app, buildInfo, mainPath);
// Step 1: Build the Xcode project. // Step 1: Build the Xcode project.
...@@ -422,7 +421,6 @@ class IOSSimulator extends Device { ...@@ -422,7 +421,6 @@ class IOSSimulator extends Device {
buildInfo: debugBuildInfo, buildInfo: debugBuildInfo,
targetOverride: mainPath, targetOverride: mainPath,
buildForDevice: false, buildForDevice: false,
usesTerminalUi: usesTerminalUi,
); );
if (!buildResult.success) if (!buildResult.success)
throwToolExit('Could not build the application for the simulator.'); throwToolExit('Could not build the application for the simulator.');
......
...@@ -76,7 +76,6 @@ class LinuxDevice extends Device { ...@@ -76,7 +76,6 @@ class LinuxDevice extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
_lastBuiltMode = debuggingOptions.buildInfo.mode; _lastBuiltMode = debuggingOptions.buildInfo.mode;
......
...@@ -77,7 +77,6 @@ class MacOSDevice extends Device { ...@@ -77,7 +77,6 @@ class MacOSDevice extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
// Stop any running applications with the same executable. // Stop any running applications with the same executable.
......
...@@ -382,7 +382,6 @@ class FlutterDevice { ...@@ -382,7 +382,6 @@ class FlutterDevice {
platformArgs: platformArgs, platformArgs: platformArgs,
route: route, route: route,
prebuiltApplication: prebuiltMode, prebuiltApplication: prebuiltMode,
usesTerminalUi: hotRunner.usesTerminalUi,
ipv6: hotRunner.ipv6, ipv6: hotRunner.ipv6,
); );
...@@ -443,7 +442,6 @@ class FlutterDevice { ...@@ -443,7 +442,6 @@ class FlutterDevice {
platformArgs: platformArgs, platformArgs: platformArgs,
route: route, route: route,
prebuiltApplication: prebuiltMode, prebuiltApplication: prebuiltMode,
usesTerminalUi: coldRunner.usesTerminalUi,
ipv6: coldRunner.ipv6, ipv6: coldRunner.ipv6,
); );
...@@ -536,7 +534,6 @@ abstract class ResidentRunner { ...@@ -536,7 +534,6 @@ abstract class ResidentRunner {
String projectRootPath, String projectRootPath,
String packagesFilePath, String packagesFilePath,
this.ipv6, this.ipv6,
this.usesTerminalUi = true,
this.stayResident = true, this.stayResident = true,
this.hotMode = true, this.hotMode = true,
this.dillOutputPath, this.dillOutputPath,
...@@ -563,7 +560,6 @@ abstract class ResidentRunner { ...@@ -563,7 +560,6 @@ abstract class ResidentRunner {
final List<FlutterDevice> flutterDevices; final List<FlutterDevice> flutterDevices;
final String target; final String target;
final DebuggingOptions debuggingOptions; final DebuggingOptions debuggingOptions;
final bool usesTerminalUi;
final bool stayResident; final bool stayResident;
final bool ipv6; final bool ipv6;
final Completer<int> _finished = Completer<int>(); final Completer<int> _finished = Completer<int>();
......
...@@ -23,13 +23,11 @@ class ColdRunner extends ResidentRunner { ...@@ -23,13 +23,11 @@ class ColdRunner extends ResidentRunner {
this.awaitFirstFrameWhenTracing = true, this.awaitFirstFrameWhenTracing = true,
this.applicationBinary, this.applicationBinary,
bool ipv6 = false, bool ipv6 = false,
bool usesTerminalUi = false,
bool stayResident = true, bool stayResident = true,
}) : super(devices, }) : super(devices,
target: target, target: target,
debuggingOptions: debuggingOptions, debuggingOptions: debuggingOptions,
hotMode: false, hotMode: false,
usesTerminalUi: usesTerminalUi,
stayResident: stayResident, stayResident: stayResident,
ipv6: ipv6); ipv6: ipv6);
......
...@@ -58,7 +58,6 @@ class HotRunner extends ResidentRunner { ...@@ -58,7 +58,6 @@ class HotRunner extends ResidentRunner {
List<FlutterDevice> devices, { List<FlutterDevice> devices, {
String target, String target,
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
bool usesTerminalUi = true,
this.benchmarkMode = false, this.benchmarkMode = false,
this.applicationBinary, this.applicationBinary,
this.hostIsIde = false, this.hostIsIde = false,
...@@ -70,7 +69,6 @@ class HotRunner extends ResidentRunner { ...@@ -70,7 +69,6 @@ class HotRunner extends ResidentRunner {
}) : super(devices, }) : super(devices,
target: target, target: target,
debuggingOptions: debuggingOptions, debuggingOptions: debuggingOptions,
usesTerminalUi: usesTerminalUi,
projectRootPath: projectRootPath, projectRootPath: projectRootPath,
packagesFilePath: packagesFilePath, packagesFilePath: packagesFilePath,
stayResident: stayResident, stayResident: stayResident,
......
...@@ -105,7 +105,6 @@ class FlutterTesterDevice extends Device { ...@@ -105,7 +105,6 @@ class FlutterTesterDevice extends Device {
@required DebuggingOptions debuggingOptions, @required DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
final BuildInfo buildInfo = debuggingOptions.buildInfo; final BuildInfo buildInfo = debuggingOptions.buildInfo;
......
...@@ -123,7 +123,6 @@ class ChromeDevice extends Device { ...@@ -123,7 +123,6 @@ class ChromeDevice extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, Object> platformArgs, Map<String, Object> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
// See [ResidentWebRunner.run] in flutter_tools/lib/src/resident_web_runner.dart // See [ResidentWebRunner.run] in flutter_tools/lib/src/resident_web_runner.dart
......
...@@ -78,7 +78,6 @@ class WindowsDevice extends Device { ...@@ -78,7 +78,6 @@ class WindowsDevice extends Device {
DebuggingOptions debuggingOptions, DebuggingOptions debuggingOptions,
Map<String, dynamic> platformArgs, Map<String, dynamic> platformArgs,
bool prebuiltApplication = false, bool prebuiltApplication = false,
bool usesTerminalUi = true,
bool ipv6 = false, bool ipv6 = false,
}) async { }) async {
if (!prebuiltApplication) { if (!prebuiltApplication) {
......
...@@ -123,7 +123,15 @@ void main() { ...@@ -123,7 +123,15 @@ void main() {
terminalUnderTest = TestTerminal(); terminalUnderTest = TestTerminal();
}); });
testUsingContext('character prompt throws if usesTerminalUi is false', () async {
expect(terminalUnderTest.promptForCharInput(
<String>['a', 'b', 'c'],
prompt: 'Please choose something',
), throwsA(isInstanceOf<StateError>()));
});
testUsingContext('character prompt', () async { testUsingContext('character prompt', () async {
terminalUnderTest.usesTerminalUi = true;
mockStdInStream = Stream<String>.fromFutures(<Future<String>>[ mockStdInStream = Stream<String>.fromFutures(<Future<String>>[
Future<String>.value('d'), // Not in accepted list. Future<String>.value('d'), // Not in accepted list.
Future<String>.value('\n'), // Not in accepted list Future<String>.value('\n'), // Not in accepted list
...@@ -143,6 +151,7 @@ void main() { ...@@ -143,6 +151,7 @@ void main() {
}); });
testUsingContext('default character choice without displayAcceptedCharacters', () async { testUsingContext('default character choice without displayAcceptedCharacters', () async {
terminalUnderTest.usesTerminalUi = true;
mockStdInStream = Stream<String>.fromFutures(<Future<String>>[ mockStdInStream = Stream<String>.fromFutures(<Future<String>>[
Future<String>.value('\n'), // Not in accepted list Future<String>.value('\n'), // Not in accepted list
]).asBroadcastStream(); ]).asBroadcastStream();
......
...@@ -147,7 +147,6 @@ void main() { ...@@ -147,7 +147,6 @@ void main() {
dillOutputPath: anyNamed('dillOutputPath'), dillOutputPath: anyNamed('dillOutputPath'),
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'), packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUi: anyNamed('usesTerminalUi'),
flutterProject: anyNamed('flutterProject'), flutterProject: anyNamed('flutterProject'),
ipv6: false, ipv6: false,
), ),
...@@ -179,7 +178,6 @@ void main() { ...@@ -179,7 +178,6 @@ void main() {
dillOutputPath: outputDill, dillOutputPath: outputDill,
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'), packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUi: anyNamed('usesTerminalUi'),
flutterProject: anyNamed('flutterProject'), flutterProject: anyNamed('flutterProject'),
ipv6: false, ipv6: false,
), ),
...@@ -269,7 +267,6 @@ void main() { ...@@ -269,7 +267,6 @@ void main() {
target: anyNamed('target'), target: anyNamed('target'),
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'), packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUi: anyNamed('usesTerminalUi'),
flutterProject: anyNamed('flutterProject'), flutterProject: anyNamed('flutterProject'),
ipv6: false, ipv6: false,
)).thenReturn(mockHotRunner); )).thenReturn(mockHotRunner);
...@@ -299,7 +296,6 @@ void main() { ...@@ -299,7 +296,6 @@ void main() {
target: foo.path, target: foo.path,
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
packagesFilePath: anyNamed('packagesFilePath'), packagesFilePath: anyNamed('packagesFilePath'),
usesTerminalUi: anyNamed('usesTerminalUi'),
flutterProject: anyNamed('flutterProject'), flutterProject: anyNamed('flutterProject'),
ipv6: false, ipv6: false,
)).called(1); )).called(1);
......
...@@ -338,7 +338,6 @@ void main() { ...@@ -338,7 +338,6 @@ void main() {
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
platformArgs: anyNamed('platformArgs'), platformArgs: anyNamed('platformArgs'),
prebuiltApplication: anyNamed('prebuiltApplication'), prebuiltApplication: anyNamed('prebuiltApplication'),
usesTerminalUi: false,
)).thenAnswer((_) => Future<LaunchResult>.value(mockLaunchResult)); )).thenAnswer((_) => Future<LaunchResult>.value(mockLaunchResult));
when(mockDevice.isAppInstalled(any)).thenAnswer((_) => Future<bool>.value(false)); when(mockDevice.isAppInstalled(any)).thenAnswer((_) => Future<bool>.value(false));
...@@ -380,7 +379,6 @@ void main() { ...@@ -380,7 +379,6 @@ void main() {
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
platformArgs: anyNamed('platformArgs'), platformArgs: anyNamed('platformArgs'),
prebuiltApplication: false, prebuiltApplication: false,
usesTerminalUi: false,
)); ));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fs, FileSystem: () => fs,
...@@ -407,7 +405,6 @@ void main() { ...@@ -407,7 +405,6 @@ void main() {
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
platformArgs: anyNamed('platformArgs'), platformArgs: anyNamed('platformArgs'),
prebuiltApplication: false, prebuiltApplication: false,
usesTerminalUi: false,
)); ));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fs, FileSystem: () => fs,
...@@ -434,7 +431,6 @@ void main() { ...@@ -434,7 +431,6 @@ void main() {
debuggingOptions: anyNamed('debuggingOptions'), debuggingOptions: anyNamed('debuggingOptions'),
platformArgs: anyNamed('platformArgs'), platformArgs: anyNamed('platformArgs'),
prebuiltApplication: true, prebuiltApplication: true,
usesTerminalUi: false,
)); ));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fs, FileSystem: () => fs,
......
...@@ -35,6 +35,7 @@ void main() { ...@@ -35,6 +35,7 @@ void main() {
'For our purposes': 'a non-empty build settings map is valid', 'For our purposes': 'a non-empty build settings map is valid',
}); });
testTerminal = TestTerminal(); testTerminal = TestTerminal();
testTerminal.usesTerminalUi = true;
app = BuildableIOSApp(mockIosProject); app = BuildableIOSApp(mockIosProject);
}); });
...@@ -296,6 +297,7 @@ void main() { ...@@ -296,6 +297,7 @@ void main() {
}); });
testUsingContext('Test multiple identity in machine mode works', () async { testUsingContext('Test multiple identity in machine mode works', () async {
testTerminal.usesTerminalUi = false;
when(mockProcessManager.runSync(<String>['which', 'security'])) when(mockProcessManager.runSync(<String>['which', 'security']))
.thenReturn(exitsHappy); .thenReturn(exitsHappy);
when(mockProcessManager.runSync(<String>['which', 'openssl'])) when(mockProcessManager.runSync(<String>['which', 'openssl']))
...@@ -347,7 +349,7 @@ void main() { ...@@ -347,7 +349,7 @@ void main() {
when(mockOpenSslProcess.stderr).thenAnswer((Invocation invocation) => mockOpenSslStdErr); when(mockOpenSslProcess.stderr).thenAnswer((Invocation invocation) => mockOpenSslStdErr);
when(mockOpenSslProcess.exitCode).thenAnswer((_) => Future<int>.value(0)); when(mockOpenSslProcess.exitCode).thenAnswer((_) => Future<int>.value(0));
final Map<String, String> signingConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app, usesTerminalUi: false); final Map<String, String> signingConfigs = await getCodeSigningIdentityDevelopmentTeam(iosApp: app);
expect( expect(
testLogger.statusText, testLogger.statusText,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment