@@ -281,7 +281,7 @@ test_expect_success 'atomic push reports (reject by non-ff)' '
test_cmp expect actual
'
-test_expect_failure 'atomic push reports exit code failure' '
+test_expect_success 'atomic push reports exit code failure' '
write_script receive-pack-wrapper <<-\EOF &&
git-receive-pack "$@"
exit 1
@@ -297,7 +297,7 @@ test_expect_failure 'atomic push reports exit code failure' '
test_cmp expect err
'
-test_expect_failure 'atomic push reports exit code failure with porcelain' '
+test_expect_success 'atomic push reports exit code failure with porcelain' '
write_script receive-pack-wrapper <<-\EOF &&
git-receive-pack "$@"
exit 1
@@ -923,10 +923,10 @@ static int git_transport_push(struct transport *transport, struct ref *remote_re
close(data->fd[0]);
/*
* Atomic push may abort the connection early and close the pipe,
- * which may cause an error for `finish_connect()`. Ignore this error
- * for atomic git-push.
+ * which may cause an error for `finish_connect()`. We can ignore
+ * this error when both `--atomic` and `--dry-run` flags provided.
*/
- if (ret || args.atomic)
+ if (ret || (args.atomic && args.dry_run))
finish_connect(data->conn);
else
ret = finish_connect(data->conn);