* [PATCH 0/3] git remote with superfluous arguments
@ 2013-04-24 13:54 Thomas Rast
2013-04-24 13:54 ` [PATCH 1/3] remote: add a test for extra arguments, according to docs Thomas Rast
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Thomas Rast @ 2013-04-24 13:54 UTC (permalink / raw)
To: git
Today I botched a cut&paste and ran
git remote add git remote add origin <url>
only to notice, several commands later, that while it had succeeded,
it had in fact added a remote called 'git' with an url of 'remote'.
Some investigation yielded these fixes.
Thomas Rast (3):
remote: add a test for extra arguments, according to docs
remote: check for superfluous arguments in 'git remote add'
remote: 'show' and 'prune' take more than one remote
Documentation/git-remote.txt | 4 ++--
builtin/remote.c | 2 +-
t/t5505-remote.sh | 22 ++++++++++++++++++++++
3 files changed, 25 insertions(+), 3 deletions(-)
--
1.8.2.1.931.g0116868
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] remote: add a test for extra arguments, according to docs
2013-04-24 13:54 [PATCH 0/3] git remote with superfluous arguments Thomas Rast
@ 2013-04-24 13:54 ` Thomas Rast
2013-04-24 21:37 ` Junio C Hamano
2013-04-24 13:54 ` [PATCH 2/3] remote: check for superfluous arguments in 'git remote add' Thomas Rast
2013-04-24 13:54 ` [PATCH 3/3] remote: 'show' and 'prune' take more than one remote Thomas Rast
2 siblings, 1 reply; 7+ messages in thread
From: Thomas Rast @ 2013-04-24 13:54 UTC (permalink / raw)
To: git
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 <trast@inf.ethz.ch>
---
t/t5505-remote.sh | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index 6579a86..764ee97 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
--
1.8.2.1.931.g0116868
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] remote: add a test for extra arguments, according to docs
2013-04-24 13:54 ` [PATCH 1/3] remote: add a test for extra arguments, according to docs Thomas Rast
@ 2013-04-24 21:37 ` Junio C Hamano
2013-04-25 7:23 ` Thomas Rast
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2013-04-24 21:37 UTC (permalink / raw)
To: Thomas Rast; +Cc: git
Thomas Rast <trast@inf.ethz.ch> writes:
> +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
Perhaps just a taste in readability thing, but I would prefer to see
them more like
test_extra_arg_expect failure add nick url
test_extra_arg_expect success rename origin newname
than misunderstanding-inviting "-f" that often stands for "--force".
Other than that, the whole series was a pleasant read. Thanks.
> +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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] remote: add a test for extra arguments, according to docs
2013-04-24 21:37 ` Junio C Hamano
@ 2013-04-25 7:23 ` Thomas Rast
2013-04-25 15:31 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Rast @ 2013-04-25 7:23 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Junio C Hamano <gitster@pobox.com> writes:
> Thomas Rast <trast@inf.ethz.ch> writes:
>
>> +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
>
> Perhaps just a taste in readability thing, but I would prefer to see
> them more like
>
> test_extra_arg_expect failure add nick url
> test_extra_arg_expect success rename origin newname
>
> than misunderstanding-inviting "-f" that often stands for "--force".
Hmm. I had that at first, but then the final cleanup would have had to
touch all tests to remove the optional argument, making it noisy.
Anyway, it's probably all a bit over-engineered for only one effective
code change ;-)
--
Thomas Rast
trast@{inf,student}.ethz.ch
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] remote: add a test for extra arguments, according to docs
2013-04-25 7:23 ` Thomas Rast
@ 2013-04-25 15:31 ` Junio C Hamano
0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2013-04-25 15:31 UTC (permalink / raw)
To: Thomas Rast; +Cc: git
Thomas Rast <trast@inf.ethz.ch> writes:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Thomas Rast <trast@inf.ethz.ch> writes:
>>
>>> +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
>>
>> Perhaps just a taste in readability thing, but I would prefer to see
>> them more like
>>
>> test_extra_arg_expect failure add nick url
>> test_extra_arg_expect success rename origin newname
>>
>> than misunderstanding-inviting "-f" that often stands for "--force".
>
> Hmm. I had that at first, but then the final cleanup would have had to
> touch all tests to remove the optional argument, making it noisy.
You do not need a final cleanup, as I _never_ meant failure/success
in the above illustration to be _optional_. Being explicit reduces
mental burden when you later have to read such a custom scaffolding
each test invents in an ad-hoc manner to suit its needs.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/3] remote: check for superfluous arguments in 'git remote add'
2013-04-24 13:54 [PATCH 0/3] git remote with superfluous arguments Thomas Rast
2013-04-24 13:54 ` [PATCH 1/3] remote: add a test for extra arguments, according to docs Thomas Rast
@ 2013-04-24 13:54 ` Thomas Rast
2013-04-24 13:54 ` [PATCH 3/3] remote: 'show' and 'prune' take more than one remote Thomas Rast
2 siblings, 0 replies; 7+ messages in thread
From: Thomas Rast @ 2013-04-24 13:54 UTC (permalink / raw)
To: git
The 'git remote add' subcommand did not check for superfluous command
line arguments. Make it so.
Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
---
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 937484d..5e54d36 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 764ee97..eea87fc 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
--
1.8.2.1.931.g0116868
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] remote: 'show' and 'prune' take more than one remote
2013-04-24 13:54 [PATCH 0/3] git remote with superfluous arguments Thomas Rast
2013-04-24 13:54 ` [PATCH 1/3] remote: add a test for extra arguments, according to docs Thomas Rast
2013-04-24 13:54 ` [PATCH 2/3] remote: check for superfluous arguments in 'git remote add' Thomas Rast
@ 2013-04-24 13:54 ` Thomas Rast
2 siblings, 0 replies; 7+ messages in thread
From: Thomas Rast @ 2013-04-24 13:54 UTC (permalink / raw)
To: git
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 <trast@inf.ethz.ch>
---
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 e8c396b..7a6f354 100644
--- a/Documentation/git-remote.txt
+++ b/Documentation/git-remote.txt
@@ -18,8 +18,8 @@ SYNOPSIS
'git remote set-url' [--push] <name> <newurl> [<oldurl>]
'git remote set-url --add' [--push] <name> <newurl>
'git remote set-url --delete' [--push] <name> <url>
-'git remote' [-v | --verbose] 'show' [-n] <name>
-'git remote prune' [-n | --dry-run] <name>
+'git remote' [-v | --verbose] 'show' [-n] <name>...
+'git remote prune' [-n | --dry-run] <name>...
'git remote' [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]
DESCRIPTION
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index eea87fc..dd10ff0 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
--
1.8.2.1.931.g0116868
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-04-25 15:31 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-24 13:54 [PATCH 0/3] git remote with superfluous arguments Thomas Rast
2013-04-24 13:54 ` [PATCH 1/3] remote: add a test for extra arguments, according to docs Thomas Rast
2013-04-24 21:37 ` Junio C Hamano
2013-04-25 7:23 ` Thomas Rast
2013-04-25 15:31 ` Junio C Hamano
2013-04-24 13:54 ` [PATCH 2/3] remote: check for superfluous arguments in 'git remote add' Thomas Rast
2013-04-24 13:54 ` [PATCH 3/3] remote: 'show' and 'prune' take more than one remote Thomas Rast
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).