blob: 2addd263e140f325579ae05b90a386e17d01e498 [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:args/args.dart';
import 'package:args/command_runner.dart';
import 'package:test/test.dart';
import 'test_utils.dart';
void main() {
group('new ArgParser.allowAnything()', () {
late ArgParser parser;
setUp(() {
parser = ArgParser.allowAnything();
});
test('exposes empty values', () {
expect(parser.options, isEmpty);
expect(parser.commands, isEmpty);
expect(parser.allowTrailingOptions, isFalse);
expect(parser.allowsAnything, isTrue);
expect(parser.usage, isEmpty);
expect(parser.findByAbbreviation('a'), isNull);
});
test('mutation methods throw errors', () {
expect(() => parser.addCommand('command'), throwsUnsupportedError);
expect(() => parser.addFlag('flag'), throwsUnsupportedError);
expect(() => parser.addOption('option'), throwsUnsupportedError);
expect(() => parser.addSeparator('==='), throwsUnsupportedError);
});
test('getDefault() throws an error', () {
expect(() => parser.defaultFor('option'), throwsArgumentError);
});
test('parses all values as rest arguments', () {
var results = parser.parse(['--foo', '-abc', '--', 'bar']);
expect(results.options, isEmpty);
expect(results.rest, equals(['--foo', '-abc', '--', 'bar']));
expect(results.arguments, equals(['--foo', '-abc', '--', 'bar']));
expect(results.command, isNull);
expect(results.name, isNull);
});
test('works as a subcommand', () {
var commandParser = ArgParser()..addCommand('command', parser);
var results =
commandParser.parse(['command', '--foo', '-abc', '--', 'bar']);
expect(results.command!.options, isEmpty);
expect(results.command!.rest, equals(['--foo', '-abc', '--', 'bar']));
expect(
results.command!.arguments, equals(['--foo', '-abc', '--', 'bar']));
expect(results.command!.name, equals('command'));
});
test('works as a subcommand in a CommandRunner', () async {
var commandRunner = CommandRunner('command', 'Description of command');
var command = AllowAnythingCommand();
commandRunner..addCommand(command);
await commandRunner.run([command.name, '--foo', '--bar', '-b', 'qux']);
});
});
}