Re: [PATCH v3 1/2] status: introduce status.short to enable --short by default

2013-06-10 Thread Matthieu Moy
Junio C Hamano  writes:

>   test_expect_success '-c status.short=true == status -s' '
>   test_config status.showUntrackedFile no &&

That's an option, but having status.showUntrackedFile set in a separate
setup test makes the actual tests shorter. The setup test has no reason
to fail, so I find it OK.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/2] status: introduce status.short to enable --short by default

2013-06-10 Thread Junio C Hamano
Jorge Juan Garcia Garcia  
writes:

> Some people always run 'git status -s'.
> The configuration variable status.short allows to set it by default.
>
> Signed-off-by: Jorge Juan Garcia Garcia 
> 
> Signed-off-by: Mathieu Lienard--Mayor 
> Signed-off-by: Matthieu Moy 
> ---
>
> Changes since v2:
>  -removal of double quotes in test
>  -use of git config --unset to clean up test environment
>
>  Documentation/config.txt |4 
>  builtin/commit.c |5 +
>  t/t7508-status.sh|   35 +++
>  3 files changed, 44 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 6e53fc5..1983bf7 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -2066,6 +2066,10 @@ status.relativePaths::
>   relative to the repository root (this was the default for Git
>   prior to v1.5.4).
>  
> +status.short::
> + Set to true to enable --short by default in linkgit:git-status[1].
> + The option --no-short takes precedence over this variable.
> +
>  status.showUntrackedFiles::
>   By default, linkgit:git-status[1] and linkgit:git-commit[1] show
>   files which are not currently tracked by Git. Directories which
> diff --git a/builtin/commit.c b/builtin/commit.c
> index 1621dfc..287f1cb 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -1112,6 +1112,11 @@ static int git_status_config(const char *k, const char 
> *v, void *cb)
>   s->submodule_summary = -1;
>   return 0;
>   }
> + if (!strcmp(k, "status.short")) {
> + if (git_config_bool(k, v))
> + status_format = STATUS_FORMAT_SHORT;

And if the user has

[status]
short = no

in $GIT_DIR/config for this particular project, perhaps in order to
override a blanket setting

[status]
short

that is in $HOME/.gitconfig, what should happen?

Perhaps you need

if (git_config_bool(...))
status_format = STATUS_FORMAT_SHORT;
else
status_format = STATUS_FORMAT_NONE; /* default */

or something here?

> + return 0;
> + }
>   if (!strcmp(k, "status.color") || !strcmp(k, "color.status")) {
>   s->use_color = git_config_colorbool(k, v);
>   return 0;
> diff --git a/t/t7508-status.sh b/t/t7508-status.sh
> index e2ffdac..d99ca9f 100755
> --- a/t/t7508-status.sh
> +++ b/t/t7508-status.sh
> @@ -1335,4 +1335,39 @@ test_expect_failure '.git/config ignore=all suppresses 
> submodule summary' '
>   git config -f .gitmodules  --remove-section submodule.subname
>  '
>  
> +test_expect_success 'Setup of test environment' '
> + git config status.showUntrackedFiles no
> +'
> +
> +test_expect_success '"status.short=true" same as "-s"' '
> + git -c status.short=true status >actual &&
> + git status -s >expected_short &&
> + test_cmp actual expected_short
> +'
> +
> +test_expect_success '"status.short=true" different from "--no-short"' '
> + git status --no-short >expected_noshort &&
> + test_must_fail test_cmp actual expected_noshort
> +'
> +
> +test_expect_success '"status.short=true" weaker than "--no-short"' '
> + git -c status.short=true status --no-short >actual &&
> + test_cmp actual expected_noshort
> +'
> +
> +test_expect_success '"status.short=false" same as "--no-short"' '
> + git -c status.short=false status >actual &&
> + git status -s >expected_short &&
> + test_cmp actual expected_noshort
> +'
> +
> +test_expect_success '"status.short=false" weaker than "-s"' '
> + git -c status.short=false status -s >actual &&
> + test_cmp actual expected_short
> +'
> +
> +test_expect_success 'Restore default test environment' '
> + git config --unset status.showUntrackedFiles
> +'

A few observations.

 * It is very good that you check not just positive cases that show
   off how well this new feature works (i.e. status.short set
   without command line override gives a short output) but also
   negative cases that make sure the new feature does not kick in
   when it should not.  You test all four combinations, which is
   good.

 * If any of the first three fails, you may not have the correct
   string in expected_short or expected_noshort when running later
   tests that depend on them.

 * Similarly, if the first one to set showUntrackedFiles fails, the
   last one to --unset would also fail.

Perhaps limiting the number of tests that must pass (otherwise the
remainder becomes useless) by doing something like this is a better
alternative:


test_expect_success 'setup for status.short' '
git status --short >expected_short &&
git status --no-short >expected_noshort
'

test_expect_success '-c status.short=true == status -s' '
test_config status.showUntrackedFile no &&
test_config status.

[PATCH v3 1/2] status: introduce status.short to enable --short by default

2013-06-10 Thread Jorge Juan Garcia Garcia
Some people always run 'git status -s'.
The configuration variable status.short allows to set it by default.

Signed-off-by: Jorge Juan Garcia Garcia 

Signed-off-by: Mathieu Lienard--Mayor 
Signed-off-by: Matthieu Moy 
---

Changes since v2:
 -removal of double quotes in test
 -use of git config --unset to clean up test environment

 Documentation/config.txt |4 
 builtin/commit.c |5 +
 t/t7508-status.sh|   35 +++
 3 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 6e53fc5..1983bf7 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2066,6 +2066,10 @@ status.relativePaths::
relative to the repository root (this was the default for Git
prior to v1.5.4).
 
+status.short::
+   Set to true to enable --short by default in linkgit:git-status[1].
+   The option --no-short takes precedence over this variable.
+
 status.showUntrackedFiles::
By default, linkgit:git-status[1] and linkgit:git-commit[1] show
files which are not currently tracked by Git. Directories which
diff --git a/builtin/commit.c b/builtin/commit.c
index 1621dfc..287f1cb 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1112,6 +1112,11 @@ static int git_status_config(const char *k, const char 
*v, void *cb)
s->submodule_summary = -1;
return 0;
}
+   if (!strcmp(k, "status.short")) {
+   if (git_config_bool(k, v))
+   status_format = STATUS_FORMAT_SHORT;
+   return 0;
+   }
if (!strcmp(k, "status.color") || !strcmp(k, "color.status")) {
s->use_color = git_config_colorbool(k, v);
return 0;
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index e2ffdac..d99ca9f 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -1335,4 +1335,39 @@ test_expect_failure '.git/config ignore=all suppresses 
submodule summary' '
git config -f .gitmodules  --remove-section submodule.subname
 '
 
+test_expect_success 'Setup of test environment' '
+   git config status.showUntrackedFiles no
+'
+
+test_expect_success '"status.short=true" same as "-s"' '
+   git -c status.short=true status >actual &&
+   git status -s >expected_short &&
+   test_cmp actual expected_short
+'
+
+test_expect_success '"status.short=true" different from "--no-short"' '
+   git status --no-short >expected_noshort &&
+   test_must_fail test_cmp actual expected_noshort
+'
+
+test_expect_success '"status.short=true" weaker than "--no-short"' '
+   git -c status.short=true status --no-short >actual &&
+   test_cmp actual expected_noshort
+'
+
+test_expect_success '"status.short=false" same as "--no-short"' '
+   git -c status.short=false status >actual &&
+   git status -s >expected_short &&
+   test_cmp actual expected_noshort
+'
+
+test_expect_success '"status.short=false" weaker than "-s"' '
+   git -c status.short=false status -s >actual &&
+   test_cmp actual expected_short
+'
+
+test_expect_success 'Restore default test environment' '
+   git config --unset status.showUntrackedFiles
+'
+
 test_done
-- 
1.7.8

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html