From abf5f8723cc65c499eb6b65b07bd935f43525b24 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Wed, 24 Apr 2013 15:54:35 +0200 Subject: [PATCH 1/3] remote: add a test for extra arguments, according to docs This adds one test or comment for each subcommand of git-remote according to its current documentation. All but 'set-branches' and 'update' are listed as taking only a fixed number of arguments; for those we can write a test with one more (bogus) argument, and see if the command notices that. They fail on several counts: 'add' does not check for extra arguments, and 'show' and 'prune' actually iterate over remotes (i.e., take any number of args). We'll fix them in the next two patches. The -f machinery is only there to make the tests readable while still ensuring they pass as a whole, and will be removed in the final patch. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- t/t5505-remote.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index ccc55ebf4b..c23e8482f0 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -1003,4 +1003,31 @@ test_expect_success 'remote set-url --delete baz' ' cmp expect actual ' +test_expect_success 'extra args: setup' ' + # add a dummy origin so that this does not trigger failure + git remote add origin . +' + +test_extra_arg () { + expect="success" + if test "z$1" = "z-f"; then + expect=failure + shift + fi + test_expect_$expect "extra args: $*" " + test_must_fail git remote $* bogus_extra_arg 2>actual && + grep '^usage:' actual + " +} + +test_extra_arg -f add nick url +test_extra_arg rename origin newname +test_extra_arg remove origin +test_extra_arg set-head origin master +# set-branches takes any number of args +test_extra_arg set-url origin newurl oldurl +test_extra_arg -f show origin +test_extra_arg -f prune origin +# update takes any number of args + test_done From 2d2e3d25595c1bcd2259db5eb7604f196d35949f Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Wed, 24 Apr 2013 15:54:36 +0200 Subject: [PATCH 2/3] remote: check for superfluous arguments in 'git remote add' The 'git remote add' subcommand did not check for superfluous command line arguments. Make it so. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- builtin/remote.c | 2 +- t/t5505-remote.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builtin/remote.c b/builtin/remote.c index 937484d7c7..5e54d367b8 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -178,7 +178,7 @@ static int add(int argc, const char **argv) argc = parse_options(argc, argv, NULL, options, builtin_remote_add_usage, 0); - if (argc < 2) + if (argc != 2) usage_with_options(builtin_remote_add_usage, options); if (mirror && master) diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index c23e8482f0..07eb378922 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -1020,7 +1020,7 @@ test_extra_arg () { " } -test_extra_arg -f add nick url +test_extra_arg add nick url test_extra_arg rename origin newname test_extra_arg remove origin test_extra_arg set-head origin master From b17dd3f9d6b1657b3fbfb40a863fc2dce5f54798 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Wed, 24 Apr 2013 15:54:37 +0200 Subject: [PATCH 3/3] remote: 'show' and 'prune' can take more than one remote The 'git remote show' and 'prune' subcommands are documented as taking only a single remote name argument, but that is not the case; they will simply iterate the action over all remotes given. Update the documentation and tests to match. With the last user of the -f flag gone, we also remove the code supporting it. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- Documentation/git-remote.txt | 4 ++-- t/t5505-remote.sh | 11 +++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt index e8c396b5f9..7a6f354680 100644 --- a/Documentation/git-remote.txt +++ b/Documentation/git-remote.txt @@ -18,8 +18,8 @@ SYNOPSIS 'git remote set-url' [--push] [] 'git remote set-url --add' [--push] 'git remote set-url --delete' [--push] -'git remote' [-v | --verbose] 'show' [-n] -'git remote prune' [-n | --dry-run] +'git remote' [-v | --verbose] 'show' [-n] ... +'git remote prune' [-n | --dry-run] ... 'git remote' [-v | --verbose] 'update' [-p | --prune] [( | )...] DESCRIPTION diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index 07eb378922..8b411eb666 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -1009,12 +1009,7 @@ test_expect_success 'extra args: setup' ' ' test_extra_arg () { - expect="success" - if test "z$1" = "z-f"; then - expect=failure - shift - fi - test_expect_$expect "extra args: $*" " + test_expect_success "extra args: $*" " test_must_fail git remote $* bogus_extra_arg 2>actual && grep '^usage:' actual " @@ -1026,8 +1021,8 @@ test_extra_arg remove origin test_extra_arg set-head origin master # set-branches takes any number of args test_extra_arg set-url origin newurl oldurl -test_extra_arg -f show origin -test_extra_arg -f prune origin +# show takes any number of args +# prune takes any number of args # update takes any number of args test_done