OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library trailing_options_test; | 5 library trailing_options_test; |
6 | 6 |
7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 import 'package:args/args.dart'; | 8 import 'package:args/args.dart'; |
9 | 9 |
10 void main() { | 10 void main() { |
11 test('allowTrailingOptions defaults to false', () { | 11 test('allowTrailingOptions defaults to false', () { |
12 var parser = new ArgParser(); | 12 var parser = new ArgParser(); |
13 expect(parser.allowTrailingOptions, isFalse); | 13 expect(parser.allowTrailingOptions, isFalse); |
14 }); | 14 }); |
15 | 15 |
16 group('when trailing options are allowed', () { | 16 group('when trailing options are allowed', () { |
17 var parser; | 17 var parser; |
18 setUp(() { | 18 setUp(() { |
19 parser = new ArgParser(allowTrailingOptions: true); | 19 parser = new ArgParser(allowTrailingOptions: true); |
20 }); | 20 }); |
21 | 21 |
22 void expectThrows(List<String> args) => | 22 void expectThrows(List<String> args) => expect( |
23 expect(() => parser.parse(args), throwsFormatException, | 23 () => parser.parse(args), throwsFormatException, |
24 reason: "with allowTrailingOptions: true"); | 24 reason: "with allowTrailingOptions: true"); |
25 | 25 |
26 test('collects non-options in rest', () { | 26 test('collects non-options in rest', () { |
27 parser.addFlag('flag'); | 27 parser.addFlag('flag'); |
28 parser.addOption('opt', abbr: 'o'); | 28 parser.addOption('opt', abbr: 'o'); |
29 var results = parser.parse(['a', '--flag', 'b', '-o', 'value', 'c']); | 29 var results = parser.parse(['a', '--flag', 'b', '-o', 'value', 'c']); |
30 expect(results['flag'], isTrue); | 30 expect(results['flag'], isTrue); |
31 expect(results['opt'], equals('value')); | 31 expect(results['opt'], equals('value')); |
32 expect(results.rest, equals(['a', 'b', 'c'])); | 32 expect(results.rest, equals(['a', 'b', 'c'])); |
33 }); | 33 }); |
34 | 34 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 | 77 |
78 test('throws on a command', () { | 78 test('throws on a command', () { |
79 parser.addCommand('com'); | 79 parser.addCommand('com'); |
80 expectThrows(['arg', 'com']); | 80 expectThrows(['arg', 'com']); |
81 }); | 81 }); |
82 }); | 82 }); |
83 | 83 |
84 test("uses the innermost command's trailing options behavior", () { | 84 test("uses the innermost command's trailing options behavior", () { |
85 var parser = new ArgParser(allowTrailingOptions: true); | 85 var parser = new ArgParser(allowTrailingOptions: true); |
86 parser.addFlag('flag', abbr: 'f'); | 86 parser.addFlag('flag', abbr: 'f'); |
87 var command = parser.addCommand('cmd', | 87 var command = |
88 new ArgParser(allowTrailingOptions: false)); | 88 parser.addCommand('cmd', new ArgParser(allowTrailingOptions: false)); |
89 command.addFlag('verbose', abbr: 'v'); | 89 command.addFlag('verbose', abbr: 'v'); |
90 | 90 |
91 var results = parser.parse(['a', '-f', 'b']); | 91 var results = parser.parse(['a', '-f', 'b']); |
92 expect(results['flag'], isTrue); | 92 expect(results['flag'], isTrue); |
93 expect(results.rest, equals(['a', 'b'])); | 93 expect(results.rest, equals(['a', 'b'])); |
94 | 94 |
95 results = parser.parse(['cmd', '-f', 'a', '-v', '--unknown']); | 95 results = parser.parse(['cmd', '-f', 'a', '-v', '--unknown']); |
96 expect(results['flag'], isTrue); // Not trailing. | 96 expect(results['flag'], isTrue); // Not trailing. |
97 expect(results.command['verbose'], isFalse); | 97 expect(results.command['verbose'], isFalse); |
98 expect(results.command.rest, equals(['a', '-v', '--unknown'])); | 98 expect(results.command.rest, equals(['a', '-v', '--unknown'])); |
99 }); | 99 }); |
100 } | 100 } |
OLD | NEW |