mirror of
https://github.com/git/git.git
synced 2026-06-19 15:39:47 +02:00
t: convert grep assertions to test_grep
Replace bare grep with test_grep in test assertions across the
suite, including sourced test helpers (lib-*.sh, *-tests.sh).
test_grep prints the contents of the file being searched on
failure, making debugging easier than a bare grep which fails
silently.
Only assertion-style greps are converted: grep used as a filter
in pipelines, command substitutions, conditionals, or with
redirected I/O is left as-is with a "# lint-ok" annotation.
Existing '! test_grep' calls are rewritten to 'test_grep !' so
that the diagnostic output is preserved on failure.
The conversion was generated using a grep-assertion linter
(greplint.pl, added in the following commit) to identify bare
grep calls at command position. To reproduce:
# Step 1: mark bare greps that should not be converted
sed -i '/! grep "$m" \.git\/packed-refs/s/$/ # lint-ok: file may not exist (reftable)/' \
t/t1400-update-ref.sh
sed -i '/! grep dirty file3 &&/{/lint-ok/!s/$/ # lint-ok: file may not exist after --quit/}' \
t/t3420-rebase-autostash.sh
sed -i '/grep -vf before commits\.raw/s/$/ # lint-ok: data filter/' \
t/t5326-multi-pack-bitmaps.sh
sed -i '/! grep $d shallow-client\/\.git\/shallow/s/$/ # lint-ok: file may not exist after repack/' \
t/t5537-fetch-shallow.sh
sed -i '/grep -E "^\[0-9a-f\].*|| :/s/$/ # lint-ok: data filter/' \
t/t5702-protocol-v2.sh
sed -i '/! grep gitdir squatting-clone/s/$/ # lint-ok: file may not exist after failed clone/' \
t/t7450-bad-git-dotfiles.sh
# Step 2: reorder pre-existing '! test_grep' to 'test_grep !'
# (must come before steps 3-4 so greplint does not see them)
sed -i 's/! test_grep/test_grep !/' t/t0031-lockfile-pid.sh
sed -i 's/! test_grep/test_grep !/' t/t5300-pack-object.sh
sed -i 's/! test_grep/test_grep !/' t/t5319-multi-pack-index.sh
# Step 3: convert '! grep' -> 'test_grep !'
perl t/greplint.pl t/*.sh 2>&1 | cut -d: -f1,2 |
while IFS=: read f l; do
sed -i "${l}s/! *grep/test_grep !/" "$f"
done
# Step 4: convert remaining 'grep' -> 'test_grep'
perl t/greplint.pl t/*.sh 2>&1 | cut -d: -f1,2 |
while IFS=: read f l; do
sed -i "${l}s/grep/test_grep/" "$f"
done
To verify, run: make -C t test-greplint
Signed-off-by: Michael Montalbo <mmontalbo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
ee98f4be26
commit
cd352cab5b
@@ -523,7 +523,7 @@ test_expect_success 'Verify descending sort' '
|
||||
|
||||
test_expect_success 'Give help even with invalid sort atoms' '
|
||||
test_expect_code 129 ${git_for_each_ref} --sort=bogus -h >actual 2>&1 &&
|
||||
grep "^usage: ${git_for_each_ref}" actual
|
||||
test_grep "^usage: ${git_for_each_ref}" actual
|
||||
'
|
||||
|
||||
cat >expected <<\EOF
|
||||
@@ -622,7 +622,7 @@ test_expect_success 'Quoting style: tcl' '
|
||||
for i in "--perl --shell" "-s --python" "--python --tcl" "--tcl --perl"; do
|
||||
test_expect_success "more than one quoting style: $i" "
|
||||
test_must_fail ${git_for_each_ref} $i 2>err &&
|
||||
grep '^error: more than one quoting style' err
|
||||
test_grep '^error: more than one quoting style' err
|
||||
"
|
||||
done
|
||||
|
||||
@@ -1892,7 +1892,7 @@ test_expect_success "${git_for_each_ref} --stdin: fails if extra args" '
|
||||
>in &&
|
||||
test_must_fail ${git_for_each_ref} --format="%(refname)" \
|
||||
--stdin refs/heads/extra <in 2>err &&
|
||||
grep "unknown arguments supplied with --stdin" err
|
||||
test_grep "unknown arguments supplied with --stdin" err
|
||||
'
|
||||
|
||||
test_expect_success "${git_for_each_ref} --stdin: matches" '
|
||||
@@ -1955,11 +1955,11 @@ test_expect_success "${git_for_each_ref} with nested tags" '
|
||||
|
||||
test_expect_success 'is-base atom with non-commits' '
|
||||
${git_for_each_ref} --format="%(is-base:HEAD) %(refname)" >out 2>err &&
|
||||
grep "(HEAD) refs/heads/main" out &&
|
||||
test_grep "(HEAD) refs/heads/main" out &&
|
||||
|
||||
test_line_count = 2 err &&
|
||||
grep "error: object .* is a commit, not a blob" err &&
|
||||
grep "error: bad tag pointer to" err
|
||||
test_grep "error: object .* is a commit, not a blob" err &&
|
||||
test_grep "error: bad tag pointer to" err
|
||||
'
|
||||
|
||||
GRADE_FORMAT="%(signature:grade)%0a%(signature:key)%0a%(signature:signer)%0a%(signature:fingerprint)%0a%(signature:primarykeyfingerprint)"
|
||||
|
||||
+6
-6
@@ -173,7 +173,7 @@ rev_list_tests_head () {
|
||||
|
||||
test_expect_success "bitmap --objects handles non-commit objects ($state, $branch)" '
|
||||
git rev-list --objects --use-bitmap-index $branch tagged-blob >actual &&
|
||||
grep $blob actual
|
||||
test_grep $blob actual
|
||||
'
|
||||
}
|
||||
|
||||
@@ -242,16 +242,16 @@ basic_bitmap_tests () {
|
||||
GIT_PROGRESS_DELAY=0 \
|
||||
git pack-objects --all --stdout --progress \
|
||||
</dev/null >/dev/null 2>stderr &&
|
||||
grep "Enumerating objects: $count, done" stderr &&
|
||||
grep "pack-reused $count" stderr &&
|
||||
test_grep "Enumerating objects: $count, done" stderr &&
|
||||
test_grep "pack-reused $count" stderr &&
|
||||
|
||||
# now the same but with one non-reused object
|
||||
git commit --allow-empty -m "an extra commit object" &&
|
||||
GIT_PROGRESS_DELAY=0 \
|
||||
git pack-objects --all --stdout --progress \
|
||||
</dev/null >/dev/null 2>stderr &&
|
||||
grep "Enumerating objects: $((count+1)), done" stderr &&
|
||||
grep "pack-reused $count" stderr
|
||||
test_grep "Enumerating objects: $((count+1)), done" stderr &&
|
||||
test_grep "pack-reused $count" stderr
|
||||
'
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@ test_rev_exists () {
|
||||
then
|
||||
test_path_is_file $midx-$(midx_checksum $objdir).rev
|
||||
fi &&
|
||||
grep "\"category\":\"load_midx_revindex\",\"key\":\"source\",\"value\":\"$kind\"" event.trace
|
||||
test_grep "\"category\":\"load_midx_revindex\",\"key\":\"source\",\"value\":\"$kind\"" event.trace
|
||||
'
|
||||
}
|
||||
|
||||
|
||||
@@ -63,9 +63,9 @@ test_expect_success "connect with $BUNDLE_URI_PROTOCOL:// using protocol v2: no
|
||||
>actual 2>err &&
|
||||
|
||||
# Server responded using protocol v2
|
||||
grep "< version 2" log &&
|
||||
test_grep "< version 2" log &&
|
||||
|
||||
! grep bundle-uri log
|
||||
test_grep ! bundle-uri log
|
||||
'
|
||||
|
||||
test_expect_success "connect with $BUNDLE_URI_PROTOCOL:// using protocol v2: have bundle-uri" '
|
||||
@@ -78,10 +78,10 @@ test_expect_success "connect with $BUNDLE_URI_PROTOCOL:// using protocol v2: hav
|
||||
>actual 2>err &&
|
||||
|
||||
# Server responded using protocol v2
|
||||
grep "< version 2" log &&
|
||||
test_grep "< version 2" log &&
|
||||
|
||||
# Server advertised bundle-uri capability
|
||||
grep "< bundle-uri" log
|
||||
test_grep "< bundle-uri" log
|
||||
'
|
||||
|
||||
test_expect_success "clone with $BUNDLE_URI_PROTOCOL:// using protocol v2: request bundle-uris" '
|
||||
@@ -95,13 +95,13 @@ test_expect_success "clone with $BUNDLE_URI_PROTOCOL:// using protocol v2: reque
|
||||
>actual 2>err &&
|
||||
|
||||
# Server responded using protocol v2
|
||||
grep "< version 2" log &&
|
||||
test_grep "< version 2" log &&
|
||||
|
||||
# Server advertised bundle-uri capability
|
||||
grep "< bundle-uri" log &&
|
||||
test_grep "< bundle-uri" log &&
|
||||
|
||||
# Client did not issue bundle-uri command
|
||||
! grep "> command=bundle-uri" log &&
|
||||
test_grep ! "> command=bundle-uri" log &&
|
||||
|
||||
GIT_TRACE_PACKET="$PWD/log" \
|
||||
git \
|
||||
@@ -111,13 +111,13 @@ test_expect_success "clone with $BUNDLE_URI_PROTOCOL:// using protocol v2: reque
|
||||
>actual 2>err &&
|
||||
|
||||
# Server responded using protocol v2
|
||||
grep "< version 2" log &&
|
||||
test_grep "< version 2" log &&
|
||||
|
||||
# Server advertised bundle-uri capability
|
||||
grep "< bundle-uri" log &&
|
||||
test_grep "< bundle-uri" log &&
|
||||
|
||||
# Client issued bundle-uri command
|
||||
grep "> command=bundle-uri" log &&
|
||||
test_grep "> command=bundle-uri" log &&
|
||||
|
||||
GIT_TRACE_PACKET="$PWD/log3" \
|
||||
git \
|
||||
@@ -128,13 +128,13 @@ test_expect_success "clone with $BUNDLE_URI_PROTOCOL:// using protocol v2: reque
|
||||
>actual 2>err &&
|
||||
|
||||
# Server responded using protocol v2
|
||||
grep "< version 2" log3 &&
|
||||
test_grep "< version 2" log3 &&
|
||||
|
||||
# Server advertised bundle-uri capability
|
||||
grep "< bundle-uri" log3 &&
|
||||
test_grep "< bundle-uri" log3 &&
|
||||
|
||||
# Client did not issue bundle-uri command (--bundle-uri override)
|
||||
! grep "> command=bundle-uri" log3
|
||||
test_grep ! "> command=bundle-uri" log3
|
||||
'
|
||||
|
||||
# The remaining tests will all assume transfer.bundleURI=true
|
||||
|
||||
+1
-1
@@ -275,7 +275,7 @@ test_http_push_nonff () {
|
||||
'
|
||||
|
||||
test_expect_success 'non-fast-forward push show ref status' '
|
||||
grep "^ ! \[rejected\][ ]*$BRANCH -> $BRANCH (non-fast-forward)$" output
|
||||
test_grep "^ ! \[rejected\][ ]*$BRANCH -> $BRANCH (non-fast-forward)$" output
|
||||
'
|
||||
|
||||
test_expect_success 'non-fast-forward push shows help message' '
|
||||
|
||||
@@ -195,7 +195,7 @@ test_expect_success 'delete ref while another dangling packed ref' '
|
||||
test_expect_success 'pack ref directly below refs/' '
|
||||
git update-ref refs/top HEAD &&
|
||||
git ${pack_refs} --all --prune &&
|
||||
grep refs/top .git/packed-refs &&
|
||||
test_grep refs/top .git/packed-refs &&
|
||||
test_path_is_missing .git/refs/top
|
||||
'
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ test_expect_success '--exists with missing reference' '
|
||||
|
||||
test_expect_success '--exists does not use DWIM' '
|
||||
test_expect_code 2 ${git_show_ref_exists} $GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME 2>err &&
|
||||
grep "reference does not exist" err
|
||||
test_grep "reference does not exist" err
|
||||
'
|
||||
|
||||
test_expect_success '--exists with HEAD' '
|
||||
|
||||
+8
-8
@@ -743,7 +743,7 @@ test_expect_success 'subtest: lazy prereqs do not turn off tracing' '
|
||||
test_done
|
||||
EOF
|
||||
|
||||
grep "echo trace" lazy-prereq-and-tracing/err
|
||||
test_grep "echo trace" lazy-prereq-and-tracing/err
|
||||
'
|
||||
|
||||
test_expect_success 'subtest: tests clean up after themselves' '
|
||||
@@ -815,7 +815,7 @@ test_expect_success 'subtest: test_atexit is run' '
|
||||
|
||||
test_expect_success 'test_oid provides sane info by default' '
|
||||
test_oid zero >actual &&
|
||||
grep "^00*\$" actual &&
|
||||
test_grep "^00*\$" actual &&
|
||||
rawsz="$(test_oid rawsz)" &&
|
||||
hexsz="$(test_oid hexsz)" &&
|
||||
# +1 accounts for the trailing newline
|
||||
@@ -827,7 +827,7 @@ test_expect_success 'test_oid can look up data for SHA-1' '
|
||||
test_when_finished "test_detect_hash" &&
|
||||
test_set_hash sha1 &&
|
||||
test_oid zero >actual &&
|
||||
grep "^00*\$" actual &&
|
||||
test_grep "^00*\$" actual &&
|
||||
rawsz="$(test_oid rawsz)" &&
|
||||
hexsz="$(test_oid hexsz)" &&
|
||||
test $(wc -c <actual) -eq 41 &&
|
||||
@@ -839,7 +839,7 @@ test_expect_success 'test_oid can look up data for SHA-256' '
|
||||
test_when_finished "test_detect_hash" &&
|
||||
test_set_hash sha256 &&
|
||||
test_oid zero >actual &&
|
||||
grep "^00*\$" actual &&
|
||||
test_grep "^00*\$" actual &&
|
||||
rawsz="$(test_oid rawsz)" &&
|
||||
hexsz="$(test_oid hexsz)" &&
|
||||
test $(wc -c <actual) -eq 65 &&
|
||||
@@ -884,11 +884,11 @@ test_expect_success 'test_bool_env' '
|
||||
# test script, hence the redirection of fd 7, and aborts
|
||||
# with "exit 1", hence the subshell.
|
||||
! ( test_bool_env envvar true ) 7>err &&
|
||||
grep "error: test_bool_env requires bool values" err &&
|
||||
test_grep "error: test_bool_env requires bool values" err &&
|
||||
|
||||
envvar=true &&
|
||||
! ( test_bool_env envvar invalid ) 7>err &&
|
||||
grep "error: test_bool_env requires bool values" err
|
||||
test_grep "error: test_bool_env requires bool values" err
|
||||
)
|
||||
'
|
||||
|
||||
@@ -1242,12 +1242,12 @@ test_expect_success 'test_must_fail on a failing git command with env' '
|
||||
|
||||
test_expect_success 'test_must_fail rejects a non-git command' '
|
||||
! test_must_fail grep ^$ notafile 2>err &&
|
||||
grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
|
||||
test_grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
|
||||
'
|
||||
|
||||
test_expect_success 'test_must_fail rejects a non-git command with env' '
|
||||
! test_must_fail env var1=a var2=b grep ^$ notafile 2>err &&
|
||||
grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
|
||||
test_grep -F "test_must_fail: only '"'"'git'"'"' is allowed" err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
+9
-9
@@ -278,9 +278,9 @@ test_expect_success POSIXPERM 'init creates a new deep directory (umask vs. shar
|
||||
git init --bare --shared=0660 newdir/a/b/c &&
|
||||
test_path_is_dir newdir/a/b/c/refs &&
|
||||
ls -ld newdir/a newdir/a/b > lsab.out &&
|
||||
! grep -v "^drwxrw[sx]r-x" lsab.out &&
|
||||
test_grep ! -v "^drwxrw[sx]r-x" lsab.out &&
|
||||
ls -ld newdir/a/b/c > lsc.out &&
|
||||
! grep -v "^drwxrw[sx]---" lsc.out
|
||||
test_grep ! -v "^drwxrw[sx]---" lsc.out
|
||||
)
|
||||
'
|
||||
|
||||
@@ -619,7 +619,7 @@ test_expect_success DEFAULT_REPO_FORMAT 'extensions.refStorage is not allowed wi
|
||||
git init refstorage &&
|
||||
git -C refstorage config extensions.refStorage files &&
|
||||
test_must_fail git -C refstorage rev-parse 2>err &&
|
||||
grep "repo version is 0, but v1-only extension found" err
|
||||
test_grep "repo version is 0, but v1-only extension found" err
|
||||
'
|
||||
|
||||
test_expect_success DEFAULT_REPO_FORMAT 'extensions.refStorage with files backend' '
|
||||
@@ -637,7 +637,7 @@ test_expect_success DEFAULT_REPO_FORMAT 'extensions.refStorage with unknown back
|
||||
git -C refstorage config core.repositoryformatversion 1 &&
|
||||
git -C refstorage config extensions.refStorage garbage &&
|
||||
test_must_fail git -C refstorage rev-parse 2>err &&
|
||||
grep "invalid value for ${SQ}extensions.refstorage${SQ}: ${SQ}garbage${SQ}" err
|
||||
test_grep "invalid value for ${SQ}extensions.refstorage${SQ}: ${SQ}garbage${SQ}" err
|
||||
'
|
||||
|
||||
test_expect_success 'init with GIT_DEFAULT_REF_FORMAT=garbage' '
|
||||
@@ -848,8 +848,8 @@ test_expect_success MINGW 'redirect std handles' '
|
||||
GIT_REDIRECT_STDOUT=output.txt \
|
||||
GIT_REDIRECT_STDERR="2>&1" \
|
||||
git rev-parse --git-dir --verify refs/invalid &&
|
||||
grep "^\\.git\$" output.txt &&
|
||||
grep "Needed a single revision" output.txt
|
||||
test_grep "^\\.git\$" output.txt &&
|
||||
test_grep "Needed a single revision" output.txt
|
||||
'
|
||||
|
||||
test_expect_success '--initial-branch' '
|
||||
@@ -862,14 +862,14 @@ test_expect_success '--initial-branch' '
|
||||
git init --initial-branch=ignore initial-branch-option 2>err &&
|
||||
test_grep "ignored --initial-branch" err &&
|
||||
git -C initial-branch-option symbolic-ref HEAD >actual &&
|
||||
grep hello actual
|
||||
test_grep hello actual
|
||||
'
|
||||
|
||||
test_expect_success 'overridden default initial branch name (config)' '
|
||||
test_config_global init.defaultBranch nmb &&
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git init initial-branch-config &&
|
||||
git -C initial-branch-config symbolic-ref HEAD >actual &&
|
||||
grep nmb actual
|
||||
test_grep nmb actual
|
||||
'
|
||||
|
||||
test_expect_success 'advice on unconfigured init.defaultBranch' '
|
||||
@@ -907,7 +907,7 @@ test_expect_success 'overridden default main branch name (env)' '
|
||||
test_config_global init.defaultBranch nmb &&
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env &&
|
||||
git -C main-branch-env symbolic-ref HEAD >actual &&
|
||||
grep env actual
|
||||
test_grep env actual
|
||||
'
|
||||
|
||||
test_expect_success 'invalid default branch name' '
|
||||
|
||||
+4
-4
@@ -790,8 +790,8 @@ test_expect_success 'existing file and directory' '
|
||||
>one &&
|
||||
mkdir top-level-dir &&
|
||||
git check-ignore one top-level-dir >actual &&
|
||||
grep one actual &&
|
||||
grep top-level-dir actual
|
||||
test_grep one actual &&
|
||||
test_grep top-level-dir actual
|
||||
'
|
||||
|
||||
test_expect_success 'existing directory and file' '
|
||||
@@ -800,8 +800,8 @@ test_expect_success 'existing directory and file' '
|
||||
>one &&
|
||||
mkdir top-level-dir &&
|
||||
git check-ignore top-level-dir one >actual &&
|
||||
grep one actual &&
|
||||
grep top-level-dir actual
|
||||
test_grep one actual &&
|
||||
test_grep top-level-dir actual
|
||||
'
|
||||
|
||||
test_expect_success 'exact prefix matching (with root)' '
|
||||
|
||||
@@ -35,7 +35,7 @@ test_expect_success PIPE 'setup: .git as a FIFO (named pipe) is rejected' '
|
||||
cd parent/fifo-trap &&
|
||||
mkfifo .git &&
|
||||
test_must_fail git rev-parse --git-dir 2>stderr &&
|
||||
grep "not a regular file" stderr
|
||||
test_grep "not a regular file" stderr
|
||||
)
|
||||
'
|
||||
|
||||
@@ -47,7 +47,7 @@ test_expect_success SYMLINKS,PIPE 'setup: .git as a symlink to a FIFO is rejecte
|
||||
mkfifo target-fifo &&
|
||||
ln -s target-fifo .git &&
|
||||
test_must_fail git rev-parse --git-dir 2>stderr &&
|
||||
grep "not a regular file" stderr
|
||||
test_grep "not a regular file" stderr
|
||||
)
|
||||
'
|
||||
|
||||
@@ -58,7 +58,7 @@ test_expect_success 'setup: .git with garbage content is rejected' '
|
||||
cd parent/garbage-trap &&
|
||||
echo "garbage" >.git &&
|
||||
test_must_fail git rev-parse --git-dir 2>stderr &&
|
||||
grep "invalid gitfile format" stderr
|
||||
test_grep "invalid gitfile format" stderr
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
+2
-2
@@ -131,8 +131,8 @@ test_expect_success 'git help succeeds without git.html' '
|
||||
|
||||
test_expect_success 'git help --user-interfaces' '
|
||||
git help --user-interfaces >help.output &&
|
||||
grep "^ attributes " help.output &&
|
||||
grep "^ mailmap " help.output
|
||||
test_grep "^ attributes " help.output &&
|
||||
test_grep "^ mailmap " help.output
|
||||
'
|
||||
|
||||
test_expect_success 'git help -c' '
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ fi
|
||||
test_expect_success 'test-sha1 detects shattered pdf' '
|
||||
test_must_fail test-tool sha1 <"$TEST_DATA/shattered-1.pdf" 2>err &&
|
||||
test_grep collision err &&
|
||||
grep 38762cf7f55934b34d179ae6a4c80cadccbb7f0a err
|
||||
test_grep 38762cf7f55934b34d179ae6a4c80cadccbb7f0a err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -88,7 +88,7 @@ test_expect_success 'test-tool env-helper reads config thanks to trace2' '
|
||||
test_must_fail \
|
||||
env HOME="$(pwd)/home" \
|
||||
git config -l 2>err &&
|
||||
grep "exceeded maximum include depth" err &&
|
||||
test_grep "exceeded maximum include depth" err &&
|
||||
|
||||
# This validates that the assumption that we attempt to
|
||||
# read the configuration and fail very early in the start-up
|
||||
@@ -100,7 +100,7 @@ test_expect_success 'test-tool env-helper reads config thanks to trace2' '
|
||||
test-tool -C no-such-directory \
|
||||
env-helper --type=bool --default=0 \
|
||||
--exit-code GIT_TEST_ENV_HELPER 2>err &&
|
||||
grep "exceeded maximum include depth" err
|
||||
test_grep "exceeded maximum include depth" err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -731,7 +731,7 @@ test_expect_success 'process filter should restart after unexpected write failur
|
||||
rm -f debug.log &&
|
||||
git checkout --quiet --no-progress . 2>git-stderr.log &&
|
||||
|
||||
grep "smudge write error" git-stderr.log &&
|
||||
test_grep "smudge write error" git-stderr.log &&
|
||||
test_grep "error: external filter" git-stderr.log &&
|
||||
|
||||
cat >expected.log <<-EOF &&
|
||||
@@ -853,7 +853,7 @@ test_expect_success 'invalid process filter must fail (and not hang!)' '
|
||||
|
||||
cp "$TEST_ROOT/test.o" test.r &&
|
||||
test_must_fail git add . 2>git-stderr.log &&
|
||||
grep "expected git-filter-server" git-stderr.log
|
||||
test_grep "expected git-filter-server" git-stderr.log
|
||||
)
|
||||
'
|
||||
|
||||
@@ -953,7 +953,7 @@ test_expect_success 'missing file in delayed checkout' '
|
||||
|
||||
rm -rf repo-cloned &&
|
||||
test_must_fail git clone repo repo-cloned 2>git-stderr.log &&
|
||||
grep "error: .missing-delay\.a. was not filtered properly" git-stderr.log
|
||||
test_grep "error: .missing-delay\.a. was not filtered properly" git-stderr.log
|
||||
'
|
||||
|
||||
test_expect_success 'invalid file in delayed checkout' '
|
||||
@@ -974,7 +974,7 @@ test_expect_success 'invalid file in delayed checkout' '
|
||||
|
||||
rm -rf repo-cloned &&
|
||||
test_must_fail git clone repo repo-cloned 2>git-stderr.log &&
|
||||
grep "error: external filter .* signaled that .unfiltered. is now available although it has not been delayed earlier" git-stderr.log
|
||||
test_grep "error: external filter .* signaled that .unfiltered. is now available although it has not been delayed earlier" git-stderr.log
|
||||
'
|
||||
|
||||
for mode in 'case' 'utf-8'
|
||||
@@ -1015,7 +1015,7 @@ do
|
||||
|
||||
git clone $mode-collision $mode-collision-cloned &&
|
||||
# Make sure z was really delayed
|
||||
grep "IN: smudge $dir/z .* \\[DELAYED\\]" $mode-collision-cloned/delayed.log &&
|
||||
test_grep "IN: smudge $dir/z .* \\[DELAYED\\]" $mode-collision-cloned/delayed.log &&
|
||||
|
||||
# Should not create $dir/z at $symlink/z
|
||||
test_path_is_missing $mode-collision/target-dir/z
|
||||
@@ -1053,7 +1053,7 @@ test_expect_success SYMLINKS,CASE_INSENSITIVE_FS \
|
||||
git commit -m super &&
|
||||
|
||||
git checkout --recurse-submodules . &&
|
||||
grep "IN: smudge A/B/y .* \\[DELAYED\\]" delayed.log &&
|
||||
test_grep "IN: smudge A/B/y .* \\[DELAYED\\]" delayed.log &&
|
||||
test_path_is_missing target-dir/y
|
||||
)
|
||||
'
|
||||
@@ -1144,9 +1144,9 @@ test_expect_success 'delayed checkout correctly reports the number of updated en
|
||||
|
||||
rm *.a &&
|
||||
git checkout . 2>err &&
|
||||
grep "IN: smudge test-delay10.a .* \\[DELAYED\\]" delayed.log &&
|
||||
grep "IN: smudge test-delay11.a .* \\[DELAYED\\]" delayed.log &&
|
||||
grep "Updated 2 paths from the index" err
|
||||
test_grep "IN: smudge test-delay10.a .* \\[DELAYED\\]" delayed.log &&
|
||||
test_grep "IN: smudge test-delay11.a .* \\[DELAYED\\]" delayed.log &&
|
||||
test_grep "Updated 2 paths from the index" err
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
@@ -20,10 +20,10 @@ test_expect_success 'core.unsetenvvars works' '
|
||||
HOBBES=Calvin &&
|
||||
export HOBBES &&
|
||||
git commit --allow-empty -m with 2>err &&
|
||||
grep Calvin err &&
|
||||
test_grep Calvin err &&
|
||||
git -c core.unsetenvvars=FINDUS,HOBBES,CALVIN \
|
||||
commit --allow-empty -m without 2>err &&
|
||||
! grep Calvin err
|
||||
test_grep ! Calvin err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -407,12 +407,12 @@ test_expect_success 'strip comments with changed comment string' '
|
||||
|
||||
test_expect_success 'newline as commentchar is forbidden' '
|
||||
test_must_fail git -c core.commentChar="$LF" stripspace -s 2>err &&
|
||||
grep "core.commentchar cannot contain newline" err
|
||||
test_grep "core.commentchar cannot contain newline" err
|
||||
'
|
||||
|
||||
test_expect_success 'empty commentchar is forbidden' '
|
||||
test_must_fail git -c core.commentchar= stripspace -s 2>err &&
|
||||
grep "core.commentchar must have at least one character" err
|
||||
test_grep "core.commentchar must have at least one character" err
|
||||
'
|
||||
|
||||
test_expect_success '-c with single line' '
|
||||
|
||||
@@ -29,7 +29,7 @@ test_expect_success 'PID info not shown by default' '
|
||||
test_must_fail git add . 2>err &&
|
||||
# Should not crash, just show normal error without PID
|
||||
test_grep "Unable to create" err &&
|
||||
! test_grep "is held by process" err
|
||||
test_grep ! "is held by process" err
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
+26
-26
@@ -324,13 +324,13 @@ test_expect_success 'non ambiguous option (after two options it abbreviates)' '
|
||||
|
||||
test_expect_success 'Alias options do not contribute to abbreviation' '
|
||||
test-tool parse-options --alias-source 123 >output &&
|
||||
grep "^string: 123" output &&
|
||||
test_grep "^string: 123" output &&
|
||||
test-tool parse-options --alias-target 123 >output &&
|
||||
grep "^string: 123" output &&
|
||||
test_grep "^string: 123" output &&
|
||||
test_must_fail test-tool parse-options --alias &&
|
||||
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
|
||||
test-tool parse-options --alias 123 >output &&
|
||||
grep "^string: 123" output
|
||||
test_grep "^string: 123" output
|
||||
'
|
||||
|
||||
cat >typo.err <<\EOF
|
||||
@@ -582,16 +582,16 @@ test_expect_success 'KEEP_UNKNOWN_OPT works' '
|
||||
|
||||
test_expect_success 'NO_INTERNAL_HELP works for -h' '
|
||||
test_expect_code 129 test-tool parse-options-flags --no-internal-help cmd -h 2>err &&
|
||||
grep "^error: unknown switch \`h$SQ" err &&
|
||||
grep "^usage: " err
|
||||
test_grep "^error: unknown switch \`h$SQ" err &&
|
||||
test_grep "^usage: " err
|
||||
'
|
||||
|
||||
for help_opt in help help-all
|
||||
do
|
||||
test_expect_success "NO_INTERNAL_HELP works for --$help_opt" "
|
||||
test_expect_code 129 test-tool parse-options-flags --no-internal-help cmd --$help_opt 2>err &&
|
||||
grep '^error: unknown option \`'$help_opt\' err &&
|
||||
grep '^usage: ' err
|
||||
test_grep '^error: unknown option \`'$help_opt\' err &&
|
||||
test_grep '^usage: ' err
|
||||
"
|
||||
done
|
||||
|
||||
@@ -608,38 +608,38 @@ test_expect_success 'KEEP_UNKNOWN_OPT | NO_INTERNAL_HELP works' '
|
||||
|
||||
test_expect_success 'subcommand - no subcommand shows error and usage' '
|
||||
test_expect_code 129 test-tool parse-subcommand cmd 2>err &&
|
||||
grep "^error: need a subcommand" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: need a subcommand" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - subcommand after -- shows error and usage' '
|
||||
test_expect_code 129 test-tool parse-subcommand cmd -- subcmd-one 2>err &&
|
||||
grep "^error: need a subcommand" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: need a subcommand" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - subcommand after --end-of-options shows error and usage' '
|
||||
test_expect_code 129 test-tool parse-subcommand cmd --end-of-options subcmd-one 2>err &&
|
||||
grep "^error: need a subcommand" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: need a subcommand" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - unknown subcommand shows error and usage' '
|
||||
test_expect_code 129 test-tool parse-subcommand cmd nope 2>err &&
|
||||
grep "^error: unknown subcommand: \`nope$SQ" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: unknown subcommand: \`nope$SQ" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - subcommands cannot be abbreviated' '
|
||||
test_expect_code 129 test-tool parse-subcommand cmd subcmd-o 2>err &&
|
||||
grep "^error: unknown subcommand: \`subcmd-o$SQ$" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: unknown subcommand: \`subcmd-o$SQ$" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - no negated subcommands' '
|
||||
test_expect_code 129 test-tool parse-subcommand cmd no-subcmd-one 2>err &&
|
||||
grep "^error: unknown subcommand: \`no-subcmd-one$SQ" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: unknown subcommand: \`no-subcmd-one$SQ" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - simple' '
|
||||
@@ -709,8 +709,8 @@ test_expect_success 'subcommand - SUBCOMMAND_OPTIONAL + subcommand not given + u
|
||||
|
||||
test_expect_success 'subcommand - SUBCOMMAND_OPTIONAL + subcommand not given + unknown option' '
|
||||
test_expect_code 129 test-tool parse-subcommand --subcommand-optional cmd --subcommand-opt 2>err &&
|
||||
grep "^error: unknown option" err &&
|
||||
grep ^usage: err
|
||||
test_grep "^error: unknown option" err &&
|
||||
test_grep ^usage: err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + subcommand not given + unknown option' '
|
||||
@@ -778,28 +778,28 @@ test_expect_success 'subcommand - completion helper' '
|
||||
|
||||
test_expect_success 'subcommands are incompatible with STOP_AT_NON_OPTION' '
|
||||
test_must_fail test-tool parse-subcommand --stop-at-non-option cmd subcmd-one 2>err &&
|
||||
grep ^BUG err
|
||||
test_grep ^BUG err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommands are incompatible with KEEP_UNKNOWN_OPT unless in combination with SUBCOMMAND_OPTIONAL' '
|
||||
test_must_fail test-tool parse-subcommand --keep-unknown-opt cmd subcmd-two 2>err &&
|
||||
grep ^BUG err
|
||||
test_grep ^BUG err
|
||||
'
|
||||
|
||||
test_expect_success 'subcommands are incompatible with KEEP_DASHDASH unless in combination with SUBCOMMAND_OPTIONAL' '
|
||||
test_must_fail test-tool parse-subcommand --keep-dashdash cmd subcmd-two 2>err &&
|
||||
grep ^BUG err
|
||||
test_grep ^BUG err
|
||||
'
|
||||
|
||||
test_expect_success 'negative unsigned' '
|
||||
test_must_fail test-tool parse-options --unsigned -1 >out 2>err &&
|
||||
grep "non-negative integer" err &&
|
||||
test_grep "non-negative integer" err &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
test_expect_success 'unsigned with units but no numbers' '
|
||||
test_must_fail test-tool parse-options --unsigned m >out 2>err &&
|
||||
grep "non-negative integer" err &&
|
||||
test_grep "non-negative integer" err &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ test_expect_success 'setup ' '
|
||||
|
||||
test_expect_success 'tag --contains <existent_tag>' '
|
||||
git tag --contains "v1.0" >actual 2>actual.err &&
|
||||
grep "v1.0" actual &&
|
||||
test_grep "v1.0" actual &&
|
||||
test_line_count = 0 actual.err
|
||||
'
|
||||
|
||||
|
||||
@@ -33,19 +33,19 @@ test_expect_success 'servers cannot share the same path' '
|
||||
test_expect_success 'big response' '
|
||||
test-tool simple-ipc send --token=big >actual &&
|
||||
test_line_count -ge 10000 actual &&
|
||||
grep -q "big: [0]*9999\$" actual
|
||||
test_grep -q "big: [0]*9999\$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'chunk response' '
|
||||
test-tool simple-ipc send --token=chunk >actual &&
|
||||
test_line_count -ge 10000 actual &&
|
||||
grep -q "big: [0]*9999\$" actual
|
||||
test_grep -q "big: [0]*9999\$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'slow response' '
|
||||
test-tool simple-ipc send --token=slow >actual &&
|
||||
test_line_count -ge 100 actual &&
|
||||
grep -q "big: [0]*99\$" actual
|
||||
test_grep -q "big: [0]*99\$" actual
|
||||
'
|
||||
|
||||
# Send an IPC with n=100,000 bytes of ballast. This should be large enough
|
||||
@@ -54,7 +54,7 @@ test_expect_success 'slow response' '
|
||||
#
|
||||
test_expect_success 'sendbytes' '
|
||||
test-tool simple-ipc sendbytes --bytecount=100000 --byte=A >actual &&
|
||||
grep "sent:A00100000 rcvd:A00100000" actual
|
||||
test_grep "sent:A00100000 rcvd:A00100000" actual
|
||||
'
|
||||
|
||||
# Start a series of <threads> client threads that each make <batchsize>
|
||||
@@ -93,7 +93,7 @@ test_expect_success 'stress test threads' '
|
||||
--batchsize=13 \
|
||||
>actual &&
|
||||
test_line_count = 92 actual &&
|
||||
grep "good 91" actual &&
|
||||
test_grep "good 91" actual &&
|
||||
grep "sent:A" <actual >actual_a &&
|
||||
cat >expect_a <<-EOF &&
|
||||
sent:A00000019 rcvd:A00000019
|
||||
|
||||
@@ -97,7 +97,7 @@ test_expect_success POSIXPERM 'run_command reports EACCES' '
|
||||
chmod -x hello.sh &&
|
||||
test_must_fail test-tool run-command run-command ./hello.sh 2>err &&
|
||||
|
||||
grep "fatal: cannot exec.*hello.sh" err
|
||||
test_grep "fatal: cannot exec.*hello.sh" err
|
||||
'
|
||||
|
||||
test_expect_success POSIXPERM,SANITY 'unreadable directory in PATH' '
|
||||
|
||||
@@ -127,7 +127,7 @@ test_expect_success SYMLINKS 'dir-iterator should not follow symlinks by default
|
||||
test_expect_success SYMLINKS 'dir-iterator does not resolve top-level symlinks' '
|
||||
test_must_fail test-tool dir-iterator ./dir5 >out &&
|
||||
|
||||
grep "ENOTDIR" out
|
||||
test_grep "ENOTDIR" out
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -21,23 +21,23 @@ test_expect_success 'run based on configured value' '
|
||||
|
||||
git for-each-repo --config=run.key commit --allow-empty -m "ran" &&
|
||||
git -C one log -1 --pretty=format:%s >message &&
|
||||
grep ran message &&
|
||||
test_grep ran message &&
|
||||
git -C two log -1 --pretty=format:%s >message &&
|
||||
! grep ran message &&
|
||||
test_grep ! ran message &&
|
||||
git -C three log -1 --pretty=format:%s >message &&
|
||||
grep ran message &&
|
||||
test_grep ran message &&
|
||||
git -C ~/four log -1 --pretty=format:%s >message &&
|
||||
grep ran message &&
|
||||
test_grep ran message &&
|
||||
|
||||
git for-each-repo --config=run.key -- commit --allow-empty -m "ran again" &&
|
||||
git -C one log -1 --pretty=format:%s >message &&
|
||||
grep again message &&
|
||||
test_grep again message &&
|
||||
git -C two log -1 --pretty=format:%s >message &&
|
||||
! grep again message &&
|
||||
test_grep ! again message &&
|
||||
git -C three log -1 --pretty=format:%s >message &&
|
||||
grep again message &&
|
||||
test_grep again message &&
|
||||
git -C ~/four log -1 --pretty=format:%s >message &&
|
||||
grep again message &&
|
||||
test_grep again message &&
|
||||
|
||||
git -C three for-each-repo --config=run.key -- \
|
||||
commit --allow-empty -m "ran from worktree" &&
|
||||
|
||||
@@ -10,7 +10,7 @@ Verify wrappers and compatibility functions.
|
||||
|
||||
test_expect_success 'mktemp to nonexistent directory prints filename' '
|
||||
test_must_fail test-tool mktemp doesnotexist/testXXXXXX 2>err &&
|
||||
grep "doesnotexist/test" err
|
||||
test_grep "doesnotexist/test" err
|
||||
'
|
||||
|
||||
test_expect_success POSIXPERM,SANITY 'mktemp to unwritable directory prints filename' '
|
||||
@@ -18,7 +18,7 @@ test_expect_success POSIXPERM,SANITY 'mktemp to unwritable directory prints file
|
||||
test_when_finished "chmod +w cannotwrite" &&
|
||||
chmod -w cannotwrite &&
|
||||
test_must_fail test-tool mktemp cannotwrite/testXXXXXX 2>err &&
|
||||
grep "cannotwrite/test" err
|
||||
test_grep "cannotwrite/test" err
|
||||
'
|
||||
|
||||
test_expect_success 'git_mkstemps_mode does not fail if fd 0 is not open' '
|
||||
@@ -33,7 +33,7 @@ test_expect_success 'check for a bug in the regex routines' '
|
||||
test_expect_success 'incomplete sideband messages are reassembled' '
|
||||
test-tool pkt-line send-split-sideband >split-sideband &&
|
||||
test-tool pkt-line receive-sideband <split-sideband 2>err &&
|
||||
grep "Hello, world" err
|
||||
test_grep "Hello, world" err
|
||||
'
|
||||
|
||||
test_expect_success 'eof on sideband message is reported' '
|
||||
|
||||
@@ -52,17 +52,17 @@ test_expect_success 'add more packfiles' '
|
||||
|
||||
# HEAD^{tree} is in 2 packfiles
|
||||
test-tool find-pack HEAD^{tree} >head_tree_packs &&
|
||||
grep "$head_commit_pack" head_tree_packs &&
|
||||
grep mypackname1 head_tree_packs &&
|
||||
! grep mypackname2 head_tree_packs &&
|
||||
test_grep "$head_commit_pack" head_tree_packs &&
|
||||
test_grep mypackname1 head_tree_packs &&
|
||||
test_grep ! mypackname2 head_tree_packs &&
|
||||
test-tool find-pack --check-count 2 HEAD^{tree} &&
|
||||
! test-tool find-pack --check-count 1 HEAD^{tree} &&
|
||||
|
||||
# HEAD:five.t is also in 2 packfiles
|
||||
test-tool find-pack HEAD:five.t >five_packs &&
|
||||
grep "$head_commit_pack" five_packs &&
|
||||
! grep mypackname1 five_packs &&
|
||||
grep mypackname2 five_packs &&
|
||||
test_grep "$head_commit_pack" five_packs &&
|
||||
test_grep ! mypackname1 five_packs &&
|
||||
test_grep mypackname2 five_packs &&
|
||||
test-tool find-pack -c 2 HEAD:five.t &&
|
||||
! test-tool find-pack --check-count=0 HEAD:five.t
|
||||
'
|
||||
|
||||
@@ -40,15 +40,15 @@ test_expect_success 'sanity check "System Info" section' '
|
||||
|
||||
# The beginning should match "git version --build-options" verbatim,
|
||||
# but rather than checking bit-for-bit equality, just test some basics.
|
||||
grep "git version " system &&
|
||||
grep "shell-path: ." system &&
|
||||
test_grep "git version " system &&
|
||||
test_grep "shell-path: ." system &&
|
||||
|
||||
# After the version, there should be some more info.
|
||||
# This is bound to differ from environment to environment,
|
||||
# so we just do some rather high-level checks.
|
||||
grep "uname: ." system &&
|
||||
grep "compiler info: ." system &&
|
||||
grep "zlib." system
|
||||
test_grep "uname: ." system &&
|
||||
test_grep "compiler info: ." system &&
|
||||
test_grep "zlib." system
|
||||
'
|
||||
|
||||
test_expect_success 'dies if file with same name as report already exists' '
|
||||
@@ -112,7 +112,7 @@ test_expect_success UNZIP '--diagnose creates diagnostics zip archive' '
|
||||
git bugreport --diagnose -o report -s test >out &&
|
||||
|
||||
zip_path=report/git-diagnostics-test.zip &&
|
||||
grep "Available space" out &&
|
||||
test_grep "Available space" out &&
|
||||
test_path_is_file "$zip_path" &&
|
||||
|
||||
# Check zipped archive content
|
||||
@@ -120,10 +120,10 @@ test_expect_success UNZIP '--diagnose creates diagnostics zip archive' '
|
||||
test_file_not_empty out &&
|
||||
|
||||
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
|
||||
grep ".git/objects" out &&
|
||||
test_grep ".git/objects" out &&
|
||||
|
||||
"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
|
||||
grep "^Total: [0-9][0-9]*" out &&
|
||||
test_grep "^Total: [0-9][0-9]*" out &&
|
||||
|
||||
# Should not include .git directory contents by default
|
||||
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
|
||||
@@ -136,7 +136,7 @@ test_expect_success UNZIP '--diagnose=stats excludes .git dir contents' '
|
||||
|
||||
# Includes pack quantity/size info
|
||||
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
|
||||
grep ".git/objects" out &&
|
||||
test_grep ".git/objects" out &&
|
||||
|
||||
# Does not include .git directory contents
|
||||
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
|
||||
|
||||
+6
-6
@@ -8,7 +8,7 @@ test_expect_success UNZIP 'creates diagnostics zip archive' '
|
||||
test_when_finished rm -rf report &&
|
||||
|
||||
git diagnose -o report -s test >out &&
|
||||
grep "Available space" out &&
|
||||
test_grep "Available space" out &&
|
||||
|
||||
zip_path=report/git-diagnostics-test.zip &&
|
||||
test_path_is_file "$zip_path" &&
|
||||
@@ -18,10 +18,10 @@ test_expect_success UNZIP 'creates diagnostics zip archive' '
|
||||
test_file_not_empty out &&
|
||||
|
||||
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
|
||||
grep ".git/objects" out &&
|
||||
test_grep ".git/objects" out &&
|
||||
|
||||
"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
|
||||
grep "^Total: [0-9][0-9]*" out &&
|
||||
test_grep "^Total: [0-9][0-9]*" out &&
|
||||
|
||||
# Should not include .git directory contents by default
|
||||
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
|
||||
@@ -34,7 +34,7 @@ test_expect_success UNZIP 'counts loose objects' '
|
||||
git diagnose -o test-count -s 1 >out &&
|
||||
zip_path=test-count/git-diagnostics-1.zip &&
|
||||
"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
|
||||
grep "^Total: [1-9][0-9]* loose objects" out
|
||||
test_grep "^Total: [1-9][0-9]* loose objects" out
|
||||
'
|
||||
|
||||
test_expect_success UNZIP '--mode=stats excludes .git dir contents' '
|
||||
@@ -45,7 +45,7 @@ test_expect_success UNZIP '--mode=stats excludes .git dir contents' '
|
||||
# Includes pack quantity/size info
|
||||
zip_path=report/git-diagnostics-test.zip &&
|
||||
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
|
||||
grep ".git/objects" out &&
|
||||
test_grep ".git/objects" out &&
|
||||
|
||||
# Does not include .git directory contents
|
||||
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
|
||||
@@ -59,7 +59,7 @@ test_expect_success UNZIP '--mode=all includes .git dir contents' '
|
||||
# Includes pack quantity/size info
|
||||
zip_path=report/git-diagnostics-test.zip &&
|
||||
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
|
||||
grep ".git/objects" out &&
|
||||
test_grep ".git/objects" out &&
|
||||
|
||||
# Includes .git directory contents
|
||||
"$GIT_UNZIP" -l "$zip_path" | grep ".git/" &&
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ test_expect_success 'merge @{-1}~1' '
|
||||
git checkout main &&
|
||||
git merge @{-1}~1 &&
|
||||
git cat-file commit HEAD >actual &&
|
||||
grep "Merge branch '\''other'\''" actual
|
||||
test_grep "Merge branch '\''other'\''" actual
|
||||
'
|
||||
|
||||
test_expect_success 'merge @{-100} before checking out that many branches yet' '
|
||||
|
||||
@@ -16,7 +16,7 @@ test_expect_success 'sanity: $TEXTDOMAIN is git' '
|
||||
'
|
||||
|
||||
test_expect_success 'xgettext sanity: Perl _() strings are not extracted' '
|
||||
! grep "A Perl string xgettext will not get" "$GIT_PO_PATH"/is.po
|
||||
test_grep ! "A Perl string xgettext will not get" "$GIT_PO_PATH"/is.po
|
||||
'
|
||||
|
||||
test_expect_success 'xgettext sanity: Comment extraction with --add-comments' '
|
||||
@@ -26,8 +26,8 @@ test_expect_success 'xgettext sanity: Comment extraction with --add-comments' '
|
||||
'
|
||||
|
||||
test_expect_success 'xgettext sanity: Comment extraction with --add-comments stops at statements' '
|
||||
! grep "This is a phony" "$GIT_PO_PATH"/is.po &&
|
||||
! grep "the above comment" "$GIT_PO_PATH"/is.po
|
||||
test_grep ! "This is a phony" "$GIT_PO_PATH"/is.po &&
|
||||
test_grep ! "the above comment" "$GIT_PO_PATH"/is.po
|
||||
'
|
||||
|
||||
test_expect_success GETTEXT 'sanity: $TEXTDOMAINDIR exists without NO_GETTEXT=YesPlease' '
|
||||
@@ -44,10 +44,10 @@ test_expect_success GETTEXT 'sanity: Icelandic locale was compiled' '
|
||||
test_expect_success GETTEXT_LOCALE 'sanity: gettext("") metadata is OK' '
|
||||
# Return value may be non-zero
|
||||
LANGUAGE=is LC_ALL="$is_IS_locale" gettext "" >zero-expect &&
|
||||
grep "Project-Id-Version: Git" zero-expect &&
|
||||
grep "Git Mailing List <git@vger.kernel.org>" zero-expect &&
|
||||
grep "Content-Type: text/plain; charset=UTF-8" zero-expect &&
|
||||
grep "Content-Transfer-Encoding: 8bit" zero-expect
|
||||
test_grep "Project-Id-Version: Git" zero-expect &&
|
||||
test_grep "Git Mailing List <git@vger.kernel.org>" zero-expect &&
|
||||
test_grep "Content-Type: text/plain; charset=UTF-8" zero-expect &&
|
||||
test_grep "Content-Transfer-Encoding: 8bit" zero-expect
|
||||
'
|
||||
|
||||
test_expect_success GETTEXT_LOCALE 'sanity: gettext(unknown) is passed through' '
|
||||
|
||||
@@ -12,7 +12,7 @@ test_expect_success 'git show a ISO-8859-1 commit under C locale' '
|
||||
test_commit "iso-c-commit" iso-under-c &&
|
||||
git show >out 2>err &&
|
||||
test_must_be_empty err &&
|
||||
grep -q "iso-c-commit" out
|
||||
test_grep -q "iso-c-commit" out
|
||||
'
|
||||
|
||||
test_expect_success GETTEXT_LOCALE 'git show a ISO-8859-1 commit under a UTF-8 locale' '
|
||||
@@ -20,7 +20,7 @@ test_expect_success GETTEXT_LOCALE 'git show a ISO-8859-1 commit under a UTF-8 l
|
||||
test_commit "iso-utf8-commit" iso-under-utf8 &&
|
||||
LANGUAGE=is LC_ALL="$is_IS_locale" git show >out 2>err &&
|
||||
test_must_be_empty err &&
|
||||
grep -q "iso-utf8-commit" out
|
||||
test_grep -q "iso-utf8-commit" out
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -66,22 +66,22 @@ test_expect_success GETTEXT_LOCALE 'gettext: Fetching a UTF-8 msgid -> UTF-8' '
|
||||
# eyes.
|
||||
test_expect_success GETTEXT_ISO_LOCALE 'gettext: Fetching a UTF-8 msgid -> ISO-8859-1' '
|
||||
LANGUAGE=is LC_ALL="$is_IS_iso_locale" gettext "TEST: ‘single’ and “double” quotes" >actual &&
|
||||
grep "einfaldar" actual &&
|
||||
grep "$(echo tvöfaldar | iconv -f UTF-8 -t ISO8859-1)" actual
|
||||
test_grep "einfaldar" actual &&
|
||||
test_grep "$(echo tvöfaldar | iconv -f UTF-8 -t ISO8859-1)" actual
|
||||
'
|
||||
|
||||
test_expect_success GETTEXT_LOCALE 'gettext.c: git init UTF-8 -> UTF-8' '
|
||||
printf "Bjó til tóma Git lind" >expect &&
|
||||
LANGUAGE=is LC_ALL="$is_IS_locale" git init repo >actual &&
|
||||
test_when_finished "rm -rf repo" &&
|
||||
grep "^$(cat expect) " actual
|
||||
test_grep "^$(cat expect) " actual
|
||||
'
|
||||
|
||||
test_expect_success GETTEXT_ISO_LOCALE 'gettext.c: git init UTF-8 -> ISO-8859-1' '
|
||||
printf "Bjó til tóma Git lind" >expect &&
|
||||
LANGUAGE=is LC_ALL="$is_IS_iso_locale" git init repo >actual &&
|
||||
test_when_finished "rm -rf repo" &&
|
||||
grep "^$(iconv -f UTF-8 -t ISO8859-1 <expect) " actual
|
||||
test_grep "^$(iconv -f UTF-8 -t ISO8859-1 <expect) " actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -333,12 +333,12 @@ test_expect_success 'unsafe URLs are redacted by default' '
|
||||
|
||||
GIT_TRACE2="$(pwd)/trace.normal" \
|
||||
git clone https://user:pwd@example.com/ clone &&
|
||||
! grep user:pwd trace.normal &&
|
||||
test_grep ! user:pwd trace.normal &&
|
||||
|
||||
GIT_TRACE2_REDACT=0 GIT_TRACE2="$(pwd)/unredacted.normal" \
|
||||
git clone https://user:pwd@example.com/ clone2 &&
|
||||
grep "start .* clone https://user:pwd@example.com" unredacted.normal &&
|
||||
grep "remote.origin.url=https://user:pwd@example.com" unredacted.normal
|
||||
test_grep "start .* clone https://user:pwd@example.com" unredacted.normal &&
|
||||
test_grep "remote.origin.url=https://user:pwd@example.com" unredacted.normal
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
+40
-40
@@ -283,13 +283,13 @@ test_expect_success 'unsafe URLs are redacted by default' '
|
||||
|
||||
GIT_TRACE2_PERF="$(pwd)/trace.perf" \
|
||||
git clone https://user:pwd@example.com/ clone &&
|
||||
! grep user:pwd trace.perf &&
|
||||
test_grep ! user:pwd trace.perf &&
|
||||
|
||||
GIT_TRACE2_REDACT=0 GIT_TRACE2_PERF="$(pwd)/unredacted.perf" \
|
||||
git clone https://user:pwd@example.com/ clone2 &&
|
||||
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <unredacted.perf >actual &&
|
||||
grep "d0|main|start|.* clone https://user:pwd@example.com" actual &&
|
||||
grep "d0|main|def_param|.*|remote.origin.url:https://user:pwd@example.com" actual
|
||||
test_grep "d0|main|start|.* clone https://user:pwd@example.com" actual &&
|
||||
test_grep "d0|main|def_param|.*|remote.origin.url:https://user:pwd@example.com" actual
|
||||
'
|
||||
|
||||
# Confirm that the requested command produces a "cmd_name" and a
|
||||
@@ -358,13 +358,13 @@ test_expect_success LIBCURL \
|
||||
|
||||
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <prop.perf >actual &&
|
||||
|
||||
grep "d0|main|cmd_name|.*|_run_dashed_" actual &&
|
||||
grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_dashed_" actual &&
|
||||
test_grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
|
||||
grep "d1|main|cmd_name|.*|remote-curl" actual &&
|
||||
grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
test_grep "d1|main|cmd_name|.*|remote-curl" actual &&
|
||||
test_grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
'
|
||||
|
||||
# Similarly, `git-http-fetch` is not built from git.c so do a
|
||||
@@ -389,13 +389,13 @@ test_expect_success LIBCURL \
|
||||
|
||||
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <prop.perf >actual &&
|
||||
|
||||
grep "d0|main|cmd_name|.*|_run_dashed_" actual &&
|
||||
grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_dashed_" actual &&
|
||||
test_grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
|
||||
grep "d1|main|cmd_name|.*|http-fetch" actual &&
|
||||
grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
test_grep "d1|main|cmd_name|.*|http-fetch" actual &&
|
||||
test_grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
'
|
||||
|
||||
# Historically, alias expansion explicitly emitted the def_param
|
||||
@@ -421,22 +421,22 @@ test_expect_success 'expect def_params during git alias expansion' '
|
||||
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <prop.perf >actual &&
|
||||
|
||||
# "git xxx" is first mapped to "git-xxx" and the child will fail.
|
||||
grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_)" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_)" actual &&
|
||||
|
||||
# We unpeel that and substitute "version" into "xxx" (giving
|
||||
# "git version") and update the cmd_name event.
|
||||
grep "d0|main|cmd_name|.*|_run_git_alias_ (_run_dashed_/_run_git_alias_)" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_git_alias_ (_run_dashed_/_run_git_alias_)" actual &&
|
||||
|
||||
# These def_param events could be associated with either of the
|
||||
# above cmd_name events. It does not matter.
|
||||
grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
test_grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
|
||||
# The "git version" child sees a different cmd_name hierarchy.
|
||||
# Also test the def_param (only for completeness).
|
||||
grep "d1|main|cmd_name|.*|version (_run_dashed_/_run_git_alias_/version)" actual &&
|
||||
grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
test_grep "d1|main|cmd_name|.*|version (_run_dashed_/_run_git_alias_/version)" actual &&
|
||||
test_grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
'
|
||||
|
||||
test_expect_success 'expect def_params during shell alias expansion' '
|
||||
@@ -456,25 +456,25 @@ test_expect_success 'expect def_params during shell alias expansion' '
|
||||
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <prop.perf >actual &&
|
||||
|
||||
# "git xxx" is first mapped to "git-xxx" and the child will fail.
|
||||
grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_)" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_)" actual &&
|
||||
|
||||
# We unpeel that and substitute "git version" for "git xxx" (as a
|
||||
# shell command. Another cmd_name event is emitted as we unpeel.
|
||||
grep "d0|main|cmd_name|.*|_run_shell_alias_ (_run_dashed_/_run_shell_alias_)" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_shell_alias_ (_run_dashed_/_run_shell_alias_)" actual &&
|
||||
|
||||
# These def_param events could be associated with either of the
|
||||
# above cmd_name events. It does not matter.
|
||||
grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
test_grep "d0|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
|
||||
# We get the following only because we used a git command for the
|
||||
# shell command. In general, it could have been a shell script and
|
||||
# we would see nothing.
|
||||
#
|
||||
# The child knows the cmd_name hierarchy so it includes it.
|
||||
grep "d1|main|cmd_name|.*|version (_run_dashed_/_run_shell_alias_/version)" actual &&
|
||||
grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
test_grep "d1|main|cmd_name|.*|version (_run_dashed_/_run_shell_alias_/version)" actual &&
|
||||
test_grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
'
|
||||
|
||||
test_expect_success 'expect def_params during nested git alias expansion' '
|
||||
@@ -496,33 +496,33 @@ test_expect_success 'expect def_params during nested git alias expansion' '
|
||||
|
||||
# "git xxx" is first mapped to "git-xxx" and try to spawn "git-xxx"
|
||||
# and the child will fail.
|
||||
grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_)" actual &&
|
||||
grep "d0|main|child_start|.*|.* class:dashed argv:\[git-xxx\]" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_)" actual &&
|
||||
test_grep "d0|main|child_start|.*|.* class:dashed argv:\[git-xxx\]" actual &&
|
||||
|
||||
# We unpeel that and substitute "yyy" into "xxx" (giving "git yyy")
|
||||
# and spawn "git-yyy" and the child will fail.
|
||||
grep "d0|main|alias|.*|alias:xxx argv:\[yyy\]" actual &&
|
||||
grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_/_run_dashed_)" actual &&
|
||||
grep "d0|main|child_start|.*|.* class:dashed argv:\[git-yyy\]" actual &&
|
||||
test_grep "d0|main|alias|.*|alias:xxx argv:\[yyy\]" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_dashed_ (_run_dashed_/_run_dashed_)" actual &&
|
||||
test_grep "d0|main|child_start|.*|.* class:dashed argv:\[git-yyy\]" actual &&
|
||||
|
||||
# We unpeel that and substitute "version" into "xxx" (giving
|
||||
# "git version") and update the cmd_name event.
|
||||
grep "d0|main|alias|.*|alias:yyy argv:\[version\]" actual &&
|
||||
grep "d0|main|cmd_name|.*|_run_git_alias_ (_run_dashed_/_run_dashed_/_run_git_alias_)" actual &&
|
||||
test_grep "d0|main|alias|.*|alias:yyy argv:\[version\]" actual &&
|
||||
test_grep "d0|main|cmd_name|.*|_run_git_alias_ (_run_dashed_/_run_dashed_/_run_git_alias_)" actual &&
|
||||
|
||||
# These def_param events could be associated with any of the
|
||||
# above cmd_name events. It does not matter.
|
||||
grep "d0|main|def_param|.*|cfg.prop.foo:red" actual >actual.matches &&
|
||||
grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
test_grep "d0|main|def_param|.*|ENV_PROP_FOO:blue" actual &&
|
||||
|
||||
# However, we do not want them repeated each time we unpeel.
|
||||
test_line_count = 1 actual.matches &&
|
||||
|
||||
# The "git version" child sees a different cmd_name hierarchy.
|
||||
# Also test the def_param (only for completeness).
|
||||
grep "d1|main|cmd_name|.*|version (_run_dashed_/_run_dashed_/_run_git_alias_/version)" actual &&
|
||||
grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
test_grep "d1|main|cmd_name|.*|version (_run_dashed_/_run_dashed_/_run_git_alias_/version)" actual &&
|
||||
test_grep "d1|main|def_param|.*|cfg.prop.foo:red" actual &&
|
||||
test_grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -332,7 +332,7 @@ test_expect_success 'unsafe URLs are redacted by default in cmd_start events' '
|
||||
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.event" \
|
||||
test-tool trace2 300redact_start git clone https://user:pwd@example.com/ clone2 &&
|
||||
! grep user:pwd trace.event
|
||||
test_grep ! user:pwd trace.event
|
||||
'
|
||||
|
||||
test_expect_success 'unsafe URLs are redacted by default in child_start events' '
|
||||
@@ -341,7 +341,7 @@ test_expect_success 'unsafe URLs are redacted by default in child_start events'
|
||||
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.event" \
|
||||
test-tool trace2 301redact_child_start git clone https://user:pwd@example.com/ clone2 &&
|
||||
! grep user:pwd trace.event
|
||||
test_grep ! user:pwd trace.event
|
||||
'
|
||||
|
||||
test_expect_success 'unsafe URLs are redacted by default in exec events' '
|
||||
@@ -350,7 +350,7 @@ test_expect_success 'unsafe URLs are redacted by default in exec events' '
|
||||
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.event" \
|
||||
test-tool trace2 302redact_exec git clone https://user:pwd@example.com/ clone2 &&
|
||||
! grep user:pwd trace.event
|
||||
test_grep ! user:pwd trace.event
|
||||
'
|
||||
|
||||
test_expect_success 'unsafe URLs are redacted by default in def_param events' '
|
||||
@@ -359,7 +359,7 @@ test_expect_success 'unsafe URLs are redacted by default in def_param events' '
|
||||
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.event" \
|
||||
test-tool trace2 303redact_def_param url https://user:pwd@example.com/ &&
|
||||
! grep user:pwd trace.event
|
||||
test_grep ! user:pwd trace.event
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -1014,7 +1014,7 @@ test_expect_success 'credential config with partial URLs' '
|
||||
do
|
||||
git -c credential.$partial.helper=yep \
|
||||
credential fill <stdin >stdout &&
|
||||
grep yep stdout ||
|
||||
test_grep yep stdout ||
|
||||
return 1
|
||||
done &&
|
||||
|
||||
@@ -1030,7 +1030,7 @@ test_expect_success 'credential config with partial URLs' '
|
||||
do
|
||||
git -c credential.$partial.helper=yep \
|
||||
credential fill <stdin >stdout &&
|
||||
! grep yep stdout ||
|
||||
test_grep ! yep stdout ||
|
||||
return 1
|
||||
done &&
|
||||
|
||||
|
||||
+41
-41
@@ -206,7 +206,7 @@ test_expect_success 'fetching of missing objects' '
|
||||
git -C repo cat-file -p "$HASH" 2>err &&
|
||||
|
||||
# Ensure that no spurious FETCH_HEAD messages are written
|
||||
! grep FETCH_HEAD err &&
|
||||
test_grep ! FETCH_HEAD err &&
|
||||
|
||||
# Ensure that the .promisor file is written, and check that its
|
||||
# associated packfile contains the object
|
||||
@@ -214,7 +214,7 @@ test_expect_success 'fetching of missing objects' '
|
||||
test_line_count = 1 promisorlist &&
|
||||
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
|
||||
git verify-pack --verbose "$IDX" >out &&
|
||||
grep "$HASH" out
|
||||
test_grep "$HASH" out
|
||||
'
|
||||
|
||||
test_expect_success 'fetching of a promised object that promisor remote no longer has' '
|
||||
@@ -228,7 +228,7 @@ test_expect_success 'fetching of a promised object that promisor remote no longe
|
||||
|
||||
rm -rf unreliable-server/.git/objects/* &&
|
||||
test_must_fail git -C unreliable-client checkout HEAD 2>err &&
|
||||
grep "could not fetch.*from promisor remote" err
|
||||
test_grep "could not fetch.*from promisor remote" err
|
||||
'
|
||||
|
||||
test_expect_success 'fetching of missing objects works with ref-in-want enabled' '
|
||||
@@ -240,7 +240,7 @@ test_expect_success 'fetching of missing objects works with ref-in-want enabled'
|
||||
rm -rf repo/.git/objects/* &&
|
||||
rm -f trace &&
|
||||
GIT_TRACE_PACKET="$(pwd)/trace" git -C repo cat-file -p "$HASH" &&
|
||||
grep "fetch< fetch=.*ref-in-want" trace
|
||||
test_grep "fetch< fetch=.*ref-in-want" trace
|
||||
'
|
||||
|
||||
test_expect_success 'fetching from another promisor remote' '
|
||||
@@ -263,7 +263,7 @@ test_expect_success 'fetching from another promisor remote' '
|
||||
test_line_count = 1 promisorlist &&
|
||||
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
|
||||
git verify-pack --verbose "$IDX" >out &&
|
||||
grep "$HASH2" out
|
||||
test_grep "$HASH2" out
|
||||
'
|
||||
|
||||
test_expect_success 'fetching with --filter configures a promisor remote' '
|
||||
@@ -286,7 +286,7 @@ test_expect_success 'fetching with --filter configures a promisor remote' '
|
||||
test_line_count = 1 promisorlist &&
|
||||
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
|
||||
git verify-pack --verbose "$IDX" >out &&
|
||||
grep "$HASH3" out
|
||||
test_grep "$HASH3" out
|
||||
'
|
||||
|
||||
test_expect_success 'fetching of missing blobs works' '
|
||||
@@ -327,8 +327,8 @@ test_expect_success 'fetching of missing trees does not fetch blobs' '
|
||||
|
||||
# Ensure that the tree, but not the blob, is fetched
|
||||
git -C repo rev-list --objects --missing=print $(cat treehash) >objects &&
|
||||
grep "^$(cat treehash)" objects &&
|
||||
grep "^[?]$(cat blobhash)" objects
|
||||
test_grep "^$(cat treehash)" objects &&
|
||||
test_grep "^[?]$(cat blobhash)" objects
|
||||
'
|
||||
|
||||
test_expect_success 'rev-list stops traversal at missing and promised commit' '
|
||||
@@ -343,8 +343,8 @@ test_expect_success 'rev-list stops traversal at missing and promised commit' '
|
||||
git -C repo config core.repositoryformatversion 1 &&
|
||||
git -C repo config extensions.partialclone "arbitrary string" &&
|
||||
git -C repo rev-list --exclude-promisor-objects --objects bar >out &&
|
||||
grep $(git -C repo rev-parse bar) out &&
|
||||
! grep $FOO out
|
||||
test_grep $(git -C repo rev-parse bar) out &&
|
||||
test_grep ! $FOO out
|
||||
'
|
||||
|
||||
test_expect_success 'missing tree objects with --missing=allow-promisor and --exclude-promisor-objects' '
|
||||
@@ -413,10 +413,10 @@ test_expect_success 'rev-list stops traversal at missing and promised tree' '
|
||||
git -C repo config core.repositoryformatversion 1 &&
|
||||
git -C repo config extensions.partialclone "arbitrary string" &&
|
||||
git -C repo rev-list --exclude-promisor-objects --objects HEAD >out &&
|
||||
grep $(git -C repo rev-parse foo) out &&
|
||||
! grep $TREE out &&
|
||||
grep $(git -C repo rev-parse HEAD) out &&
|
||||
! grep $TREE2 out
|
||||
test_grep $(git -C repo rev-parse foo) out &&
|
||||
test_grep ! $TREE out &&
|
||||
test_grep $(git -C repo rev-parse HEAD) out &&
|
||||
test_grep ! $TREE2 out
|
||||
'
|
||||
|
||||
test_expect_success 'rev-list stops traversal at missing and promised blob' '
|
||||
@@ -432,8 +432,8 @@ test_expect_success 'rev-list stops traversal at missing and promised blob' '
|
||||
git -C repo config core.repositoryformatversion 1 &&
|
||||
git -C repo config extensions.partialclone "arbitrary string" &&
|
||||
git -C repo rev-list --exclude-promisor-objects --objects HEAD >out &&
|
||||
grep $(git -C repo rev-parse HEAD) out &&
|
||||
! grep $BLOB out
|
||||
test_grep $(git -C repo rev-parse HEAD) out &&
|
||||
test_grep ! $BLOB out
|
||||
'
|
||||
|
||||
test_expect_success 'rev-list stops traversal at promisor commit, tree, and blob' '
|
||||
@@ -451,10 +451,10 @@ test_expect_success 'rev-list stops traversal at promisor commit, tree, and blob
|
||||
git -C repo config core.repositoryformatversion 1 &&
|
||||
git -C repo config extensions.partialclone "arbitrary string" &&
|
||||
git -C repo rev-list --exclude-promisor-objects --objects HEAD >out &&
|
||||
! grep $COMMIT out &&
|
||||
! grep $TREE out &&
|
||||
! grep $BLOB out &&
|
||||
grep $(git -C repo rev-parse bar) out # sanity check that some walking was done
|
||||
test_grep ! $COMMIT out &&
|
||||
test_grep ! $TREE out &&
|
||||
test_grep ! $BLOB out &&
|
||||
test_grep $(git -C repo rev-parse bar) out # sanity check that some walking was done
|
||||
'
|
||||
|
||||
test_expect_success 'rev-list dies for missing objects on cmd line' '
|
||||
@@ -523,10 +523,10 @@ test_expect_success 'gc repacks promisor objects separately from non-promisor ob
|
||||
test_line_count = 1 promisorlist &&
|
||||
PROMISOR_PACKFILE=$(sed "s/.promisor/.pack/" <promisorlist) &&
|
||||
git verify-pack $PROMISOR_PACKFILE -v >out &&
|
||||
grep "$TREE_ONE" out &&
|
||||
grep "$TREE_TWO" out &&
|
||||
! grep "$(git -C repo rev-parse one)" out &&
|
||||
! grep "$(git -C repo rev-parse two)" out &&
|
||||
test_grep "$TREE_ONE" out &&
|
||||
test_grep "$TREE_TWO" out &&
|
||||
test_grep ! "$(git -C repo rev-parse one)" out &&
|
||||
test_grep ! "$(git -C repo rev-parse two)" out &&
|
||||
|
||||
# Remove the promisor packfile and associated files
|
||||
rm $(sed "s/.promisor//" <promisorlist).* &&
|
||||
@@ -536,10 +536,10 @@ test_expect_success 'gc repacks promisor objects separately from non-promisor ob
|
||||
ls repo/.git/objects/pack/pack-*.pack >packlist &&
|
||||
test_line_count = 1 packlist &&
|
||||
git verify-pack repo/.git/objects/pack/pack-*.pack -v >out &&
|
||||
grep "$(git -C repo rev-parse one)" out &&
|
||||
grep "$(git -C repo rev-parse two)" out &&
|
||||
! grep "$TREE_ONE" out &&
|
||||
! grep "$TREE_TWO" out
|
||||
test_grep "$(git -C repo rev-parse one)" out &&
|
||||
test_grep "$(git -C repo rev-parse two)" out &&
|
||||
test_grep ! "$TREE_ONE" out &&
|
||||
test_grep ! "$TREE_TWO" out
|
||||
'
|
||||
|
||||
test_expect_success 'gc does not repack promisor objects if there are none' '
|
||||
@@ -616,8 +616,8 @@ test_expect_success 'gc stops traversal when a missing but promised object is re
|
||||
ls repo/.git/objects/pack/pack-*.pack >packlist &&
|
||||
test_line_count = 1 packlist &&
|
||||
git verify-pack repo/.git/objects/pack/pack-*.pack -v >out &&
|
||||
grep "$(git -C repo rev-parse HEAD)" out &&
|
||||
! grep "$TREE_HASH" out
|
||||
test_grep "$(git -C repo rev-parse HEAD)" out &&
|
||||
test_grep ! "$TREE_HASH" out
|
||||
'
|
||||
|
||||
test_expect_success 'do not fetch when checking existence of tree we construct ourselves' '
|
||||
@@ -647,10 +647,10 @@ test_expect_success 'exact rename does not need to fetch the blob lazily' '
|
||||
|
||||
git clone --filter=blob:none --bare "file://$(pwd)/repo" partial.git &&
|
||||
git -C partial.git rev-list --objects --missing=print HEAD >out &&
|
||||
grep "[?]$FILE_HASH" out &&
|
||||
test_grep "[?]$FILE_HASH" out &&
|
||||
git -C partial.git log --follow -- new-file.txt &&
|
||||
git -C partial.git rev-list --objects --missing=print HEAD >out &&
|
||||
grep "[?]$FILE_HASH" out
|
||||
test_grep "[?]$FILE_HASH" out
|
||||
'
|
||||
|
||||
test_expect_success 'lazy-fetch when accessing object not in the_repository' '
|
||||
@@ -665,7 +665,7 @@ test_expect_success 'lazy-fetch when accessing object not in the_repository' '
|
||||
|
||||
# Sanity check that the file is missing
|
||||
git -C partial.git rev-list --objects --missing=print HEAD >out &&
|
||||
grep "[?]$FILE_HASH" out &&
|
||||
test_grep "[?]$FILE_HASH" out &&
|
||||
|
||||
# The no-lazy-fetch mechanism prevents Git from fetching
|
||||
test_must_fail env GIT_NO_LAZY_FETCH=1 \
|
||||
@@ -680,7 +680,7 @@ test_expect_success 'lazy-fetch when accessing object not in the_repository' '
|
||||
|
||||
# Sanity check that the file is still missing
|
||||
git -C partial.git rev-list --objects --missing=print HEAD >out &&
|
||||
grep "[?]$FILE_HASH" out &&
|
||||
test_grep "[?]$FILE_HASH" out &&
|
||||
|
||||
git -C full cat-file -s "$FILE_HASH" >expect &&
|
||||
test-tool partial-clone object-info partial.git "$FILE_HASH" >actual &&
|
||||
@@ -688,7 +688,7 @@ test_expect_success 'lazy-fetch when accessing object not in the_repository' '
|
||||
|
||||
# Sanity check that the file is now present
|
||||
git -C partial.git rev-list --objects --missing=print HEAD >out &&
|
||||
! grep "[?]$FILE_HASH" out
|
||||
test_grep ! "[?]$FILE_HASH" out
|
||||
'
|
||||
|
||||
test_expect_success 'push should not fetch new commit objects' '
|
||||
@@ -705,9 +705,9 @@ test_expect_success 'push should not fetch new commit objects' '
|
||||
COMMIT=$(git -C server rev-parse server2) &&
|
||||
|
||||
test_must_fail git -C client push 2>err &&
|
||||
grep "fetch first" err &&
|
||||
test_grep "fetch first" err &&
|
||||
git -C client rev-list --objects --missing=print "$COMMIT" >objects &&
|
||||
grep "^[?]$COMMIT" objects
|
||||
test_grep "^[?]$COMMIT" objects
|
||||
'
|
||||
|
||||
test_expect_success 'setup for promisor.quiet tests' '
|
||||
@@ -750,7 +750,7 @@ test_expect_success TTY 'promisor.quiet=false shows progress messages' '
|
||||
test_terminal git -C repo cat-file -p foo:foo.t 2>err &&
|
||||
|
||||
# Ensure that progress messages are written
|
||||
grep "Receiving objects" err
|
||||
test_grep "Receiving objects" err
|
||||
'
|
||||
|
||||
test_expect_success TTY 'promisor.quiet=true does not show progress messages' '
|
||||
@@ -761,7 +761,7 @@ test_expect_success TTY 'promisor.quiet=true does not show progress messages' '
|
||||
test_terminal git -C repo cat-file -p foo:foo.t 2>err &&
|
||||
|
||||
# Ensure that no progress messages are written
|
||||
! grep "Receiving objects" err
|
||||
test_grep ! "Receiving objects" err
|
||||
'
|
||||
|
||||
test_expect_success TTY 'promisor.quiet=unconfigured shows progress messages' '
|
||||
@@ -771,7 +771,7 @@ test_expect_success TTY 'promisor.quiet=unconfigured shows progress messages' '
|
||||
test_terminal git -C repo cat-file -p foo:foo.t 2>err &&
|
||||
|
||||
# Ensure that progress messages are written
|
||||
grep "Receiving objects" err
|
||||
test_grep "Receiving objects" err
|
||||
'
|
||||
|
||||
test_expect_success 'promisor.quiet from submodule repo is honored' '
|
||||
@@ -819,7 +819,7 @@ test_expect_success 'fetching of missing objects from an HTTP server' '
|
||||
test_line_count = 1 promisorlist &&
|
||||
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
|
||||
git verify-pack --verbose "$IDX" >out &&
|
||||
grep "$HASH" out
|
||||
test_grep "$HASH" out
|
||||
'
|
||||
|
||||
# DO NOT add non-httpd-specific tests here, because the last part of this
|
||||
|
||||
@@ -87,7 +87,7 @@ do
|
||||
# -h output assertions
|
||||
test_expect_success "$builtin -h output has no \t" '
|
||||
h2s="$(help_to_synopsis "$builtin")" &&
|
||||
! grep "$HT" "$h2s"
|
||||
test_grep ! "$HT" "$h2s"
|
||||
'
|
||||
|
||||
test_expect_success "$builtin -h output has dashed labels" '
|
||||
|
||||
@@ -320,8 +320,8 @@ test_expect_success 'progress generates traces' '
|
||||
|
||||
# t0212/parse_events.perl intentionally omits regions and data.
|
||||
test_region progress "Working hard" trace.event &&
|
||||
grep "\"key\":\"total_objects\",\"value\":\"40\"" trace.event &&
|
||||
grep "\"key\":\"total_bytes\",\"value\":\"409600\"" trace.event
|
||||
test_grep "\"key\":\"total_objects\",\"value\":\"40\"" trace.event &&
|
||||
test_grep "\"key\":\"total_bytes\",\"value\":\"409600\"" trace.event
|
||||
'
|
||||
|
||||
test_expect_success 'progress generates traces: stop / start' '
|
||||
@@ -344,8 +344,8 @@ test_expect_success 'progress generates traces: start without stop' '
|
||||
LSAN_OPTIONS=detect_leaks=0 \
|
||||
test-tool progress \
|
||||
<in 2>stderr &&
|
||||
grep region_enter.*progress trace-start.event &&
|
||||
! grep region_leave.*progress trace-start.event
|
||||
test_grep region_enter.*progress trace-start.event &&
|
||||
test_grep ! region_leave.*progress trace-start.event
|
||||
'
|
||||
|
||||
test_expect_success 'progress generates traces: stop without start' '
|
||||
@@ -355,8 +355,8 @@ test_expect_success 'progress generates traces: stop without start' '
|
||||
|
||||
GIT_TRACE2_EVENT="$PWD/trace-stop.event" test-tool progress \
|
||||
<in 2>stderr &&
|
||||
! grep region_enter.*progress trace-stop.event &&
|
||||
! grep region_leave.*progress trace-stop.event
|
||||
test_grep ! region_enter.*progress trace-stop.event &&
|
||||
test_grep ! region_leave.*progress trace-stop.event
|
||||
'
|
||||
|
||||
test_expect_success 'progress generates traces: start with active progress bar (no stops)' '
|
||||
@@ -369,9 +369,9 @@ test_expect_success 'progress generates traces: start with active progress bar (
|
||||
LSAN_OPTIONS=detect_leaks=0 \
|
||||
test-tool progress \
|
||||
<in 2>stderr &&
|
||||
grep region_enter.*progress.*One trace-2start.event &&
|
||||
grep region_enter.*progress.*Two trace-2start.event &&
|
||||
! grep region_leave trace-2start.event
|
||||
test_grep region_enter.*progress.*One trace-2start.event &&
|
||||
test_grep region_enter.*progress.*Two trace-2start.event &&
|
||||
test_grep ! region_leave trace-2start.event
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -776,11 +776,11 @@ test_expect_success 'reflog: can delete separate reflog entries' '
|
||||
test_commit file3 &&
|
||||
test_commit file4 &&
|
||||
git reflog >actual &&
|
||||
grep file3 actual &&
|
||||
test_grep file3 actual &&
|
||||
|
||||
git reflog delete HEAD@{1} &&
|
||||
git reflog >actual &&
|
||||
! grep file3 actual
|
||||
test_grep ! file3 actual
|
||||
)
|
||||
'
|
||||
|
||||
@@ -902,8 +902,8 @@ test_expect_success 'reflog: garbage collection deletes reflog entries' '
|
||||
done &&
|
||||
git reflog refs/heads/main >actual &&
|
||||
test_line_count = 10 actual &&
|
||||
grep "commit (initial): number 1" actual &&
|
||||
grep "commit: number 10" actual &&
|
||||
test_grep "commit (initial): number 1" actual &&
|
||||
test_grep "commit: number 10" actual &&
|
||||
|
||||
git gc &&
|
||||
git reflog refs/heads/main >actual &&
|
||||
|
||||
@@ -142,8 +142,8 @@ test_expect_success '3-way not overwriting local changes (our side)' '
|
||||
|
||||
echo >>file1 "local changes" &&
|
||||
read_tree_u_must_succeed -m -u branch-point side-a side-b &&
|
||||
grep "new line to be kept" file1 &&
|
||||
grep "local changes" file1
|
||||
test_grep "new line to be kept" file1 &&
|
||||
test_grep "local changes" file1
|
||||
|
||||
'
|
||||
|
||||
@@ -156,8 +156,8 @@ test_expect_success '3-way not overwriting local changes (their side)' '
|
||||
|
||||
echo >>file2 "local changes" &&
|
||||
read_tree_u_must_fail -m -u branch-point side-a side-b &&
|
||||
! grep "new line to be kept" file2 &&
|
||||
grep "local changes" file2
|
||||
test_grep ! "new line to be kept" file2 &&
|
||||
test_grep "local changes" file2
|
||||
|
||||
'
|
||||
|
||||
|
||||
+9
-9
@@ -696,8 +696,8 @@ test_expect_success '%(deltabase) reports packed delta bases' '
|
||||
git repack -ad &&
|
||||
git cat-file --batch-check="%(deltabase)" <blobs >actual &&
|
||||
{
|
||||
grep "$(git rev-parse HEAD:foo)" actual ||
|
||||
grep "$(git rev-parse HEAD:foo-plus)" actual
|
||||
test_grep "$(git rev-parse HEAD:foo)" actual ||
|
||||
test_grep "$(git rev-parse HEAD:foo-plus)" actual
|
||||
}
|
||||
'
|
||||
|
||||
@@ -826,7 +826,7 @@ test_expect_success 'cat-file -t and -s on corrupt loose object' '
|
||||
# Swap the two to corrupt the repository
|
||||
mv -f "$other_path" "$empty_path" &&
|
||||
test_must_fail git fsck 2>err.fsck &&
|
||||
grep "hash-path mismatch" err.fsck &&
|
||||
test_grep "hash-path mismatch" err.fsck &&
|
||||
|
||||
# confirm that cat-file is reading the new swapped-in
|
||||
# blob...
|
||||
@@ -1318,37 +1318,37 @@ test_expect_success 'cat-file --batch-all-objects --batch-check ignores replace'
|
||||
test_expect_success 'batch-command empty command' '
|
||||
echo "" >cmd &&
|
||||
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
|
||||
grep "^fatal:.*empty command in input.*" err
|
||||
test_grep "^fatal:.*empty command in input.*" err
|
||||
'
|
||||
|
||||
test_expect_success 'batch-command whitespace before command' '
|
||||
echo " info deadbeef" >cmd &&
|
||||
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
|
||||
grep "^fatal:.*whitespace before command.*" err
|
||||
test_grep "^fatal:.*whitespace before command.*" err
|
||||
'
|
||||
|
||||
test_expect_success 'batch-command unknown command' '
|
||||
echo unknown_command >cmd &&
|
||||
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
|
||||
grep "^fatal:.*unknown command.*" err
|
||||
test_grep "^fatal:.*unknown command.*" err
|
||||
'
|
||||
|
||||
test_expect_success 'batch-command missing arguments' '
|
||||
echo "info" >cmd &&
|
||||
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
|
||||
grep "^fatal:.*info requires arguments.*" err
|
||||
test_grep "^fatal:.*info requires arguments.*" err
|
||||
'
|
||||
|
||||
test_expect_success 'batch-command flush with arguments' '
|
||||
echo "flush arg" >cmd &&
|
||||
test_expect_code 128 git cat-file --batch-command --buffer <cmd 2>err &&
|
||||
grep "^fatal:.*flush takes no arguments.*" err
|
||||
test_grep "^fatal:.*flush takes no arguments.*" err
|
||||
'
|
||||
|
||||
test_expect_success 'batch-command flush without --buffer' '
|
||||
echo "flush" >cmd &&
|
||||
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
|
||||
grep "^fatal:.*flush is only for --buffer mode.*" err
|
||||
test_grep "^fatal:.*flush is only for --buffer mode.*" err
|
||||
'
|
||||
|
||||
perl_script='
|
||||
|
||||
@@ -202,7 +202,7 @@ done
|
||||
test_expect_success 'too-short tree' '
|
||||
echo abc >malformed-tree &&
|
||||
test_must_fail git hash-object -t tree malformed-tree 2>err &&
|
||||
grep "too-short tree object" err
|
||||
test_grep "too-short tree object" err
|
||||
'
|
||||
|
||||
test_expect_success PERL_TEST_HELPERS 'malformed mode in tree' '
|
||||
@@ -210,7 +210,7 @@ test_expect_success PERL_TEST_HELPERS 'malformed mode in tree' '
|
||||
bin_oid=$(echo $hex_oid | hex2oct) &&
|
||||
printf "9100644 \0$bin_oid" >tree-with-malformed-mode &&
|
||||
test_must_fail git hash-object -t tree tree-with-malformed-mode 2>err &&
|
||||
grep "malformed mode in tree entry" err
|
||||
test_grep "malformed mode in tree entry" err
|
||||
'
|
||||
|
||||
test_expect_success PERL_TEST_HELPERS 'empty filename in tree' '
|
||||
@@ -218,7 +218,7 @@ test_expect_success PERL_TEST_HELPERS 'empty filename in tree' '
|
||||
bin_oid=$(echo $hex_oid | hex2oct) &&
|
||||
printf "100644 \0$bin_oid" >tree-with-empty-filename &&
|
||||
test_must_fail git hash-object -t tree tree-with-empty-filename 2>err &&
|
||||
grep "empty filename in tree entry" err
|
||||
test_grep "empty filename in tree entry" err
|
||||
'
|
||||
|
||||
test_expect_success PERL_TEST_HELPERS 'duplicate filename in tree' '
|
||||
@@ -229,7 +229,7 @@ test_expect_success PERL_TEST_HELPERS 'duplicate filename in tree' '
|
||||
printf "100644 file\0$bin_oid"
|
||||
} >tree-with-duplicate-filename &&
|
||||
test_must_fail git hash-object -t tree tree-with-duplicate-filename 2>err &&
|
||||
grep "duplicateEntries" err
|
||||
test_grep "duplicateEntries" err
|
||||
'
|
||||
|
||||
test_expect_success 'corrupt commit' '
|
||||
|
||||
@@ -196,7 +196,7 @@ test_expect_success 'read-tree will not throw away dirty changes, non-sparse' '
|
||||
echo dirty >init.t &&
|
||||
read_tree_u_must_fail -m -u HEAD^ &&
|
||||
test_path_is_file init.t &&
|
||||
grep -q dirty init.t
|
||||
test_grep -q dirty init.t
|
||||
'
|
||||
|
||||
test_expect_success 'read-tree will not throw away dirty changes, sparse' '
|
||||
@@ -207,7 +207,7 @@ test_expect_success 'read-tree will not throw away dirty changes, sparse' '
|
||||
echo sub/added >.git/info/sparse-checkout &&
|
||||
read_tree_u_must_fail -m -u HEAD^ &&
|
||||
test_path_is_file init.t &&
|
||||
grep -q dirty init.t
|
||||
test_grep -q dirty init.t
|
||||
'
|
||||
|
||||
test_expect_success 'read-tree updates worktree, dirty case' '
|
||||
@@ -215,7 +215,7 @@ test_expect_success 'read-tree updates worktree, dirty case' '
|
||||
git checkout -f top &&
|
||||
echo dirty >init.t &&
|
||||
read_tree_u_must_fail -m -u HEAD^ &&
|
||||
grep -q dirty init.t &&
|
||||
test_grep -q dirty init.t &&
|
||||
rm init.t
|
||||
'
|
||||
|
||||
@@ -224,7 +224,7 @@ test_expect_success 'read-tree removes worktree, dirty case' '
|
||||
git checkout -f top &&
|
||||
echo dirty >added &&
|
||||
read_tree_u_must_succeed -m -u HEAD^ &&
|
||||
grep -q dirty added
|
||||
test_grep -q dirty added
|
||||
'
|
||||
|
||||
test_expect_success 'read-tree adds to worktree, absent case' '
|
||||
@@ -240,7 +240,7 @@ test_expect_success 'read-tree adds to worktree, dirty case' '
|
||||
mkdir sub &&
|
||||
echo dirty >sub/added &&
|
||||
read_tree_u_must_succeed -u -m HEAD^ &&
|
||||
grep -q dirty sub/added
|
||||
test_grep -q dirty sub/added
|
||||
'
|
||||
|
||||
test_expect_success 'index removal and worktree narrowing at the same time' '
|
||||
|
||||
+3
-3
@@ -8,7 +8,7 @@ test_description='adding and checking out large blobs'
|
||||
test_expect_success 'core.bigFileThreshold must be non-negative' '
|
||||
: >input &&
|
||||
test_must_fail git -c core.bigFileThreshold=-1 hash-object input >out 2>err &&
|
||||
grep "bad numeric config value" err &&
|
||||
test_grep "bad numeric config value" err &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
@@ -148,12 +148,12 @@ test_expect_success 'diff --stat' '
|
||||
|
||||
test_expect_success 'diff' '
|
||||
git diff HEAD^ HEAD >actual &&
|
||||
grep "Binary files.*differ" actual
|
||||
test_grep "Binary files.*differ" actual
|
||||
'
|
||||
|
||||
test_expect_success 'diff --cached' '
|
||||
git diff --cached HEAD^ >actual &&
|
||||
grep "Binary files.*differ" actual
|
||||
test_grep "Binary files.*differ" actual
|
||||
'
|
||||
|
||||
test_expect_success 'hash-object' '
|
||||
|
||||
@@ -129,7 +129,7 @@ test_expect_success 'switching to cone mode with non-cone mode patterns' '
|
||||
git sparse-checkout add dir &&
|
||||
git config --worktree core.sparseCheckoutCone true &&
|
||||
test_must_fail git sparse-checkout add dir 2>err &&
|
||||
grep "existing sparse-checkout patterns do not use cone mode" err
|
||||
test_grep "existing sparse-checkout patterns do not use cone mode" err
|
||||
)
|
||||
'
|
||||
|
||||
@@ -803,7 +803,7 @@ test_expect_success 'cone mode clears ignored subdirectories' '
|
||||
# When an untracked file is in the way, all untracked files
|
||||
# (even ignored files) are preserved.
|
||||
git -C repo sparse-checkout set folder1 2>err &&
|
||||
grep "contains untracked files" err &&
|
||||
test_grep "contains untracked files" err &&
|
||||
test_path_is_file repo/deep/deeper2/ignored.o &&
|
||||
test_path_is_file repo/deep/deeper2/untracked &&
|
||||
|
||||
@@ -882,8 +882,8 @@ test_expect_success 'malformed cone-mode patterns' '
|
||||
# of using the cone-mode translation to a set of directories.
|
||||
git -C repo sparse-checkout list >actual 2>err &&
|
||||
test_cmp repo/.git/info/sparse-checkout actual &&
|
||||
grep "warning: your sparse-checkout file may have issues: pattern .* is repeated" err &&
|
||||
grep "warning: disabling cone pattern matching" err
|
||||
test_grep "warning: your sparse-checkout file may have issues: pattern .* is repeated" err &&
|
||||
test_grep "warning: disabling cone pattern matching" err
|
||||
'
|
||||
|
||||
test_expect_success 'set from subdir pays attention to prefix' '
|
||||
@@ -917,34 +917,34 @@ test_expect_success 'set from subdir in non-cone mode throws an error' '
|
||||
git -C repo sparse-checkout disable &&
|
||||
test_must_fail git -C repo/deep sparse-checkout set --no-cone deeper2 ../folder1 2>error &&
|
||||
|
||||
grep "run from the toplevel directory in non-cone mode" error
|
||||
test_grep "run from the toplevel directory in non-cone mode" error
|
||||
'
|
||||
|
||||
test_expect_success 'set from subdir in non-cone mode throws an error' '
|
||||
git -C repo sparse-checkout set --no-cone deep/deeper2 &&
|
||||
test_must_fail git -C repo/deep sparse-checkout add deeper1/deepest ../folder1 2>error &&
|
||||
|
||||
grep "run from the toplevel directory in non-cone mode" error
|
||||
test_grep "run from the toplevel directory in non-cone mode" error
|
||||
'
|
||||
|
||||
test_expect_success 'by default, cone mode will error out when passed files' '
|
||||
git -C repo sparse-checkout reapply --cone &&
|
||||
test_must_fail git -C repo sparse-checkout add .gitignore 2>error &&
|
||||
|
||||
grep ".gitignore.*is not a directory" error
|
||||
test_grep ".gitignore.*is not a directory" error
|
||||
'
|
||||
|
||||
test_expect_success 'error on mistyped command line options' '
|
||||
test_must_fail git -C repo sparse-checkout add --sikp-checks .gitignore 2>error &&
|
||||
|
||||
grep "unknown option.*sikp-checks" error
|
||||
test_grep "unknown option.*sikp-checks" error
|
||||
'
|
||||
|
||||
test_expect_success 'by default, non-cone mode will warn on individual files' '
|
||||
git -C repo sparse-checkout reapply --no-cone &&
|
||||
git -C repo sparse-checkout add .gitignore 2>warning &&
|
||||
|
||||
grep "pass a leading slash before paths.*if you want a single file" warning
|
||||
test_grep "pass a leading slash before paths.*if you want a single file" warning
|
||||
'
|
||||
|
||||
test_expect_success 'setup bare repo' '
|
||||
@@ -1108,11 +1108,11 @@ test_expect_success 'clean' '
|
||||
touch repo/folder1/extra/inside/file &&
|
||||
|
||||
test_must_fail git -C repo sparse-checkout clean 2>err &&
|
||||
grep "refusing to clean" err &&
|
||||
test_grep "refusing to clean" err &&
|
||||
|
||||
git -C repo config clean.requireForce true &&
|
||||
test_must_fail git -C repo sparse-checkout clean 2>err &&
|
||||
grep "refusing to clean" err &&
|
||||
test_grep "refusing to clean" err &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
Would remove deep/deeper2/
|
||||
@@ -1255,7 +1255,7 @@ test_expect_success 'sparse-checkout operations with merge conflicts' '
|
||||
test_must_fail git merge -m "will-conflict" right &&
|
||||
|
||||
test_must_fail git sparse-checkout clean -f 2>err &&
|
||||
grep "failed to convert index to a sparse index" err &&
|
||||
test_grep "failed to convert index to a sparse index" err &&
|
||||
|
||||
echo merged >folder1/even/more/dirs/file &&
|
||||
git add --sparse folder1 &&
|
||||
|
||||
@@ -454,10 +454,10 @@ test_expect_success 'add outside sparse cone' '
|
||||
run_on_sparse ../edit-contents folder1/a &&
|
||||
run_on_sparse ../edit-contents folder1/newfile &&
|
||||
test_sparse_match test_must_fail git add folder1/a &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/a &&
|
||||
test_sparse_match test_must_fail git add folder1/newfile &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/newfile
|
||||
'
|
||||
|
||||
@@ -509,13 +509,13 @@ test_expect_success 'status/add: outside sparse cone' '
|
||||
|
||||
# Adding the path outside of the sparse-checkout cone should fail.
|
||||
test_sparse_match test_must_fail git add folder1/a &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/a &&
|
||||
test_all_match git add --refresh folder1/a &&
|
||||
test_must_be_empty sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/a &&
|
||||
test_sparse_match test_must_fail git add folder1/new &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/new &&
|
||||
test_sparse_match git add --sparse folder1/a &&
|
||||
test_sparse_match git add --sparse folder1/new &&
|
||||
@@ -661,8 +661,8 @@ test_expect_success 'checkout and reset (mixed)' '
|
||||
# in sparse-checkout or sparse-index.
|
||||
git -C full-checkout reset update-folder1 >full-checkout-out &&
|
||||
test_sparse_match git reset update-folder1 &&
|
||||
grep "M folder1/a" full-checkout-out &&
|
||||
! grep "M folder1/a" sparse-checkout-out &&
|
||||
test_grep "M folder1/a" full-checkout-out &&
|
||||
test_grep ! "M folder1/a" sparse-checkout-out &&
|
||||
run_on_sparse test_path_is_missing folder1
|
||||
'
|
||||
|
||||
@@ -880,8 +880,8 @@ test_expect_success 'update-index with directories' '
|
||||
# update-index will exit silently when provided with a directory name
|
||||
# containing a trailing slash
|
||||
test_all_match git update-index deep/ folder1/ &&
|
||||
grep "Ignoring path deep/" sparse-checkout-err &&
|
||||
grep "Ignoring path folder1/" sparse-checkout-err &&
|
||||
test_grep "Ignoring path deep/" sparse-checkout-err &&
|
||||
test_grep "Ignoring path folder1/" sparse-checkout-err &&
|
||||
|
||||
# When update-index is given a directory name WITHOUT a trailing slash, it will
|
||||
# behave in different ways depending on the status of the directory on disk:
|
||||
@@ -1067,7 +1067,7 @@ test_expect_success 'merge with conflict outside cone' '
|
||||
|
||||
# 2. Add the file with conflict markers
|
||||
test_sparse_match test_must_fail git add folder1/a &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/a &&
|
||||
test_all_match git add --sparse folder1/a &&
|
||||
test_all_match git status --porcelain=v2 &&
|
||||
@@ -1076,7 +1076,7 @@ test_expect_success 'merge with conflict outside cone' '
|
||||
# accept conflict markers as resolved content.
|
||||
run_on_all mv folder2/a folder2/z &&
|
||||
test_sparse_match test_must_fail git add folder2 &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder2/z &&
|
||||
test_all_match git add --sparse folder2 &&
|
||||
test_all_match git status --porcelain=v2 &&
|
||||
@@ -1107,7 +1107,7 @@ test_expect_success 'cherry-pick/rebase with conflict outside cone' '
|
||||
# SKIP_WORKTREE bit from the index entry for folder1/a, we should
|
||||
# warn that this is a problematic add.
|
||||
test_sparse_match test_must_fail git add folder1/a &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder1/a &&
|
||||
test_all_match git add --sparse folder1/a &&
|
||||
test_all_match git status --porcelain=v2 &&
|
||||
@@ -1119,7 +1119,7 @@ test_expect_success 'cherry-pick/rebase with conflict outside cone' '
|
||||
# existing index entry with the SKIP_WORKTREE bit cleared.
|
||||
run_on_all mv folder2/a folder2/z &&
|
||||
test_sparse_match test_must_fail git add folder2 &&
|
||||
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_grep "Disable or modify the sparsity rules" sparse-checkout-err &&
|
||||
test_sparse_unstaged folder2/z &&
|
||||
test_all_match git add --sparse folder2 &&
|
||||
test_all_match git status --porcelain=v2 &&
|
||||
@@ -1266,7 +1266,7 @@ test_expect_success 'checkout-index with folders' '
|
||||
run_on_all test_must_fail git checkout-index -f -- folder1/ &&
|
||||
test_cmp full-checkout-err sparse-checkout-err &&
|
||||
! test_cmp full-checkout-err sparse-index-err &&
|
||||
grep "is a sparse directory" sparse-index-err
|
||||
test_grep "is a sparse directory" sparse-index-err
|
||||
'
|
||||
|
||||
test_expect_success 'checkout-index --all' '
|
||||
@@ -1374,8 +1374,8 @@ test_expect_success 'submodule handling' '
|
||||
# having a submodule prevents "modules" from collapse
|
||||
test_sparse_match git sparse-checkout set deep/deeper1 &&
|
||||
git -C sparse-index ls-files --sparse --stage >cache &&
|
||||
grep "100644 .* modules/a" cache &&
|
||||
grep "160000 $(git -C initial-repo rev-parse HEAD) 0 modules/sub" cache
|
||||
test_grep "100644 .* modules/a" cache &&
|
||||
test_grep "160000 $(git -C initial-repo rev-parse HEAD) 0 modules/sub" cache
|
||||
'
|
||||
|
||||
test_expect_success 'git apply functionality' '
|
||||
@@ -1392,7 +1392,7 @@ test_expect_success 'git apply functionality' '
|
||||
|
||||
# Apply a patch to a file outside the sparse definition
|
||||
test_sparse_match test_must_fail git apply ../patch-outside &&
|
||||
grep "No such file or directory" sparse-checkout-err &&
|
||||
test_grep "No such file or directory" sparse-checkout-err &&
|
||||
|
||||
# But it works with --index and --cached
|
||||
test_all_match git apply --index --stat ../patch-outside &&
|
||||
@@ -2013,9 +2013,9 @@ test_expect_success 'mv directory from out-of-cone to in-cone' '
|
||||
test_all_match git status --porcelain=v2 &&
|
||||
test_sparse_match git ls-files -t &&
|
||||
git -C sparse-checkout ls-files -t >actual &&
|
||||
grep -e "H deep/folder1/0/0/0" actual &&
|
||||
grep -e "H deep/folder1/0/1" actual &&
|
||||
grep -e "H deep/folder1/a" actual &&
|
||||
test_grep -e "H deep/folder1/0/0/0" actual &&
|
||||
test_grep -e "H deep/folder1/0/1" actual &&
|
||||
test_grep -e "H deep/folder1/a" actual &&
|
||||
|
||||
test_all_match git reset --hard &&
|
||||
|
||||
@@ -2025,8 +2025,8 @@ test_expect_success 'mv directory from out-of-cone to in-cone' '
|
||||
test_sparse_match git status --porcelain=v2 &&
|
||||
test_sparse_match git ls-files -t &&
|
||||
git -C sparse-checkout ls-files -t >actual &&
|
||||
grep -e "H deep/0/0/0" actual &&
|
||||
grep -e "H deep/0/1" actual
|
||||
test_grep -e "H deep/0/0/0" actual &&
|
||||
test_grep -e "H deep/0/1" actual
|
||||
'
|
||||
|
||||
test_expect_success 'rm pathspec inside sparse definition' '
|
||||
@@ -2517,7 +2517,7 @@ test_expect_success 'advice.sparseIndexExpanded' '
|
||||
mkdir -p sparse-index/deep/deeper2/deepest &&
|
||||
touch sparse-index/deep/deeper2/deepest/bogus &&
|
||||
git -C sparse-index status 2>err &&
|
||||
grep "The sparse index is expanding to a full index" err &&
|
||||
test_grep "The sparse index is expanding to a full index" err &&
|
||||
|
||||
git -C sparse-index sparse-checkout disable 2>err &&
|
||||
test_line_count = 0 err
|
||||
|
||||
+8
-8
@@ -800,7 +800,7 @@ test_expect_success 'renaming a section with an overly-long line' '
|
||||
printf "[a] g = h\\n"
|
||||
} >y &&
|
||||
test_must_fail git config ${mode_prefix}rename-section -f y a xyz 2>err &&
|
||||
grep "refusing to work with overly long line in .y. on line 2" err
|
||||
test_grep "refusing to work with overly long line in .y. on line 2" err
|
||||
'
|
||||
|
||||
cat >> .git/config << EOF
|
||||
@@ -1615,9 +1615,9 @@ test_expect_success 'git --config-env=key=envvar support' '
|
||||
|
||||
test_expect_success 'git --config-env with missing value' '
|
||||
test_must_fail env ENVVAR=value git --config-env 2>error &&
|
||||
grep "no config key given for --config-env" error &&
|
||||
test_grep "no config key given for --config-env" error &&
|
||||
test_must_fail env ENVVAR=value git --config-env config core.name 2>error &&
|
||||
grep "invalid config format: config" error
|
||||
test_grep "invalid config format: config" error
|
||||
'
|
||||
|
||||
test_expect_success 'git --config-env fails with invalid parameters' '
|
||||
@@ -2048,7 +2048,7 @@ test_expect_success '--unset last key removes section (except if commented)' '
|
||||
key = true
|
||||
EOF
|
||||
git config ${mode_unset} two.key &&
|
||||
! grep two .git/config &&
|
||||
test_grep ! two .git/config &&
|
||||
|
||||
q_to_tab >.git/config <<-\EOF &&
|
||||
[one]
|
||||
@@ -2068,7 +2068,7 @@ test_expect_success '--unset last key removes section (except if commented)' '
|
||||
Qkey = true
|
||||
EOF
|
||||
git config ${mode_unset} two.key &&
|
||||
grep two .git/config &&
|
||||
test_grep two .git/config &&
|
||||
|
||||
q_to_tab >.git/config <<-\EOF &&
|
||||
[one]
|
||||
@@ -2599,7 +2599,7 @@ test_expect_success '--type rejects unknown specifiers' '
|
||||
|
||||
test_expect_success '--type=int requires at least one digit' '
|
||||
test_must_fail git config --type int --default m some.key >out 2>error &&
|
||||
grep "bad numeric config value" error &&
|
||||
test_grep "bad numeric config value" error &&
|
||||
test_must_be_empty out
|
||||
'
|
||||
|
||||
@@ -2911,12 +2911,12 @@ test_expect_success 'includeIf.hasconfig:remote.*.url forbids remote url in such
|
||||
|
||||
# test with any Git command
|
||||
test_must_fail git -C hasremoteurlTest status 2>err &&
|
||||
grep "fatal: remote URLs cannot be configured in file directly or indirectly included by includeIf.hasconfig:remote.*.url" err
|
||||
test_grep "fatal: remote URLs cannot be configured in file directly or indirectly included by includeIf.hasconfig:remote.*.url" err
|
||||
'
|
||||
|
||||
test_expect_success 'negated mode causes failure' '
|
||||
test_must_fail git config --no-get 2>err &&
|
||||
grep "unknown option \`no-get${SQ}" err
|
||||
test_grep "unknown option \`no-get${SQ}" err
|
||||
'
|
||||
|
||||
test_expect_success 'specifying multiple modes causes failure' '
|
||||
|
||||
@@ -353,7 +353,7 @@ test_expect_success 'include cycles are detected' '
|
||||
git -C cycle --git-dir=. config include.path cycle &&
|
||||
git config -f cycle/cycle include.path config &&
|
||||
test_must_fail git -C cycle --git-dir=. config --get-all test.value 2>stderr &&
|
||||
grep "exceeded maximum include depth" stderr
|
||||
test_grep "exceeded maximum include depth" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'onbranch with unborn branch' '
|
||||
|
||||
@@ -180,7 +180,7 @@ test_expect_success 'find integer if value is non parse-able' '
|
||||
|
||||
test_expect_success 'non parse-able integer value during iteration' '
|
||||
check_config expect_code 128 git_config_int lamb.head 2>result &&
|
||||
grep "fatal: bad numeric config value .* in file \.git/config" result
|
||||
test_grep "fatal: bad numeric config value .* in file \.git/config" result
|
||||
'
|
||||
|
||||
test_expect_success 'find bool value for the entered key' '
|
||||
@@ -302,7 +302,7 @@ test_expect_success 'proper error on directory "files"' '
|
||||
echo "Error (-1) reading configuration file a-directory." >expect &&
|
||||
mkdir a-directory &&
|
||||
test_expect_code 2 test-tool config configset_get_value foo.bar a-directory 2>output &&
|
||||
grep "^warning:" output &&
|
||||
test_grep "^warning:" output &&
|
||||
grep "^Error" output >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
@@ -312,7 +312,7 @@ test_expect_success POSIXPERM,SANITY 'proper error on non-accessible files' '
|
||||
test_when_finished "chmod +r .git/config" &&
|
||||
echo "Error (-1) reading configuration file .git/config." >expect &&
|
||||
test_expect_code 2 test-tool config configset_get_value foo.bar .git/config 2>output &&
|
||||
grep "^warning:" output &&
|
||||
test_grep "^warning:" output &&
|
||||
grep "^Error" output >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
+85
-85
@@ -92,7 +92,7 @@ test_expect_success "deleting current branch adds message to HEAD's log" '
|
||||
git update-ref -m delete-$m -d $m &&
|
||||
test_must_fail git show-ref --verify -q $m &&
|
||||
test-tool ref-store main for-each-reflog-ent HEAD >actual &&
|
||||
grep "delete-$m$" actual
|
||||
test_grep "delete-$m$" actual
|
||||
'
|
||||
|
||||
test_expect_success "deleting by HEAD adds message to HEAD's log" '
|
||||
@@ -102,7 +102,7 @@ test_expect_success "deleting by HEAD adds message to HEAD's log" '
|
||||
git update-ref -m delete-by-head -d HEAD &&
|
||||
test_must_fail git show-ref --verify -q $m &&
|
||||
test-tool ref-store main for-each-reflog-ent HEAD >actual &&
|
||||
grep "delete-by-head$" actual
|
||||
test_grep "delete-by-head$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref does not create reflogs by default' '
|
||||
@@ -192,7 +192,7 @@ test_expect_success "move $m (by HEAD)" '
|
||||
test_expect_success "delete $m (by HEAD) should remove both packed and loose $m" '
|
||||
test_when_finished "git update-ref -d $m" &&
|
||||
git update-ref -d HEAD $B &&
|
||||
! grep "$m" .git/packed-refs &&
|
||||
! grep "$m" .git/packed-refs && # lint-ok: file may not exist (reftable)
|
||||
test_must_fail git show-ref --verify -q $m
|
||||
'
|
||||
|
||||
@@ -575,103 +575,103 @@ test_expect_success 'stdin works with no input' '
|
||||
test_expect_success 'stdin fails on empty line' '
|
||||
echo "" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: empty command in input" err
|
||||
test_grep "fatal: empty command in input" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails on only whitespace' '
|
||||
echo " " >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: whitespace before command: " err
|
||||
test_grep "fatal: whitespace before command: " err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails on leading whitespace' '
|
||||
echo " create $a $m" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: whitespace before command: create $a $m" err
|
||||
test_grep "fatal: whitespace before command: create $a $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails on unknown command' '
|
||||
echo "unknown $a" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: unknown command: unknown $a" err
|
||||
test_grep "fatal: unknown command: unknown $a" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails on unbalanced quotes' '
|
||||
echo "create $a \"main" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: badly quoted argument: \\\"main" err
|
||||
test_grep "fatal: badly quoted argument: \\\"main" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails on invalid escape' '
|
||||
echo "create $a \"ma\zn\"" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: badly quoted argument: \\\"ma\\\\zn\\\"" err
|
||||
test_grep "fatal: badly quoted argument: \\\"ma\\\\zn\\\"" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails on junk after quoted argument' '
|
||||
echo "create \"$a\"main" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: unexpected character after quoted argument: \\\"$a\\\"main" err
|
||||
test_grep "fatal: unexpected character after quoted argument: \\\"$a\\\"main" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails create with no ref' '
|
||||
echo "create " >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: create: missing <ref>" err
|
||||
test_grep "fatal: create: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails create with no new value' '
|
||||
echo "create $a" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: create $a: missing <new-oid>" err
|
||||
test_grep "fatal: create $a: missing <new-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails create with too many arguments' '
|
||||
echo "create $a $m $m" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: create $a: extra input: $m" err
|
||||
test_grep "fatal: create $a: extra input: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails update with no ref' '
|
||||
echo "update " >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: update: missing <ref>" err
|
||||
test_grep "fatal: update: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails update with no new value' '
|
||||
echo "update $a" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: update $a: missing <new-oid>" err
|
||||
test_grep "fatal: update $a: missing <new-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails update with too many arguments' '
|
||||
echo "update $a $m $m $m" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: update $a: extra input: $m" err
|
||||
test_grep "fatal: update $a: extra input: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails delete with no ref' '
|
||||
echo "delete " >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: delete: missing <ref>" err
|
||||
test_grep "fatal: delete: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails delete with too many arguments' '
|
||||
echo "delete $a $m $m" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: delete $a: extra input: $m" err
|
||||
test_grep "fatal: delete $a: extra input: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails verify with too many arguments' '
|
||||
echo "verify $a $m $m" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: verify $a: extra input: $m" err
|
||||
test_grep "fatal: verify $a: extra input: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails option with unknown name' '
|
||||
echo "option unknown" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: option unknown: unknown" err
|
||||
test_grep "fatal: option unknown: unknown" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin fails with duplicate refs' '
|
||||
@@ -759,28 +759,28 @@ test_expect_success 'stdin create ref works with path with space to blob' '
|
||||
test_expect_success 'stdin update ref fails with wrong old value' '
|
||||
echo "update $c $m $m~1" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin update ref fails with bad old value' '
|
||||
echo "update $c $m does-not-exist" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: update $c: invalid <old-oid>: does-not-exist" err &&
|
||||
test_grep "fatal: update $c: invalid <old-oid>: does-not-exist" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin create ref fails with bad new value' '
|
||||
echo "create $c does-not-exist" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: create $c: invalid <new-oid>: does-not-exist" err &&
|
||||
test_grep "fatal: create $c: invalid <new-oid>: does-not-exist" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin create ref fails with zero new value' '
|
||||
echo "create $c " >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: create $c: zero <new-oid>" err &&
|
||||
test_grep "fatal: create $c: zero <new-oid>" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
@@ -795,7 +795,7 @@ test_expect_success 'stdin update ref works with right old value' '
|
||||
test_expect_success 'stdin delete ref fails with wrong old value' '
|
||||
echo "delete $a $m~1" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$a'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$a'"'"'" err &&
|
||||
git rev-parse $m >expect &&
|
||||
git rev-parse $a >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -804,7 +804,7 @@ test_expect_success 'stdin delete ref fails with wrong old value' '
|
||||
test_expect_success 'stdin delete ref fails with zero old value' '
|
||||
echo "delete $a " >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: delete $a: zero <old-oid>" err &&
|
||||
test_grep "fatal: delete $a: zero <old-oid>" err &&
|
||||
git rev-parse $m >expect &&
|
||||
git rev-parse $a >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -965,7 +965,7 @@ test_expect_success 'stdin update refs fails with wrong old value' '
|
||||
update $c ''
|
||||
EOF
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
git rev-parse $m >expect &&
|
||||
git rev-parse $a >actual &&
|
||||
test_cmp expect actual &&
|
||||
@@ -998,123 +998,123 @@ test_expect_success 'stdin -z works on empty input' '
|
||||
test_expect_success 'stdin -z fails on empty line' '
|
||||
echo "" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: whitespace before command: " err
|
||||
test_grep "fatal: whitespace before command: " err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails on empty command' '
|
||||
printf $F "" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: empty command in input" err
|
||||
test_grep "fatal: empty command in input" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails on only whitespace' '
|
||||
printf $F " " >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: whitespace before command: " err
|
||||
test_grep "fatal: whitespace before command: " err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails on leading whitespace' '
|
||||
printf $F " create $a" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: whitespace before command: create $a" err
|
||||
test_grep "fatal: whitespace before command: create $a" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails on unknown command' '
|
||||
printf $F "unknown $a" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: unknown command: unknown $a" err
|
||||
test_grep "fatal: unknown command: unknown $a" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails create with no ref' '
|
||||
printf $F "create " >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: create: missing <ref>" err
|
||||
test_grep "fatal: create: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails create with no new value' '
|
||||
printf $F "create $a" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: create $a: unexpected end of input when reading <new-oid>" err
|
||||
test_grep "fatal: create $a: unexpected end of input when reading <new-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails create with too many arguments' '
|
||||
printf $F "create $a" "$m" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: unknown command: $m" err
|
||||
test_grep "fatal: unknown command: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails update with no ref' '
|
||||
printf $F "update " >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: update: missing <ref>" err
|
||||
test_grep "fatal: update: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails update with too few args' '
|
||||
printf $F "update $a" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: update $a: unexpected end of input when reading <old-oid>" err
|
||||
test_grep "fatal: update $a: unexpected end of input when reading <old-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z emits warning with empty new value' '
|
||||
git update-ref $a $m &&
|
||||
printf $F "update $a" "" "" >stdin &&
|
||||
git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "warning: update $a: missing <new-oid>, treating as zero" err &&
|
||||
test_grep "warning: update $a: missing <new-oid>, treating as zero" err &&
|
||||
test_must_fail git rev-parse --verify -q $a
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails update with no new value' '
|
||||
printf $F "update $a" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: update $a: unexpected end of input when reading <new-oid>" err
|
||||
test_grep "fatal: update $a: unexpected end of input when reading <new-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails update with no old value' '
|
||||
printf $F "update $a" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: update $a: unexpected end of input when reading <old-oid>" err
|
||||
test_grep "fatal: update $a: unexpected end of input when reading <old-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails update with too many arguments' '
|
||||
printf $F "update $a" "$m" "$m" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: unknown command: $m" err
|
||||
test_grep "fatal: unknown command: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails delete with no ref' '
|
||||
printf $F "delete " >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: delete: missing <ref>" err
|
||||
test_grep "fatal: delete: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails delete with no old value' '
|
||||
printf $F "delete $a" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: delete $a: unexpected end of input when reading <old-oid>" err
|
||||
test_grep "fatal: delete $a: unexpected end of input when reading <old-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails delete with too many arguments' '
|
||||
printf $F "delete $a" "$m" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: unknown command: $m" err
|
||||
test_grep "fatal: unknown command: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails verify with too many arguments' '
|
||||
printf $F "verify $a" "$m" "$m" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: unknown command: $m" err
|
||||
test_grep "fatal: unknown command: $m" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails verify with no old value' '
|
||||
printf $F "verify $a" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: verify $a: unexpected end of input when reading <old-oid>" err
|
||||
test_grep "fatal: verify $a: unexpected end of input when reading <old-oid>" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails option with unknown name' '
|
||||
printf $F "option unknown" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: option unknown: unknown" err
|
||||
test_grep "fatal: option unknown: unknown" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z fails with duplicate refs' '
|
||||
@@ -1160,14 +1160,14 @@ test_expect_success 'stdin -z create ref works with path with space to blob' '
|
||||
test_expect_success 'stdin -z update ref fails with wrong old value' '
|
||||
printf $F "update $c" "$m" "$m~1" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z update ref fails with bad old value' '
|
||||
printf $F "update $c" "$m" "does-not-exist" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: update $c: invalid <old-oid>: does-not-exist" err &&
|
||||
test_grep "fatal: update $c: invalid <old-oid>: does-not-exist" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
@@ -1176,7 +1176,7 @@ test_expect_success 'stdin -z create ref fails when ref exists' '
|
||||
git rev-parse "$c" >expect &&
|
||||
printf $F "create $c" "$m~1" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
git rev-parse "$c" >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
@@ -1185,28 +1185,28 @@ test_expect_success 'stdin -z create ref fails with bad new value' '
|
||||
git update-ref -d "$c" &&
|
||||
printf $F "create $c" "does-not-exist" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: create $c: invalid <new-oid>: does-not-exist" err &&
|
||||
test_grep "fatal: create $c: invalid <new-oid>: does-not-exist" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z create ref fails with empty new value' '
|
||||
printf $F "create $c" "" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: create $c: missing <new-oid>" err &&
|
||||
test_grep "fatal: create $c: missing <new-oid>" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z create ref fails with non commit object' '
|
||||
printf $F "create $c" "$(test_oid 001)" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: trying to write ref ${SQ}$c${SQ} with nonexistent object" err &&
|
||||
test_grep "fatal: trying to write ref ${SQ}$c${SQ} with nonexistent object" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
test_expect_success 'stdin -z update ref fails with non commit object' '
|
||||
printf $F "update $b" "$(test_oid 001)" "" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: trying to write ref ${SQ}$b${SQ} with nonexistent object" err &&
|
||||
test_grep "fatal: trying to write ref ${SQ}$b${SQ} with nonexistent object" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
@@ -1221,7 +1221,7 @@ test_expect_success 'stdin -z update ref works with right old value' '
|
||||
test_expect_success 'stdin -z delete ref fails with wrong old value' '
|
||||
printf $F "delete $a" "$m~1" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$a'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$a'"'"'" err &&
|
||||
git rev-parse $m >expect &&
|
||||
git rev-parse $a >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -1230,7 +1230,7 @@ test_expect_success 'stdin -z delete ref fails with wrong old value' '
|
||||
test_expect_success 'stdin -z delete ref fails with zero old value' '
|
||||
printf $F "delete $a" "$Z" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: delete $a: zero <old-oid>" err &&
|
||||
test_grep "fatal: delete $a: zero <old-oid>" err &&
|
||||
git rev-parse $m >expect &&
|
||||
git rev-parse $a >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -1336,7 +1336,7 @@ test_expect_success 'stdin -z update refs fails with wrong old value' '
|
||||
git update-ref $c $m &&
|
||||
printf $F "update $a" "$m" "$m" "update $b" "$m" "$m" "update $c" "$m" "$Z" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
test_grep "fatal: cannot lock ref '"'"'$c'"'"'" err &&
|
||||
git rev-parse $m >expect &&
|
||||
git rev-parse $a >actual &&
|
||||
test_cmp expect actual &&
|
||||
@@ -1415,13 +1415,13 @@ test_expect_success 'handle per-worktree refs in refs/bisect' '
|
||||
cd worktree &&
|
||||
git commit --allow-empty -m "test commit" &&
|
||||
git for-each-ref >for-each-ref.out &&
|
||||
! grep refs/bisect for-each-ref.out &&
|
||||
test_grep ! refs/bisect for-each-ref.out &&
|
||||
git update-ref refs/bisect/something HEAD &&
|
||||
git rev-parse refs/bisect/something >../worktree-head &&
|
||||
git for-each-ref | grep refs/bisect/something
|
||||
) &&
|
||||
git show-ref >actual &&
|
||||
! grep 'refs/bisect' actual &&
|
||||
test_grep ! 'refs/bisect' actual &&
|
||||
test_must_fail git rev-parse refs/bisect/something &&
|
||||
git update-ref refs/bisect/something HEAD &&
|
||||
git rev-parse refs/bisect/something >main-head &&
|
||||
@@ -1477,7 +1477,7 @@ test_expect_success 'transaction exits on multiple aborts' '
|
||||
test_must_fail git update-ref --stdin <stdin >actual 2>err &&
|
||||
printf "%s: ok\n" abort >expect &&
|
||||
test_cmp expect actual &&
|
||||
grep "fatal: transaction is closed" err
|
||||
test_grep "fatal: transaction is closed" err
|
||||
'
|
||||
|
||||
test_expect_success 'transaction exits on start after prepare' '
|
||||
@@ -1488,7 +1488,7 @@ test_expect_success 'transaction exits on start after prepare' '
|
||||
test_must_fail git update-ref --stdin <stdin 2>err >actual &&
|
||||
printf "%s: ok\n" prepare >expect &&
|
||||
test_cmp expect actual &&
|
||||
grep "fatal: prepared transactions can only be closed" err
|
||||
test_grep "fatal: prepared transactions can only be closed" err
|
||||
'
|
||||
|
||||
test_expect_success 'transaction handles empty abort with missing prepare' '
|
||||
@@ -1648,7 +1648,7 @@ test_expect_success PIPE 'transaction flushes status updates' '
|
||||
|
||||
# This must now fail given that we have locked the ref.
|
||||
test_must_fail git update-ref refs/heads/flush $B 2>stderr &&
|
||||
grep "fatal: update_ref failed for ref ${SQ}refs/heads/flush${SQ}: cannot lock ref" stderr &&
|
||||
test_grep "fatal: update_ref failed for ref ${SQ}refs/heads/flush${SQ}: cannot lock ref" stderr &&
|
||||
|
||||
echo commit >&9 &&
|
||||
echo "commit: ok" >expected &&
|
||||
@@ -1674,7 +1674,7 @@ do
|
||||
git symbolic-ref refs/heads/symref $a &&
|
||||
format_command $type "symref-verify refs/heads/symref" "$a" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type <stdin 2>err &&
|
||||
grep "fatal: symref-verify: cannot operate with deref mode" err
|
||||
test_grep "fatal: symref-verify: cannot operate with deref mode" err
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-verify fails with too many arguments" '
|
||||
@@ -1682,9 +1682,9 @@ do
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
if test "$type" = "-z"
|
||||
then
|
||||
grep "fatal: unknown command: $a" err
|
||||
test_grep "fatal: unknown command: $a" err
|
||||
else
|
||||
grep "fatal: symref-verify refs/heads/symref: extra input: $a" err
|
||||
test_grep "fatal: symref-verify refs/heads/symref: extra input: $a" err
|
||||
fi
|
||||
'
|
||||
|
||||
@@ -1717,7 +1717,7 @@ do
|
||||
test-tool ref-store main for-each-reflog-ent refs/heads/symref >before &&
|
||||
format_command $type "symref-verify refs/heads/missing" "refs/heads/unknown" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref ${SQ}refs/heads/missing${SQ}: unable to resolve reference ${SQ}refs/heads/missing${SQ}" err &&
|
||||
test_grep "fatal: cannot lock ref ${SQ}refs/heads/missing${SQ}: unable to resolve reference ${SQ}refs/heads/missing${SQ}" err &&
|
||||
test_must_fail git rev-parse --verify -q refs/heads/missing &&
|
||||
test-tool ref-store main for-each-reflog-ent refs/heads/symref >after &&
|
||||
test_cmp before after
|
||||
@@ -1743,13 +1743,13 @@ do
|
||||
git symbolic-ref refs/heads/symref $a &&
|
||||
format_command $type "symref-delete refs/heads/symref" "$a" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type <stdin 2>err &&
|
||||
grep "fatal: symref-delete: cannot operate with deref mode" err
|
||||
test_grep "fatal: symref-delete: cannot operate with deref mode" err
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-delete fails with no ref" '
|
||||
format_command $type "symref-delete " >stdin &&
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
grep "fatal: symref-delete: missing <ref>" err
|
||||
test_grep "fatal: symref-delete: missing <ref>" err
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-delete fails deleting regular ref" '
|
||||
@@ -1757,7 +1757,7 @@ do
|
||||
git update-ref refs/heads/regularref $a &&
|
||||
format_command $type "symref-delete refs/heads/regularref" "$a" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref ${SQ}refs/heads/regularref${SQ}: expected symref with target ${SQ}$a${SQ}: but is a regular ref" err
|
||||
test_grep "fatal: cannot lock ref ${SQ}refs/heads/regularref${SQ}: expected symref with target ${SQ}$a${SQ}: but is a regular ref" err
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-delete fails with too many arguments" '
|
||||
@@ -1765,16 +1765,16 @@ do
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
if test "$type" = "-z"
|
||||
then
|
||||
grep "fatal: unknown command: $a" err
|
||||
test_grep "fatal: unknown command: $a" err
|
||||
else
|
||||
grep "fatal: symref-delete refs/heads/symref: extra input: $a" err
|
||||
test_grep "fatal: symref-delete refs/heads/symref: extra input: $a" err
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-delete fails with wrong old value" '
|
||||
format_command $type "symref-delete refs/heads/symref" "$m" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
grep "fatal: verifying symref target: ${SQ}refs/heads/symref${SQ}: is at $a but expected refs/heads/main" err &&
|
||||
test_grep "fatal: verifying symref target: ${SQ}refs/heads/symref${SQ}: is at $a but expected refs/heads/main" err &&
|
||||
git symbolic-ref refs/heads/symref >expect &&
|
||||
echo $a >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -1812,9 +1812,9 @@ do
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
if test "$type" = "-z"
|
||||
then
|
||||
grep "fatal: unknown command: $a" err
|
||||
test_grep "fatal: unknown command: $a" err
|
||||
else
|
||||
grep "fatal: symref-create refs/heads/symref: extra input: $a" err
|
||||
test_grep "fatal: symref-create refs/heads/symref: extra input: $a" err
|
||||
fi
|
||||
'
|
||||
|
||||
@@ -1877,16 +1877,16 @@ do
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
if test "$type" = "-z"
|
||||
then
|
||||
grep "fatal: unknown command: $a" err
|
||||
test_grep "fatal: unknown command: $a" err
|
||||
else
|
||||
grep "fatal: symref-update refs/heads/symref: extra input: $a" err
|
||||
test_grep "fatal: symref-update refs/heads/symref: extra input: $a" err
|
||||
fi
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-update fails with wrong old value argument" '
|
||||
format_command $type "symref-update refs/heads/symref" "$a" "foo" "$a" "$a" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
grep "fatal: symref-update refs/heads/symref: invalid arg ${SQ}foo${SQ} for old value" err
|
||||
test_grep "fatal: symref-update refs/heads/symref: invalid arg ${SQ}foo${SQ} for old value" err
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-update creates with zero old value" '
|
||||
@@ -1922,7 +1922,7 @@ do
|
||||
git symbolic-ref refs/heads/symref $a &&
|
||||
format_command $type "symref-update refs/heads/symref" "$m" "ref" "$b" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type --no-deref <stdin 2>err &&
|
||||
grep "fatal: verifying symref target: ${SQ}refs/heads/symref${SQ}: is at $a but expected $b" err &&
|
||||
test_grep "fatal: verifying symref target: ${SQ}refs/heads/symref${SQ}: is at $a but expected $b" err &&
|
||||
test_must_fail git rev-parse --verify -q $c
|
||||
'
|
||||
|
||||
@@ -1997,7 +1997,7 @@ do
|
||||
git symbolic-ref --no-recurse refs/heads/symref >actual &&
|
||||
test_cmp expect actual &&
|
||||
test-tool ref-store main for-each-reflog-ent refs/heads/symref >actual &&
|
||||
grep "$Z $(git rev-parse $a)" actual
|
||||
test_grep "$Z $(git rev-parse $a)" actual
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-update regular ref to symref with correct old-oid" '
|
||||
@@ -2009,7 +2009,7 @@ do
|
||||
git symbolic-ref --no-recurse refs/heads/regularref >actual &&
|
||||
test_cmp expect actual &&
|
||||
test-tool ref-store main for-each-reflog-ent refs/heads/regularref >actual &&
|
||||
grep "$(git rev-parse $a) $(git rev-parse $a)" actual
|
||||
test_grep "$(git rev-parse $a) $(git rev-parse $a)" actual
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-update regular ref to symref fails with wrong old-oid" '
|
||||
@@ -2017,7 +2017,7 @@ do
|
||||
git update-ref --no-deref refs/heads/regularref $a &&
|
||||
format_command $type "symref-update refs/heads/regularref" "$a" "oid" "$(git rev-parse refs/heads/target2)" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref ${SQ}refs/heads/regularref${SQ}: is at $(git rev-parse $a) but expected $(git rev-parse refs/heads/target2)" err &&
|
||||
test_grep "fatal: cannot lock ref ${SQ}refs/heads/regularref${SQ}: is at $(git rev-parse $a) but expected $(git rev-parse refs/heads/target2)" err &&
|
||||
echo $(git rev-parse $a) >expect &&
|
||||
git rev-parse refs/heads/regularref >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -2028,7 +2028,7 @@ do
|
||||
git update-ref --no-deref refs/heads/regularref $a &&
|
||||
format_command $type "symref-update refs/heads/regularref" "$a" "oid" "not-a-ref-oid" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type <stdin 2>err &&
|
||||
grep "fatal: symref-update refs/heads/regularref: invalid oid: not-a-ref-oid" err &&
|
||||
test_grep "fatal: symref-update refs/heads/regularref: invalid oid: not-a-ref-oid" err &&
|
||||
echo $(git rev-parse $a) >expect &&
|
||||
git rev-parse refs/heads/regularref >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -2039,7 +2039,7 @@ do
|
||||
git symbolic-ref refs/heads/symref refs/heads/target2 &&
|
||||
format_command $type "symref-update refs/heads/symref" "$a" "oid" "$Z" >stdin &&
|
||||
test_must_fail git update-ref --stdin $type <stdin 2>err &&
|
||||
grep "fatal: cannot lock ref ${SQ}refs/heads/symref${SQ}: reference already exists" err &&
|
||||
test_grep "fatal: cannot lock ref ${SQ}refs/heads/symref${SQ}: reference already exists" err &&
|
||||
echo refs/heads/target2 >expect &&
|
||||
git symbolic-ref refs/heads/symref >actual &&
|
||||
test_cmp expect actual
|
||||
@@ -2059,7 +2059,7 @@ do
|
||||
git symbolic-ref --no-recurse refs/heads/symref >actual &&
|
||||
test_cmp expect actual &&
|
||||
test-tool ref-store main for-each-reflog-ent refs/heads/symref >actual &&
|
||||
grep "$(git rev-parse $a) $(git rev-parse $a)" actual
|
||||
test_grep "$(git rev-parse $a) $(git rev-parse $a)" actual
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type symref-update regular ref to symref" '
|
||||
@@ -2071,7 +2071,7 @@ do
|
||||
git symbolic-ref --no-recurse refs/heads/regularref >actual &&
|
||||
test_cmp expect actual &&
|
||||
test-tool ref-store main for-each-reflog-ent refs/heads/regularref >actual &&
|
||||
grep "$(git rev-parse $a) $(git rev-parse $a)" actual
|
||||
test_grep "$(git rev-parse $a) $(git rev-parse $a)" actual
|
||||
'
|
||||
|
||||
test_expect_success "stdin $type batch-updates" '
|
||||
|
||||
+9
-9
@@ -213,19 +213,19 @@ test_expect_success 'show-ref --verify with dangling ref' '
|
||||
|
||||
test_expect_success 'show-ref sub-modes are mutually exclusive' '
|
||||
test_must_fail git show-ref --verify --exclude-existing 2>err &&
|
||||
grep "verify" err &&
|
||||
grep "exclude-existing" err &&
|
||||
grep "cannot be used together" err &&
|
||||
test_grep "verify" err &&
|
||||
test_grep "exclude-existing" err &&
|
||||
test_grep "cannot be used together" err &&
|
||||
|
||||
test_must_fail git show-ref --verify --exists 2>err &&
|
||||
grep "verify" err &&
|
||||
grep "exists" err &&
|
||||
grep "cannot be used together" err &&
|
||||
test_grep "verify" err &&
|
||||
test_grep "exists" err &&
|
||||
test_grep "cannot be used together" err &&
|
||||
|
||||
test_must_fail git show-ref --exclude-existing --exists 2>err &&
|
||||
grep "exclude-existing" err &&
|
||||
grep "exists" err &&
|
||||
grep "cannot be used together" err
|
||||
test_grep "exclude-existing" err &&
|
||||
test_grep "exists" err &&
|
||||
test_grep "cannot be used together" err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
+2
-2
@@ -108,12 +108,12 @@ test_expect_success setup '
|
||||
|
||||
test_expect_success 'correct usage on sub-command -h' '
|
||||
test_expect_code 129 git reflog expire -h >err &&
|
||||
grep "git reflog expire" err
|
||||
test_grep "git reflog expire" err
|
||||
'
|
||||
|
||||
test_expect_success 'correct usage on "git reflog show -h"' '
|
||||
test_expect_code 129 git reflog show -h >err &&
|
||||
grep -F "git reflog [show]" err
|
||||
test_grep -F "git reflog [show]" err
|
||||
'
|
||||
|
||||
test_expect_success 'pass through -- to sub-command' '
|
||||
|
||||
@@ -32,7 +32,7 @@ test_expect_success 'ambiguous main-worktree/HEAD' '
|
||||
test_when_finished git update-ref -d refs/heads/main-worktree/HEAD &&
|
||||
git update-ref refs/heads/main-worktree/HEAD $(git rev-parse HEAD) &&
|
||||
git rev-parse main-worktree/HEAD 2>warn &&
|
||||
grep "main-worktree/HEAD.*ambiguous" warn
|
||||
test_grep "main-worktree/HEAD.*ambiguous" warn
|
||||
'
|
||||
|
||||
test_expect_success 'resolve worktrees/xx/HEAD' '
|
||||
@@ -45,7 +45,7 @@ test_expect_success 'ambiguous worktrees/xx/HEAD' '
|
||||
git update-ref refs/heads/worktrees/wt1/HEAD $(git rev-parse HEAD) &&
|
||||
test_when_finished git update-ref -d refs/heads/worktrees/wt1/HEAD &&
|
||||
git rev-parse worktrees/wt1/HEAD 2>warn &&
|
||||
grep "worktrees/wt1/HEAD.*ambiguous" warn
|
||||
test_grep "worktrees/wt1/HEAD.*ambiguous" warn
|
||||
'
|
||||
|
||||
test_expect_success 'reflog of main-worktree/HEAD' '
|
||||
|
||||
+28
-28
@@ -47,7 +47,7 @@ test_expect_success 'git branch shows badly named ref as warning' '
|
||||
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
|
||||
git branch >output 2>error &&
|
||||
test_grep -e "ignoring ref with broken name refs/heads/broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete badly named ref' '
|
||||
@@ -55,8 +55,8 @@ test_expect_success 'branch -d can delete badly named ref' '
|
||||
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
|
||||
git branch -d broken...ref &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'branch -D can delete badly named ref' '
|
||||
@@ -64,8 +64,8 @@ test_expect_success 'branch -D can delete badly named ref' '
|
||||
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
|
||||
git branch -D broken...ref &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'branch -D cannot delete non-ref in .git dir' '
|
||||
@@ -93,8 +93,8 @@ test_expect_success 'git branch cannot create a badly named ref' '
|
||||
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
|
||||
test_must_fail git branch broken...ref &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'branch -m cannot rename to a bad ref name' '
|
||||
@@ -104,8 +104,8 @@ test_expect_success 'branch -m cannot rename to a bad ref name' '
|
||||
test_must_fail git branch -m goodref broken...ref &&
|
||||
test_cmp_rev main goodref &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_failure 'branch -m can rename from a bad ref name' '
|
||||
@@ -115,16 +115,16 @@ test_expect_failure 'branch -m can rename from a bad ref name' '
|
||||
git branch -m broken...ref renamed &&
|
||||
test_cmp_rev main renamed &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'push cannot create a badly named ref' '
|
||||
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
|
||||
test_must_fail git push "file://$(pwd)" HEAD:refs/heads/broken...ref &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_failure 'push --mirror can delete badly named ref' '
|
||||
@@ -144,8 +144,8 @@ test_expect_failure 'push --mirror can delete badly named ref' '
|
||||
) &&
|
||||
git -C src push --mirror "file://$top/dest" &&
|
||||
git -C dest branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'rev-parse skips symref pointing to broken name' '
|
||||
@@ -168,9 +168,9 @@ test_expect_success 'for-each-ref emits warnings for broken names' '
|
||||
test-tool ref-store main create-symref refs/heads/broken...symref refs/heads/main &&
|
||||
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" &&
|
||||
git for-each-ref >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" output &&
|
||||
! grep -e "badname" output &&
|
||||
! grep -e "broken\.\.\.symref" output &&
|
||||
test_grep ! -e "broken\.\.\.ref" output &&
|
||||
test_grep ! -e "badname" output &&
|
||||
test_grep ! -e "broken\.\.\.symref" output &&
|
||||
test_grep "ignoring ref with broken name refs/heads/broken\.\.\.ref" error &&
|
||||
test_grep ! "ignoring broken ref refs/heads/badname" error &&
|
||||
test_grep "ignoring ref with broken name refs/heads/broken\.\.\.symref" error
|
||||
@@ -183,8 +183,8 @@ test_expect_success 'update-ref -d can delete broken name' '
|
||||
test_must_be_empty output &&
|
||||
test_must_be_empty error &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'branch -d can delete broken name' '
|
||||
@@ -194,8 +194,8 @@ test_expect_success 'branch -d can delete broken name' '
|
||||
test_grep "Deleted branch broken...ref (was broken)" output &&
|
||||
test_must_be_empty error &&
|
||||
git branch >output 2>error &&
|
||||
! grep -e "broken\.\.\.ref" error &&
|
||||
! grep -e "broken\.\.\.ref" output
|
||||
test_grep ! -e "broken\.\.\.ref" error &&
|
||||
test_grep ! -e "broken\.\.\.ref" output
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --no-deref -d can delete symref to broken name' '
|
||||
@@ -313,37 +313,37 @@ test_expect_success 'update-ref -d cannot delete absolute path' '
|
||||
test_expect_success 'update-ref --stdin fails create with bad ref name' '
|
||||
echo "create ~a refs/heads/main" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: invalid ref format: ~a" err
|
||||
test_grep "fatal: invalid ref format: ~a" err
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --stdin fails update with bad ref name' '
|
||||
echo "update ~a refs/heads/main" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: invalid ref format: ~a" err
|
||||
test_grep "fatal: invalid ref format: ~a" err
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --stdin fails delete with bad ref name' '
|
||||
echo "delete ~a refs/heads/main" >stdin &&
|
||||
test_must_fail git update-ref --stdin <stdin 2>err &&
|
||||
grep "fatal: invalid ref format: ~a" err
|
||||
test_grep "fatal: invalid ref format: ~a" err
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --stdin -z fails create with bad ref name' '
|
||||
printf "%s\0" "create ~a " refs/heads/main >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: invalid ref format: ~a " err
|
||||
test_grep "fatal: invalid ref format: ~a " err
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --stdin -z fails update with bad ref name' '
|
||||
printf "%s\0" "update ~a" refs/heads/main "" >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: invalid ref format: ~a" err
|
||||
test_grep "fatal: invalid ref format: ~a" err
|
||||
'
|
||||
|
||||
test_expect_success 'update-ref --stdin -z fails delete with bad ref name' '
|
||||
printf "%s\0" "delete ~a" refs/heads/main >stdin &&
|
||||
test_must_fail git update-ref -z --stdin <stdin 2>err &&
|
||||
grep "fatal: invalid ref format: ~a" err
|
||||
test_grep "fatal: invalid ref format: ~a" err
|
||||
'
|
||||
|
||||
test_expect_success 'branch rejects HEAD as a branch name' '
|
||||
|
||||
+6
-6
@@ -68,7 +68,7 @@ test_expect_success 'object with hash mismatch' '
|
||||
git update-ref refs/heads/bogus $cmt &&
|
||||
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "$oldoid: hash-path mismatch, found at: .*$new" out
|
||||
test_grep "$oldoid: hash-path mismatch, found at: .*$new" out
|
||||
)
|
||||
'
|
||||
|
||||
@@ -172,7 +172,7 @@ test_expect_success 'commit with multiple signatures is okay' '
|
||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
git fsck 2>out &&
|
||||
cat out &&
|
||||
! grep "commit $new" out
|
||||
test_grep ! "commit $new" out
|
||||
'
|
||||
|
||||
test_expect_success 'email without @ is okay' '
|
||||
@@ -183,7 +183,7 @@ test_expect_success 'email without @ is okay' '
|
||||
git update-ref refs/heads/bogus "$new" &&
|
||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
git fsck 2>out &&
|
||||
! grep "commit $new" out
|
||||
test_grep ! "commit $new" out
|
||||
'
|
||||
|
||||
test_expect_success 'email with embedded > is not okay' '
|
||||
@@ -626,7 +626,7 @@ test_expect_success 'fsck notices excessively large tree entry name' '
|
||||
cd large-name &&
|
||||
test_commit a-long-name &&
|
||||
git -c fsck.largePathname=warn:10 fsck 2>out &&
|
||||
grep "warning.*large pathname" out
|
||||
test_grep "warning.*large pathname" out
|
||||
)
|
||||
'
|
||||
|
||||
@@ -849,7 +849,7 @@ test_expect_success 'fsck errors in packed objects' '
|
||||
test_must_fail git fsck 2>out &&
|
||||
test_grep "error in commit $one.* - bad name" out &&
|
||||
test_grep "error in commit $two.* - bad name" out &&
|
||||
! grep corrupt out
|
||||
test_grep ! corrupt out
|
||||
'
|
||||
|
||||
test_expect_success 'fsck handles multiple packfiles with big blobs' '
|
||||
@@ -1027,7 +1027,7 @@ test_expect_success 'bogus head does not fallback to all heads' '
|
||||
test_when_finished "git rm --cached foo" &&
|
||||
remove_object $blob &&
|
||||
test_must_fail git fsck $ZERO_OID >out 2>&1 &&
|
||||
! grep $blob out
|
||||
test_grep ! $blob out
|
||||
'
|
||||
|
||||
# Corrupt the checksum on the index.
|
||||
|
||||
@@ -46,7 +46,7 @@ check () {
|
||||
echo "$content"
|
||||
} >input &&
|
||||
test_must_fail git hash-object -t "$type" input 2>err &&
|
||||
grep "$fsck" err
|
||||
test_grep "$fsck" err
|
||||
'
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ ident_checks tag tagger
|
||||
test_expect_success 'truncated tree (short hash)' '
|
||||
printf "100644 foo\0\1\1\1\1" >input &&
|
||||
test_must_fail git hash-object -t tree input 2>err &&
|
||||
grep badTree err
|
||||
test_grep badTree err
|
||||
'
|
||||
|
||||
test_expect_success 'truncated tree (missing nul)' '
|
||||
@@ -135,7 +135,7 @@ test_expect_success 'truncated tree (missing nul)' '
|
||||
# parser does not walk past the end of the buffer).
|
||||
printf "100644 a long filename, or a hash with missing nul?" >input &&
|
||||
test_must_fail git hash-object -t tree input 2>err &&
|
||||
grep badTree err
|
||||
test_grep badTree err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -212,7 +212,7 @@ do
|
||||
test_commit -C repo initial &&
|
||||
git -C repo refs migrate --dry-run \
|
||||
--ref-format=$to_format >output &&
|
||||
grep "Finished dry-run migration of refs" output &&
|
||||
test_grep "Finished dry-run migration of refs" output &&
|
||||
test_path_is_dir repo/.git/ref_migration.* &&
|
||||
echo $from_format >expect &&
|
||||
git -C repo rev-parse --show-ref-format >actual &&
|
||||
|
||||
@@ -204,7 +204,7 @@ test_expect_success 'rev-parse --show-object-format in repo' '
|
||||
git rev-parse --show-object-format=output >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_must_fail git rev-parse --show-object-format=squeamish-ossifrage 2>err &&
|
||||
grep "unknown mode for --show-object-format: squeamish-ossifrage" err
|
||||
test_grep "unknown mode for --show-object-format: squeamish-ossifrage" err
|
||||
'
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ test_expect_success RUST 'rev-parse --show-object-format in repo with compat mod
|
||||
git rev-parse --show-object-format=compat >actual &&
|
||||
test_cmp expect actual &&
|
||||
test_must_fail git rev-parse --show-object-format=squeamish-ossifrage 2>err &&
|
||||
grep "unknown mode for --show-object-format: squeamish-ossifrage" err
|
||||
test_grep "unknown mode for --show-object-format: squeamish-ossifrage" err
|
||||
) &&
|
||||
mkdir repo2 &&
|
||||
(
|
||||
@@ -254,7 +254,7 @@ test_expect_success 'rev-parse --show-ref-format with invalid storage' '
|
||||
cd repo &&
|
||||
git config extensions.refstorage broken &&
|
||||
test_must_fail git rev-parse --show-ref-format 2>err &&
|
||||
grep "error: invalid value for ${SQ}extensions.refstorage${SQ}: ${SQ}broken${SQ}" err
|
||||
test_grep "error: invalid value for ${SQ}extensions.refstorage${SQ}: ${SQ}broken${SQ}" err
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
@@ -331,7 +331,7 @@ test_expect_success 'ambiguous: --no matches both --noble and --no-noble' '
|
||||
EOF
|
||||
test_expect_code 129 env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
|
||||
git rev-parse --parseopt -- <spec 2>err --no &&
|
||||
grep "error: ambiguous option: no (could be --noble or --no-noble)" err
|
||||
test_grep "error: ambiguous option: no (could be --noble or --no-noble)" err
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -62,15 +62,15 @@ test_expect_success 'works with one good rev' '
|
||||
|
||||
test_expect_success 'fails with any bad rev or many good revs' '
|
||||
test_must_fail git rev-parse --verify 2>error &&
|
||||
grep "single revision" error &&
|
||||
test_grep "single revision" error &&
|
||||
test_must_fail git rev-parse --verify foo 2>error &&
|
||||
grep "single revision" error &&
|
||||
test_grep "single revision" error &&
|
||||
test_must_fail git rev-parse --verify HEAD bar 2>error &&
|
||||
grep "single revision" error &&
|
||||
test_grep "single revision" error &&
|
||||
test_must_fail git rev-parse --verify baz HEAD 2>error &&
|
||||
grep "single revision" error &&
|
||||
test_grep "single revision" error &&
|
||||
test_must_fail git rev-parse --verify $HASH2 HEAD 2>error &&
|
||||
grep "single revision" error
|
||||
test_grep "single revision" error
|
||||
'
|
||||
|
||||
test_expect_success 'fails silently when using -q' '
|
||||
|
||||
@@ -604,7 +604,7 @@ test_expect_success '#20b/c: core.worktree and core.bare conflict' '
|
||||
cd 20b/.git &&
|
||||
test_must_fail git status >/dev/null
|
||||
) 2>message &&
|
||||
grep "core.bare and core.worktree" message
|
||||
test_grep "core.bare and core.worktree" message
|
||||
'
|
||||
|
||||
test_expect_success '#20d: core.worktree and core.bare OK when working tree not needed' '
|
||||
@@ -721,8 +721,8 @@ test_expect_success '#22.2: core.worktree and core.bare conflict' '
|
||||
export GIT_DIR &&
|
||||
test_must_fail git status 2>result
|
||||
) &&
|
||||
grep "core.bare and core.worktree" 22/.git/result &&
|
||||
grep "core.bare and core.worktree" 22/result
|
||||
test_grep "core.bare and core.worktree" 22/.git/result &&
|
||||
test_grep "core.bare and core.worktree" 22/result
|
||||
'
|
||||
|
||||
# Case #23: GIT_DIR + GIT_WORK_TREE(+core.worktree) suppresses bareness.
|
||||
@@ -767,7 +767,7 @@ test_expect_success '#28: core.worktree and core.bare conflict (gitfile case)' '
|
||||
cd 28 &&
|
||||
test_must_fail git status
|
||||
) 2>message &&
|
||||
grep "core.bare and core.worktree" message
|
||||
test_grep "core.bare and core.worktree" message
|
||||
'
|
||||
|
||||
# Case #29: GIT_WORK_TREE(+core.worktree) overrides core.bare (gitfile case).
|
||||
@@ -791,7 +791,7 @@ test_expect_success '#30: core.worktree and core.bare conflict (gitfile version)
|
||||
cd 30 &&
|
||||
test_must_fail env GIT_DIR=.git git status 2>result
|
||||
) &&
|
||||
grep "core.bare and core.worktree" 30/result
|
||||
test_grep "core.bare and core.worktree" 30/result
|
||||
'
|
||||
|
||||
# Case #31: GIT_DIR + GIT_WORK_TREE(+core.worktree) suppresses
|
||||
|
||||
@@ -378,7 +378,7 @@ test_expect_success 'ambiguous 40-hex ref' '
|
||||
VAL=$(git commit-tree $TREE </dev/null) &&
|
||||
git update-ref refs/heads/$REF $VAL &&
|
||||
test $(git rev-parse $REF 2>err) = $REF &&
|
||||
grep "refname.*${REF}.*ambiguous" err
|
||||
test_grep "refname.*${REF}.*ambiguous" err
|
||||
'
|
||||
|
||||
test_expect_success 'ambiguous short sha1 ref' '
|
||||
@@ -387,7 +387,7 @@ test_expect_success 'ambiguous short sha1 ref' '
|
||||
VAL=$(git commit-tree $TREE </dev/null) &&
|
||||
git update-ref refs/heads/$REF $VAL &&
|
||||
test $(git rev-parse $REF 2>err) = $VAL &&
|
||||
grep "refname.*${REF}.*ambiguous" err
|
||||
test_grep "refname.*${REF}.*ambiguous" err
|
||||
'
|
||||
|
||||
test_expect_success 'ambiguity errors are not repeated (raw)' '
|
||||
|
||||
@@ -32,7 +32,7 @@ test_expect_success 'rev-parse --local-env-vars' '
|
||||
git rev-parse --local-env-vars >actual &&
|
||||
# we do not want to depend on the complete list here,
|
||||
# so just look for something plausible
|
||||
grep ^GIT_DIR actual
|
||||
test_grep ^GIT_DIR actual
|
||||
'
|
||||
|
||||
test_expect_success 'rev-parse --resolve-git-dir' '
|
||||
|
||||
+9
-9
@@ -79,7 +79,7 @@ test_expect_success 'git hook usage' '
|
||||
test_expect_code 129 git hook run --unknown 2>err &&
|
||||
test_expect_code 129 git hook list &&
|
||||
test_expect_code 129 git hook list -h &&
|
||||
grep "unknown option" err
|
||||
test_grep "unknown option" err
|
||||
'
|
||||
|
||||
test_expect_success 'git hook list: unknown hook name is rejected' '
|
||||
@@ -361,9 +361,9 @@ test_expect_success 'hook can be configured for multiple events' '
|
||||
|
||||
# 'ghi' should be included in both 'pre-commit' and 'test-hook'
|
||||
git hook list pre-commit >actual &&
|
||||
grep "ghi" actual &&
|
||||
test_grep "ghi" actual &&
|
||||
git hook list --allow-unknown-hook-name test-hook >actual &&
|
||||
grep "ghi" actual
|
||||
test_grep "ghi" actual
|
||||
'
|
||||
|
||||
test_expect_success 'git hook list shows hooks from the hookdir' '
|
||||
@@ -569,7 +569,7 @@ test_expect_success 'git hook run a hook with a bad shebang' '
|
||||
# TODO: We should emit the same (or at least a more similar)
|
||||
# error on MINGW (essentially Git for Windows) and all other
|
||||
# platforms.. See the OS-specific code in start_command()
|
||||
grep -E "^(error|fatal): cannot (exec|spawn) .*bad-hooks/test-hook" err
|
||||
test_grep -E "^(error|fatal): cannot (exec|spawn) .*bad-hooks/test-hook" err
|
||||
'
|
||||
|
||||
test_expect_success 'stdin to hooks' '
|
||||
@@ -826,8 +826,8 @@ test_expect_success 'git hook run -j2 warns for hooks not marked parallel=true'
|
||||
# neither hook has parallel=true
|
||||
|
||||
git hook run --allow-unknown-hook-name -j2 test-hook >out 2>err &&
|
||||
grep "hook .hook-1. is not marked as parallel=true" err &&
|
||||
grep "hook .hook-2. is not marked as parallel=true" err
|
||||
test_grep "hook .hook-1. is not marked as parallel=true" err &&
|
||||
test_grep "hook .hook-2. is not marked as parallel=true" err
|
||||
'
|
||||
|
||||
test_expect_success 'hook.jobs=1 config runs hooks in series' '
|
||||
@@ -1068,7 +1068,7 @@ test_expect_success 'hook.jobs=-1 resolves to online_cpus()' '
|
||||
cpus=$(test-tool online-cpus) &&
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.txt" \
|
||||
git hook run --allow-unknown-hook-name test-hook >out 2>err &&
|
||||
grep "\"region_enter\".*\"hook\".*\"test-hook\".*\"max:$cpus\"" trace.txt
|
||||
test_grep "\"region_enter\".*\"hook\".*\"test-hook\".*\"max:$cpus\"" trace.txt
|
||||
'
|
||||
|
||||
test_expect_success 'hook.<event>.jobs=-1 resolves to online_cpus()' '
|
||||
@@ -1081,7 +1081,7 @@ test_expect_success 'hook.<event>.jobs=-1 resolves to online_cpus()' '
|
||||
cpus=$(test-tool online-cpus) &&
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.txt" \
|
||||
git hook run --allow-unknown-hook-name test-hook >out 2>err &&
|
||||
grep "\"region_enter\".*\"hook\".*\"test-hook\".*\"max:$cpus\"" trace.txt
|
||||
test_grep "\"region_enter\".*\"hook\".*\"test-hook\".*\"max:$cpus\"" trace.txt
|
||||
'
|
||||
|
||||
test_expect_success 'git hook run -j-1 resolves to online_cpus()' '
|
||||
@@ -1092,7 +1092,7 @@ test_expect_success 'git hook run -j-1 resolves to online_cpus()' '
|
||||
cpus=$(test-tool online-cpus) &&
|
||||
GIT_TRACE2_EVENT="$(pwd)/trace.txt" \
|
||||
git hook run --allow-unknown-hook-name -j-1 test-hook >out 2>err &&
|
||||
grep "\"region_enter\".*\"hook\".*\"test-hook\".*\"max:$cpus\"" trace.txt
|
||||
test_grep "\"region_enter\".*\"hook\".*\"test-hook\".*\"max:$cpus\"" trace.txt
|
||||
'
|
||||
|
||||
test_expect_success 'hook.jobs rejects values less than -1' '
|
||||
|
||||
@@ -132,8 +132,8 @@ test_expect_success 'overriding --stage=all resets implied --temp' '
|
||||
test_expect_success '--stage=all --no-temp is rejected' '
|
||||
rm -f path* .merge_* actual &&
|
||||
test_must_fail git checkout-index --stage=all --no-temp -- path1 2>err &&
|
||||
grep -v "already exists" err &&
|
||||
grep "options .--stage=all. and .--no-temp. cannot be used together" err
|
||||
test_grep -v "already exists" err &&
|
||||
test_grep "options .--stage=all. and .--no-temp. cannot be used together" err
|
||||
'
|
||||
|
||||
test_expect_success 'checkout some stages/one file to temporary files' '
|
||||
|
||||
@@ -19,7 +19,7 @@ test_expect_success 'checkout ambiguous ref succeeds' '
|
||||
'
|
||||
|
||||
test_expect_success 'checkout produces ambiguity warning' '
|
||||
grep "warning.*ambiguous" stderr
|
||||
test_grep "warning.*ambiguous" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'checkout chooses branch over tag' '
|
||||
@@ -41,7 +41,7 @@ test_expect_success 'checkout vague ref succeeds' '
|
||||
'
|
||||
|
||||
test_expect_success VAGUENESS_SUCCESS 'checkout produces ambiguity warning' '
|
||||
grep "warning.*ambiguous" stderr
|
||||
test_grep "warning.*ambiguous" stderr
|
||||
'
|
||||
|
||||
test_expect_success VAGUENESS_SUCCESS 'checkout chooses branch over tag' '
|
||||
|
||||
@@ -311,7 +311,7 @@ test_expect_success 'loosely defined local base branch is reported correctly' '
|
||||
git checkout loose >actual.raw 2>&1 &&
|
||||
sed -e "s/loose/BRANCHNAME/g" <actual.raw >actual &&
|
||||
status_uno_is_clean &&
|
||||
grep BRANCHNAME actual &&
|
||||
test_grep BRANCHNAME actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
@@ -324,7 +324,7 @@ test_expect_success 'reject when arg could be part of dwim branch' '
|
||||
echo bar >dwim-arg &&
|
||||
test_must_fail git checkout dwim-arg &&
|
||||
test_must_fail git rev-parse refs/heads/dwim-arg -- &&
|
||||
grep bar dwim-arg
|
||||
test_grep bar dwim-arg
|
||||
'
|
||||
|
||||
test_expect_success 'disambiguate dwim branch and checkout path (1)' '
|
||||
@@ -334,7 +334,7 @@ test_expect_success 'disambiguate dwim branch and checkout path (1)' '
|
||||
echo bar >dwim-arg1 &&
|
||||
git checkout -- dwim-arg1 &&
|
||||
test_must_fail git rev-parse refs/heads/dwim-arg1 -- &&
|
||||
grep foo dwim-arg1
|
||||
test_grep foo dwim-arg1
|
||||
'
|
||||
|
||||
test_expect_success 'disambiguate dwim branch and checkout path (2)' '
|
||||
@@ -344,7 +344,7 @@ test_expect_success 'disambiguate dwim branch and checkout path (2)' '
|
||||
echo bar >dwim-arg2 &&
|
||||
git checkout dwim-arg2 -- &&
|
||||
git rev-parse refs/heads/dwim-arg2 -- &&
|
||||
grep bar dwim-arg2
|
||||
test_grep bar dwim-arg2
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -122,7 +122,7 @@ test_expect_success 'add records checkout -m undoes' '
|
||||
check_resolve_undo removed &&
|
||||
echo the index and the work tree is unmerged again &&
|
||||
git diff >actual &&
|
||||
grep "^++<<<<<<<" actual
|
||||
test_grep "^++<<<<<<<" actual
|
||||
'
|
||||
|
||||
test_expect_success 'unmerge with plumbing' '
|
||||
@@ -173,7 +173,7 @@ test_expect_success 'rerere and rerere forget' '
|
||||
test -f .git/rr-cache/$rerere_id/postimage &&
|
||||
git checkout -m fi/le &&
|
||||
echo resurrect the conflict &&
|
||||
grep "^=======" fi/le &&
|
||||
test_grep "^=======" fi/le &&
|
||||
echo reresolve the conflict &&
|
||||
git rerere &&
|
||||
test "z$(cat fi/le)" = zdifferent &&
|
||||
@@ -199,7 +199,7 @@ test_expect_success 'rerere and rerere forget (subdirectory)' '
|
||||
test -f .git/rr-cache/$rerere_id/postimage &&
|
||||
(cd fi && git checkout -m le) &&
|
||||
echo resurrect the conflict &&
|
||||
grep "^=======" fi/le &&
|
||||
test_grep "^=======" fi/le &&
|
||||
echo reresolve the conflict &&
|
||||
(cd fi && git rerere) &&
|
||||
test "z$(cat fi/le)" = zdifferent &&
|
||||
|
||||
+3
-3
@@ -34,13 +34,13 @@ test_expect_success 'switch and detach' '
|
||||
|
||||
test_expect_success 'suggestion to detach' '
|
||||
test_must_fail git switch main^{commit} 2>stderr &&
|
||||
grep "try again with the --detach option" stderr
|
||||
test_grep "try again with the --detach option" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'suggestion to detach is suppressed with advice.suggestDetachingHead=false' '
|
||||
test_config advice.suggestDetachingHead false &&
|
||||
test_must_fail git switch main^{commit} 2>stderr &&
|
||||
! grep "try again with the --detach option" stderr
|
||||
test_grep ! "try again with the --detach option" stderr
|
||||
'
|
||||
|
||||
test_expect_success 'switch and detach current branch' '
|
||||
@@ -76,7 +76,7 @@ test_expect_success 'new orphan branch from empty' '
|
||||
git switch --orphan new-orphan &&
|
||||
test_commit orphan &&
|
||||
git cat-file commit refs/heads/new-orphan >commit &&
|
||||
! grep ^parent commit &&
|
||||
test_grep ! ^parent commit &&
|
||||
git ls-files >tracked-files &&
|
||||
echo orphan.t >expected &&
|
||||
test_cmp expected tracked-files
|
||||
|
||||
+1
-1
@@ -216,7 +216,7 @@ test_expect_success 'restore with merge options are incompatible with certain op
|
||||
"--staged --worktree --conflict=zdiff3"
|
||||
do
|
||||
test_must_fail git restore $opts . 2>err &&
|
||||
grep "cannot be used" err || return
|
||||
test_grep "cannot be used" err || return
|
||||
done
|
||||
'
|
||||
|
||||
|
||||
@@ -200,13 +200,13 @@ test_expect_success 'parallel checkout respects --[no]-force' '
|
||||
# We expect 0 workers because there is nothing to be done
|
||||
test_checkout_workers 0 git checkout HEAD &&
|
||||
test_path_is_file D &&
|
||||
grep changed D &&
|
||||
grep changed F.t &&
|
||||
test_grep changed D &&
|
||||
test_grep changed F.t &&
|
||||
|
||||
test_checkout_workers 2 git checkout --force HEAD &&
|
||||
test_path_is_dir D &&
|
||||
grep D/F D/F.t &&
|
||||
grep F F.t
|
||||
test_grep D/F D/F.t &&
|
||||
test_grep F F.t
|
||||
)
|
||||
'
|
||||
|
||||
@@ -224,8 +224,8 @@ test_expect_success SYMLINKS 'parallel checkout checks for symlinks in leading d
|
||||
|
||||
test_checkout_workers 2 git checkout --force HEAD &&
|
||||
! test -h D &&
|
||||
grep D/A D/A.t &&
|
||||
grep D/B D/B.t
|
||||
test_grep D/A D/A.t &&
|
||||
test_grep D/B D/B.t
|
||||
)
|
||||
'
|
||||
|
||||
@@ -268,7 +268,7 @@ test_expect_success '"git checkout ." report should not include failed entries'
|
||||
# - missing-delay.a: the delay filter will drop this path
|
||||
# - parallel-*.a: the blob will be missing
|
||||
#
|
||||
grep "Updated 3 paths from the index" err &&
|
||||
test_grep "Updated 3 paths from the index" err &&
|
||||
test_stdout_line_count = 3 ls *.b &&
|
||||
! ls *.a
|
||||
)
|
||||
|
||||
@@ -78,8 +78,8 @@ test_expect_success CASE_INSENSITIVE_FS 'worker detects dirname collision' '
|
||||
|
||||
# Check that it used the right number of workers and detected the collisions
|
||||
test_workers_in_event_trace 2 trace &&
|
||||
grep "category.:.pcheckout.,.key.:.collision/dirname.,.value.:.A/B.}" trace &&
|
||||
grep "category.:.pcheckout.,.key.:.collision/dirname.,.value.:.A/C.}" trace
|
||||
test_grep "category.:.pcheckout.,.key.:.collision/dirname.,.value.:.A/B.}" trace &&
|
||||
test_grep "category.:.pcheckout.,.key.:.collision/dirname.,.value.:.A/C.}" trace
|
||||
'
|
||||
|
||||
test_expect_success SYMLINKS,CASE_INSENSITIVE_FS 'do not follow symlinks colliding with leading dir' '
|
||||
@@ -115,11 +115,11 @@ test_expect_success CASE_INSENSITIVE_FS 'collision report on clone (w/ racy file
|
||||
set_checkout_config 2 0 &&
|
||||
test_checkout_workers 2 git clone . clone-repo 2>stderr &&
|
||||
|
||||
grep FILE_X stderr &&
|
||||
grep FILE_x stderr &&
|
||||
grep file_X stderr &&
|
||||
grep file_x stderr &&
|
||||
grep "the following paths have collided" stderr
|
||||
test_grep FILE_X stderr &&
|
||||
test_grep FILE_x stderr &&
|
||||
test_grep file_X stderr &&
|
||||
test_grep file_x stderr &&
|
||||
test_grep "the following paths have collided" stderr
|
||||
'
|
||||
|
||||
# This test ensures that the collision report code is correctly looking for
|
||||
@@ -148,11 +148,11 @@ test_expect_success CASE_INSENSITIVE_FS,!MINGW,!CYGWIN \
|
||||
test_checkout_workers 2 \
|
||||
git -c core.ignoreCase=false clone . clone-repo 2>stderr &&
|
||||
|
||||
grep FILE_X stderr &&
|
||||
grep FILE_x stderr &&
|
||||
grep file_X stderr &&
|
||||
grep file_x stderr &&
|
||||
grep "the following paths have collided" stderr &&
|
||||
test_grep FILE_X stderr &&
|
||||
test_grep FILE_x stderr &&
|
||||
test_grep file_X stderr &&
|
||||
test_grep file_x stderr &&
|
||||
test_grep "the following paths have collided" stderr &&
|
||||
|
||||
# Check that only "file_x" was filtered
|
||||
echo file_x >expected.log &&
|
||||
|
||||
@@ -28,8 +28,8 @@ test_expect_success 'parallel-checkout with ident' '
|
||||
rm A B &&
|
||||
test_checkout_workers 2 git reset --hard &&
|
||||
hexsz=$(test_oid hexsz) &&
|
||||
grep -E "\\\$Id: [0-9a-f]{$hexsz} \\\$" A &&
|
||||
grep "\\\$Id\\\$" B
|
||||
test_grep -E "\\\$Id: [0-9a-f]{$hexsz} \\\$" A &&
|
||||
test_grep "\\\$Id\\\$" B
|
||||
)
|
||||
'
|
||||
|
||||
@@ -175,15 +175,15 @@ test_expect_success 'parallel-checkout and delayed checkout' '
|
||||
verify_checkout delayed &&
|
||||
|
||||
# Check that the *.d files got to the delay queue and were filtered
|
||||
grep "smudge W.d .* \[DELAYED\]" delayed.log &&
|
||||
grep "smudge X.d .* \[DELAYED\]" delayed.log &&
|
||||
test_grep "smudge W.d .* \[DELAYED\]" delayed.log &&
|
||||
test_grep "smudge X.d .* \[DELAYED\]" delayed.log &&
|
||||
test_cmp delayed/W.d original &&
|
||||
test_cmp delayed/X.d original &&
|
||||
|
||||
# Check that the parallel-eligible entries went to the right queue and
|
||||
# were not filtered
|
||||
! grep "smudge Y .* \[DELAYED\]" delayed.log &&
|
||||
! grep "smudge Z .* \[DELAYED\]" delayed.log &&
|
||||
test_grep ! "smudge Y .* \[DELAYED\]" delayed.log &&
|
||||
test_grep ! "smudge Z .* \[DELAYED\]" delayed.log &&
|
||||
test_cmp delayed/Y original &&
|
||||
test_cmp delayed/Z original
|
||||
'
|
||||
|
||||
@@ -63,9 +63,9 @@ test_expect_success '--unmerged --refresh' '
|
||||
git update-index --unmerged --refresh &&
|
||||
echo 2 >two &&
|
||||
test_must_fail git update-index --unmerged --refresh >actual &&
|
||||
grep two actual &&
|
||||
! grep one actual &&
|
||||
! grep three actual
|
||||
test_grep two actual &&
|
||||
test_grep ! one actual &&
|
||||
test_grep ! three actual
|
||||
'
|
||||
|
||||
test_expect_success '--ignore-submodules --refresh (1)' '
|
||||
|
||||
@@ -241,7 +241,7 @@ test_expect_success 'add -u avoids rename pairing on unmerged paths' '
|
||||
test_expect_success '"add -u non-existent" should fail' '
|
||||
test_must_fail git add -u non-existent &&
|
||||
git ls-files >actual &&
|
||||
! grep "non-existent" actual
|
||||
test_grep ! "non-existent" actual
|
||||
'
|
||||
|
||||
test_expect_success '"commit -a" implies "add -u" if index becomes empty' '
|
||||
|
||||
@@ -57,7 +57,7 @@ test_expect_success 'intent to add does not clobber existing paths' '
|
||||
git add -N file elif &&
|
||||
empty=$(git hash-object --stdin </dev/null) &&
|
||||
git ls-files -s >actual &&
|
||||
! grep "$empty" actual
|
||||
test_grep ! "$empty" actual
|
||||
'
|
||||
|
||||
test_expect_success 'i-t-a entry is simply ignored' '
|
||||
@@ -124,7 +124,7 @@ test_expect_success 'cache-tree does not ignore dir that has i-t-a entries' '
|
||||
git add -N 2/1 &&
|
||||
git commit -m committed &&
|
||||
git ls-tree -r HEAD >actual &&
|
||||
grep 2/2 actual
|
||||
test_grep 2/2 actual
|
||||
)
|
||||
'
|
||||
|
||||
@@ -312,7 +312,7 @@ test_expect_success 'apply --intent-to-add' '
|
||||
echo new >new-ita &&
|
||||
git add -N new-ita &&
|
||||
git diff >expected &&
|
||||
grep "new file" expected &&
|
||||
test_grep "new file" expected &&
|
||||
git reset --hard &&
|
||||
git apply --intent-to-add expected &&
|
||||
git diff >actual &&
|
||||
|
||||
+12
-12
@@ -122,7 +122,7 @@ test_expect_success 'die the same branch is already checked out' '
|
||||
(
|
||||
cd here &&
|
||||
test_must_fail git checkout newmain 2>actual &&
|
||||
grep "already used by worktree at" actual
|
||||
test_grep "already used by worktree at" actual
|
||||
)
|
||||
'
|
||||
|
||||
@@ -139,7 +139,7 @@ test_expect_success 'refuse to reset a branch in use elsewhere' '
|
||||
git rev-parse --verify refs/heads/newmain >new.branch &&
|
||||
git rev-parse --verify HEAD >new.head &&
|
||||
|
||||
grep "already used by worktree at" error &&
|
||||
test_grep "already used by worktree at" error &&
|
||||
test_cmp old.branch new.branch &&
|
||||
test_cmp old.head new.head &&
|
||||
|
||||
@@ -328,7 +328,7 @@ test_wt_add_excl () {
|
||||
local opts="$*" &&
|
||||
test_expect_success "'worktree add' with '$opts' has mutually exclusive options" '
|
||||
test_must_fail git worktree add $opts 2>actual &&
|
||||
grep -E "fatal:( options)? .* cannot be used together" actual
|
||||
test_grep -E "fatal:( options)? .* cannot be used together" actual
|
||||
'
|
||||
}
|
||||
|
||||
@@ -436,13 +436,13 @@ test_wt_add_orphan_hint () {
|
||||
(cd repo && test_commit commit) &&
|
||||
git -C repo switch --orphan noref &&
|
||||
test_must_fail git -C repo worktree add $opts foobar/ 2>actual &&
|
||||
! grep "error: unknown switch" actual &&
|
||||
grep "hint: If you meant to create a worktree containing a new unborn branch" actual &&
|
||||
test_grep ! "error: unknown switch" actual &&
|
||||
test_grep "hint: If you meant to create a worktree containing a new unborn branch" actual &&
|
||||
if [ $use_branch -eq 1 ]
|
||||
then
|
||||
grep -E "^hint: +git worktree add --orphan -b [^ ]+ [^ ]+$" actual
|
||||
test_grep -E "^hint: +git worktree add --orphan -b [^ ]+ [^ ]+$" actual
|
||||
else
|
||||
grep -E "^hint: +git worktree add --orphan [^ ]+$" actual
|
||||
test_grep -E "^hint: +git worktree add --orphan [^ ]+$" actual
|
||||
fi
|
||||
|
||||
'
|
||||
@@ -457,8 +457,8 @@ test_expect_success "'worktree add' doesn't show orphan hint in bad/orphan HEAD
|
||||
git init repo &&
|
||||
(cd repo && test_commit commit) &&
|
||||
test_must_fail git -C repo worktree add --quiet foobar_branch foobar/ 2>actual &&
|
||||
! grep "error: unknown switch" actual &&
|
||||
! grep "hint: If you meant to create a worktree containing a new unborn branch" actual
|
||||
test_grep ! "error: unknown switch" actual &&
|
||||
test_grep ! "hint: If you meant to create a worktree containing a new unborn branch" actual
|
||||
'
|
||||
|
||||
test_expect_success 'local clone from linked checkout' '
|
||||
@@ -469,7 +469,7 @@ test_expect_success 'local clone from linked checkout' '
|
||||
test_expect_success 'local clone --shared from linked checkout' '
|
||||
git -C bare worktree add --detach ../baretree &&
|
||||
git clone --local --shared baretree bare-clone &&
|
||||
grep /bare/ bare-clone/.git/objects/info/alternates
|
||||
test_grep /bare/ bare-clone/.git/objects/info/alternates
|
||||
'
|
||||
|
||||
test_expect_success '"add" worktree with --no-checkout' '
|
||||
@@ -491,7 +491,7 @@ test_expect_success 'put a worktree under rebase' '
|
||||
set_fake_editor &&
|
||||
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
|
||||
git worktree list >actual &&
|
||||
grep "under-rebase.*detached HEAD" actual
|
||||
test_grep "under-rebase.*detached HEAD" actual
|
||||
)
|
||||
'
|
||||
|
||||
@@ -533,7 +533,7 @@ test_expect_success 'checkout a branch under bisect' '
|
||||
git bisect bad &&
|
||||
git bisect good HEAD~2 &&
|
||||
git worktree list >actual &&
|
||||
grep "under-bisect.*detached HEAD" actual &&
|
||||
test_grep "under-bisect.*detached HEAD" actual &&
|
||||
test_must_fail git worktree add new-bisect under-bisect &&
|
||||
test_path_is_missing new-bisect
|
||||
)
|
||||
|
||||
@@ -101,8 +101,8 @@ test_expect_success '"list" all worktrees with locked annotation' '
|
||||
git worktree lock locked &&
|
||||
test_when_finished "git worktree unlock locked" &&
|
||||
git worktree list >out &&
|
||||
grep "/locked *[0-9a-f].* locked$" out &&
|
||||
! grep "/unlocked *[0-9a-f].* locked$" out
|
||||
test_grep "/locked *[0-9a-f].* locked$" out &&
|
||||
test_grep ! "/unlocked *[0-9a-f].* locked$" out
|
||||
'
|
||||
|
||||
test_expect_success '"list" all worktrees --porcelain with locked' '
|
||||
@@ -143,8 +143,8 @@ test_expect_success '"list" all worktrees with prunable annotation' '
|
||||
git worktree add --detach unprunable &&
|
||||
rm -rf prunable &&
|
||||
git worktree list >out &&
|
||||
grep "/prunable *[0-9a-f].* prunable$" out &&
|
||||
! grep "/unprunable *[0-9a-f].* prunable$" out
|
||||
test_grep "/prunable *[0-9a-f].* prunable$" out &&
|
||||
test_grep ! "/unprunable *[0-9a-f].* prunable$" out
|
||||
'
|
||||
|
||||
test_expect_success '"list" all worktrees --porcelain with prunable' '
|
||||
@@ -162,8 +162,8 @@ test_expect_success '"list" all worktrees with prunable consistent with "prune"'
|
||||
git worktree add --detach unprunable &&
|
||||
rm -rf prunable &&
|
||||
git worktree list >out &&
|
||||
grep "/prunable *[0-9a-f].* prunable$" out &&
|
||||
! grep "/unprunable *[0-9a-f].* unprunable$" out &&
|
||||
test_grep "/prunable *[0-9a-f].* prunable$" out &&
|
||||
test_grep ! "/unprunable *[0-9a-f].* unprunable$" out &&
|
||||
git worktree prune --verbose 2>out &&
|
||||
test_grep "^Removing worktrees/prunable" out &&
|
||||
test_grep ! "^Removing worktrees/unprunable" out
|
||||
@@ -184,7 +184,7 @@ test_expect_success '"list" all worktrees --verbose with locked' '
|
||||
echo "$(git -C locked2 rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
|
||||
printf "\tlocked: with reason\n" >>expect &&
|
||||
git worktree list --verbose >out &&
|
||||
grep "/locked1 *[0-9a-f].* locked$" out &&
|
||||
test_grep "/locked1 *[0-9a-f].* locked$" out &&
|
||||
sed -n "s/ */ /g;/\/locked2 *[0-9a-f].*$/,/locked: .*$/p" <out >actual &&
|
||||
test_cmp actual expect
|
||||
'
|
||||
@@ -266,7 +266,7 @@ test_expect_success 'broken main worktree still at the top' '
|
||||
test_cmp ../expected actual &&
|
||||
git worktree list >out &&
|
||||
head -n 1 out >actual.2 &&
|
||||
grep -F "(error)" actual.2
|
||||
test_grep -F "(error)" actual.2
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
@@ -75,8 +75,8 @@ test_expect_success 'move worktree' '
|
||||
git worktree move source destination &&
|
||||
test_path_is_missing source &&
|
||||
git worktree list --porcelain >out &&
|
||||
grep "^worktree.*/destination$" out &&
|
||||
! grep "^worktree.*/source$" out &&
|
||||
test_grep "^worktree.*/destination$" out &&
|
||||
test_grep ! "^worktree.*/source$" out &&
|
||||
git -C destination log --format=%s >actual2 &&
|
||||
echo init >expected2 &&
|
||||
test_cmp expected2 actual2
|
||||
@@ -92,7 +92,7 @@ test_expect_success 'move worktree to another dir' '
|
||||
test_when_finished "git worktree move some-dir/destination destination" &&
|
||||
test_path_is_missing destination &&
|
||||
git worktree list --porcelain >out &&
|
||||
grep "^worktree.*/some-dir/destination$" out &&
|
||||
test_grep "^worktree.*/some-dir/destination$" out &&
|
||||
git -C some-dir/destination log --format=%s >actual2 &&
|
||||
echo init >expected2 &&
|
||||
test_cmp expected2 actual2
|
||||
|
||||
@@ -36,7 +36,7 @@ test_expect_success 'add superproject worktree' '
|
||||
|
||||
test_expect_failure 'submodule is checked out just after worktree add' '
|
||||
git -C worktree diff --submodule main"^!" >out &&
|
||||
grep "file1 updated" out
|
||||
test_grep "file1 updated" out
|
||||
'
|
||||
|
||||
test_expect_success 'add superproject worktree and initialize submodules' '
|
||||
@@ -46,7 +46,7 @@ test_expect_success 'add superproject worktree and initialize submodules' '
|
||||
|
||||
test_expect_success 'submodule is checked out just after submodule update in linked worktree' '
|
||||
git -C worktree-submodule-update diff --submodule main"^!" >out &&
|
||||
grep "file1 updated" out
|
||||
test_grep "file1 updated" out
|
||||
'
|
||||
|
||||
test_expect_success 'add superproject worktree and manually add submodule worktree' '
|
||||
@@ -56,7 +56,7 @@ test_expect_success 'add superproject worktree and manually add submodule worktr
|
||||
|
||||
test_expect_success 'submodule is checked out after manually adding submodule worktree' '
|
||||
git -C linked_submodule diff --submodule main"^!" >out &&
|
||||
grep "file1 updated" out
|
||||
test_grep "file1 updated" out
|
||||
'
|
||||
|
||||
test_expect_success 'checkout --recurse-submodules uses $GIT_DIR for submodules in a linked worktree' '
|
||||
|
||||
+13
-13
@@ -41,10 +41,10 @@ test_expect_success 'refuse to overwrite: checked out in worktree' '
|
||||
for i in 1 2 3 4
|
||||
do
|
||||
test_must_fail git branch -f wt-$i HEAD 2>err &&
|
||||
grep "cannot force update the branch" err &&
|
||||
test_grep "cannot force update the branch" err &&
|
||||
|
||||
test_must_fail git branch -D wt-$i 2>err &&
|
||||
grep "cannot delete branch" err || return 1
|
||||
test_grep "cannot delete branch" err || return 1
|
||||
done
|
||||
'
|
||||
|
||||
@@ -57,7 +57,7 @@ test_expect_success 'refuse to overwrite: worktree in bisect' '
|
||||
git -C wt-4 bisect good wt-1 &&
|
||||
|
||||
test_must_fail git branch -f wt-4 HEAD 2>err &&
|
||||
grep "cannot force update the branch '\''wt-4'\'' used by worktree at.*wt-4" err
|
||||
test_grep "cannot force update the branch '\''wt-4'\'' used by worktree at.*wt-4" err
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to overwrite: worktree in rebase (apply)' '
|
||||
@@ -67,7 +67,7 @@ test_expect_success 'refuse to overwrite: worktree in rebase (apply)' '
|
||||
test_must_fail git -C wt-2 rebase --apply conflict-2 &&
|
||||
|
||||
test_must_fail git branch -f wt-2 HEAD 2>err &&
|
||||
grep "cannot force update the branch '\''wt-2'\'' used by worktree at.*wt-2" err
|
||||
test_grep "cannot force update the branch '\''wt-2'\'' used by worktree at.*wt-2" err
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to overwrite: worktree in rebase (merge)' '
|
||||
@@ -77,7 +77,7 @@ test_expect_success 'refuse to overwrite: worktree in rebase (merge)' '
|
||||
test_must_fail git -C wt-2 rebase conflict-2 &&
|
||||
|
||||
test_must_fail git branch -f wt-2 HEAD 2>err &&
|
||||
grep "cannot force update the branch '\''wt-2'\'' used by worktree at.*wt-2" err
|
||||
test_grep "cannot force update the branch '\''wt-2'\'' used by worktree at.*wt-2" err
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to overwrite: worktree in rebase with --update-refs' '
|
||||
@@ -89,19 +89,19 @@ test_expect_success 'refuse to overwrite: worktree in rebase with --update-refs'
|
||||
for i in 3 4
|
||||
do
|
||||
test_must_fail git branch -f can-be-updated HEAD 2>err &&
|
||||
grep "cannot force update the branch '\''can-be-updated'\'' used by worktree at.*wt-3" err ||
|
||||
test_grep "cannot force update the branch '\''can-be-updated'\'' used by worktree at.*wt-3" err ||
|
||||
return 1
|
||||
done
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to fetch over ref: checked out' '
|
||||
test_must_fail git fetch server +refs/heads/wt-3:refs/heads/wt-3 2>err &&
|
||||
grep "refusing to fetch into branch '\''refs/heads/wt-3'\''" err &&
|
||||
test_grep "refusing to fetch into branch '\''refs/heads/wt-3'\''" err &&
|
||||
|
||||
# General fetch into refs/heads/ will fail on first ref,
|
||||
# so use a generic error message check.
|
||||
test_must_fail git fetch server +refs/heads/*:refs/heads/* 2>err &&
|
||||
grep "refusing to fetch into branch" err
|
||||
test_grep "refusing to fetch into branch" err
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to fetch over ref: worktree in bisect' '
|
||||
@@ -113,7 +113,7 @@ test_expect_success 'refuse to fetch over ref: worktree in bisect' '
|
||||
git -C wt-4 bisect good wt-1 &&
|
||||
|
||||
test_must_fail git fetch server +refs/heads/wt-4:refs/heads/wt-4 2>err &&
|
||||
grep "refusing to fetch into branch" err
|
||||
test_grep "refusing to fetch into branch" err
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to fetch over ref: worktree in rebase' '
|
||||
@@ -123,7 +123,7 @@ test_expect_success 'refuse to fetch over ref: worktree in rebase' '
|
||||
test_must_fail git -C wt-3 rebase conflict-3 &&
|
||||
|
||||
test_must_fail git fetch server +refs/heads/wt-3:refs/heads/wt-3 2>err &&
|
||||
grep "refusing to fetch into branch" err
|
||||
test_grep "refusing to fetch into branch" err
|
||||
'
|
||||
|
||||
test_expect_success 'refuse to overwrite when in error states' '
|
||||
@@ -149,7 +149,7 @@ test_expect_success 'refuse to overwrite when in error states' '
|
||||
for i in 1 2
|
||||
do
|
||||
test_must_fail git branch -f fake-$i HEAD 2>err &&
|
||||
grep "cannot force update the branch '\''fake-$i'\'' used by worktree at" err ||
|
||||
test_grep "cannot force update the branch '\''fake-$i'\'' used by worktree at" err ||
|
||||
return 1
|
||||
done
|
||||
'
|
||||
@@ -161,13 +161,13 @@ test_expect_success 'refuse to overwrite during rebase with --update-refs' '
|
||||
(
|
||||
set_cat_todo_editor &&
|
||||
test_must_fail git rebase -i --update-refs HEAD~3 >todo &&
|
||||
! grep "update-refs" todo
|
||||
test_grep ! "update-refs" todo
|
||||
) &&
|
||||
git branch -f allow-update HEAD~2 &&
|
||||
(
|
||||
set_cat_todo_editor &&
|
||||
test_must_fail git rebase -i --update-refs HEAD~3 >todo &&
|
||||
grep "update-ref refs/heads/allow-update" todo
|
||||
test_grep "update-ref refs/heads/allow-update" todo
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ test_expect_success 'reset --merge will preserve untracked files/dirs' '
|
||||
|
||||
test_must_fail git reset --merge work 2>error &&
|
||||
test_cmp expect foo.t/file &&
|
||||
grep "Updating .foo.t. would lose untracked files" error
|
||||
test_grep "Updating .foo.t. would lose untracked files" error
|
||||
)
|
||||
'
|
||||
|
||||
@@ -66,7 +66,7 @@ test_expect_success 'reset --keep will preserve untracked files/dirs' '
|
||||
|
||||
test_must_fail git reset --merge work 2>error &&
|
||||
test_cmp expect foo.t/file &&
|
||||
grep "Updating.*foo.t.*would lose untracked files" error
|
||||
test_grep "Updating.*foo.t.*would lose untracked files" error
|
||||
)
|
||||
'
|
||||
|
||||
@@ -214,7 +214,7 @@ test_expect_success 'git am --abort and untracked dir vs. unmerged file' '
|
||||
|
||||
test_must_fail git am --abort 2>errors &&
|
||||
test_path_is_dir filler &&
|
||||
grep "Updating .filler. would lose untracked files in it" errors
|
||||
test_grep "Updating .filler. would lose untracked files in it" errors
|
||||
)
|
||||
'
|
||||
|
||||
@@ -237,7 +237,7 @@ test_expect_success 'git am --skip and untracked dir vs deleted file' '
|
||||
# Change our mind about resolutions, just skip this patch
|
||||
test_must_fail git am --skip 2>errors &&
|
||||
test_path_is_dir newfile &&
|
||||
grep "Updating .newfile. would lose untracked files in it" errors
|
||||
test_grep "Updating .newfile. would lose untracked files in it" errors
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ test_expect_success 'merge fails if cwd needs to be removed; recursive friendly'
|
||||
) &&
|
||||
|
||||
test_path_is_dir dirORfile &&
|
||||
grep "Refusing to remove the current working directory" error
|
||||
test_grep "Refusing to remove the current working directory" error
|
||||
'
|
||||
|
||||
test_expect_success 'merge fails if cwd needs to be removed' '
|
||||
@@ -179,7 +179,7 @@ test_incidental_untracked_dir_removal () {
|
||||
test_expect_success 'clean does not remove cwd incidentally' '
|
||||
test_incidental_untracked_dir_removal \
|
||||
git -C .. clean -fd -e warnings . >warnings &&
|
||||
grep "Refusing to remove current working directory" warnings
|
||||
test_grep "Refusing to remove current working directory" warnings
|
||||
'
|
||||
|
||||
test_expect_success 'stash does not remove cwd incidentally' '
|
||||
|
||||
@@ -161,21 +161,21 @@ test_expect_success 'trailing slash in exclude forces directory match (1)' '
|
||||
|
||||
>two &&
|
||||
git ls-files --others --exclude=two/ >output &&
|
||||
grep "^two" output
|
||||
test_grep "^two" output
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'trailing slash in exclude forces directory match (2)' '
|
||||
|
||||
git ls-files --others --exclude=one/a.1/ >output &&
|
||||
grep "^one/a.1" output
|
||||
test_grep "^one/a.1" output
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'negated exclude matches can override previous ones' '
|
||||
|
||||
git ls-files --others --exclude="a.*" --exclude="!a.1" >output &&
|
||||
grep "^a.1" output
|
||||
test_grep "^a.1" output
|
||||
'
|
||||
|
||||
test_expect_success 'excluded directory overrides content patterns' '
|
||||
|
||||
@@ -302,7 +302,7 @@ test_expect_success '--recurse-submodules does not support --error-unmatch' '
|
||||
test_expect_success '--recurse-submodules parses submodule repo config' '
|
||||
test_config -C submodule index.sparse "invalid non-boolean value" &&
|
||||
test_must_fail git ls-files --recurse-submodules 2>err &&
|
||||
grep "bad boolean config value" err
|
||||
test_grep "bad boolean config value" err
|
||||
'
|
||||
|
||||
test_expect_success '--recurse-submodules parses submodule worktree config' '
|
||||
@@ -310,7 +310,7 @@ test_expect_success '--recurse-submodules parses submodule worktree config' '
|
||||
test_config -C submodule --worktree index.sparse "invalid non-boolean value" &&
|
||||
|
||||
test_must_fail git ls-files --recurse-submodules 2>err &&
|
||||
grep "bad boolean config value" err
|
||||
test_grep "bad boolean config value" err
|
||||
'
|
||||
|
||||
test_expect_success '--recurse-submodules submodules ignore super project worktreeConfig extension' '
|
||||
@@ -329,7 +329,7 @@ test_expect_success '--recurse-submodules submodules ignore super project worktr
|
||||
# With extensions.worktreeConfig disabled in the submodule, the invalid
|
||||
# worktree config is not picked up.
|
||||
git ls-files --recurse-submodules 2>err &&
|
||||
! grep "bad boolean config value" err
|
||||
test_grep ! "bad boolean config value" err
|
||||
'
|
||||
|
||||
test_incompatible_with_recurse_submodules () {
|
||||
|
||||
+6
-6
@@ -204,7 +204,7 @@ test_expect_success 'git branch -M baz bam should succeed when baz is checked ou
|
||||
|
||||
test_expect_success 'git branch -M baz bam should add entries to HEAD reflog' '
|
||||
git reflog show HEAD >actual &&
|
||||
grep "HEAD@{0}: Branch: renamed refs/heads/baz to refs/heads/bam" actual
|
||||
test_grep "HEAD@{0}: Branch: renamed refs/heads/baz to refs/heads/bam" actual
|
||||
'
|
||||
|
||||
test_expect_success 'git branch -M should leave orphaned HEAD alone' '
|
||||
@@ -339,7 +339,7 @@ test_expect_success 'git branch -d on orphan HEAD (unmerged)' '
|
||||
test_when_finished "git branch -D to-delete" &&
|
||||
git branch to-delete main &&
|
||||
test_must_fail git branch -d to-delete 2>err &&
|
||||
grep "not fully merged" err
|
||||
test_grep "not fully merged" err
|
||||
'
|
||||
|
||||
test_expect_success 'git branch -d on orphan HEAD (unmerged, graph)' '
|
||||
@@ -350,7 +350,7 @@ test_expect_success 'git branch -d on orphan HEAD (unmerged, graph)' '
|
||||
test_when_finished "rm -rf .git/objects/commit-graph*" &&
|
||||
git commit-graph write --reachable &&
|
||||
test_must_fail git branch -d to-delete 2>err &&
|
||||
grep "not fully merged" err
|
||||
test_grep "not fully merged" err
|
||||
'
|
||||
|
||||
test_expect_success 'git branch -v -d t should work' '
|
||||
@@ -712,7 +712,7 @@ test_expect_success 'git branch -C c1 c2 should succeed when c1 is checked out'
|
||||
test_expect_success 'git branch -C c1 c2 should never touch HEAD' '
|
||||
msg="Branch: copied refs/heads/c1 to refs/heads/c2" &&
|
||||
git reflog HEAD >actual &&
|
||||
! grep "$msg$" actual
|
||||
test_grep ! "$msg$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'git branch -C main should work when main is checked out' '
|
||||
@@ -930,7 +930,7 @@ test_expect_success 'deleting currently checked out branch fails' '
|
||||
git worktree add -b my7 my7 &&
|
||||
test_must_fail git -C my7 branch -d my7 &&
|
||||
test_must_fail git branch -d my7 2>actual &&
|
||||
grep "^error: cannot delete branch .my7. used by worktree at " actual &&
|
||||
test_grep "^error: cannot delete branch .my7. used by worktree at " actual &&
|
||||
rm -r my7 &&
|
||||
git worktree prune
|
||||
'
|
||||
@@ -941,7 +941,7 @@ test_expect_success 'deleting in-use branch fails' '
|
||||
git -C my7 bisect start HEAD HEAD~2 &&
|
||||
test_must_fail git -C my7 branch -d my7 &&
|
||||
test_must_fail git branch -d my7 2>actual &&
|
||||
grep "^error: cannot delete branch .my7. used by worktree at " actual &&
|
||||
test_grep "^error: cannot delete branch .my7. used by worktree at " actual &&
|
||||
rm -r my7 &&
|
||||
git worktree prune
|
||||
'
|
||||
|
||||
@@ -123,13 +123,13 @@ test_expect_success 'show-branch --sparse' '
|
||||
git commit --allow-empty -m "another" &&
|
||||
|
||||
git show-branch --sparse >out &&
|
||||
grep "merge 1 and 10 to make A" out &&
|
||||
test_grep "merge 1 and 10 to make A" out &&
|
||||
|
||||
git show-branch >out &&
|
||||
! grep "merge 1 and 10 to make A" out &&
|
||||
test_grep ! "merge 1 and 10 to make A" out &&
|
||||
|
||||
git show-branch --no-sparse >out &&
|
||||
! grep "merge 1 and 10 to make A" out
|
||||
test_grep ! "merge 1 and 10 to make A" out
|
||||
'
|
||||
|
||||
test_expect_success 'setup show branch --list' '
|
||||
@@ -189,7 +189,7 @@ while read combo
|
||||
do
|
||||
test_expect_success "show-branch $combo (should fail)" '
|
||||
test_must_fail git show-branch $combo 2>error &&
|
||||
grep -e "cannot be used together" -e "usage:" error
|
||||
test_grep -e "cannot be used together" -e "usage:" error
|
||||
'
|
||||
done <<\EOF
|
||||
--all --reflog
|
||||
@@ -203,7 +203,7 @@ for opt in topo-order date-order reflog
|
||||
do
|
||||
test_expect_success "show-branch --no-$opt (should fail)" '
|
||||
test_must_fail git show-branch --no-$opt 2>err &&
|
||||
grep "unknown option .no-$opt." err
|
||||
test_grep "unknown option .no-$opt." err
|
||||
'
|
||||
done
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ test_expect_success 'git branch -r shows remote branches' '
|
||||
|
||||
test_expect_success 'git branch --no-remotes is rejected' '
|
||||
test_must_fail git branch --no-remotes 2>err &&
|
||||
grep "unknown option .no-remotes." err
|
||||
test_grep "unknown option .no-remotes." err
|
||||
'
|
||||
|
||||
cat >expect <<'EOF'
|
||||
@@ -85,7 +85,7 @@ test_expect_success 'git branch -a shows local and remote branches' '
|
||||
|
||||
test_expect_success 'git branch --no-all is rejected' '
|
||||
test_must_fail git branch --no-all 2>err &&
|
||||
grep "unknown option .no-all." err
|
||||
test_grep "unknown option .no-all." err
|
||||
'
|
||||
|
||||
cat >expect <<'EOF'
|
||||
|
||||
+39
-39
@@ -538,10 +538,10 @@ do
|
||||
main..unmodified >actual &&
|
||||
test_line_count = 5 actual &&
|
||||
test_grep "^Range-diff:$" 0000-* &&
|
||||
grep "= 1: .* s/5/A" 0000-* &&
|
||||
grep "= 2: .* s/4/A" 0000-* &&
|
||||
grep "= 3: .* s/11/B" 0000-* &&
|
||||
grep "= 4: .* s/12/B" 0000-*
|
||||
test_grep "= 1: .* s/5/A" 0000-* &&
|
||||
test_grep "= 2: .* s/4/A" 0000-* &&
|
||||
test_grep "= 3: .* s/11/B" 0000-* &&
|
||||
test_grep "= 4: .* s/12/B" 0000-*
|
||||
'
|
||||
done
|
||||
|
||||
@@ -564,7 +564,7 @@ test_expect_success 'format-patch --range-diff as commentary' '
|
||||
git format-patch --range-diff=HEAD~1 HEAD~1 >actual &&
|
||||
test_line_count = 1 actual &&
|
||||
test_grep "^Range-diff:$" 0001-* &&
|
||||
grep "> 1: .* new message" 0001-*
|
||||
test_grep "> 1: .* new message" 0001-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff reroll-count with a non-integer' '
|
||||
@@ -572,7 +572,7 @@ test_expect_success 'format-patch --range-diff reroll-count with a non-integer'
|
||||
git format-patch --range-diff=HEAD~1 -v2.9 HEAD~1 >actual &&
|
||||
test_line_count = 1 actual &&
|
||||
test_grep "^Range-diff:$" v2.9-0001-* &&
|
||||
grep "> 1: .* new message" v2.9-0001-*
|
||||
test_grep "> 1: .* new message" v2.9-0001-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff reroll-count with a integer' '
|
||||
@@ -580,7 +580,7 @@ test_expect_success 'format-patch --range-diff reroll-count with a integer' '
|
||||
git format-patch --range-diff=HEAD~1 -v2 HEAD~1 >actual &&
|
||||
test_line_count = 1 actual &&
|
||||
test_grep "^Range-diff ..* v1:$" v2-0001-* &&
|
||||
grep "> 1: .* new message" v2-0001-*
|
||||
test_grep "> 1: .* new message" v2-0001-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff with v0' '
|
||||
@@ -588,7 +588,7 @@ test_expect_success 'format-patch --range-diff with v0' '
|
||||
git format-patch --range-diff=HEAD~1 -v0 HEAD~1 >actual &&
|
||||
test_line_count = 1 actual &&
|
||||
test_grep "^Range-diff:$" v0-0001-* &&
|
||||
grep "> 1: .* new message" v0-0001-*
|
||||
test_grep "> 1: .* new message" v0-0001-*
|
||||
'
|
||||
|
||||
test_expect_success 'range-diff overrides diff.noprefix internally' '
|
||||
@@ -686,8 +686,8 @@ test_expect_success 'range-diff with --notes=custom does not show default notes'
|
||||
git notes --ref=custom add -m "unmodified note" unmodified &&
|
||||
git range-diff --notes=custom main..topic main..unmodified \
|
||||
>actual &&
|
||||
! grep "## Notes ##" actual &&
|
||||
grep "## Notes (custom) ##" actual
|
||||
test_grep ! "## Notes ##" actual &&
|
||||
test_grep "## Notes (custom) ##" actual
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff does not compare notes by default' '
|
||||
@@ -699,12 +699,12 @@ test_expect_success 'format-patch --range-diff does not compare notes by default
|
||||
main..unmodified >actual &&
|
||||
test_line_count = 5 actual &&
|
||||
test_grep "^Range-diff:$" 0000-* &&
|
||||
grep "= 1: .* s/5/A" 0000-* &&
|
||||
grep "= 2: .* s/4/A" 0000-* &&
|
||||
grep "= 3: .* s/11/B" 0000-* &&
|
||||
grep "= 4: .* s/12/B" 0000-* &&
|
||||
! grep "Notes" 0000-* &&
|
||||
! grep "note" 0000-*
|
||||
test_grep "= 1: .* s/5/A" 0000-* &&
|
||||
test_grep "= 2: .* s/4/A" 0000-* &&
|
||||
test_grep "= 3: .* s/11/B" 0000-* &&
|
||||
test_grep "= 4: .* s/12/B" 0000-* &&
|
||||
test_grep ! "Notes" 0000-* &&
|
||||
test_grep ! "note" 0000-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --notes=custom --range-diff --cover-letter only compares custom notes' '
|
||||
@@ -717,8 +717,8 @@ test_expect_success 'format-patch --notes=custom --range-diff --cover-letter onl
|
||||
test_when_finished "rm -f 000?-*" &&
|
||||
git format-patch --notes=custom --cover-letter --range-diff=$prev \
|
||||
main..unmodified >actual &&
|
||||
grep "## Notes (custom) ##" 0000-* &&
|
||||
! grep "## Notes ##" 0000-*
|
||||
test_grep "## Notes (custom) ##" 0000-* &&
|
||||
test_grep ! "## Notes ##" 0000-*
|
||||
'
|
||||
|
||||
# --range-diff on a single commit requires --no-cover-letter
|
||||
@@ -744,12 +744,12 @@ test_expect_success 'format-patch --range-diff with --no-notes' '
|
||||
main..unmodified >actual &&
|
||||
test_line_count = 5 actual &&
|
||||
test_grep "^Range-diff:$" 0000-* &&
|
||||
grep "= 1: .* s/5/A" 0000-* &&
|
||||
grep "= 2: .* s/4/A" 0000-* &&
|
||||
grep "= 3: .* s/11/B" 0000-* &&
|
||||
grep "= 4: .* s/12/B" 0000-* &&
|
||||
! grep "Notes" 0000-* &&
|
||||
! grep "note" 0000-*
|
||||
test_grep "= 1: .* s/5/A" 0000-* &&
|
||||
test_grep "= 2: .* s/4/A" 0000-* &&
|
||||
test_grep "= 3: .* s/11/B" 0000-* &&
|
||||
test_grep "= 4: .* s/12/B" 0000-* &&
|
||||
test_grep ! "Notes" 0000-* &&
|
||||
test_grep ! "note" 0000-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff with --notes' '
|
||||
@@ -761,10 +761,10 @@ test_expect_success 'format-patch --range-diff with --notes' '
|
||||
main..unmodified >actual &&
|
||||
test_line_count = 5 actual &&
|
||||
test_grep "^Range-diff:$" 0000-* &&
|
||||
grep "= 1: .* s/5/A" 0000-* &&
|
||||
grep "= 2: .* s/4/A" 0000-* &&
|
||||
grep "= 3: .* s/11/B" 0000-* &&
|
||||
grep "! 4: .* s/12/B" 0000-* &&
|
||||
test_grep "= 1: .* s/5/A" 0000-* &&
|
||||
test_grep "= 2: .* s/4/A" 0000-* &&
|
||||
test_grep "= 3: .* s/11/B" 0000-* &&
|
||||
test_grep "! 4: .* s/12/B" 0000-* &&
|
||||
sed s/Z/\ /g >expect <<-EOF &&
|
||||
@@ Commit message
|
||||
Z
|
||||
@@ -790,10 +790,10 @@ test_expect_success 'format-patch --range-diff with format.notes config' '
|
||||
main..unmodified >actual &&
|
||||
test_line_count = 5 actual &&
|
||||
test_grep "^Range-diff:$" 0000-* &&
|
||||
grep "= 1: .* s/5/A" 0000-* &&
|
||||
grep "= 2: .* s/4/A" 0000-* &&
|
||||
grep "= 3: .* s/11/B" 0000-* &&
|
||||
grep "! 4: .* s/12/B" 0000-* &&
|
||||
test_grep "= 1: .* s/5/A" 0000-* &&
|
||||
test_grep "= 2: .* s/4/A" 0000-* &&
|
||||
test_grep "= 3: .* s/11/B" 0000-* &&
|
||||
test_grep "! 4: .* s/12/B" 0000-* &&
|
||||
sed s/Z/\ /g >expect <<-EOF &&
|
||||
@@ Commit message
|
||||
Z
|
||||
@@ -821,10 +821,10 @@ test_expect_success 'format-patch --range-diff with multiple notes' '
|
||||
main..unmodified >actual &&
|
||||
test_line_count = 5 actual &&
|
||||
test_grep "^Range-diff:$" 0000-* &&
|
||||
grep "= 1: .* s/5/A" 0000-* &&
|
||||
grep "= 2: .* s/4/A" 0000-* &&
|
||||
grep "= 3: .* s/11/B" 0000-* &&
|
||||
grep "! 4: .* s/12/B" 0000-* &&
|
||||
test_grep "= 1: .* s/5/A" 0000-* &&
|
||||
test_grep "= 2: .* s/4/A" 0000-* &&
|
||||
test_grep "= 3: .* s/11/B" 0000-* &&
|
||||
test_grep "! 4: .* s/12/B" 0000-* &&
|
||||
sed s/Z/\ /g >expect <<-EOF &&
|
||||
@@ Commit message
|
||||
Z
|
||||
@@ -866,9 +866,9 @@ test_expect_success 'ranges with pathspecs' '
|
||||
topic_oid=$(git rev-parse --short topic) &&
|
||||
mode_change_oid=$(git rev-parse --short mode-only-change^) &&
|
||||
file_change_oid=$(git rev-parse --short mode-only-change) &&
|
||||
grep "$mode_change_oid" actual &&
|
||||
! grep "$file_change_oid" actual &&
|
||||
! grep "$topic_oid" actual
|
||||
test_grep "$mode_change_oid" actual &&
|
||||
test_grep ! "$file_change_oid" actual &&
|
||||
test_grep ! "$topic_oid" actual
|
||||
'
|
||||
|
||||
test_expect_success 'submodule changes are shown irrespective of diff.submodule' '
|
||||
|
||||
@@ -136,7 +136,7 @@ test_expect_success 'should not create any branches if branch is not valid for a
|
||||
git -C sub branch branch-a &&
|
||||
test_must_fail git branch --recurse-submodules branch-a 2>actual &&
|
||||
test_no_branch . branch-a &&
|
||||
grep "submodule .sub.: fatal: a branch named .branch-a. already exists" actual
|
||||
test_grep "submodule .sub.: fatal: a branch named .branch-a. already exists" actual
|
||||
)
|
||||
'
|
||||
|
||||
@@ -251,7 +251,7 @@ test_expect_success 'should get fatal error upon branch creation when submodule
|
||||
git branch --recurse-submodules branch-a origin/branch-a &&
|
||||
# This should fail because super-clone does not have sub2 .git/modules
|
||||
test_must_fail git branch --recurse-submodules branch-b origin/branch-b 2>actual &&
|
||||
grep "fatal: submodule .sub2.: unable to find submodule" actual &&
|
||||
test_grep "fatal: submodule .sub2.: unable to find submodule" actual &&
|
||||
test_no_branch . branch-b &&
|
||||
test_no_branch sub branch-b &&
|
||||
# User can fix themselves by initializing the submodule
|
||||
|
||||
+16
-16
@@ -164,7 +164,7 @@ test_expect_success 'show notes' '
|
||||
${indent}b1
|
||||
EOF
|
||||
git cat-file commit HEAD >commits &&
|
||||
! grep b1 commits &&
|
||||
test_grep ! b1 commits &&
|
||||
git log -1 >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
@@ -248,17 +248,17 @@ test_expect_success 'git log --show-notes' '
|
||||
|
||||
test_expect_success 'git log --no-notes' '
|
||||
git log -1 --no-notes >actual &&
|
||||
! grep xyzzy actual
|
||||
test_grep ! xyzzy actual
|
||||
'
|
||||
|
||||
test_expect_success 'git format-patch does not show notes' '
|
||||
git format-patch -1 --stdout >actual &&
|
||||
! grep xyzzy actual
|
||||
test_grep ! xyzzy actual
|
||||
'
|
||||
|
||||
test_expect_success 'git format-patch --show-notes does show notes' '
|
||||
git format-patch --show-notes -1 --stdout >actual &&
|
||||
grep xyzzy actual
|
||||
test_grep xyzzy actual
|
||||
'
|
||||
|
||||
for pretty in \
|
||||
@@ -281,36 +281,36 @@ test_expect_success 'setup alternate notes ref' '
|
||||
|
||||
test_expect_success 'git log --notes shows default notes' '
|
||||
git log -1 --notes >actual &&
|
||||
grep xyzzy actual &&
|
||||
! grep alternate actual
|
||||
test_grep xyzzy actual &&
|
||||
test_grep ! alternate actual
|
||||
'
|
||||
|
||||
test_expect_success 'git log --notes=X shows only X' '
|
||||
git log -1 --notes=alternate >actual &&
|
||||
! grep xyzzy actual &&
|
||||
grep alternate actual
|
||||
test_grep ! xyzzy actual &&
|
||||
test_grep alternate actual
|
||||
'
|
||||
|
||||
test_expect_success 'git log --notes --notes=X shows both' '
|
||||
git log -1 --notes --notes=alternate >actual &&
|
||||
grep xyzzy actual &&
|
||||
grep alternate actual
|
||||
test_grep xyzzy actual &&
|
||||
test_grep alternate actual
|
||||
'
|
||||
|
||||
test_expect_success 'git log --no-notes resets default state' '
|
||||
git log -1 --notes --notes=alternate \
|
||||
--no-notes --notes=alternate \
|
||||
>actual &&
|
||||
! grep xyzzy actual &&
|
||||
grep alternate actual
|
||||
test_grep ! xyzzy actual &&
|
||||
test_grep alternate actual
|
||||
'
|
||||
|
||||
test_expect_success 'git log --no-notes resets ref list' '
|
||||
git log -1 --notes --notes=alternate \
|
||||
--no-notes --notes \
|
||||
>actual &&
|
||||
grep xyzzy actual &&
|
||||
! grep alternate actual
|
||||
test_grep xyzzy actual &&
|
||||
test_grep ! alternate actual
|
||||
'
|
||||
|
||||
test_expect_success 'show -m notes' '
|
||||
@@ -543,7 +543,7 @@ test_expect_success 'list notes with "git notes"' '
|
||||
|
||||
test_expect_success '"git notes" without subcommand does not take arguments' '
|
||||
test_expect_code 129 git notes HEAD^^ 2>err &&
|
||||
grep "^error: unknown subcommand" err
|
||||
test_grep "^error: unknown subcommand" err
|
||||
'
|
||||
|
||||
test_expect_success 'list specific note with "git notes list <object>"' '
|
||||
@@ -1464,7 +1464,7 @@ test_expect_success 'GIT_NOTES_REWRITE_REF overrides config' '
|
||||
GIT_NOTES_REWRITE_REF=refs/notes/commits \
|
||||
git notes copy --for-rewrite=foo <copy &&
|
||||
git log -1 >actual &&
|
||||
grep "replacement note 3" actual
|
||||
test_grep "replacement note 3" actual
|
||||
'
|
||||
|
||||
test_expect_success 'git notes copy diagnoses too many or too few arguments' '
|
||||
|
||||
@@ -382,12 +382,12 @@ EOF
|
||||
test_cmp pre_merge_z actual &&
|
||||
# Merge commit mentions the notes refs merged
|
||||
git log -1 --format=%B refs/notes/m > merge_commit_msg &&
|
||||
grep -q refs/notes/m merge_commit_msg &&
|
||||
grep -q refs/notes/z merge_commit_msg &&
|
||||
test_grep -q refs/notes/m merge_commit_msg &&
|
||||
test_grep -q refs/notes/z merge_commit_msg &&
|
||||
# Merge commit mentions conflicting notes
|
||||
grep -q "Conflicts" merge_commit_msg &&
|
||||
test_grep -q "Conflicts" merge_commit_msg &&
|
||||
( for sha1 in $(cat expect_conflicts); do
|
||||
grep -q "$sha1" merge_commit_msg ||
|
||||
test_grep -q "$sha1" merge_commit_msg ||
|
||||
exit 1
|
||||
done ) &&
|
||||
# Verify contents of merge result
|
||||
@@ -512,12 +512,12 @@ EOF
|
||||
test_cmp pre_merge_z actual &&
|
||||
# Merge commit mentions the notes refs merged
|
||||
git log -1 --format=%B refs/notes/m > merge_commit_msg &&
|
||||
grep -q refs/notes/m merge_commit_msg &&
|
||||
grep -q refs/notes/z merge_commit_msg &&
|
||||
test_grep -q refs/notes/m merge_commit_msg &&
|
||||
test_grep -q refs/notes/z merge_commit_msg &&
|
||||
# Merge commit mentions conflicting notes
|
||||
grep -q "Conflicts" merge_commit_msg &&
|
||||
test_grep -q "Conflicts" merge_commit_msg &&
|
||||
( for sha1 in $(cat expect_conflicts); do
|
||||
grep -q "$sha1" merge_commit_msg ||
|
||||
test_grep -q "$sha1" merge_commit_msg ||
|
||||
exit 1
|
||||
done ) &&
|
||||
# Verify contents of merge result
|
||||
|
||||
@@ -67,7 +67,7 @@ test_expect_success 'merge z into x while mid-merge on y succeeds' '
|
||||
git config core.notesRef refs/notes/x &&
|
||||
test_must_fail git notes merge z >out 2>&1 &&
|
||||
test_grep "Automatic notes merge failed" out &&
|
||||
grep -v "A notes merge into refs/notes/x is already in-progress in" out
|
||||
test_grep -v "A notes merge into refs/notes/x is already in-progress in" out
|
||||
) &&
|
||||
echo "refs/notes/x" >expect &&
|
||||
git -C worktree2 symbolic-ref NOTES_MERGE_REF >actual &&
|
||||
|
||||
+8
-8
@@ -287,16 +287,16 @@ test_expect_success 'rebase commit with an ancient timestamp' '
|
||||
git commit --date="@34567 +0600" -m "Old three" &&
|
||||
|
||||
git cat-file commit HEAD^^ >actual &&
|
||||
grep "author .* 12345 +0400$" actual &&
|
||||
test_grep "author .* 12345 +0400$" actual &&
|
||||
git cat-file commit HEAD^ >actual &&
|
||||
grep "author .* 23456 +0500$" actual &&
|
||||
test_grep "author .* 23456 +0500$" actual &&
|
||||
git cat-file commit HEAD >actual &&
|
||||
grep "author .* 34567 +0600$" actual &&
|
||||
test_grep "author .* 34567 +0600$" actual &&
|
||||
|
||||
git rebase --onto HEAD^^ HEAD^ &&
|
||||
|
||||
git cat-file commit HEAD >actual &&
|
||||
grep "author .* 34567 +0600$" actual
|
||||
test_grep "author .* 34567 +0600$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'rebase with "From " line in commit message' '
|
||||
@@ -333,7 +333,7 @@ test_expect_success 'rebase --apply and --show-current-patch' '
|
||||
git tag two &&
|
||||
test_must_fail git rebase --apply -f --onto init HEAD^ &&
|
||||
GIT_TRACE=1 git rebase --show-current-patch >/dev/null 2>stderr &&
|
||||
grep "show.*$(git rev-parse two)" stderr
|
||||
test_grep "show.*$(git rev-parse two)" stderr
|
||||
)
|
||||
'
|
||||
|
||||
@@ -364,12 +364,12 @@ test_expect_success 'rebase --apply and .gitattributes' '
|
||||
|
||||
git checkout test &&
|
||||
git rebase main &&
|
||||
grep "smudged" a.txt &&
|
||||
test_grep "smudged" a.txt &&
|
||||
|
||||
git checkout removal &&
|
||||
git reset --hard &&
|
||||
git rebase main &&
|
||||
grep "clean" a.txt
|
||||
test_grep "clean" a.txt
|
||||
)
|
||||
'
|
||||
|
||||
@@ -386,7 +386,7 @@ test_expect_success 'rebase--merge.sh and --show-current-patch' '
|
||||
test_must_fail git rebase --merge --onto init HEAD^ &&
|
||||
git rebase --show-current-patch >actual.patch &&
|
||||
GIT_TRACE=1 git rebase --show-current-patch >/dev/null 2>stderr &&
|
||||
grep "show.*REBASE_HEAD" stderr &&
|
||||
test_grep "show.*REBASE_HEAD" stderr &&
|
||||
test "$(git rev-parse REBASE_HEAD)" = "$(git rev-parse two)"
|
||||
)
|
||||
'
|
||||
|
||||
@@ -84,8 +84,8 @@ test_expect_success 'rebase -Xtheirs' '
|
||||
echo "AB $T" >> original &&
|
||||
git commit -mconflicting original &&
|
||||
git rebase -Xtheirs main &&
|
||||
grep AB original &&
|
||||
! grep 11 original
|
||||
test_grep AB original &&
|
||||
test_grep ! 11 original
|
||||
'
|
||||
|
||||
test_expect_success 'rebase -Xtheirs from orphan' '
|
||||
@@ -93,8 +93,8 @@ test_expect_success 'rebase -Xtheirs from orphan' '
|
||||
echo "AB $T" >> original &&
|
||||
git commit -morphan-conflicting original &&
|
||||
git rebase -Xtheirs main &&
|
||||
grep AB original &&
|
||||
! grep 11 original
|
||||
test_grep AB original &&
|
||||
test_grep ! 11 original
|
||||
'
|
||||
|
||||
test_expect_success 'merge and rebase should match' '
|
||||
@@ -210,15 +210,15 @@ test_expect_success '--reapply-cherry-picks refrains from reading unneeded blobs
|
||||
git -C client rev-list --objects --all --missing=print >missing_list &&
|
||||
MERGE_BASE_BLOB=$(git -C server rev-parse main^^:file.txt) &&
|
||||
ADD_11_BLOB=$(git -C server rev-parse main^:file.txt) &&
|
||||
grep "[?]$MERGE_BASE_BLOB" missing_list &&
|
||||
grep "[?]$ADD_11_BLOB" missing_list &&
|
||||
test_grep "[?]$MERGE_BASE_BLOB" missing_list &&
|
||||
test_grep "[?]$ADD_11_BLOB" missing_list &&
|
||||
|
||||
git -C client rebase --merge --reapply-cherry-picks origin/main &&
|
||||
|
||||
# The blob from the merge base had to be fetched, but not "add 11"
|
||||
git -C client rev-list --objects --all --missing=print >missing_list &&
|
||||
! grep "[?]$MERGE_BASE_BLOB" missing_list &&
|
||||
grep "[?]$ADD_11_BLOB" missing_list
|
||||
test_grep ! "[?]$MERGE_BASE_BLOB" missing_list &&
|
||||
test_grep "[?]$ADD_11_BLOB" missing_list
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -144,7 +144,7 @@ test_expect_success 'rebase -i sets work tree properly' '
|
||||
mkdir subdir &&
|
||||
git rebase -x "(cd subdir && git rev-parse --show-toplevel)" HEAD^ \
|
||||
>actual &&
|
||||
! grep "/subdir$" actual
|
||||
test_grep ! "/subdir$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'rebase -i with the exec command checks tree cleanness' '
|
||||
@@ -196,7 +196,7 @@ test_expect_success 'rebase -i with exec of inexistent command' '
|
||||
test_must_fail env FAKE_LINES="exec_this-command-does-not-exist 1" \
|
||||
git rebase -i HEAD^ >actual 2>&1
|
||||
) &&
|
||||
! grep "Maybe git-rebase is broken" actual
|
||||
test_grep ! "Maybe git-rebase is broken" actual
|
||||
'
|
||||
|
||||
test_expect_success 'implicit interactive rebase does not invoke sequence editor' '
|
||||
@@ -293,7 +293,7 @@ test_expect_success 'stop on conflicting pick' '
|
||||
|
||||
test_expect_success 'show conflicted patch' '
|
||||
GIT_TRACE=1 git rebase --show-current-patch >/dev/null 2>stderr &&
|
||||
grep "show.*REBASE_HEAD" stderr &&
|
||||
test_grep "show.*REBASE_HEAD" stderr &&
|
||||
# the original stopped-sha1 is abbreviated
|
||||
stopped_sha1="$(git rev-parse $(cat ".git/rebase-merge/stopped-sha"))" &&
|
||||
test "$(git rev-parse REBASE_HEAD)" = "$stopped_sha1"
|
||||
@@ -326,7 +326,7 @@ test_expect_success 'retain authorship' '
|
||||
git tag twerp &&
|
||||
git rebase -i --onto primary HEAD^ &&
|
||||
git show HEAD >actual &&
|
||||
grep "^Author: Twerp Snog" actual
|
||||
test_grep "^Author: Twerp Snog" actual
|
||||
'
|
||||
|
||||
test_expect_success 'retain authorship w/ conflicts' '
|
||||
@@ -348,7 +348,7 @@ test_expect_success 'retain authorship w/ conflicts' '
|
||||
git rebase --continue &&
|
||||
test_cmp_rev conflict-a^0 HEAD^ &&
|
||||
git show >out &&
|
||||
grep AttributeMe out
|
||||
test_grep AttributeMe out
|
||||
'
|
||||
|
||||
test_expect_success 'squash' '
|
||||
@@ -368,7 +368,7 @@ test_expect_success 'squash' '
|
||||
|
||||
test_expect_success 'retain authorship when squashing' '
|
||||
git show HEAD >actual &&
|
||||
grep "^Author: Twerp Snog" actual
|
||||
test_grep "^Author: Twerp Snog" actual
|
||||
'
|
||||
|
||||
test_expect_success '--continue tries to commit' '
|
||||
@@ -383,7 +383,7 @@ test_expect_success '--continue tries to commit' '
|
||||
) &&
|
||||
test_cmp_rev HEAD^ new-branch1 &&
|
||||
git show HEAD >actual &&
|
||||
grep chouette actual
|
||||
test_grep chouette actual
|
||||
'
|
||||
|
||||
test_expect_success 'verbose flag is heeded, even after --continue' '
|
||||
@@ -393,7 +393,7 @@ test_expect_success 'verbose flag is heeded, even after --continue' '
|
||||
echo resolved > file1 &&
|
||||
git add file1 &&
|
||||
git rebase --continue > output &&
|
||||
grep "^ file1 | 2 +-$" output
|
||||
test_grep "^ file1 | 2 +-$" output
|
||||
'
|
||||
|
||||
test_expect_success 'multi-squash only fires up editor once' '
|
||||
@@ -422,7 +422,7 @@ test_expect_success 'multi-fixup does not fire up editor' '
|
||||
) &&
|
||||
test $base = $(git rev-parse HEAD^) &&
|
||||
git show >output &&
|
||||
! grep NEVER output &&
|
||||
test_grep ! NEVER output &&
|
||||
git checkout @{-1} &&
|
||||
git branch -D multi-fixup
|
||||
'
|
||||
@@ -487,9 +487,9 @@ test_expect_success 'squash and fixup generate correct log messages' '
|
||||
git cat-file commit HEAD | sed -e 1,/^\$/d > actual-squash-fixup &&
|
||||
test_cmp expect-squash-fixup actual-squash-fixup &&
|
||||
git cat-file commit HEAD@{2} >actual &&
|
||||
grep "^# This is a combination of 3 commits\." actual &&
|
||||
test_grep "^# This is a combination of 3 commits\." actual &&
|
||||
git cat-file commit HEAD@{3} >actual &&
|
||||
grep "^# This is a combination of 2 commits\." actual &&
|
||||
test_grep "^# This is a combination of 2 commits\." actual &&
|
||||
git checkout @{-1} &&
|
||||
git branch -D squash-fixup
|
||||
'
|
||||
@@ -593,7 +593,7 @@ test_expect_success '--continue tries to commit, even for "edit"' '
|
||||
) &&
|
||||
test edited = $(git show HEAD:file7) &&
|
||||
git show HEAD >actual &&
|
||||
grep chouette actual &&
|
||||
test_grep chouette actual &&
|
||||
test $parent = $(git rev-parse HEAD^)
|
||||
'
|
||||
|
||||
@@ -779,22 +779,22 @@ test_expect_success 'reword' '
|
||||
FAKE_LINES="1 2 3 reword 4" FAKE_COMMIT_MESSAGE="E changed" \
|
||||
git rebase -i A &&
|
||||
git show HEAD >actual &&
|
||||
grep "E changed" actual &&
|
||||
test_grep "E changed" actual &&
|
||||
test $(git rev-parse primary) != $(git rev-parse HEAD) &&
|
||||
test_cmp_rev primary^ HEAD^ &&
|
||||
FAKE_LINES="1 2 reword 3 4" FAKE_COMMIT_MESSAGE="D changed" \
|
||||
git rebase -i A &&
|
||||
git show HEAD^ >actual &&
|
||||
grep "D changed" actual &&
|
||||
test_grep "D changed" actual &&
|
||||
FAKE_LINES="reword 1 2 3 4" FAKE_COMMIT_MESSAGE="B changed" \
|
||||
git rebase -i A &&
|
||||
git show HEAD~3 >actual &&
|
||||
grep "B changed" actual &&
|
||||
test_grep "B changed" actual &&
|
||||
FAKE_LINES="1 r 2 pick 3 p 4" FAKE_COMMIT_MESSAGE="C changed" \
|
||||
git rebase -i A
|
||||
) &&
|
||||
git show HEAD~2 >actual &&
|
||||
grep "C changed" actual
|
||||
test_grep "C changed" actual
|
||||
'
|
||||
|
||||
test_expect_success 'reword fast-forwarded empty commit' '
|
||||
@@ -1043,9 +1043,9 @@ test_expect_success 'rebase -i --root retain root commit author and message' '
|
||||
FAKE_LINES="2" git rebase -i --root
|
||||
) &&
|
||||
git cat-file commit HEAD >output &&
|
||||
grep -q "^author Twerp Snog" output &&
|
||||
test_grep -q "^author Twerp Snog" output &&
|
||||
git cat-file commit HEAD >actual &&
|
||||
grep -q "^different author$" actual
|
||||
test_grep -q "^different author$" actual
|
||||
'
|
||||
|
||||
test_expect_success 'rebase -i --root temporary sentinel commit' '
|
||||
@@ -1055,7 +1055,7 @@ test_expect_success 'rebase -i --root temporary sentinel commit' '
|
||||
test_must_fail env FAKE_LINES="2" git rebase -i --root
|
||||
) &&
|
||||
git cat-file commit HEAD >actual &&
|
||||
grep "^tree $EMPTY_TREE" actual &&
|
||||
test_grep "^tree $EMPTY_TREE" actual &&
|
||||
git rebase --abort
|
||||
'
|
||||
|
||||
@@ -1079,7 +1079,7 @@ test_expect_success 'rebase -i --root reword original root commit' '
|
||||
git rebase -i --root
|
||||
) &&
|
||||
git show HEAD^ >actual &&
|
||||
grep "A changed" actual &&
|
||||
test_grep "A changed" actual &&
|
||||
test -z "$(git show -s --format=%p HEAD^)"
|
||||
'
|
||||
|
||||
@@ -1092,7 +1092,7 @@ test_expect_success 'rebase -i --root reword new root commit' '
|
||||
git rebase -i --root
|
||||
) &&
|
||||
git show HEAD^ >actual &&
|
||||
grep "C changed" actual &&
|
||||
test_grep "C changed" actual &&
|
||||
test -z "$(git show -s --format=%p HEAD^)"
|
||||
'
|
||||
|
||||
@@ -1315,11 +1315,11 @@ test_expect_success 'short commit ID collide' '
|
||||
FAKE_COMMIT_MESSAGE="collide2 $(test_oid t3404_collider)" \
|
||||
FAKE_LINES="reword 1 break 2" git rebase -i HEAD~2 &&
|
||||
test $colliding_id = "$(git rev-parse HEAD | cut -c 1-4)" &&
|
||||
grep "^pick $colliding_id " \
|
||||
test_grep "^pick $colliding_id " \
|
||||
.git/rebase-merge/git-rebase-todo.tmp &&
|
||||
grep -E "^pick [0-9a-f]{$hexsz}" \
|
||||
test_grep -E "^pick [0-9a-f]{$hexsz}" \
|
||||
.git/rebase-merge/git-rebase-todo &&
|
||||
grep -E "^pick [0-9a-f]{$hexsz}" \
|
||||
test_grep -E "^pick [0-9a-f]{$hexsz}" \
|
||||
.git/rebase-merge/git-rebase-todo.backup &&
|
||||
git rebase --continue
|
||||
) &&
|
||||
@@ -1371,7 +1371,7 @@ test_expect_success 'rebase -i commits that overwrite untracked files (pick)' '
|
||||
echo changed >file1 &&
|
||||
git add file1 &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
grep "error: you have staged changes in your working tree" err &&
|
||||
test_grep "error: you have staged changes in your working tree" err &&
|
||||
git reset --hard HEAD &&
|
||||
git rebase --continue &&
|
||||
test_cmp_rev HEAD D &&
|
||||
@@ -1398,7 +1398,7 @@ test_expect_success 'rebase -i commits that overwrite untracked files (squash)'
|
||||
echo changed >file1 &&
|
||||
git add file1 &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
grep "error: you have staged changes in your working tree" err &&
|
||||
test_grep "error: you have staged changes in your working tree" err &&
|
||||
git reset --hard HEAD &&
|
||||
git rebase --continue &&
|
||||
test $(git cat-file commit HEAD | sed -ne \$p) = I &&
|
||||
@@ -1423,7 +1423,7 @@ test_expect_success 'rebase -i commits that overwrite untracked files (no ff)' '
|
||||
echo changed >file1 &&
|
||||
git add file1 &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
grep "error: you have staged changes in your working tree" err &&
|
||||
test_grep "error: you have staged changes in your working tree" err &&
|
||||
git reset --hard HEAD &&
|
||||
git rebase --continue &&
|
||||
test $(git cat-file commit HEAD | sed -ne \$p) = I
|
||||
@@ -1709,15 +1709,15 @@ test_expect_success 'the first command cannot be a fixup' '
|
||||
set_replace_editor orig &&
|
||||
test_must_fail git rebase -i A 2>actual
|
||||
) &&
|
||||
grep "cannot .fixup. without a previous commit" actual &&
|
||||
grep "You can fix this with .git rebase --edit-todo.." actual &&
|
||||
test_grep "cannot .fixup. without a previous commit" actual &&
|
||||
test_grep "You can fix this with .git rebase --edit-todo.." actual &&
|
||||
# verify that the todo list has not been truncated
|
||||
grep -v "^#" .git/rebase-merge/git-rebase-todo >actual &&
|
||||
test_cmp orig actual &&
|
||||
|
||||
test_must_fail git rebase --edit-todo 2>actual &&
|
||||
grep "cannot .fixup. without a previous commit" actual &&
|
||||
grep "You can fix this with .git rebase --edit-todo.." actual &&
|
||||
test_grep "cannot .fixup. without a previous commit" actual &&
|
||||
test_grep "You can fix this with .git rebase --edit-todo.." actual &&
|
||||
# verify that the todo list has not been truncated
|
||||
grep -v "^#" .git/rebase-merge/git-rebase-todo >actual &&
|
||||
test_cmp orig actual
|
||||
@@ -2252,7 +2252,7 @@ test_expect_success '--update-refs: check failed ref update' '
|
||||
git update-ref refs/heads/second third &&
|
||||
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
grep "update_ref failed for ref '\''refs/heads/second'\''" err &&
|
||||
test_grep "update_ref failed for ref '\''refs/heads/second'\''" err &&
|
||||
|
||||
q_to_tab >expect <<-\EOF &&
|
||||
Updated the following refs with --update-refs:
|
||||
@@ -2283,10 +2283,10 @@ test_expect_success 'bad labels and refs rejected when parsing todo list' '
|
||||
set_replace_editor todo &&
|
||||
test_must_fail git rebase -i HEAD 2>err
|
||||
) &&
|
||||
grep "'\''#'\'' is not a valid label" err &&
|
||||
grep "'\'':invalid'\'' is not a valid label" err &&
|
||||
grep "'\'':bad'\'' is not a valid refname" err &&
|
||||
grep "update-ref requires a fully qualified refname e.g. refs/heads/topic" \
|
||||
test_grep "'\''#'\'' is not a valid label" err &&
|
||||
test_grep "'\'':invalid'\'' is not a valid label" err &&
|
||||
test_grep "'\'':bad'\'' is not a valid refname" err &&
|
||||
test_grep "update-ref requires a fully qualified refname e.g. refs/heads/topic" \
|
||||
err &&
|
||||
test_path_is_missing execed
|
||||
'
|
||||
|
||||
@@ -62,21 +62,21 @@ test_expect_success 'rebase fast-forward to main' '
|
||||
test_expect_success 'rebase --stat' '
|
||||
git reset --hard start &&
|
||||
git rebase --stat main >diffstat.txt &&
|
||||
grep "^ fileX | *1 +$" diffstat.txt
|
||||
test_grep "^ fileX | *1 +$" diffstat.txt
|
||||
'
|
||||
|
||||
test_expect_success 'rebase w/config rebase.stat' '
|
||||
git reset --hard start &&
|
||||
git config rebase.stat true &&
|
||||
git rebase main >diffstat.txt &&
|
||||
grep "^ fileX | *1 +$" diffstat.txt
|
||||
test_grep "^ fileX | *1 +$" diffstat.txt
|
||||
'
|
||||
|
||||
test_expect_success 'rebase -n overrides config rebase.stat config' '
|
||||
git reset --hard start &&
|
||||
git config rebase.stat true &&
|
||||
git rebase -n main >diffstat.txt &&
|
||||
! grep "^ fileX | *1 +$" diffstat.txt
|
||||
test_grep ! "^ fileX | *1 +$" diffstat.txt
|
||||
'
|
||||
|
||||
test_expect_success 'rebase --onto outputs the invalid ref' '
|
||||
|
||||
@@ -223,7 +223,7 @@ test_expect_success 'auto squash that matches a sha1' '
|
||||
git cat-file blob HEAD^:file1 >actual &&
|
||||
test_cmp expect actual &&
|
||||
git cat-file commit HEAD^ >commit &&
|
||||
! grep "squash" commit &&
|
||||
test_grep ! "squash" commit &&
|
||||
grep "^extra para" commit >actual &&
|
||||
test_line_count = 1 actual
|
||||
'
|
||||
@@ -245,7 +245,7 @@ test_expect_success 'auto squash that matches longer sha1' '
|
||||
git cat-file blob HEAD^:file1 >actual &&
|
||||
test_cmp expect actual &&
|
||||
git cat-file commit HEAD^ >commit &&
|
||||
! grep "squash" commit &&
|
||||
test_grep ! "squash" commit &&
|
||||
grep "^extra para" commit >actual &&
|
||||
test_line_count = 1 actual
|
||||
'
|
||||
@@ -377,7 +377,7 @@ test_expect_success 'autosquash with custom inst format' '
|
||||
git cat-file blob HEAD^:file1 >actual &&
|
||||
test_cmp expect actual &&
|
||||
git cat-file commit HEAD^ >commit &&
|
||||
! grep "squash" commit &&
|
||||
test_grep ! "squash" commit &&
|
||||
grep first commit >actual &&
|
||||
test_line_count = 3 actual
|
||||
'
|
||||
@@ -424,7 +424,7 @@ test_expect_success 'autosquash with multiple empty patches' '
|
||||
set_backup_editor &&
|
||||
GIT_USE_REBASE_HELPER=false \
|
||||
git rebase -i --force-rebase --autosquash HEAD~4 &&
|
||||
grep empty2 .git/backup-git-rebase-todo
|
||||
test_grep empty2 .git/backup-git-rebase-todo
|
||||
)
|
||||
'
|
||||
|
||||
@@ -467,7 +467,7 @@ test_expect_success 'abort last squash' '
|
||||
git commit --allow-empty --amend -m edited-first &&
|
||||
git rebase --skip &&
|
||||
git show >actual &&
|
||||
! grep first actual
|
||||
test_grep ! first actual
|
||||
'
|
||||
|
||||
test_expect_success 'fixup a fixup' '
|
||||
|
||||
@@ -107,7 +107,7 @@ test_expect_success 'rebase --onto main...side requires a single merge-base' '
|
||||
git reset --hard K &&
|
||||
|
||||
test_must_fail git rebase -i --onto main...side J 2>err &&
|
||||
grep "need exactly one merge base" err
|
||||
test_grep "need exactly one merge base" err
|
||||
'
|
||||
|
||||
test_expect_success 'rebase --keep-base --onto incompatible' '
|
||||
@@ -196,7 +196,7 @@ test_expect_success 'rebase --keep-base requires a single merge base' '
|
||||
git reset --hard K &&
|
||||
|
||||
test_must_fail git rebase -i --keep-base main 2>err &&
|
||||
grep "need exactly one merge base with branch" err
|
||||
test_grep "need exactly one merge base with branch" err
|
||||
'
|
||||
|
||||
test_expect_success 'rebase --keep-base keeps cherry picks' '
|
||||
|
||||
@@ -289,18 +289,18 @@ test_expect_success 'patch file is removed before break command' '
|
||||
test_expect_success '--reschedule-failed-exec' '
|
||||
test_when_finished "git rebase --abort" &&
|
||||
test_must_fail git rebase -x false --reschedule-failed-exec HEAD^ &&
|
||||
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
test_grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
git rebase --abort &&
|
||||
test_must_fail git -c rebase.rescheduleFailedExec=true \
|
||||
rebase -x false HEAD^ 2>err &&
|
||||
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
test_grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
test_grep "has been rescheduled" err
|
||||
'
|
||||
|
||||
test_expect_success 'rebase.rescheduleFailedExec only affects `rebase -i`' '
|
||||
test_config rebase.rescheduleFailedExec true &&
|
||||
test_must_fail git rebase -x false HEAD^ &&
|
||||
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
test_grep "^exec false" .git/rebase-merge/git-rebase-todo &&
|
||||
git rebase --abort &&
|
||||
git rebase HEAD^
|
||||
'
|
||||
@@ -310,7 +310,7 @@ test_expect_success 'rebase.rescheduleFailedExec=true & --no-reschedule-failed-e
|
||||
test_config rebase.rescheduleFailedExec true &&
|
||||
test_must_fail git rebase -x false --no-reschedule-failed-exec HEAD~2 &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
! grep "has been rescheduled" err
|
||||
test_grep ! "has been rescheduled" err
|
||||
'
|
||||
|
||||
test_expect_success 'new rebase.rescheduleFailedExec=true setting in an ongoing rebase is ignored' '
|
||||
@@ -318,7 +318,7 @@ test_expect_success 'new rebase.rescheduleFailedExec=true setting in an ongoing
|
||||
test_must_fail git rebase -x false HEAD~2 &&
|
||||
test_config rebase.rescheduleFailedExec true &&
|
||||
test_must_fail git rebase --continue 2>err &&
|
||||
! grep "has been rescheduled" err
|
||||
test_grep ! "has been rescheduled" err
|
||||
'
|
||||
|
||||
test_expect_success 'there is no --no-reschedule-failed-exec in an ongoing rebase' '
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user