Index: packages/args/test/command_test.dart |
diff --git a/packages/args/test/command_test.dart b/packages/args/test/command_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..888016a4053fd0d74cfaf53fa8d60acb4ee77b76 |
--- /dev/null |
+++ b/packages/args/test/command_test.dart |
@@ -0,0 +1,106 @@ |
+// Copyright (c) 2014, 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. |
+ |
+library command_test; |
+ |
+import 'package:args/command_runner.dart'; |
+import 'package:test/test.dart'; |
+import 'utils.dart'; |
+ |
+void main() { |
+ var foo; |
+ setUp(() { |
+ foo = new FooCommand(); |
+ |
+ // Make sure [Command.runner] is set up. |
+ new CommandRunner("test", "A test command runner.").addCommand(foo); |
+ }); |
+ |
+ group(".invocation has a sane default", () { |
+ test("without subcommands", () { |
+ expect(foo.invocation, equals("test foo [arguments]")); |
+ }); |
+ |
+ test("with subcommands", () { |
+ foo.addSubcommand(new AsyncCommand()); |
+ expect(foo.invocation, equals("test foo <subcommand> [arguments]")); |
+ }); |
+ |
+ test("for a subcommand", () { |
+ var async = new AsyncCommand(); |
+ foo.addSubcommand(async); |
+ |
+ expect(async.invocation, equals("test foo async [arguments]")); |
+ }); |
+ }); |
+ |
+ group(".usage", () { |
+ test("returns the usage string", () { |
+ expect(foo.usage, equals(""" |
+Set a value. |
+ |
+Usage: test foo [arguments] |
+-h, --help Print this usage information. |
+ |
+Run "test help" to see global options.""")); |
+ }); |
+ |
+ test("contains custom options", () { |
+ foo.argParser.addFlag("flag", help: "Do something."); |
+ |
+ expect(foo.usage, equals(""" |
+Set a value. |
+ |
+Usage: test foo [arguments] |
+-h, --help Print this usage information. |
+ --[no-]flag Do something. |
+ |
+Run "test help" to see global options.""")); |
+ }); |
+ |
+ test("doesn't print hidden subcommands", () { |
+ foo.addSubcommand(new AsyncCommand()); |
+ foo.addSubcommand(new HiddenCommand()); |
+ |
+ expect(foo.usage, equals(""" |
+Set a value. |
+ |
+Usage: test foo <subcommand> [arguments] |
+-h, --help Print this usage information. |
+ |
+Available subcommands: |
+ async Set a value asynchronously. |
+ |
+Run "test help" to see global options.""")); |
+ }); |
+ |
+ test("doesn't print subcommand aliases", () { |
+ foo.addSubcommand(new AliasedCommand()); |
+ |
+ expect(foo.usage, equals(""" |
+Set a value. |
+ |
+Usage: test foo <subcommand> [arguments] |
+-h, --help Print this usage information. |
+ |
+Available subcommands: |
+ aliased Set a value. |
+ |
+Run "test help" to see global options.""")); |
+ }); |
+ }); |
+ |
+ test("usageException splits up the message and usage", () { |
+ expect(() => foo.usageException("message"), throwsUsageError("message", """ |
+Usage: test foo [arguments] |
+-h, --help Print this usage information. |
+ |
+Run "test help" to see global options.""")); |
+ }); |
+ |
+ test("considers a command hidden if all its subcommands are hidden", () { |
+ foo.addSubcommand(new HiddenCommand()); |
+ expect(foo.hidden, isTrue); |
+ }); |
+} |