Skip to content

Commit

Permalink
remote-testgit: properly check for errors
Browse files Browse the repository at this point in the history
'feature done' was missing, which allowed fast-import exit properly, and
transport-helper to continue checking for refs and what not when in fact
the remote-helper died.

Let's enable that, and make sure the error paths are triggered.

Now transport-helper correctly detects the errors from fast-import,
unfortunately, not from fast-export because it might finish before
detecting a SIGPIPE. This means transport-helper will quit silently and
the user will not see any errors, which is bad. Hopefully the helper
will print the error before dying anyway, so not all is lost.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
  • Loading branch information
Felipe Contreras authored and Jeff King committed Oct 29, 2012
1 parent 2cfceef commit 6c32332
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
8 changes: 8 additions & 0 deletions git-remote-testgit.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,11 @@ def do_import(repo, args):
ref = line[7:].strip()
refs.append(ref)

print "feature done"

if os.environ.get("GIT_REMOTE_TESTGIT_FAILURE"):
die('Told to fail')

repo = update_local_repo(repo)
repo.exporter.export_repo(repo.gitdir, refs)

Expand All @@ -172,6 +177,9 @@ def do_export(repo, args):
if not repo.gitdir:
die("Need gitdir to export")

if os.environ.get("GIT_REMOTE_TESTGIT_FAILURE"):
die('Told to fail')

update_local_repo(repo)
changed = repo.importer.do_import(repo.gitdir)

Expand Down
21 changes: 21 additions & 0 deletions t/t5800-remote-helpers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,4 +145,25 @@ test_expect_failure 'push new branch with old:new refspec' '
compare_refs clone HEAD server refs/heads/new-refspec
'

test_expect_success 'proper failure checks for fetching' '
(GIT_REMOTE_TESTGIT_FAILURE=1 &&
export GIT_REMOTE_TESTGIT_FAILURE &&
cd localclone &&
test_must_fail git fetch 2>&1 | \
grep "Error while running fast-import"
)
'

# We sleep to give fast-export a chance to catch the SIGPIPE
test_expect_failure 'proper failure checks for pushing' '
(GIT_REMOTE_TESTGIT_FAILURE=1 &&
export GIT_REMOTE_TESTGIT_FAILURE &&
GIT_REMOTE_TESTGIT_SLEEPY=1 &&
export GIT_REMOTE_TESTGIT_SLEEPY &&
cd localclone &&
test_must_fail git push --all 2>&1 | \
grep "Error while running fast-export"
)
'

test_done

0 comments on commit 6c32332

Please sign in to comment.