[flutter_tools] throw error when argResults is null (#103827)
This commit is contained in:
parent
9651f1d717
commit
8fbf89b9f2
@ -1524,20 +1524,20 @@ abstract class FlutterCommand extends Command<void> {
|
|||||||
|
|
||||||
/// Gets the parsed command-line option named [name] as a `bool?`.
|
/// Gets the parsed command-line option named [name] as a `bool?`.
|
||||||
bool? boolArg(String name) {
|
bool? boolArg(String name) {
|
||||||
if (argResults == null || !argParser.options.containsKey(name)) {
|
if (!argParser.options.containsKey(name)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return argResults?[name] as bool?;
|
return argResults![name] as bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Gets the parsed command-line option named [name] as a `String`.
|
/// Gets the parsed command-line option named [name] as a `String`.
|
||||||
String? stringArgDeprecated(String name) => argResults?[name] as String?;
|
String? stringArgDeprecated(String name) => argResults?[name] as String?;
|
||||||
|
|
||||||
String? stringArg(String name) {
|
String? stringArg(String name) {
|
||||||
if (argResults == null || !argParser.options.containsKey(name)) {
|
if (!argParser.options.containsKey(name)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return argResults?[name] as String?;
|
return argResults![name] as String;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Gets the parsed command-line option named [name] as an `int`.
|
/// Gets the parsed command-line option named [name] as an `int`.
|
||||||
|
@ -15,19 +15,6 @@ import '../src/context.dart';
|
|||||||
import '../src/testbed.dart';
|
import '../src/testbed.dart';
|
||||||
import 'runner/utils.dart';
|
import 'runner/utils.dart';
|
||||||
|
|
||||||
class CommandDummy extends FlutterCommand{
|
|
||||||
@override
|
|
||||||
String get description => 'description';
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get name => 'test';
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<FlutterCommandResult> runCommand() async {
|
|
||||||
return FlutterCommandResult.success();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
test('Help for command line arguments is consistently styled and complete', () => Testbed().run(() {
|
test('Help for command line arguments is consistently styled and complete', () => Testbed().run(() {
|
||||||
final FlutterCommandRunner runner = FlutterCommandRunner(verboseHelp: true);
|
final FlutterCommandRunner runner = FlutterCommandRunner(verboseHelp: true);
|
||||||
@ -47,6 +34,9 @@ void main() {
|
|||||||
final FlutterCommandRunner runner = FlutterCommandRunner(verboseHelp: true);
|
final FlutterCommandRunner runner = FlutterCommandRunner(verboseHelp: true);
|
||||||
command.argParser.addFlag('key');
|
command.argParser.addFlag('key');
|
||||||
command.argParser.addFlag('key-false');
|
command.argParser.addFlag('key-false');
|
||||||
|
// argResults will be null at this point, if attempt to read them is made,
|
||||||
|
// exception `Null check operator used on a null value` would be thrown.
|
||||||
|
expect(() => command.boolArg('key'), throwsA(const TypeMatcher<TypeError>()));
|
||||||
|
|
||||||
runner.addCommand(command);
|
runner.addCommand(command);
|
||||||
await runner.run(<String>['dummy', '--key']);
|
await runner.run(<String>['dummy', '--key']);
|
||||||
@ -62,11 +52,19 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
testUsingContext('String? safe argResults', () async {
|
testUsingContext('String? safe argResults', () async {
|
||||||
final CommandDummy command = CommandDummy();
|
final DummyFlutterCommand command = DummyFlutterCommand(
|
||||||
|
commandFunction: () async {
|
||||||
|
return const FlutterCommandResult(ExitStatus.success);
|
||||||
|
}
|
||||||
|
);
|
||||||
final FlutterCommandRunner runner = FlutterCommandRunner(verboseHelp: true);
|
final FlutterCommandRunner runner = FlutterCommandRunner(verboseHelp: true);
|
||||||
command.argParser.addOption('key');
|
command.argParser.addOption('key');
|
||||||
|
// argResults will be null at this point, if attempt to read them is made,
|
||||||
|
// exception `Null check operator used on a null value` would be thrown
|
||||||
|
expect(() => command.stringArg('key'), throwsA(const TypeMatcher<TypeError>()));
|
||||||
|
|
||||||
runner.addCommand(command);
|
runner.addCommand(command);
|
||||||
await runner.run(<String>['test', '--key=value']);
|
await runner.run(<String>['dummy', '--key=value']);
|
||||||
|
|
||||||
expect(command.stringArg('key'), 'value');
|
expect(command.stringArg('key'), 'value');
|
||||||
expect(command.stringArg('empty'), null);
|
expect(command.stringArg('empty'), null);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user