t5574: test porcelain output of atomic fetch
The test case "fetch porcelain output" checks output of the fetch command. The error output must be empty with the follow assertion: test_must_be_empty stderr Refactor this test case to run it twice. The first time will be run using non-atomic fetch and the other time will be run using atomic fetch. We can see that the above assertion fails for atomic get, as shown below: ok 5 - fetch porcelain output # TODO known breakage vanished not ok 6 - fetch porcelain output (atomic) # TODO known breakage The failed test case had an error message with only the error prompt but no message body, as follows: 'stderr' is not empty, it contains: error: In a later commit, we will fix this issue. Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
813d9a9188
commit
8c85f83e66
@ -61,9 +61,7 @@ test_expect_success 'fetch compact output' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'fetch porcelain output' '
|
||||
test_when_finished "rm -rf porcelain" &&
|
||||
|
||||
test_expect_success 'setup for fetch porcelain output' '
|
||||
# Set up a bunch of references that we can use to demonstrate different
|
||||
# kinds of flag symbols in the output format.
|
||||
MAIN_OLD=$(git rev-parse HEAD) &&
|
||||
@ -74,15 +72,10 @@ test_expect_success 'fetch porcelain output' '
|
||||
FORCE_UPDATED_OLD=$(git rev-parse HEAD) &&
|
||||
git checkout main &&
|
||||
|
||||
# Clone and pre-seed the repositories. We fetch references into two
|
||||
# namespaces so that we can test that rejected and force-updated
|
||||
# references are reported properly.
|
||||
refspecs="refs/heads/*:refs/unforced/* +refs/heads/*:refs/forced/*" &&
|
||||
git clone . porcelain &&
|
||||
git -C porcelain fetch origin $refspecs &&
|
||||
# Backup to preseed.git
|
||||
git clone --mirror . preseed.git &&
|
||||
|
||||
# Now that we have set up the client repositories we can change our
|
||||
# local references.
|
||||
# Continue changing our local references.
|
||||
git branch new-branch &&
|
||||
git branch -d deleted-branch &&
|
||||
git checkout fast-forward &&
|
||||
@ -91,36 +84,61 @@ test_expect_success 'fetch porcelain output' '
|
||||
git checkout force-updated &&
|
||||
git reset --hard HEAD~ &&
|
||||
test_commit --no-tag force-update-new &&
|
||||
FORCE_UPDATED_NEW=$(git rev-parse HEAD) &&
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
- $MAIN_OLD $ZERO_OID refs/forced/deleted-branch
|
||||
- $MAIN_OLD $ZERO_OID refs/unforced/deleted-branch
|
||||
$MAIN_OLD $FAST_FORWARD_NEW refs/unforced/fast-forward
|
||||
! $FORCE_UPDATED_OLD $FORCE_UPDATED_NEW refs/unforced/force-updated
|
||||
* $ZERO_OID $MAIN_OLD refs/unforced/new-branch
|
||||
$MAIN_OLD $FAST_FORWARD_NEW refs/forced/fast-forward
|
||||
+ $FORCE_UPDATED_OLD $FORCE_UPDATED_NEW refs/forced/force-updated
|
||||
* $ZERO_OID $MAIN_OLD refs/forced/new-branch
|
||||
$MAIN_OLD $FAST_FORWARD_NEW refs/remotes/origin/fast-forward
|
||||
+ $FORCE_UPDATED_OLD $FORCE_UPDATED_NEW refs/remotes/origin/force-updated
|
||||
* $ZERO_OID $MAIN_OLD refs/remotes/origin/new-branch
|
||||
EOF
|
||||
|
||||
# Execute a dry-run fetch first. We do this to assert that the dry-run
|
||||
# and non-dry-run fetches produces the same output. Execution of the
|
||||
# fetch is expected to fail as we have a rejected reference update.
|
||||
test_must_fail git -C porcelain fetch \
|
||||
--porcelain --dry-run --prune origin $refspecs >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
# And now we perform a non-dry-run fetch.
|
||||
test_must_fail git -C porcelain fetch \
|
||||
--porcelain --prune origin $refspecs >actual 2>stderr &&
|
||||
test_cmp expect actual &&
|
||||
test_must_be_empty stderr
|
||||
FORCE_UPDATED_NEW=$(git rev-parse HEAD)
|
||||
'
|
||||
|
||||
for opt in off on
|
||||
do
|
||||
case $opt in
|
||||
on)
|
||||
opt=--atomic
|
||||
;;
|
||||
off)
|
||||
opt=
|
||||
;;
|
||||
esac
|
||||
test_expect_failure "fetch porcelain output ${opt:+(atomic)}" '
|
||||
test_when_finished "rm -rf porcelain" &&
|
||||
|
||||
# Clone and pre-seed the repositories. We fetch references into two
|
||||
# namespaces so that we can test that rejected and force-updated
|
||||
# references are reported properly.
|
||||
refspecs="refs/heads/*:refs/unforced/* +refs/heads/*:refs/forced/*" &&
|
||||
git clone preseed.git porcelain &&
|
||||
git -C porcelain fetch origin $opt $refspecs &&
|
||||
|
||||
cat >expect <<-EOF &&
|
||||
- $MAIN_OLD $ZERO_OID refs/forced/deleted-branch
|
||||
- $MAIN_OLD $ZERO_OID refs/unforced/deleted-branch
|
||||
$MAIN_OLD $FAST_FORWARD_NEW refs/unforced/fast-forward
|
||||
! $FORCE_UPDATED_OLD $FORCE_UPDATED_NEW refs/unforced/force-updated
|
||||
* $ZERO_OID $MAIN_OLD refs/unforced/new-branch
|
||||
$MAIN_OLD $FAST_FORWARD_NEW refs/forced/fast-forward
|
||||
+ $FORCE_UPDATED_OLD $FORCE_UPDATED_NEW refs/forced/force-updated
|
||||
* $ZERO_OID $MAIN_OLD refs/forced/new-branch
|
||||
$MAIN_OLD $FAST_FORWARD_NEW refs/remotes/origin/fast-forward
|
||||
+ $FORCE_UPDATED_OLD $FORCE_UPDATED_NEW refs/remotes/origin/force-updated
|
||||
* $ZERO_OID $MAIN_OLD refs/remotes/origin/new-branch
|
||||
EOF
|
||||
|
||||
# Change the URL of the repository to fetch different references.
|
||||
git -C porcelain remote set-url origin .. &&
|
||||
|
||||
# Execute a dry-run fetch first. We do this to assert that the dry-run
|
||||
# and non-dry-run fetches produces the same output. Execution of the
|
||||
# fetch is expected to fail as we have a rejected reference update.
|
||||
test_must_fail git -C porcelain fetch $opt \
|
||||
--porcelain --dry-run --prune origin $refspecs >actual &&
|
||||
test_cmp expect actual &&
|
||||
|
||||
# And now we perform a non-dry-run fetch.
|
||||
test_must_fail git -C porcelain fetch $opt \
|
||||
--porcelain --prune origin $refspecs >actual 2>stderr &&
|
||||
test_cmp expect actual &&
|
||||
test_must_be_empty stderr
|
||||
'
|
||||
done
|
||||
|
||||
test_expect_success 'fetch porcelain with multiple remotes' '
|
||||
test_when_finished "rm -rf porcelain" &&
|
||||
|
||||
|
Reference in New Issue
Block a user