t7508-status: test all modes with color

Move a useful script function to decode colored output to
text form from t4034 and use it in this test as well.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael J Gruber
2009-12-08 11:12:02 +01:00
committed by Junio C Hamano
parent c521bb7114
commit 68cfc6f551
3 changed files with 156 additions and 44 deletions

View File

@ -8,26 +8,26 @@ 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
'
@ -37,7 +37,7 @@ test_expect_success 'status (1)' '
'
cat > expect << \EOF
cat >expect <<\EOF
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
@ -63,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
@ -81,7 +81,7 @@ EOF
test_expect_success 'status -s (2)' '
git status -s > output &&
git status -s >output &&
test_cmp expect output
'
@ -103,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
'
@ -249,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)
@ -275,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
@ -292,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
@ -310,12 +310,121 @@ 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
'
cat > expect << \EOF
test_expect_success 'setup unique colors' '
git config status.color.untracked blue
'
cat >expect <<\EOF
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# <GREEN>new file: dir2/added<RESET>
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# <RED>modified: dir1/modified<RESET>
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# <BLUE>dir1/untracked<RESET>
# <BLUE>dir2/modified<RESET>
# <BLUE>dir2/untracked<RESET>
# <BLUE>expect<RESET>
# <BLUE>output<RESET>
# <BLUE>untracked<RESET>
EOF
test_expect_success 'status with color.ui' '
git config color.ui always &&
git status | test_decode_color >output &&
test_cmp expect output
'
test_expect_success 'status with color.status' '
git config --unset color.ui &&
git config color.status always &&
git status | test_decode_color >output &&
test_cmp expect output
'
cat >expect <<\EOF
<RED>M<RESET> dir1/modified
<GREEN>A<RESET> dir2/added
<BLUE>??<RESET> dir1/untracked
<BLUE>??<RESET> dir2/modified
<BLUE>??<RESET> dir2/untracked
<BLUE>??<RESET> expect
<BLUE>??<RESET> output
<BLUE>??<RESET> untracked
EOF
test_expect_success 'status -s with color.ui' '
git config --unset color.status &&
git config color.ui always &&
git status -s | test_decode_color >output &&
test_cmp expect output
'
test_expect_success 'status -s with color.status' '
git config --unset color.ui &&
git config color.status always &&
git status -s | test_decode_color >output &&
test_cmp expect output
'
cat >expect <<\EOF
M dir1/modified
A dir2/added
?? dir1/untracked
?? dir2/modified
?? dir2/untracked
?? expect
?? output
?? untracked
EOF
test_expect_success 'status --porcelain ignores color.ui' '
git config --unset color.status &&
git config color.ui always &&
git status --porcelain | test_decode_color >output &&
test_cmp expect output
'
test_expect_success 'status --porcelain ignores color.status' '
git config --unset color.ui &&
git config color.status always &&
git status --porcelain | test_decode_color >output &&
test_cmp expect output
'
# recover unconditionally from color tests
git config --unset color.status
git config --unset color.ui
cat >expect <<\EOF
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
@ -339,15 +448,16 @@ cat > expect << \EOF
# untracked
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
@ -360,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
'