From: Michael J Gruber <git@drmicha.warpmail.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Jakub Narebski <jnareb@gmail.com>, git@vger.kernel.org
Subject: Re: [PATCH 2/2] t7508-status: test all modes with color
Date: Wed, 09 Dec 2009 10:18:47 +0100 [thread overview]
Message-ID: <4B1F6B77.80108@drmicha.warpmail.net> (raw)
In-Reply-To: <7vmy1swvjc.fsf@alter.siamese.dyndns.org>
Junio C Hamano venit, vidit, dixit 09.12.2009 06:32/06:44:
> Michael J Gruber <git@drmicha.warpmail.net> writes:
>
>> > Jakub Narebski venit, vidit, dixit 08.12.2009 12:10:
>>> >> Michael J Gruber wrote:
>>> >>
>>>> >>> +decrypt_color () {
>>>> >>> + sed \
>>>> >>> + -e 's/.\[1m/<WHITE>/g' \
>>>> >>> + -e 's/.\[31m/<RED>/g' \
>>>> >>> + -e 's/.\[32m/<GREEN>/g' \
>>>> >>> + -e 's/.\[34m/<BLUE>/g' \
>>>> >>> + -e 's/.\[m/<RESET>/g'
>>>> >>> +}
>>> >>
>>> >> Shouldn't this be better in test-lib.sh, or some common lib
>>> >> (lib-color.sh or color-lib.sh; we are unfortunately a bit inconsistent
>>> >> in naming here)?
>> >
>> > Well, so far it's used in two places (and somewhat differently). I would
>> > say test-libification starts at 3 :)
> That is a pretty lame excuse and is a bad way to keep things maintainable.
>
> Having two copies now means that you will *double* the chance for the next
> person to copy and paste one of the existing copies that are found in the
> non-library-ish part of the test script set to create the third duplicate,
> without even realizing that there already are two copies that should have
> been consolidated in the first place. The worst part is that once that
> duplication is pointed out, s/he will use the existing two copies as an
> excuse for copy and paste.
>
> Please don't.
>
Okay okay, I guess I have to spell out my smileys better in the future.
The real question for us (Jakub and me) was where to put the code. I
think by giving that info I could have been easily convinced to do that
step...
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Michael J Gruber <git@drmicha.warpmail.net> writes:
>>
>>> Jakub Narebski venit, vidit, dixit 08.12.2009 12:10:
>>>> Michael J Gruber wrote:
>>>>
>>>>> +decrypt_color () {
>>>>> + sed \
>>>>> + -e 's/.\[1m/<WHITE>/g' \
>>>>> + -e 's/.\[31m/<RED>/g' \
>>>>> + -e 's/.\[32m/<GREEN>/g' \
>>>>> + -e 's/.\[34m/<BLUE>/g' \
>>>>> + -e 's/.\[m/<RESET>/g'
>>>>> +}
>>>>
>>>> Shouldn't this be better in test-lib.sh, or some common lib
>>>> (lib-color.sh or color-lib.sh; we are unfortunately a bit inconsistent
>>>> in naming here)?
>>>
>>> Well, so far it's used in two places (and somewhat differently). I would
>>> say test-libification starts at 3 :)
>> ...
>> Please don't.
>
> I'll squash this in to fix it up.
>
> I don't know where 36->BROWN mistake came from when color.h has a
> series of #define that can be used to make the decoding script
> mechanically, though ;-)
I don't know either, I didn't make it - I even corrected it in my copy -
which proves your former point, of course.
> t/t4034-diff-words.sh | 23 ++++---------
> t/t7508-status.sh | 83 ++++++++++++++++++++++---------------------------
> t/test-lib.sh | 11 ++++++
> 3 files changed, 55 insertions(+), 62 deletions(-)
>
> diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh
> index 4508eff..ea895b0 100755
> --- a/t/t4034-diff-words.sh
> +++ b/t/t4034-diff-words.sh
> @@ -11,18 +11,9 @@ test_expect_success setup '
>
> '
>
> -decrypt_color () {
> - sed \
> - -e 's/.\[1m/<WHITE>/g' \
> - -e 's/.\[31m/<RED>/g' \
> - -e 's/.\[32m/<GREEN>/g' \
> - -e 's/.\[36m/<BROWN>/g' \
> - -e 's/.\[m/<RESET>/g'
> -}
> -
> word_diff () {
> test_must_fail git diff --no-index "$@" pre post > output &&
> - decrypt_color < output > output.decrypted &&
> + test_decode_color <output >output.decrypted &&
> test_cmp expect output.decrypted
> }
>
> @@ -47,7 +38,7 @@ cat > expect <<\EOF
> <WHITE>index 330b04f..5ed8eff 100644<RESET>
> <WHITE>--- a/pre<RESET>
> <WHITE>+++ b/post<RESET>
> -<BROWN>@@ -1,3 +1,7 @@<RESET>
> +<CYAN>@@ -1,3 +1,7 @@<RESET>
> <RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>
> <RESET>
> a = b + c<RESET>
> @@ -68,7 +59,7 @@ cat > expect <<\EOF
> <WHITE>index 330b04f..5ed8eff 100644<RESET>
> <WHITE>--- a/pre<RESET>
> <WHITE>+++ b/post<RESET>
> -<BROWN>@@ -1,3 +1,7 @@<RESET>
> +<CYAN>@@ -1,3 +1,7 @@<RESET>
> h(4),<GREEN>hh<RESET>[44]
> <RESET>
> a = b + c<RESET>
> @@ -104,7 +95,7 @@ cat > expect <<\EOF
> <WHITE>index 330b04f..5ed8eff 100644<RESET>
> <WHITE>--- a/pre<RESET>
> <WHITE>+++ b/post<RESET>
> -<BROWN>@@ -1,3 +1,7 @@<RESET>
> +<CYAN>@@ -1,3 +1,7 @@<RESET>
> h(4)<GREEN>,hh[44]<RESET>
> <RESET>
> a = b + c<RESET>
> @@ -146,7 +137,7 @@ cat > expect <<\EOF
> <WHITE>index 330b04f..5ed8eff 100644<RESET>
> <WHITE>--- a/pre<RESET>
> <WHITE>+++ b/post<RESET>
> -<BROWN>@@ -1,3 +1,7 @@<RESET>
> +<CYAN>@@ -1,3 +1,7 @@<RESET>
> h(4),<GREEN>hh[44<RESET>]
> <RESET>
> a = b + c<RESET>
> @@ -168,7 +159,7 @@ cat > expect <<\EOF
> <WHITE>index c29453b..be22f37 100644<RESET>
> <WHITE>--- a/pre<RESET>
> <WHITE>+++ b/post<RESET>
> -<BROWN>@@ -1 +1 @@<RESET>
> +<CYAN>@@ -1 +1 @@<RESET>
> aaa (aaa) <GREEN>aaa<RESET>
> EOF
>
> @@ -187,7 +178,7 @@ cat > expect <<\EOF
> <WHITE>index 289cb9d..2d06f37 100644<RESET>
> <WHITE>--- a/pre<RESET>
> <WHITE>+++ b/post<RESET>
> -<BROWN>@@ -1 +1 @@<RESET>
> +<CYAN>@@ -1 +1 @@<RESET>
> (<RED>:<RESET>
> EOF
>
> diff --git a/t/t7508-status.sh b/t/t7508-status.sh
> index 50554a0..cf67fe3 100755
> --- a/t/t7508-status.sh
> +++ b/t/t7508-status.sh
> @@ -8,45 +8,36 @@ test_description='git status'
> . ./test-lib.sh
>
> test_expect_success 'setup' '
> - : > tracked &&
> - : > modified &&
> + : >tracked &&
> + : >modified &&
> mkdir dir1 &&
> - : > dir1/tracked &&
> - : > dir1/modified &&
> + : >dir1/tracked &&
> + : >dir1/modified &&
> mkdir dir2 &&
> - : > dir1/tracked &&
> - : > dir1/modified &&
> + : >dir1/tracked &&
> + : >dir1/modified &&
> git add . &&
>
> git status >output &&
>
> test_tick &&
> git commit -m initial &&
> - : > untracked &&
> - : > dir1/untracked &&
> - : > dir2/untracked &&
> - echo 1 > dir1/modified &&
> - echo 2 > dir2/modified &&
> - echo 3 > dir2/added &&
> + : >untracked &&
> + : >dir1/untracked &&
> + : >dir2/untracked &&
> + echo 1 >dir1/modified &&
> + echo 2 >dir2/modified &&
> + echo 3 >dir2/added &&
> git add dir2/added
> '
>
> -decrypt_color () {
> - sed \
> - -e 's/.\[1m/<WHITE>/g' \
> - -e 's/.\[31m/<RED>/g' \
> - -e 's/.\[32m/<GREEN>/g' \
> - -e 's/.\[34m/<BLUE>/g' \
> - -e 's/.\[m/<RESET>/g'
> -}
> -
> test_expect_success 'status (1)' '
>
> grep "use \"git rm --cached <file>\.\.\.\" to unstage" output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> # On branch master
> # Changes to be committed:
> # (use "git reset HEAD <file>..." to unstage)
> @@ -72,12 +63,12 @@ EOF
>
> test_expect_success 'status (2)' '
>
> - git status > output &&
> + git status >output &&
> test_cmp expect output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> M dir1/modified
> A dir2/added
> ?? dir1/untracked
> @@ -90,7 +81,7 @@ EOF
>
> test_expect_success 'status -s (2)' '
>
> - git status -s > output &&
> + git status -s >output &&
> test_cmp expect output
>
> '
> @@ -112,8 +103,8 @@ cat >expect <<EOF
> EOF
> test_expect_success 'status -uno' '
> mkdir dir3 &&
> - : > dir3/untracked1 &&
> - : > dir3/untracked2 &&
> + : >dir3/untracked1 &&
> + : >dir3/untracked2 &&
> git status -uno >output &&
> test_cmp expect output
> '
> @@ -258,7 +249,7 @@ test_expect_success 'status -s (status.showUntrackedFiles all)' '
> test_cmp expect output
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> # On branch master
> # Changes to be committed:
> # (use "git reset HEAD <file>..." to unstage)
> @@ -284,12 +275,12 @@ EOF
>
> test_expect_success 'status with relative paths' '
>
> - (cd dir1 && git status) > output &&
> + (cd dir1 && git status) >output &&
> test_cmp expect output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> M modified
> A ../dir2/added
> ?? untracked
> @@ -301,12 +292,12 @@ A ../dir2/added
> EOF
> test_expect_success 'status -s with relative paths' '
>
> - (cd dir1 && git status -s) > output &&
> + (cd dir1 && git status -s) >output &&
> test_cmp expect output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> M dir1/modified
> A dir2/added
> ?? dir1/untracked
> @@ -319,7 +310,7 @@ EOF
>
> test_expect_success 'status --porcelain ignores relative paths setting' '
>
> - (cd dir1 && git status --porcelain) > output &&
> + (cd dir1 && git status --porcelain) >output &&
> test_cmp expect output
>
> '
> @@ -330,7 +321,7 @@ test_expect_success 'setup unique colors' '
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> # On branch master
> # Changes to be committed:
> # (use "git reset HEAD <file>..." to unstage)
> @@ -357,7 +348,7 @@ EOF
> test_expect_success 'status with color.ui' '
>
> git config color.ui always &&
> - git status | decrypt_color > output &&
> + git status | test_decode_color >output &&
> test_cmp expect output
>
> '
> @@ -366,12 +357,12 @@ test_expect_success 'status with color.status' '
>
> git config --unset color.ui &&
> git config color.status always &&
> - git status | decrypt_color > output &&
> + git status | test_decode_color >output &&
> test_cmp expect output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> <RED>M<RESET> dir1/modified
> <GREEN>A<RESET> dir2/added
> <BLUE>??<RESET> dir1/untracked
> @@ -386,7 +377,7 @@ test_expect_success 'status -s with color.ui' '
>
> git config --unset color.status &&
> git config color.ui always &&
> - git status -s | decrypt_color > output &&
> + git status -s | test_decode_color >output &&
> test_cmp expect output
>
> '
> @@ -395,12 +386,12 @@ test_expect_success 'status -s with color.status' '
>
> git config --unset color.ui &&
> git config color.status always &&
> - git status -s | decrypt_color > output &&
> + git status -s | test_decode_color >output &&
> test_cmp expect output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> M dir1/modified
> A dir2/added
> ?? dir1/untracked
> @@ -415,7 +406,7 @@ test_expect_success 'status --porcelain ignores color.ui' '
>
> git config --unset color.status &&
> git config color.ui always &&
> - git status --porcelain | decrypt_color > output &&
> + git status --porcelain | test_decode_color >output &&
> test_cmp expect output
>
> '
> @@ -424,7 +415,7 @@ test_expect_success 'status --porcelain ignores color.status' '
>
> git config --unset color.ui &&
> git config color.status always &&
> - git status --porcelain | decrypt_color > output &&
> + git status --porcelain | test_decode_color >output &&
> test_cmp expect output
>
> '
> @@ -433,7 +424,7 @@ test_expect_success 'status --porcelain ignores color.status' '
> git config --unset color.status
> git config --unset color.ui
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> # On branch master
> # Changes to be committed:
> # (use "git reset HEAD <file>..." to unstage)
> @@ -461,12 +452,12 @@ EOF
> test_expect_success 'status without relative paths' '
>
> git config status.relativePaths false
> - (cd dir1 && git status) > output &&
> + (cd dir1 && git status) >output &&
> test_cmp expect output
>
> '
>
> -cat > expect << \EOF
> +cat >expect <<\EOF
> M dir1/modified
> A dir2/added
> ?? dir1/untracked
> @@ -479,7 +470,7 @@ EOF
>
> test_expect_success 'status -s without relative paths' '
>
> - (cd dir1 && git status -s) > output &&
> + (cd dir1 && git status -s) >output &&
> test_cmp expect output
>
> '
> diff --git a/t/test-lib.sh b/t/test-lib.sh
> index 5fdc5d9..d63ad2d 100644
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -208,6 +208,17 @@ test_set_editor () {
> export VISUAL
> }
>
> +test_decode_color () {
> + sed -e 's/.\[1m/<WHITE>/g' \
> + -e 's/.\[31m/<RED>/g' \
> + -e 's/.\[32m/<GREEN>/g' \
> + -e 's/.\[33m/<YELLOW>/g' \
> + -e 's/.\[34m/<BLUE>/g' \
> + -e 's/.\[35m/<MAGENTA>/g' \
> + -e 's/.\[36m/<CYAN>/g' \
> + -e 's/.\[m/<RESET>/g'
> +}
> +
> test_tick () {
> if test -z "${test_tick+set}"
> then
Regarding the larger part of your change: Is there a specific reason for
">output" rather than "> output" or just a style issue? I was simply
following the style which I found present in t7508 (same goes for empty
leading and trailing lines in the test bodies).
Michael
next prev parent reply other threads:[~2009-12-09 9:20 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-08 10:12 [PATCH 0/2] Add a few more status tests Michael J Gruber
2009-12-08 10:12 ` [PATCH 1/2] t7508-status: status --porcelain ignores relative paths setting Michael J Gruber
2009-12-08 10:12 ` [PATCH 2/2] t7508-status: test all modes with color Michael J Gruber
2009-12-08 11:10 ` Jakub Narebski
2009-12-08 16:06 ` Michael J Gruber
2009-12-09 5:32 ` Junio C Hamano
2009-12-09 5:44 ` Junio C Hamano
2009-12-09 9:18 ` Michael J Gruber [this message]
2009-12-09 21:59 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B1F6B77.80108@drmicha.warpmail.net \
--to=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).