blob: fe3446c03986767a378c6e34dc8e685403f41ea4 [file] [log] [blame]
// 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:unittest/unittest.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);
});
}