mirror of
https://github.com/git/git.git
synced 2026-04-04 14:00:10 +02:00
Merge branch 'master' of git://repo.or.cz/alt-git
This commit is contained in:
9
t/README
9
t/README
@@ -75,6 +75,15 @@ appropriately before running "make".
|
||||
As the names depend on the tests' file names, it is safe to
|
||||
run the tests with this option in parallel.
|
||||
|
||||
--with-dashes::
|
||||
By default tests are run without dashed forms of
|
||||
commands (like git-commit) in the PATH (it only uses
|
||||
wrappers from ../bin-wrappers). Use this option to include
|
||||
the build directory (..) in the PATH, which contains all
|
||||
the dashed forms of commands. This option is currently
|
||||
implied by other options like --valgrind and
|
||||
GIT_TEST_INSTALLED.
|
||||
|
||||
You can also set the GIT_TEST_INSTALLED environment variable to
|
||||
the bindir of an existing git installation to test that installation.
|
||||
You still need to have built this git sandbox, from which various
|
||||
|
||||
@@ -259,7 +259,7 @@ test_expect_success 'git repack' 'git repack'
|
||||
test_expect_success 'git prune-packed' 'git prune-packed'
|
||||
test_expect_success '-> only packed objects' '
|
||||
git prune && # Remove conflict marked blobs
|
||||
! find .git/objects/[0-9a-f][0-9a-f] -type f
|
||||
test $(find .git/objects/[0-9a-f][0-9a-f] -type f -print 2>/dev/null | wc -l) = 0
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -683,6 +683,34 @@ test_expect_success 'set --bool-or-int' '
|
||||
|
||||
rm .git/config
|
||||
|
||||
cat >expect <<\EOF
|
||||
[path]
|
||||
home = ~/
|
||||
normal = /dev/null
|
||||
trailingtilde = foo~
|
||||
EOF
|
||||
|
||||
test_expect_success 'set --path' '
|
||||
git config --path path.home "~/" &&
|
||||
git config --path path.normal "/dev/null" &&
|
||||
git config --path path.trailingtilde "foo~" &&
|
||||
test_cmp expect .git/config'
|
||||
|
||||
cat >expect <<EOF
|
||||
$HOME/
|
||||
/dev/null
|
||||
foo~
|
||||
EOF
|
||||
|
||||
test_expect_success 'get --path' '
|
||||
git config --get --path path.home > result &&
|
||||
git config --get --path path.normal >> result &&
|
||||
git config --get --path path.trailingtilde >> result &&
|
||||
test_cmp expect result
|
||||
'
|
||||
|
||||
rm .git/config
|
||||
|
||||
git config quote.leading " test"
|
||||
git config quote.ending "test "
|
||||
git config quote.semicolon "test;test"
|
||||
|
||||
69
t/t1506-rev-parse-diagnosis.sh
Executable file
69
t/t1506-rev-parse-diagnosis.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='test git rev-parse diagnosis for invalid argument'
|
||||
|
||||
exec </dev/null
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
HASH_file=
|
||||
|
||||
test_expect_success 'set up basic repo' '
|
||||
echo one > file.txt &&
|
||||
mkdir subdir &&
|
||||
echo two > subdir/file.txt &&
|
||||
echo three > subdir/file2.txt &&
|
||||
git add . &&
|
||||
git commit -m init &&
|
||||
echo four > index-only.txt &&
|
||||
git add index-only.txt &&
|
||||
echo five > disk-only.txt
|
||||
'
|
||||
|
||||
test_expect_success 'correct file objects' '
|
||||
HASH_file=$(git rev-parse HEAD:file.txt) &&
|
||||
git rev-parse HEAD:subdir/file.txt &&
|
||||
git rev-parse :index-only.txt &&
|
||||
(cd subdir &&
|
||||
git rev-parse HEAD:subdir/file2.txt &&
|
||||
test $HASH_file = $(git rev-parse HEAD:file.txt) &&
|
||||
test $HASH_file = $(git rev-parse :file.txt) &&
|
||||
test $HASH_file = $(git rev-parse :0:file.txt) )
|
||||
'
|
||||
|
||||
test_expect_success 'incorrect revision id' '
|
||||
test_must_fail git rev-parse foobar:file.txt 2>error &&
|
||||
grep "Invalid object name '"'"'foobar'"'"'." error &&
|
||||
test_must_fail git rev-parse foobar 2> error &&
|
||||
grep "unknown revision or path not in the working tree." error
|
||||
'
|
||||
|
||||
test_expect_success 'incorrect file in sha1:path' '
|
||||
test_must_fail git rev-parse HEAD:nothing.txt 2> error &&
|
||||
grep "fatal: Path '"'"'nothing.txt'"'"' does not exist in '"'"'HEAD'"'"'" error &&
|
||||
test_must_fail git rev-parse HEAD:index-only.txt 2> error &&
|
||||
grep "fatal: Path '"'"'index-only.txt'"'"' exists on disk, but not in '"'"'HEAD'"'"'." error &&
|
||||
(cd subdir &&
|
||||
test_must_fail git rev-parse HEAD:file2.txt 2> error &&
|
||||
grep "Did you mean '"'"'HEAD:subdir/file2.txt'"'"'?" error )
|
||||
'
|
||||
|
||||
test_expect_success 'incorrect file in :path and :N:path' '
|
||||
test_must_fail git rev-parse :nothing.txt 2> error &&
|
||||
grep "fatal: Path '"'"'nothing.txt'"'"' does not exist (neither on disk nor in the index)." error &&
|
||||
test_must_fail git rev-parse :1:nothing.txt 2> error &&
|
||||
grep "Path '"'"'nothing.txt'"'"' does not exist (neither on disk nor in the index)." error &&
|
||||
test_must_fail git rev-parse :1:file.txt 2> error &&
|
||||
grep "Did you mean '"'"':0:file.txt'"'"'?" error &&
|
||||
(cd subdir &&
|
||||
test_must_fail git rev-parse :1:file.txt 2> error &&
|
||||
grep "Did you mean '"'"':0:file.txt'"'"'?" error &&
|
||||
test_must_fail git rev-parse :file2.txt 2> error &&
|
||||
grep "Did you mean '"'"':0:subdir/file2.txt'"'"'?" error &&
|
||||
test_must_fail git rev-parse :2:file2.txt 2> error &&
|
||||
grep "Did you mean '"'"':0:subdir/file2.txt'"'"'?" error) &&
|
||||
test_must_fail git rev-parse :disk-only.txt 2> error &&
|
||||
grep "fatal: Path '"'"'disk-only.txt'"'"' exists on disk, but not in the index." error
|
||||
'
|
||||
|
||||
test_done
|
||||
@@ -93,8 +93,6 @@ git diff > out
|
||||
test_expect_success 'another test, without options' 'test_cmp expect out'
|
||||
|
||||
cat << EOF > expect
|
||||
diff --git a/x b/x
|
||||
index d99af23..8b32fb5 100644
|
||||
EOF
|
||||
git diff -w > out
|
||||
test_expect_success 'another test, with -w' 'test_cmp expect out'
|
||||
@@ -386,6 +384,18 @@ test_expect_success 'checkdiff allows new blank lines' '
|
||||
git diff --check
|
||||
'
|
||||
|
||||
cat <<EOF >expect
|
||||
EOF
|
||||
test_expect_success 'whitespace-only changes not reported' '
|
||||
git reset --hard &&
|
||||
echo >x "hello world" &&
|
||||
git add x &&
|
||||
git commit -m "hello 1" &&
|
||||
echo >x "hello world" &&
|
||||
git diff -b >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'combined diff with autocrlf conversion' '
|
||||
|
||||
git reset --hard &&
|
||||
|
||||
@@ -20,11 +20,27 @@ test_expect_success setup '
|
||||
|
||||
blue_grep='7;34m' ;# ESC [ 7 ; 3 4 m
|
||||
|
||||
printf "\033[%s" "$blue_grep" >check-grep
|
||||
if (grep "$blue_grep" <check-grep | grep "$blue_grep") >/dev/null 2>&1
|
||||
then
|
||||
grep_a=grep
|
||||
elif (grep -a "$blue_grep" <check-grep | grep -a "$blue_grep") >/dev/null 2>&1
|
||||
then
|
||||
grep_a='grep -a'
|
||||
else
|
||||
grep_a=grep ;# expected to fail...
|
||||
fi
|
||||
rm -f check-grep
|
||||
|
||||
prepare_output () {
|
||||
git diff --color >output
|
||||
$grep_a "$blue_grep" output >error
|
||||
$grep_a -v "$blue_grep" output >normal
|
||||
}
|
||||
|
||||
test_expect_success default '
|
||||
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@@ -37,9 +53,7 @@ test_expect_success default '
|
||||
test_expect_success 'without -trail' '
|
||||
|
||||
git config core.whitespace -trail
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@@ -53,9 +67,7 @@ test_expect_success 'without -trail (attribute)' '
|
||||
|
||||
git config --unset core.whitespace
|
||||
echo "F whitespace=-trail" >.gitattributes
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@@ -69,9 +81,7 @@ test_expect_success 'without -space' '
|
||||
|
||||
rm -f .gitattributes
|
||||
git config core.whitespace -space
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@@ -85,9 +95,7 @@ test_expect_success 'without -space (attribute)' '
|
||||
|
||||
git config --unset core.whitespace
|
||||
echo "F whitespace=-space" >.gitattributes
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@@ -101,9 +109,7 @@ test_expect_success 'with indent-non-tab only' '
|
||||
|
||||
rm -f .gitattributes
|
||||
git config core.whitespace indent,-trailing,-space
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight error >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@@ -117,9 +123,7 @@ test_expect_success 'with indent-non-tab only (attribute)' '
|
||||
|
||||
git config --unset core.whitespace
|
||||
echo "F whitespace=indent,-trailing,-space" >.gitattributes
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight error >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@@ -133,9 +137,7 @@ test_expect_success 'with cr-at-eol' '
|
||||
|
||||
rm -f .gitattributes
|
||||
git config core.whitespace cr-at-eol
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@@ -149,9 +151,7 @@ test_expect_success 'with cr-at-eol (attribute)' '
|
||||
|
||||
git config --unset core.whitespace
|
||||
echo "F whitespace=trailing,cr-at-eol" >.gitattributes
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@@ -195,7 +195,7 @@ test_expect_success 'color new trailing blank lines' '
|
||||
git add x &&
|
||||
{ echo a; echo; echo; echo; echo c; echo; echo; echo; echo; } >x &&
|
||||
git diff --color x >output &&
|
||||
cnt=$(grep "${blue_grep}" output | wc -l) &&
|
||||
cnt=$($grep_a "${blue_grep}" output | wc -l) &&
|
||||
test $cnt = 2
|
||||
'
|
||||
|
||||
|
||||
@@ -12,19 +12,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/.\[35m/<MAGENTA>/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
|
||||
}
|
||||
|
||||
@@ -49,7 +39,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>
|
||||
|
||||
a = b + c<RESET>
|
||||
@@ -70,9 +60,9 @@ cat > expect <<\EOF
|
||||
<WHITE>index 330b04f..5ed8eff 100644<RESET>
|
||||
<WHITE>--- a/pre<RESET>
|
||||
<WHITE>+++ b/post<RESET>
|
||||
<BROWN>@@ -1 +1 @@<RESET>
|
||||
<CYAN>@@ -1 +1 @@<RESET>
|
||||
<RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>
|
||||
<BROWN>@@ -3,0 +4,4 @@<RESET> <RESET><MAGENTA>a = b + c<RESET>
|
||||
<CYAN>@@ -3,0 +4,4 @@<RESET> <RESET><MAGENTA>a = b + c<RESET>
|
||||
|
||||
<GREEN>aa = a<RESET>
|
||||
|
||||
@@ -90,7 +80,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]
|
||||
|
||||
a = b + c<RESET>
|
||||
@@ -126,7 +116,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>
|
||||
|
||||
a = b + c<RESET>
|
||||
@@ -168,7 +158,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>]
|
||||
|
||||
a = b + c<RESET>
|
||||
@@ -190,7 +180,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
|
||||
|
||||
@@ -209,7 +199,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
|
||||
|
||||
|
||||
63
t/t4040-whitespace-status.sh
Executable file
63
t/t4040-whitespace-status.sh
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='diff --exit-code with whitespace'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
mkdir a b &&
|
||||
echo >c &&
|
||||
echo >a/d &&
|
||||
echo >b/e &&
|
||||
git add . &&
|
||||
test_tick &&
|
||||
git commit -m initial &&
|
||||
echo " " >a/d &&
|
||||
test_tick &&
|
||||
git commit -a -m second &&
|
||||
echo " " >a/d &&
|
||||
echo " " >b/e &&
|
||||
git add a/d
|
||||
'
|
||||
|
||||
test_expect_success 'diff-tree --exit-code' '
|
||||
test_must_fail git diff --exit-code HEAD^ HEAD &&
|
||||
test_must_fail git diff-tree --exit-code HEAD^ HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'diff-tree -b --exit-code' '
|
||||
git diff -b --exit-code HEAD^ HEAD &&
|
||||
git diff-tree -b -p --exit-code HEAD^ HEAD &&
|
||||
git diff-tree -b --exit-code HEAD^ HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'diff-index --cached --exit-code' '
|
||||
test_must_fail git diff --cached --exit-code HEAD &&
|
||||
test_must_fail git diff-index --cached --exit-code HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'diff-index -b -p --cached --exit-code' '
|
||||
git diff -b --cached --exit-code HEAD &&
|
||||
git diff-index -b -p --cached --exit-code HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'diff-index --exit-code' '
|
||||
test_must_fail git diff --exit-code HEAD &&
|
||||
test_must_fail git diff-index --exit-code HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'diff-index -b -p --exit-code' '
|
||||
git diff -b --exit-code HEAD &&
|
||||
git diff-index -b -p --exit-code HEAD
|
||||
'
|
||||
|
||||
test_expect_success 'diff-files --exit-code' '
|
||||
test_must_fail git diff --exit-code &&
|
||||
test_must_fail git diff-files --exit-code
|
||||
'
|
||||
|
||||
test_expect_success 'diff-files -b -p --exit-code' '
|
||||
git diff -b --exit-code &&
|
||||
git diff-files -b -p --exit-code
|
||||
'
|
||||
|
||||
test_done
|
||||
@@ -32,7 +32,7 @@ test_expect_success setup '
|
||||
done &&
|
||||
git update-ref HEAD "$commit" &&
|
||||
git clone ./. victim &&
|
||||
( cd victim && git log ) &&
|
||||
( cd victim && git config receive.denyCurrentBranch warn && git log ) &&
|
||||
git update-ref HEAD "$zero" &&
|
||||
parent=$zero &&
|
||||
i=0 &&
|
||||
@@ -129,6 +129,7 @@ rewound_push_setup() {
|
||||
cd parent &&
|
||||
git init &&
|
||||
echo one >file && git add file && git commit -m one &&
|
||||
git config receive.denyCurrentBranch warn &&
|
||||
echo two >file && git commit -a -m two
|
||||
) &&
|
||||
git clone parent child &&
|
||||
@@ -190,16 +191,11 @@ test_expect_success 'pushing wildcard refspecs respects forcing' '
|
||||
test "$parent_head" = "$child_head"
|
||||
'
|
||||
|
||||
test_expect_success 'warn pushing to delete current branch' '
|
||||
test_expect_success 'deny pushing to delete current branch' '
|
||||
rewound_push_setup &&
|
||||
(
|
||||
cd child &&
|
||||
git send-pack ../parent :refs/heads/master 2>errs
|
||||
) &&
|
||||
grep "warning: to refuse deleting" child/errs &&
|
||||
(
|
||||
cd parent &&
|
||||
test_must_fail git rev-parse --verify master
|
||||
test_must_fail git send-pack ../parent :refs/heads/master 2>errs
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ test_expect_success setup '
|
||||
git update-ref refs/heads/master $commit0 &&
|
||||
git update-ref refs/heads/tofail $commit1 &&
|
||||
git clone ./. victim &&
|
||||
GIT_DIR=victim/.git git config receive.denyCurrentBranch warn &&
|
||||
GIT_DIR=victim/.git git update-ref refs/heads/tofail $commit1 &&
|
||||
git update-ref refs/heads/master $commit1 &&
|
||||
git update-ref refs/heads/tofail $commit0
|
||||
|
||||
@@ -7,19 +7,19 @@ test_description='Test the post-checkout hook.'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
echo Data for commit0. >a &&
|
||||
echo Data for commit0. >b &&
|
||||
git update-index --add a &&
|
||||
git update-index --add b &&
|
||||
tree0=$(git write-tree) &&
|
||||
commit0=$(echo setup | git commit-tree $tree0) &&
|
||||
git update-ref refs/heads/master $commit0 &&
|
||||
git clone ./. clone1 &&
|
||||
git clone ./. clone2 &&
|
||||
GIT_DIR=clone2/.git git branch -a new2 &&
|
||||
echo Data for commit1. >clone2/b &&
|
||||
GIT_DIR=clone2/.git git add clone2/b &&
|
||||
GIT_DIR=clone2/.git git commit -m new2
|
||||
echo Data for commit0. >a &&
|
||||
echo Data for commit0. >b &&
|
||||
git update-index --add a &&
|
||||
git update-index --add b &&
|
||||
tree0=$(git write-tree) &&
|
||||
commit0=$(echo setup | git commit-tree $tree0) &&
|
||||
git update-ref refs/heads/master $commit0 &&
|
||||
git clone ./. clone1 &&
|
||||
git clone ./. clone2 &&
|
||||
GIT_DIR=clone2/.git git branch new2 &&
|
||||
echo Data for commit1. >clone2/b &&
|
||||
GIT_DIR=clone2/.git git add clone2/b &&
|
||||
GIT_DIR=clone2/.git git commit -m new2
|
||||
'
|
||||
|
||||
for clone in 1 2; do
|
||||
|
||||
@@ -8,6 +8,7 @@ test_expect_success setup '
|
||||
|
||||
>file1 && git add file1 && test_tick &&
|
||||
git commit -m Initial &&
|
||||
git config receive.denyCurrentBranch warn &&
|
||||
|
||||
mkdir another && (
|
||||
cd another &&
|
||||
|
||||
@@ -419,6 +419,20 @@ test_expect_success 'update default (overridden, with funny whitespace)' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'update (with remotes.default defined)' '
|
||||
|
||||
(cd one &&
|
||||
for b in $(git branch -r)
|
||||
do
|
||||
git branch -r -d $b || break
|
||||
done &&
|
||||
git config remotes.default "drosophila" &&
|
||||
git remote update &&
|
||||
git branch -r > output &&
|
||||
test_cmp expect output)
|
||||
|
||||
'
|
||||
|
||||
test_expect_success '"remote show" does not show symbolic refs' '
|
||||
|
||||
git clone one three &&
|
||||
|
||||
@@ -12,6 +12,7 @@ mk_empty () {
|
||||
(
|
||||
cd testrepo &&
|
||||
git init &&
|
||||
git config receive.denyCurrentBranch warn &&
|
||||
mv .git/hooks .git/hooks-disabled
|
||||
)
|
||||
}
|
||||
@@ -546,6 +547,32 @@ test_expect_success 'allow deleting an invalid remote ref' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'allow deleting a ref using --delete' '
|
||||
mk_test heads/master &&
|
||||
(cd testrepo && git config receive.denyDeleteCurrent warn) &&
|
||||
git push testrepo --delete master &&
|
||||
(cd testrepo && test_must_fail git rev-parse --verify refs/heads/master)
|
||||
'
|
||||
|
||||
test_expect_success 'allow deleting a tag using --delete' '
|
||||
mk_test heads/master &&
|
||||
git tag -a -m dummy_message deltag heads/master &&
|
||||
git push testrepo --tags &&
|
||||
(cd testrepo && git rev-parse --verify -q refs/tags/deltag) &&
|
||||
git push testrepo --delete tag deltag &&
|
||||
(cd testrepo && test_must_fail git rev-parse --verify refs/tags/deltag)
|
||||
'
|
||||
|
||||
test_expect_success 'push --delete without args aborts' '
|
||||
mk_test heads/master &&
|
||||
test_must_fail git push testrepo --delete
|
||||
'
|
||||
|
||||
test_expect_success 'push --delete refuses src:dest refspecs' '
|
||||
mk_test heads/master &&
|
||||
test_must_fail git push testrepo --delete master:foo
|
||||
'
|
||||
|
||||
test_expect_success 'warn on push to HEAD of non-bare repository' '
|
||||
mk_test heads/master
|
||||
(cd testrepo &&
|
||||
|
||||
@@ -19,7 +19,8 @@ mk_repo_pair () {
|
||||
mkdir mirror &&
|
||||
(
|
||||
cd mirror &&
|
||||
git init
|
||||
git init &&
|
||||
git config receive.denyCurrentBranch warn
|
||||
) &&
|
||||
mkdir master &&
|
||||
(
|
||||
|
||||
@@ -20,13 +20,19 @@ fi
|
||||
#
|
||||
# The working directory is subdir-link.
|
||||
|
||||
mkdir subdir
|
||||
echo file >subdir/file
|
||||
git add subdir/file
|
||||
git commit -q -m file
|
||||
git clone -q . clone-repo
|
||||
ln -s clone-repo/subdir/ subdir-link
|
||||
|
||||
test_expect_success setup '
|
||||
mkdir subdir &&
|
||||
echo file >subdir/file &&
|
||||
git add subdir/file &&
|
||||
git commit -q -m file &&
|
||||
git clone -q . clone-repo &&
|
||||
ln -s clone-repo/subdir/ subdir-link &&
|
||||
(
|
||||
cd clone-repo &&
|
||||
git config receive.denyCurrentBranch warn
|
||||
) &&
|
||||
git config receive.denyCurrentBranch warn
|
||||
'
|
||||
|
||||
# Demonstrate that things work if we just avoid the symlink
|
||||
#
|
||||
|
||||
@@ -119,7 +119,9 @@ test_expect_success 'bundle clone with nonexistent HEAD' '
|
||||
test_expect_success 'clone empty repository' '
|
||||
cd "$D" &&
|
||||
mkdir empty &&
|
||||
(cd empty && git init) &&
|
||||
(cd empty &&
|
||||
git init &&
|
||||
git config receive.denyCurrentBranch warn) &&
|
||||
git clone empty empty-clone &&
|
||||
test_tick &&
|
||||
(cd empty-clone
|
||||
|
||||
@@ -423,7 +423,7 @@ test_expect_success 'skipped merge base when good and bad are siblings' '
|
||||
grep "merge base must be tested" my_bisect_log.txt &&
|
||||
grep $HASH4 my_bisect_log.txt &&
|
||||
git bisect skip > my_bisect_log.txt 2>&1 &&
|
||||
grep "Warning" my_bisect_log.txt &&
|
||||
grep "warning" my_bisect_log.txt &&
|
||||
grep $SIDE_HASH6 my_bisect_log.txt &&
|
||||
git bisect reset
|
||||
'
|
||||
|
||||
@@ -69,7 +69,7 @@ test_expect_success 'status' '
|
||||
cd test &&
|
||||
git checkout b1 >/dev/null &&
|
||||
# reports nothing to commit
|
||||
test_must_fail git status
|
||||
test_must_fail git commit --dry-run
|
||||
) >actual &&
|
||||
grep "have 1 and 1 different" actual
|
||||
'
|
||||
|
||||
@@ -31,8 +31,7 @@ test_expect_success 'Report new path with conflict' '
|
||||
cat >expect <<EOF
|
||||
# On branch side
|
||||
# Unmerged paths:
|
||||
# (use "git reset HEAD <file>..." to unstage)
|
||||
# (use "git add <file>..." to mark resolution)
|
||||
# (use "git add/rm <file>..." as appropriate to mark resolution)
|
||||
#
|
||||
# deleted by us: foo
|
||||
#
|
||||
@@ -50,9 +49,11 @@ test_expect_success 'M/D conflict does not segfault' '
|
||||
git rm foo &&
|
||||
git commit -m delete &&
|
||||
test_must_fail git merge master &&
|
||||
test_must_fail git status > ../actual
|
||||
) &&
|
||||
test_cmp expect actual
|
||||
test_must_fail git commit --dry-run >../actual &&
|
||||
test_cmp ../expect ../actual &&
|
||||
git status >../actual &&
|
||||
test_cmp ../expect ../actual
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -139,19 +139,19 @@ test_expect_success \
|
||||
test_expect_success \
|
||||
'resetting to HEAD with no changes should succeed and do nothing' '
|
||||
git reset --hard &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset --hard HEAD &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset --soft &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset --soft HEAD &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset --mixed &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset --mixed HEAD &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc &&
|
||||
git reset HEAD &&
|
||||
check_changes 3ec39651e7f44ea531a5de18a9fa791c0fd370fc
|
||||
'
|
||||
|
||||
@@ -29,6 +29,12 @@ test_expect_success 'soft reset is ok' '
|
||||
(cd .git && git reset --soft)
|
||||
'
|
||||
|
||||
test_expect_success 'hard reset works with GIT_WORK_TREE' '
|
||||
mkdir worktree &&
|
||||
GIT_WORK_TREE=$PWD/worktree GIT_DIR=$PWD/.git git reset --hard &&
|
||||
test_cmp file worktree/file
|
||||
'
|
||||
|
||||
test_expect_success 'setup bare' '
|
||||
git clone --bare . bare.git &&
|
||||
cd bare.git
|
||||
|
||||
@@ -211,6 +211,21 @@ test_expect_success 'amend commit to fix author' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'amend commit to fix date' '
|
||||
|
||||
test_tick &&
|
||||
newtick=$GIT_AUTHOR_DATE &&
|
||||
git reset --hard &&
|
||||
git cat-file -p HEAD |
|
||||
sed -e "s/author.*/author $author $newtick/" \
|
||||
-e "s/^\(committer.*> \).*$/\1$GIT_COMMITTER_DATE/" > \
|
||||
expected &&
|
||||
git commit --amend --date="$newtick" &&
|
||||
git cat-file -p HEAD > current &&
|
||||
test_cmp expected current
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'sign off (1)' '
|
||||
|
||||
echo 1 >positive &&
|
||||
|
||||
@@ -19,8 +19,8 @@ test_expect_success 'status clean' '
|
||||
git status |
|
||||
grep "nothing to commit"
|
||||
'
|
||||
test_expect_success 'status -a clean' '
|
||||
git status -a |
|
||||
test_expect_success 'commit --dry-run -a clean' '
|
||||
git commit --dry-run -a |
|
||||
grep "nothing to commit"
|
||||
'
|
||||
test_expect_success 'rm submodule contents' '
|
||||
@@ -31,7 +31,7 @@ test_expect_success 'status clean (empty submodule dir)' '
|
||||
grep "nothing to commit"
|
||||
'
|
||||
test_expect_success 'status -a clean (empty submodule dir)' '
|
||||
git status -a |
|
||||
git commit --dry-run -a |
|
||||
grep "nothing to commit"
|
||||
'
|
||||
|
||||
|
||||
@@ -12,26 +12,26 @@ esac
|
||||
. ./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
|
||||
'
|
||||
|
||||
@@ -41,7 +41,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)
|
||||
@@ -67,7 +67,25 @@ EOF
|
||||
|
||||
test_expect_success 'status (2)' '
|
||||
|
||||
git status > output &&
|
||||
git status >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 -s (2)' '
|
||||
|
||||
git status -s >output &&
|
||||
test_cmp expect output
|
||||
|
||||
'
|
||||
@@ -89,8 +107,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
|
||||
'
|
||||
@@ -101,6 +119,22 @@ test_expect_success 'status (status.showUntrackedFiles no)' '
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect << EOF
|
||||
M dir1/modified
|
||||
A dir2/added
|
||||
EOF
|
||||
test_expect_success 'status -s -uno' '
|
||||
git config --unset status.showuntrackedfiles
|
||||
git status -s -uno >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
test_expect_success 'status -s (status.showUntrackedFiles no)' '
|
||||
git config status.showuntrackedfiles no
|
||||
git status -s >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
# On branch master
|
||||
# Changes to be committed:
|
||||
@@ -136,6 +170,29 @@ test_expect_success 'status (status.showUntrackedFiles normal)' '
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
M dir1/modified
|
||||
A dir2/added
|
||||
?? dir1/untracked
|
||||
?? dir2/modified
|
||||
?? dir2/untracked
|
||||
?? dir3/
|
||||
?? expect
|
||||
?? output
|
||||
?? untracked
|
||||
EOF
|
||||
test_expect_success 'status -s -unormal' '
|
||||
git config --unset status.showuntrackedfiles
|
||||
git status -s -unormal >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
test_expect_success 'status -s (status.showUntrackedFiles normal)' '
|
||||
git config status.showuntrackedfiles normal
|
||||
git status -s >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
# On branch master
|
||||
# Changes to be committed:
|
||||
@@ -173,7 +230,30 @@ test_expect_success 'status (status.showUntrackedFiles all)' '
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat > expect << \EOF
|
||||
cat >expect <<EOF
|
||||
M dir1/modified
|
||||
A dir2/added
|
||||
?? dir1/untracked
|
||||
?? dir2/modified
|
||||
?? dir2/untracked
|
||||
?? expect
|
||||
?? output
|
||||
?? untracked
|
||||
EOF
|
||||
test_expect_success 'status -s -uall' '
|
||||
git config --unset status.showuntrackedfiles
|
||||
git status -s -uall >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
test_expect_success 'status -s (status.showUntrackedFiles all)' '
|
||||
git config status.showuntrackedfiles all
|
||||
git status -s >output &&
|
||||
rm -rf dir3 &&
|
||||
git config --unset status.showuntrackedfiles &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<\EOF
|
||||
# On branch master
|
||||
# Changes to be committed:
|
||||
# (use "git reset HEAD <file>..." to unstage)
|
||||
@@ -199,12 +279,156 @@ 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
|
||||
?? ../dir2/modified
|
||||
?? ../dir2/untracked
|
||||
?? ../expect
|
||||
?? ../output
|
||||
?? ../untracked
|
||||
EOF
|
||||
test_expect_success 'status -s with relative paths' '
|
||||
|
||||
(cd dir1 && git status -s) >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 relative paths setting' '
|
||||
|
||||
(cd dir1 && git status --porcelain) >output &&
|
||||
test_cmp expect output
|
||||
|
||||
'
|
||||
|
||||
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)
|
||||
@@ -228,10 +452,29 @@ 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
|
||||
M dir1/modified
|
||||
A dir2/added
|
||||
?? dir1/untracked
|
||||
?? dir2/modified
|
||||
?? dir2/untracked
|
||||
?? expect
|
||||
?? output
|
||||
?? untracked
|
||||
EOF
|
||||
|
||||
test_expect_success 'status -s without relative paths' '
|
||||
|
||||
(cd dir1 && git status -s) >output &&
|
||||
test_cmp expect output
|
||||
|
||||
'
|
||||
@@ -252,8 +495,8 @@ cat <<EOF >expect
|
||||
# output
|
||||
# untracked
|
||||
EOF
|
||||
test_expect_success 'status of partial commit excluding new file in index' '
|
||||
git status dir1/modified >output &&
|
||||
test_expect_success 'dry-run of partial commit excluding new file in index' '
|
||||
git commit --dry-run dir1/modified >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
@@ -302,6 +545,28 @@ test_expect_success 'status --untracked-files=all does not show submodule' '
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
M dir1/modified
|
||||
A dir2/added
|
||||
A sm
|
||||
?? dir1/untracked
|
||||
?? dir2/modified
|
||||
?? dir2/untracked
|
||||
?? expect
|
||||
?? output
|
||||
?? untracked
|
||||
EOF
|
||||
test_expect_success 'status -s submodule summary is disabled by default' '
|
||||
git status -s >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
# we expect the same as the previous test
|
||||
test_expect_success 'status -s --untracked-files=all does not show submodule' '
|
||||
git status -s --untracked-files=all >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
head=$(cd sm && git rev-parse --short=7 --verify HEAD)
|
||||
|
||||
cat >expect <<EOF
|
||||
@@ -339,6 +604,21 @@ test_expect_success 'status submodule summary' '
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
M dir1/modified
|
||||
A dir2/added
|
||||
A sm
|
||||
?? dir1/untracked
|
||||
?? dir2/modified
|
||||
?? dir2/untracked
|
||||
?? expect
|
||||
?? output
|
||||
?? untracked
|
||||
EOF
|
||||
test_expect_success 'status -s submodule summary' '
|
||||
git status -s >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
# On branch master
|
||||
@@ -362,7 +642,23 @@ EOF
|
||||
test_expect_success 'status submodule summary (clean submodule)' '
|
||||
git commit -m "commit submodule" &&
|
||||
git config status.submodulesummary 10 &&
|
||||
test_must_fail git status >output &&
|
||||
test_must_fail git commit --dry-run >output &&
|
||||
test_cmp expect output &&
|
||||
git status >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
cat >expect <<EOF
|
||||
M dir1/modified
|
||||
?? dir1/untracked
|
||||
?? dir2/modified
|
||||
?? dir2/untracked
|
||||
?? expect
|
||||
?? output
|
||||
?? untracked
|
||||
EOF
|
||||
test_expect_success 'status -s submodule summary (clean submodule)' '
|
||||
git status -s >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
@@ -395,9 +691,9 @@ cat >expect <<EOF
|
||||
# output
|
||||
# untracked
|
||||
EOF
|
||||
test_expect_success 'status submodule summary (--amend)' '
|
||||
test_expect_success 'commit --dry-run submodule summary (--amend)' '
|
||||
git config status.submodulesummary 10 &&
|
||||
git status --amend >output &&
|
||||
git commit --dry-run --amend >output &&
|
||||
test_cmp expect output
|
||||
'
|
||||
|
||||
|
||||
@@ -49,4 +49,55 @@ test_expect_success 'merge c1 with c2, c3, c4, ... c29' '
|
||||
done
|
||||
'
|
||||
|
||||
cat >expected <<\EOF
|
||||
Trying simple merge with c2
|
||||
Trying simple merge with c3
|
||||
Trying simple merge with c4
|
||||
Merge made by octopus.
|
||||
c2.c | 1 +
|
||||
c3.c | 1 +
|
||||
c4.c | 1 +
|
||||
3 files changed, 3 insertions(+), 0 deletions(-)
|
||||
create mode 100644 c2.c
|
||||
create mode 100644 c3.c
|
||||
create mode 100644 c4.c
|
||||
EOF
|
||||
|
||||
test_expect_success 'merge output uses pretty names' '
|
||||
git reset --hard c1 &&
|
||||
git merge c2 c3 c4 >actual &&
|
||||
test_cmp actual expected
|
||||
'
|
||||
|
||||
cat >expected <<\EOF
|
||||
Already up-to-date with c4
|
||||
Trying simple merge with c5
|
||||
Merge made by octopus.
|
||||
c5.c | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
create mode 100644 c5.c
|
||||
EOF
|
||||
|
||||
test_expect_success 'merge up-to-date output uses pretty names' '
|
||||
git merge c4 c5 >actual &&
|
||||
test_cmp actual expected
|
||||
'
|
||||
|
||||
cat >expected <<\EOF
|
||||
Fast-forwarding to: c1
|
||||
Trying simple merge with c2
|
||||
Merge made by octopus.
|
||||
c1.c | 1 +
|
||||
c2.c | 1 +
|
||||
2 files changed, 2 insertions(+), 0 deletions(-)
|
||||
create mode 100644 c1.c
|
||||
create mode 100644 c2.c
|
||||
EOF
|
||||
|
||||
test_expect_success 'merge fast-forward output uses pretty names' '
|
||||
git reset --hard c0 &&
|
||||
git merge c1 c2 >actual &&
|
||||
test_cmp actual expected
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -105,6 +105,8 @@ do
|
||||
verbose=t; shift ;;
|
||||
-q|--q|--qu|--qui|--quie|--quiet)
|
||||
quiet=t; shift ;;
|
||||
--with-dashes)
|
||||
with_dashes=t; shift ;;
|
||||
--no-color)
|
||||
color=; shift ;;
|
||||
--no-python)
|
||||
@@ -211,6 +213,17 @@ test_set_editor () {
|
||||
export EDITOR
|
||||
}
|
||||
|
||||
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
|
||||
@@ -551,19 +564,8 @@ test_done () {
|
||||
# Test the binaries we have just built. The tests are kept in
|
||||
# t/ subdirectory and are run in 'trash directory' subdirectory.
|
||||
TEST_DIRECTORY=$(pwd)
|
||||
if test -z "$valgrind"
|
||||
if test -n "$valgrind"
|
||||
then
|
||||
if test -z "$GIT_TEST_INSTALLED"
|
||||
then
|
||||
PATH=$TEST_DIRECTORY/..:$PATH
|
||||
GIT_EXEC_PATH=$TEST_DIRECTORY/..
|
||||
else
|
||||
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
||||
error "Cannot run git from $GIT_TEST_INSTALLED."
|
||||
PATH=$GIT_TEST_INSTALLED:$TEST_DIRECTORY/..:$PATH
|
||||
GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
|
||||
fi
|
||||
else
|
||||
make_symlink () {
|
||||
test -h "$2" &&
|
||||
test "$1" = "$(readlink "$2")" || {
|
||||
@@ -625,6 +627,24 @@ else
|
||||
PATH=$GIT_VALGRIND/bin:$PATH
|
||||
GIT_EXEC_PATH=$GIT_VALGRIND/bin
|
||||
export GIT_VALGRIND
|
||||
elif test -n "$GIT_TEST_INSTALLED" ; then
|
||||
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
||||
error "Cannot run git from $GIT_TEST_INSTALLED."
|
||||
PATH=$GIT_TEST_INSTALLED:$TEST_DIRECTORY/..:$PATH
|
||||
GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
|
||||
else # normal case, use ../bin-wrappers only unless $with_dashes:
|
||||
git_bin_dir="$TEST_DIRECTORY/../bin-wrappers"
|
||||
if ! test -x "$git_bin_dir/git" ; then
|
||||
if test -z "$with_dashes" ; then
|
||||
say "$git_bin_dir/git is not executable; using GIT_EXEC_PATH"
|
||||
fi
|
||||
with_dashes=t
|
||||
fi
|
||||
PATH="$git_bin_dir:$PATH"
|
||||
GIT_EXEC_PATH=$TEST_DIRECTORY/..
|
||||
if test -n "$with_dashes" ; then
|
||||
PATH="$TEST_DIRECTORY/..:$PATH"
|
||||
fi
|
||||
fi
|
||||
GIT_TEMPLATE_DIR=$(pwd)/../templates/blt
|
||||
unset GIT_CONFIG
|
||||
@@ -632,20 +652,29 @@ GIT_CONFIG_NOSYSTEM=1
|
||||
GIT_CONFIG_NOGLOBAL=1
|
||||
export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_CONFIG_NOGLOBAL
|
||||
|
||||
. ../GIT-BUILD-OPTIONS
|
||||
|
||||
GITPERLLIB=$(pwd)/../perl/blib/lib:$(pwd)/../perl/blib/arch/auto/Git
|
||||
export GITPERLLIB
|
||||
test -d ../templates/blt || {
|
||||
error "You haven't built things yet, have you?"
|
||||
}
|
||||
|
||||
if test -z "$GIT_TEST_INSTALLED" && test -z "$NO_PYTHON"
|
||||
then
|
||||
GITPYTHONLIB="$(pwd)/../git_remote_helpers/build/lib"
|
||||
export GITPYTHONLIB
|
||||
test -d ../git_remote_helpers/build || {
|
||||
error "You haven't built git_remote_helpers yet, have you?"
|
||||
}
|
||||
fi
|
||||
|
||||
if ! test -x ../test-chmtime; then
|
||||
echo >&2 'You need to build test-chmtime:'
|
||||
echo >&2 'Run "make test-chmtime" in the source (toplevel) directory'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
. ../GIT-BUILD-OPTIONS
|
||||
|
||||
# Test repository
|
||||
test="trash directory.$(basename "$0" .sh)"
|
||||
test -n "$root" && test="$root/$test"
|
||||
@@ -729,6 +758,7 @@ case $(uname -s) in
|
||||
esac
|
||||
|
||||
test -z "$NO_PERL" && test_set_prereq PERL
|
||||
test -z "$NO_PYTHON" && test_set_prereq PYTHON
|
||||
|
||||
# test whether the filesystem supports symbolic links
|
||||
ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
|
||||
|
||||
Reference in New Issue
Block a user