Merge branch 'ab/keep-git-exit-codes-in-tests'
Updates tests around the use of "test $(git cmd) = constant". * ab/keep-git-exit-codes-in-tests: rev-list simplify tests: don't ignore "git" exit code checkout tests: don't ignore "git <cmd>" exit code apply tests: don't ignore "git ls-files" exit code, drop sub-shell gettext tests: don't ignore "test-tool regex" exit code rev-list tests: don't hide abort() in "test_expect_failure" diff tests: don't ignore "git rev-list" exit code notes tests: don't ignore "git" exit code rev-parse tests: don't ignore "git reflog" exit code merge tests: use "test_must_fail" instead of ad-hoc pattern apply tests: use "test_must_fail" instead of ad-hoc pattern diff tests: don't ignore "git diff" exit code in "read" loop diff tests: don't ignore "git diff" exit code read-tree tests: check "diff-files" exit code on failure tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)" tests: change some 'test $(git) = "x"' to test_cmp
This commit is contained in:
commit
ea05fd5fbf
@ -65,9 +65,11 @@ test_expect_success 'check commit-tree' '
|
||||
test_path_is_file "$REAL/objects/$(objpath $SHA)"
|
||||
'
|
||||
|
||||
test_expect_success 'check rev-list' '
|
||||
test_expect_success !SANITIZE_LEAK 'check rev-list' '
|
||||
git update-ref "HEAD" "$SHA" &&
|
||||
test "$SHA" = "$(git rev-list HEAD)"
|
||||
git rev-list HEAD >actual &&
|
||||
echo $SHA >expected &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'setup_git_dir twice in subdir' '
|
||||
|
@ -21,7 +21,6 @@ In the test, these paths are used:
|
||||
yomin - not in H or M
|
||||
'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY"/lib-read-tree.sh
|
||||
|
||||
@ -38,11 +37,12 @@ compare_change () {
|
||||
}
|
||||
|
||||
check_cache_at () {
|
||||
clean_if_empty=$(git diff-files -- "$1")
|
||||
git diff-files -- "$1" >out &&
|
||||
clean_if_empty=$(cat out) &&
|
||||
case "$clean_if_empty" in
|
||||
'') echo "$1: clean" ;;
|
||||
?*) echo "$1: dirty" ;;
|
||||
esac
|
||||
esac &&
|
||||
case "$2,$clean_if_empty" in
|
||||
clean,) : ;;
|
||||
clean,?*) false ;;
|
||||
|
@ -9,7 +9,6 @@ This is identical to t1001, but uses -u to update the work tree as well.
|
||||
|
||||
'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY"/lib-read-tree.sh
|
||||
|
||||
@ -23,11 +22,12 @@ compare_change () {
|
||||
}
|
||||
|
||||
check_cache_at () {
|
||||
clean_if_empty=$(git diff-files -- "$1")
|
||||
git diff-files -- "$1" >out &&
|
||||
clean_if_empty=$(cat out) &&
|
||||
case "$clean_if_empty" in
|
||||
'') echo "$1: clean" ;;
|
||||
?*) echo "$1: dirty" ;;
|
||||
esac
|
||||
esac &&
|
||||
case "$2,$clean_if_empty" in
|
||||
clean,) : ;;
|
||||
clean,?*) false ;;
|
||||
|
@ -132,8 +132,9 @@ test_expect_success 'use --default' '
|
||||
test_must_fail git rev-parse --verify --default bar
|
||||
'
|
||||
|
||||
test_expect_success 'main@{n} for various n' '
|
||||
N=$(git reflog | wc -l) &&
|
||||
test_expect_success !SANITIZE_LEAK 'main@{n} for various n' '
|
||||
git reflog >out &&
|
||||
N=$(wc -l <out) &&
|
||||
Nm1=$(($N-1)) &&
|
||||
Np1=$(($N+1)) &&
|
||||
git rev-parse --verify main@{0} &&
|
||||
|
@ -21,14 +21,20 @@ test_expect_success 'first branch switch' '
|
||||
git checkout other
|
||||
'
|
||||
|
||||
test_cmp_symbolic_HEAD_ref () {
|
||||
echo refs/heads/"$1" >expect &&
|
||||
git symbolic-ref HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
}
|
||||
|
||||
test_expect_success '"checkout -" switches back' '
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/main"
|
||||
test_cmp_symbolic_HEAD_ref main
|
||||
'
|
||||
|
||||
test_expect_success '"checkout -" switches forth' '
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/other"
|
||||
test_cmp_symbolic_HEAD_ref other
|
||||
'
|
||||
|
||||
test_expect_success 'detach HEAD' '
|
||||
@ -37,12 +43,16 @@ test_expect_success 'detach HEAD' '
|
||||
|
||||
test_expect_success '"checkout -" attaches again' '
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/other"
|
||||
test_cmp_symbolic_HEAD_ref other
|
||||
'
|
||||
|
||||
test_expect_success '"checkout -" detaches again' '
|
||||
git checkout - &&
|
||||
test "z$(git rev-parse HEAD)" = "z$(git rev-parse other)" &&
|
||||
|
||||
git rev-parse other >expect &&
|
||||
git rev-parse HEAD >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
test_must_fail git symbolic-ref HEAD
|
||||
'
|
||||
|
||||
@ -63,31 +73,31 @@ more_switches () {
|
||||
test_expect_success 'switch to the last' '
|
||||
more_switches &&
|
||||
git checkout @{-1} &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch2"
|
||||
test_cmp_symbolic_HEAD_ref branch2
|
||||
'
|
||||
|
||||
test_expect_success 'switch to second from the last' '
|
||||
more_switches &&
|
||||
git checkout @{-2} &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch3"
|
||||
test_cmp_symbolic_HEAD_ref branch3
|
||||
'
|
||||
|
||||
test_expect_success 'switch to third from the last' '
|
||||
more_switches &&
|
||||
git checkout @{-3} &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch4"
|
||||
test_cmp_symbolic_HEAD_ref branch4
|
||||
'
|
||||
|
||||
test_expect_success 'switch to fourth from the last' '
|
||||
more_switches &&
|
||||
git checkout @{-4} &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch5"
|
||||
test_cmp_symbolic_HEAD_ref branch5
|
||||
'
|
||||
|
||||
test_expect_success 'switch to twelfth from the last' '
|
||||
more_switches &&
|
||||
git checkout @{-12} &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/branch13"
|
||||
test_cmp_symbolic_HEAD_ref branch13
|
||||
'
|
||||
|
||||
test_expect_success 'merge base test setup' '
|
||||
@ -98,19 +108,28 @@ test_expect_success 'merge base test setup' '
|
||||
test_expect_success 'another...main' '
|
||||
git checkout another &&
|
||||
git checkout another...main &&
|
||||
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify main^)"
|
||||
|
||||
git rev-parse --verify main^ >expect &&
|
||||
git rev-parse --verify HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success '...main' '
|
||||
git checkout another &&
|
||||
git checkout ...main &&
|
||||
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify main^)"
|
||||
|
||||
git rev-parse --verify main^ >expect &&
|
||||
git rev-parse --verify HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'main...' '
|
||||
git checkout another &&
|
||||
git checkout main... &&
|
||||
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify main^)"
|
||||
|
||||
git rev-parse --verify main^ >expect &&
|
||||
git rev-parse --verify HEAD >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success '"checkout -" works after a rebase A' '
|
||||
@ -118,7 +137,7 @@ test_expect_success '"checkout -" works after a rebase A' '
|
||||
git checkout other &&
|
||||
git rebase main &&
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/main"
|
||||
test_cmp_symbolic_HEAD_ref main
|
||||
'
|
||||
|
||||
test_expect_success '"checkout -" works after a rebase A B' '
|
||||
@ -127,7 +146,7 @@ test_expect_success '"checkout -" works after a rebase A B' '
|
||||
git checkout other &&
|
||||
git rebase main moodle &&
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/main"
|
||||
test_cmp_symbolic_HEAD_ref main
|
||||
'
|
||||
|
||||
test_expect_success '"checkout -" works after a rebase -i A' '
|
||||
@ -135,7 +154,7 @@ test_expect_success '"checkout -" works after a rebase -i A' '
|
||||
git checkout other &&
|
||||
git rebase -i main &&
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/main"
|
||||
test_cmp_symbolic_HEAD_ref main
|
||||
'
|
||||
|
||||
test_expect_success '"checkout -" works after a rebase -i A B' '
|
||||
@ -144,7 +163,7 @@ test_expect_success '"checkout -" works after a rebase -i A B' '
|
||||
git checkout other &&
|
||||
git rebase main foodle &&
|
||||
git checkout - &&
|
||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/main"
|
||||
test_cmp_symbolic_HEAD_ref main
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -14,7 +14,6 @@ only the updates to dir/sub.
|
||||
Also tested are "git add -u" without limiting, and "git add -u"
|
||||
without contents changes, and other conditions'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
@ -41,20 +40,28 @@ test_expect_success update '
|
||||
'
|
||||
|
||||
test_expect_success 'update noticed a removal' '
|
||||
test "$(git ls-files dir1/sub1)" = ""
|
||||
git ls-files dir1/sub1 >out &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
test_expect_success 'update touched correct path' '
|
||||
test "$(git diff-files --name-status dir2/sub3)" = ""
|
||||
git diff-files --name-status dir2/sub3 >out &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
test_expect_success 'update did not touch other tracked files' '
|
||||
test "$(git diff-files --name-status check)" = "M check" &&
|
||||
test "$(git diff-files --name-status top)" = "M top"
|
||||
echo "M check" >expect &&
|
||||
git diff-files --name-status check >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
echo "M top" >expect &&
|
||||
git diff-files --name-status top >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'update did not touch untracked files' '
|
||||
test "$(git ls-files dir2/other)" = ""
|
||||
git ls-files dir2/other >out &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
test_expect_success 'cache tree has not been corrupted' '
|
||||
@ -76,9 +83,8 @@ test_expect_success 'update from a subdirectory' '
|
||||
'
|
||||
|
||||
test_expect_success 'change gets noticed' '
|
||||
|
||||
test "$(git diff-files --name-status dir1)" = ""
|
||||
|
||||
git diff-files --name-status dir1 >out &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
test_expect_success 'non-qualified update in subdir updates from the root' '
|
||||
@ -103,7 +109,8 @@ test_expect_success 'replace a file with a symlink' '
|
||||
test_expect_success 'add everything changed' '
|
||||
|
||||
git add -u &&
|
||||
test -z "$(git diff-files)"
|
||||
git diff-files >out &&
|
||||
test_must_be_empty out
|
||||
|
||||
'
|
||||
|
||||
@ -111,7 +118,8 @@ test_expect_success 'touch and then add -u' '
|
||||
|
||||
touch check &&
|
||||
git add -u &&
|
||||
test -z "$(git diff-files)"
|
||||
git diff-files >out &&
|
||||
test_must_be_empty out
|
||||
|
||||
'
|
||||
|
||||
@ -119,7 +127,8 @@ test_expect_success 'touch and then add explicitly' '
|
||||
|
||||
touch check &&
|
||||
git add check &&
|
||||
test -z "$(git diff-files)"
|
||||
git diff-files >out &&
|
||||
test_must_be_empty out
|
||||
|
||||
'
|
||||
|
||||
|
@ -8,7 +8,6 @@ test_description='Test commit notes index (expensive!)'
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
create_repo () {
|
||||
@ -65,7 +64,8 @@ create_repo () {
|
||||
test_notes () {
|
||||
count=$1 &&
|
||||
git config core.notesRef refs/notes/commits &&
|
||||
git log | grep "^ " >output &&
|
||||
git log >tmp &&
|
||||
grep "^ " tmp >output &&
|
||||
i=$count &&
|
||||
while test $i -gt 0
|
||||
do
|
||||
@ -90,7 +90,7 @@ write_script time_notes <<\EOF
|
||||
unset GIT_NOTES_REF
|
||||
;;
|
||||
esac
|
||||
git log
|
||||
git log || exit $?
|
||||
i=$(($i+1))
|
||||
done >/dev/null
|
||||
EOF
|
||||
|
@ -5,7 +5,6 @@ test_description='Test commit notes organized in subtrees'
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
number_of_commits=100
|
||||
@ -79,7 +78,7 @@ test_sha1_based () {
|
||||
(
|
||||
start_note_commit &&
|
||||
nr=$number_of_commits &&
|
||||
git rev-list refs/heads/main |
|
||||
git rev-list refs/heads/main >out &&
|
||||
while read sha1; do
|
||||
note_path=$(echo "$sha1" | sed "$1")
|
||||
cat <<INPUT_END &&
|
||||
@ -91,9 +90,9 @@ EOF
|
||||
INPUT_END
|
||||
|
||||
nr=$(($nr-1))
|
||||
done
|
||||
) |
|
||||
git fast-import --quiet
|
||||
done <out
|
||||
) >gfi &&
|
||||
git fast-import --quiet <gfi
|
||||
}
|
||||
|
||||
test_expect_success 'test notes in 2/38-fanout' 'test_sha1_based "s|^..|&/|"'
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
test_description='Test that adding/removing many notes triggers automatic fanout restructuring'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
path_has_fanout() {
|
||||
@ -24,7 +23,7 @@ touched_one_note_with_fanout() {
|
||||
all_notes_have_fanout() {
|
||||
notes_commit=$1 &&
|
||||
fanout=$2 &&
|
||||
git ls-tree -r --name-only $notes_commit 2>/dev/null |
|
||||
git ls-tree -r --name-only $notes_commit |
|
||||
while read path
|
||||
do
|
||||
path_has_fanout $path $fanout || return 1
|
||||
@ -51,8 +50,9 @@ test_expect_success 'creating many notes with git-notes' '
|
||||
done
|
||||
'
|
||||
|
||||
test_expect_success 'many notes created correctly with git-notes' '
|
||||
git log | grep "^ " > output &&
|
||||
test_expect_success !SANITIZE_LEAK 'many notes created correctly with git-notes' '
|
||||
git log >output.raw &&
|
||||
grep "^ " output.raw >output &&
|
||||
i=$num_notes &&
|
||||
while test $i -gt 0
|
||||
do
|
||||
@ -91,13 +91,13 @@ test_expect_success 'stable fanout 0 is followed by stable fanout 1' '
|
||||
test_expect_success 'deleting most notes with git-notes' '
|
||||
remove_notes=285 &&
|
||||
i=0 &&
|
||||
git rev-list HEAD |
|
||||
git rev-list HEAD >revs &&
|
||||
while test $i -lt $remove_notes && read sha1
|
||||
do
|
||||
i=$(($i + 1)) &&
|
||||
test_tick &&
|
||||
git notes remove "$sha1" 2>/dev/null || return 1
|
||||
done
|
||||
git notes remove "$sha1" || return 1
|
||||
done <revs
|
||||
'
|
||||
|
||||
test_expect_success 'most notes deleted correctly with git-notes' '
|
||||
|
@ -24,45 +24,38 @@ test_expect_success setup '
|
||||
'
|
||||
|
||||
test_expect_success 'GIT_EXTERNAL_DIFF environment' '
|
||||
|
||||
GIT_EXTERNAL_DIFF=echo git diff | {
|
||||
read path oldfile oldhex oldmode newfile newhex newmode &&
|
||||
test "z$path" = zfile &&
|
||||
test "z$oldmode" = z100644 &&
|
||||
test "z$newhex" = "z$ZERO_OID" &&
|
||||
test "z$newmode" = z100644 &&
|
||||
oh=$(git rev-parse --verify HEAD:file) &&
|
||||
test "z$oh" = "z$oldhex"
|
||||
}
|
||||
cat >expect <<-EOF &&
|
||||
file $(git rev-parse --verify HEAD:file) 100644 file $(test_oid zero) 100644
|
||||
EOF
|
||||
GIT_EXTERNAL_DIFF=echo git diff >out &&
|
||||
cut -d" " -f1,3- <out >actual &&
|
||||
test_cmp expect actual
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'GIT_EXTERNAL_DIFF environment should apply only to diff' '
|
||||
|
||||
GIT_EXTERNAL_DIFF=echo git log -p -1 HEAD |
|
||||
grep "^diff --git a/file b/file"
|
||||
test_expect_success !SANITIZE_LEAK 'GIT_EXTERNAL_DIFF environment should apply only to diff' '
|
||||
GIT_EXTERNAL_DIFF=echo git log -p -1 HEAD >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'GIT_EXTERNAL_DIFF environment and --no-ext-diff' '
|
||||
|
||||
GIT_EXTERNAL_DIFF=echo git diff --no-ext-diff |
|
||||
grep "^diff --git a/file b/file"
|
||||
GIT_EXTERNAL_DIFF=echo git diff --no-ext-diff >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
|
||||
'
|
||||
|
||||
test_expect_success SYMLINKS 'typechange diff' '
|
||||
rm -f file &&
|
||||
ln -s elif file &&
|
||||
GIT_EXTERNAL_DIFF=echo git diff | {
|
||||
read path oldfile oldhex oldmode newfile newhex newmode &&
|
||||
test "z$path" = zfile &&
|
||||
test "z$oldmode" = z100644 &&
|
||||
test "z$newhex" = "z$ZERO_OID" &&
|
||||
test "z$newmode" = z120000 &&
|
||||
oh=$(git rev-parse --verify HEAD:file) &&
|
||||
test "z$oh" = "z$oldhex"
|
||||
} &&
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 120000
|
||||
EOF
|
||||
GIT_EXTERNAL_DIFF=echo git diff >out &&
|
||||
cut -d" " -f1,3-4,6- <out >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
GIT_EXTERNAL_DIFF=echo git diff --no-ext-diff >actual &&
|
||||
git diff >expect &&
|
||||
test_cmp expect actual
|
||||
@ -72,27 +65,25 @@ test_expect_success 'diff.external' '
|
||||
git reset --hard &&
|
||||
echo third >file &&
|
||||
test_config diff.external echo &&
|
||||
git diff | {
|
||||
read path oldfile oldhex oldmode newfile newhex newmode &&
|
||||
test "z$path" = zfile &&
|
||||
test "z$oldmode" = z100644 &&
|
||||
test "z$newhex" = "z$ZERO_OID" &&
|
||||
test "z$newmode" = z100644 &&
|
||||
oh=$(git rev-parse --verify HEAD:file) &&
|
||||
test "z$oh" = "z$oldhex"
|
||||
}
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 100644
|
||||
EOF
|
||||
git diff >out &&
|
||||
cut -d" " -f1,3-4,6- <out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'diff.external should apply only to diff' '
|
||||
test_expect_success !SANITIZE_LEAK 'diff.external should apply only to diff' '
|
||||
test_config diff.external echo &&
|
||||
git log -p -1 HEAD |
|
||||
grep "^diff --git a/file b/file"
|
||||
git log -p -1 HEAD >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
'
|
||||
|
||||
test_expect_success 'diff.external and --no-ext-diff' '
|
||||
test_config diff.external echo &&
|
||||
git diff --no-ext-diff |
|
||||
grep "^diff --git a/file b/file"
|
||||
git diff --no-ext-diff >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
'
|
||||
|
||||
test_expect_success 'diff attribute' '
|
||||
@ -103,29 +94,23 @@ test_expect_success 'diff attribute' '
|
||||
|
||||
echo >.gitattributes "file diff=parrot" &&
|
||||
|
||||
git diff | {
|
||||
read path oldfile oldhex oldmode newfile newhex newmode &&
|
||||
test "z$path" = zfile &&
|
||||
test "z$oldmode" = z100644 &&
|
||||
test "z$newhex" = "z$ZERO_OID" &&
|
||||
test "z$newmode" = z100644 &&
|
||||
oh=$(git rev-parse --verify HEAD:file) &&
|
||||
test "z$oh" = "z$oldhex"
|
||||
}
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 100644
|
||||
EOF
|
||||
git diff >out &&
|
||||
cut -d" " -f1,3-4,6- <out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'diff attribute should apply only to diff' '
|
||||
|
||||
git log -p -1 HEAD |
|
||||
grep "^diff --git a/file b/file"
|
||||
test_expect_success !SANITIZE_LEAK 'diff attribute should apply only to diff' '
|
||||
git log -p -1 HEAD >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'diff attribute and --no-ext-diff' '
|
||||
|
||||
git diff --no-ext-diff |
|
||||
grep "^diff --git a/file b/file"
|
||||
git diff --no-ext-diff >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
|
||||
'
|
||||
|
||||
@ -136,48 +121,55 @@ test_expect_success 'diff attribute' '
|
||||
|
||||
echo >.gitattributes "file diff=color" &&
|
||||
|
||||
git diff | {
|
||||
read path oldfile oldhex oldmode newfile newhex newmode &&
|
||||
test "z$path" = zfile &&
|
||||
test "z$oldmode" = z100644 &&
|
||||
test "z$newhex" = "z$ZERO_OID" &&
|
||||
test "z$newmode" = z100644 &&
|
||||
oh=$(git rev-parse --verify HEAD:file) &&
|
||||
test "z$oh" = "z$oldhex"
|
||||
}
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 100644
|
||||
EOF
|
||||
git diff >out &&
|
||||
cut -d" " -f1,3-4,6- <out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'diff attribute should apply only to diff' '
|
||||
|
||||
git log -p -1 HEAD |
|
||||
grep "^diff --git a/file b/file"
|
||||
test_expect_success !SANITIZE_LEAK 'diff attribute should apply only to diff' '
|
||||
git log -p -1 HEAD >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'diff attribute and --no-ext-diff' '
|
||||
|
||||
git diff --no-ext-diff |
|
||||
grep "^diff --git a/file b/file"
|
||||
git diff --no-ext-diff >out &&
|
||||
grep "^diff --git a/file b/file" out
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'GIT_EXTERNAL_DIFF trumps diff.external' '
|
||||
>.gitattributes &&
|
||||
test_config diff.external "echo ext-global" &&
|
||||
GIT_EXTERNAL_DIFF="echo ext-env" git diff | grep ext-env
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
ext-env file $(git rev-parse --verify HEAD:file) 100644 file $(test_oid zero) 100644
|
||||
EOF
|
||||
GIT_EXTERNAL_DIFF="echo ext-env" git diff >out &&
|
||||
cut -d" " -f1-2,4- <out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'attributes trump GIT_EXTERNAL_DIFF and diff.external' '
|
||||
test_config diff.foo.command "echo ext-attribute" &&
|
||||
test_config diff.external "echo ext-global" &&
|
||||
echo "file diff=foo" >.gitattributes &&
|
||||
GIT_EXTERNAL_DIFF="echo ext-env" git diff | grep ext-attribute
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
ext-attribute file $(git rev-parse --verify HEAD:file) 100644 file $(test_oid zero) 100644
|
||||
EOF
|
||||
GIT_EXTERNAL_DIFF="echo ext-env" git diff >out &&
|
||||
cut -d" " -f1-2,4- <out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'no diff with -diff' '
|
||||
echo >.gitattributes "file -diff" &&
|
||||
git diff | grep Binary
|
||||
git diff >out &&
|
||||
grep Binary out
|
||||
'
|
||||
|
||||
echo NULZbetweenZwords | perl -pe 'y/Z/\000/' > file
|
||||
@ -217,7 +209,12 @@ test_expect_success 'GIT_EXTERNAL_DIFF generates pretty paths' '
|
||||
touch file.ext &&
|
||||
git add file.ext &&
|
||||
echo with extension > file.ext &&
|
||||
GIT_EXTERNAL_DIFF=echo git diff file.ext | grep ......_file\.ext &&
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
file.ext file $(git rev-parse --verify HEAD:file) 100644 file.ext $(test_oid zero) 100644
|
||||
EOF
|
||||
GIT_EXTERNAL_DIFF=echo git diff file.ext >out &&
|
||||
cut -d" " -f1,3- <out >actual &&
|
||||
git update-index --force-remove file.ext &&
|
||||
rm file.ext
|
||||
'
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
test_description='difference in submodules'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY"/lib-diff.sh
|
||||
|
||||
@ -28,10 +27,8 @@ test_expect_success setup '
|
||||
git commit -m "submodule #2"
|
||||
) &&
|
||||
|
||||
set x $(
|
||||
cd sub &&
|
||||
git rev-list HEAD
|
||||
) &&
|
||||
git -C sub rev-list HEAD >revs &&
|
||||
set x $(cat revs) &&
|
||||
echo ":160000 160000 $3 $ZERO_OID M sub" >expect &&
|
||||
subtip=$3 subprev=$2
|
||||
'
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
test_description='apply a patch that is larger than the preimage'
|
||||
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
cat >F <<\EOF
|
||||
@ -41,20 +39,8 @@ test_expect_success setup '
|
||||
'
|
||||
|
||||
test_expect_success 'apply should fail gracefully' '
|
||||
|
||||
if git apply --index patch
|
||||
then
|
||||
echo Oops, should not have succeeded
|
||||
false
|
||||
else
|
||||
status=$? &&
|
||||
echo "Status was $status" &&
|
||||
if test -f .git/index.lock
|
||||
then
|
||||
echo Oops, should not have crashed
|
||||
false
|
||||
fi
|
||||
fi
|
||||
test_must_fail git apply --index patch &&
|
||||
test_path_is_missing .git/index.lock
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
test_description='apply same filename'
|
||||
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'setup' '
|
||||
@ -26,10 +24,11 @@ diff a/bla/blub/dir/file b/bla/blub/dir/file
|
||||
EOF
|
||||
|
||||
test_expect_success 'apply --directory -p (1)' '
|
||||
|
||||
git apply --directory=some/sub -p3 --index patch &&
|
||||
test Bello = $(git show :some/sub/dir/file) &&
|
||||
test Bello = $(cat some/sub/dir/file)
|
||||
echo Bello >expect &&
|
||||
git show :some/sub/dir/file >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_cmp expect some/sub/dir/file
|
||||
|
||||
'
|
||||
|
||||
@ -37,8 +36,10 @@ test_expect_success 'apply --directory -p (2) ' '
|
||||
|
||||
git reset --hard initial &&
|
||||
git apply --directory=some/sub/ -p3 --index patch &&
|
||||
test Bello = $(git show :some/sub/dir/file) &&
|
||||
test Bello = $(cat some/sub/dir/file)
|
||||
echo Bello >expect &&
|
||||
git show :some/sub/dir/file >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_cmp expect some/sub/dir/file
|
||||
|
||||
'
|
||||
|
||||
@ -55,8 +56,10 @@ EOF
|
||||
test_expect_success 'apply --directory (new file)' '
|
||||
git reset --hard initial &&
|
||||
git apply --directory=some/sub/dir/ --index patch &&
|
||||
test content = $(git show :some/sub/dir/newfile) &&
|
||||
test content = $(cat some/sub/dir/newfile)
|
||||
echo content >expect &&
|
||||
git show :some/sub/dir/newfile >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_cmp expect some/sub/dir/newfile
|
||||
'
|
||||
|
||||
cat > patch << EOF
|
||||
@ -72,8 +75,10 @@ EOF
|
||||
test_expect_success 'apply --directory -p (new file)' '
|
||||
git reset --hard initial &&
|
||||
git apply -p2 --directory=some/sub/dir/ --index patch &&
|
||||
test content = $(git show :some/sub/dir/newfile2) &&
|
||||
test content = $(cat some/sub/dir/newfile2)
|
||||
echo content >expect &&
|
||||
git show :some/sub/dir/newfile2 >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_cmp expect some/sub/dir/newfile2
|
||||
'
|
||||
|
||||
cat > patch << EOF
|
||||
@ -91,7 +96,8 @@ test_expect_success 'apply --directory (delete file)' '
|
||||
echo content >some/sub/dir/delfile &&
|
||||
git add some/sub/dir/delfile &&
|
||||
git apply --directory=some/sub/dir/ --index patch &&
|
||||
! (git ls-files | grep delfile)
|
||||
git ls-files >out &&
|
||||
! grep delfile out
|
||||
'
|
||||
|
||||
cat > patch << 'EOF'
|
||||
@ -107,8 +113,10 @@ EOF
|
||||
test_expect_success 'apply --directory (quoted filename)' '
|
||||
git reset --hard initial &&
|
||||
git apply --directory=some/sub/dir/ --index patch &&
|
||||
test content = $(git show :some/sub/dir/quotefile) &&
|
||||
test content = $(cat some/sub/dir/quotefile)
|
||||
echo content >expect &&
|
||||
git show :some/sub/dir/quotefile >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_cmp expect some/sub/dir/quotefile
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
test_description='git rev-list --max-count and --skip test'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'setup' '
|
||||
@ -14,39 +13,39 @@ test_expect_success 'setup' '
|
||||
'
|
||||
|
||||
test_expect_success 'no options' '
|
||||
test $(git rev-list HEAD | wc -l) = 5
|
||||
test_stdout_line_count = 5 git rev-list HEAD
|
||||
'
|
||||
|
||||
test_expect_success '--max-count' '
|
||||
test $(git rev-list HEAD --max-count=0 | wc -l) = 0 &&
|
||||
test $(git rev-list HEAD --max-count=3 | wc -l) = 3 &&
|
||||
test $(git rev-list HEAD --max-count=5 | wc -l) = 5 &&
|
||||
test $(git rev-list HEAD --max-count=10 | wc -l) = 5
|
||||
test_stdout_line_count = 0 git rev-list HEAD --max-count=0 &&
|
||||
test_stdout_line_count = 3 git rev-list HEAD --max-count=3 &&
|
||||
test_stdout_line_count = 5 git rev-list HEAD --max-count=5 &&
|
||||
test_stdout_line_count = 5 git rev-list HEAD --max-count=10
|
||||
'
|
||||
|
||||
test_expect_success '--max-count all forms' '
|
||||
test $(git rev-list HEAD --max-count=1 | wc -l) = 1 &&
|
||||
test $(git rev-list HEAD -1 | wc -l) = 1 &&
|
||||
test $(git rev-list HEAD -n1 | wc -l) = 1 &&
|
||||
test $(git rev-list HEAD -n 1 | wc -l) = 1
|
||||
test_stdout_line_count = 1 git rev-list HEAD --max-count=1 &&
|
||||
test_stdout_line_count = 1 git rev-list HEAD -1 &&
|
||||
test_stdout_line_count = 1 git rev-list HEAD -n1 &&
|
||||
test_stdout_line_count = 1 git rev-list HEAD -n 1
|
||||
'
|
||||
|
||||
test_expect_success '--skip' '
|
||||
test $(git rev-list HEAD --skip=0 | wc -l) = 5 &&
|
||||
test $(git rev-list HEAD --skip=3 | wc -l) = 2 &&
|
||||
test $(git rev-list HEAD --skip=5 | wc -l) = 0 &&
|
||||
test $(git rev-list HEAD --skip=10 | wc -l) = 0
|
||||
test_stdout_line_count = 5 git rev-list HEAD --skip=0 &&
|
||||
test_stdout_line_count = 2 git rev-list HEAD --skip=3 &&
|
||||
test_stdout_line_count = 0 git rev-list HEAD --skip=5 &&
|
||||
test_stdout_line_count = 0 git rev-list HEAD --skip=10
|
||||
'
|
||||
|
||||
test_expect_success '--skip --max-count' '
|
||||
test $(git rev-list HEAD --skip=0 --max-count=0 | wc -l) = 0 &&
|
||||
test $(git rev-list HEAD --skip=0 --max-count=10 | wc -l) = 5 &&
|
||||
test $(git rev-list HEAD --skip=3 --max-count=0 | wc -l) = 0 &&
|
||||
test $(git rev-list HEAD --skip=3 --max-count=1 | wc -l) = 1 &&
|
||||
test $(git rev-list HEAD --skip=3 --max-count=2 | wc -l) = 2 &&
|
||||
test $(git rev-list HEAD --skip=3 --max-count=10 | wc -l) = 2 &&
|
||||
test $(git rev-list HEAD --skip=5 --max-count=10 | wc -l) = 0 &&
|
||||
test $(git rev-list HEAD --skip=10 --max-count=10 | wc -l) = 0
|
||||
test_stdout_line_count = 0 git rev-list HEAD --skip=0 --max-count=0 &&
|
||||
test_stdout_line_count = 5 git rev-list HEAD --skip=0 --max-count=10 &&
|
||||
test_stdout_line_count = 0 git rev-list HEAD --skip=3 --max-count=0 &&
|
||||
test_stdout_line_count = 1 git rev-list HEAD --skip=3 --max-count=1 &&
|
||||
test_stdout_line_count = 2 git rev-list HEAD --skip=3 --max-count=2 &&
|
||||
test_stdout_line_count = 2 git rev-list HEAD --skip=3 --max-count=10 &&
|
||||
test_stdout_line_count = 0 git rev-list HEAD --skip=5 --max-count=10 &&
|
||||
test_stdout_line_count = 0 git rev-list HEAD --skip=10 --max-count=10
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -12,7 +12,9 @@ note () {
|
||||
}
|
||||
|
||||
unnote () {
|
||||
git name-rev --tags --annotate-stdin | sed -e "s|$OID_REGEX (tags/\([^)]*\)) |\1 |g"
|
||||
test_when_finished "rm -f tmp" &&
|
||||
git name-rev --tags --annotate-stdin >tmp &&
|
||||
sed -e "s|$OID_REGEX (tags/\([^)]*\)) |\1 |g" <tmp
|
||||
}
|
||||
|
||||
#
|
||||
@ -111,8 +113,8 @@ check_outcome () {
|
||||
shift &&
|
||||
param="$*" &&
|
||||
test_expect_$outcome "log $param" '
|
||||
git log --pretty="$FMT" --parents $param |
|
||||
unnote >actual &&
|
||||
git log --pretty="$FMT" --parents $param >out &&
|
||||
unnote >actual <out &&
|
||||
sed -e "s/^.* \([^ ]*\) .*/\1/" >check <actual &&
|
||||
test_cmp expect check
|
||||
'
|
||||
@ -151,8 +153,8 @@ check_result 'L K I H G B' --exclude-first-parent-only --first-parent L ^F
|
||||
check_result 'E C B A' --full-history E -- lost
|
||||
test_expect_success 'full history simplification without parent' '
|
||||
printf "%s\n" E C B A >expect &&
|
||||
git log --pretty="$FMT" --full-history E -- lost |
|
||||
unnote >actual &&
|
||||
git log --pretty="$FMT" --full-history E -- lost >out &&
|
||||
unnote >actual <out &&
|
||||
sed -e "s/^.* \([^ ]*\) .*/\1/" >check <actual &&
|
||||
test_cmp expect check
|
||||
'
|
||||
|
@ -17,8 +17,13 @@ test_expect_success 'setup unexpected non-blob entry' '
|
||||
broken_tree="$(git hash-object -w --literally -t tree broken-tree)"
|
||||
'
|
||||
|
||||
test_expect_failure 'traverse unexpected non-blob entry (lone)' '
|
||||
test_must_fail git rev-list --objects $broken_tree
|
||||
test_expect_success !SANITIZE_LEAK 'TODO (should fail!): traverse unexpected non-blob entry (lone)' '
|
||||
sed "s/Z$//" >expect <<-EOF &&
|
||||
$broken_tree Z
|
||||
$tree foo
|
||||
EOF
|
||||
git rev-list --objects $broken_tree >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'traverse unexpected non-blob entry (seen)' '
|
||||
@ -116,8 +121,8 @@ test_expect_success 'setup unexpected non-blob tag' '
|
||||
tag=$(git hash-object -w --literally -t tag broken-tag)
|
||||
'
|
||||
|
||||
test_expect_failure 'traverse unexpected non-blob tag (lone)' '
|
||||
test_must_fail git rev-list --objects $tag
|
||||
test_expect_success !SANITIZE_LEAK 'TODO (should fail!): traverse unexpected non-blob tag (lone)' '
|
||||
git rev-list --objects $tag
|
||||
'
|
||||
|
||||
test_expect_success 'traverse unexpected non-blob tag (seen)' '
|
||||
|
@ -43,14 +43,9 @@ test_expect_success resolve '
|
||||
rm -f a* m* &&
|
||||
git reset --hard anchor &&
|
||||
|
||||
if git merge -s resolve main
|
||||
then
|
||||
echo Oops, should not have succeeded
|
||||
false
|
||||
else
|
||||
test_must_fail git merge -s resolve main &&
|
||||
git ls-files -s >current &&
|
||||
test_cmp expect current
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success recursive '
|
||||
@ -58,14 +53,9 @@ test_expect_success recursive '
|
||||
rm -f a* m* &&
|
||||
git reset --hard anchor &&
|
||||
|
||||
if git merge -s recursive main
|
||||
then
|
||||
echo Oops, should not have succeeded
|
||||
false
|
||||
else
|
||||
test_must_fail git merge -s recursive main &&
|
||||
git ls-files -s >current &&
|
||||
test_cmp expect current
|
||||
fi
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -63,9 +63,12 @@ test_expect_success '"mixed" reset is not allowed in bare' '
|
||||
test_must_fail git reset --mixed HEAD^
|
||||
'
|
||||
|
||||
test_expect_success '"soft" reset is allowed in bare' '
|
||||
test_expect_success !SANITIZE_LEAK '"soft" reset is allowed in bare' '
|
||||
git reset --soft HEAD^ &&
|
||||
test "$(git show --pretty=format:%s | head -n 1)" = "one"
|
||||
git show --pretty=format:%s >out &&
|
||||
echo one >expect &&
|
||||
head -n 1 out >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -11,9 +11,19 @@ test_expect_success GETTEXT_LOCALE 'setup' '
|
||||
export LC_ALL
|
||||
'
|
||||
|
||||
test_have_prereq GETTEXT_LOCALE &&
|
||||
test-tool regex "HALLÓ" "Halló" ICASE &&
|
||||
test_expect_success GETTEXT_LOCALE 'setup REGEX_LOCALE prerequisite' '
|
||||
# This "test-tool" invocation is identical...
|
||||
if test-tool regex "HALLÓ" "Halló" ICASE
|
||||
then
|
||||
test_set_prereq REGEX_LOCALE
|
||||
else
|
||||
|
||||
# ... to this one, but this way "test_must_fail" will
|
||||
# tell a segfault or abort() from the regexec() test
|
||||
# itself
|
||||
test_must_fail test-tool regex "HALLÓ" "Halló" ICASE
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success REGEX_LOCALE 'grep literal string, no -F' '
|
||||
git grep -i "TILRAUN: Halló Heimur!" &&
|
||||
|
Loading…
Reference in New Issue
Block a user