summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2012-04-29 17:51:23 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2012-04-29 17:51:24 -0700
commitf61977ff8d1a420573e99a8a88df479c37f70162 (patch)
treef5430bb986d0b7744dbd8f5dbd4fc592ac041b89
parentMerge branch 'jk/repack-no-explode-objects-from-old-pack' (diff)
parentgit-remote-testgit: fix race when spawning fast-import (diff)
downloadtgif-f61977ff8d1a420573e99a8a88df479c37f70162.tar.xz
Merge branch 'pw/t5800-import-race-fix'
Longstanding bug in a test scaffolding that occasionally made t5800 hang was fixed. By Pete Wyckoff * pw/t5800-import-race-fix: git-remote-testgit: fix race when spawning fast-import
-rw-r--r--git-remote-testgit.py7
-rwxr-xr-xt/t5800-remote-helpers.sh13
2 files changed, 20 insertions, 0 deletions
diff --git a/git-remote-testgit.py b/git-remote-testgit.py
index 3dc4851cfc..5f3ebd244d 100644
--- a/git-remote-testgit.py
+++ b/git-remote-testgit.py
@@ -22,6 +22,7 @@ except ImportError:
_digest = sha.new
import sys
import os
+import time
sys.path.insert(0, os.getenv("GITPYTHONLIB","."))
from git_remote_helpers.util import die, debug, warn
@@ -204,6 +205,11 @@ def read_one_line(repo):
"""Reads and processes one command.
"""
+ sleepy = os.environ.get("GIT_REMOTE_TESTGIT_SLEEPY")
+ if sleepy:
+ debug("Sleeping %d sec before readline" % int(sleepy))
+ time.sleep(int(sleepy))
+
line = sys.stdin.readline()
cmdline = line
@@ -258,6 +264,7 @@ def main(args):
more = True
+ sys.stdin = os.fdopen(sys.stdin.fileno(), 'r', 0)
while (more):
more = read_one_line(repo)
diff --git a/t/t5800-remote-helpers.sh b/t/t5800-remote-helpers.sh
index 1c62001fce..5702334510 100755
--- a/t/t5800-remote-helpers.sh
+++ b/t/t5800-remote-helpers.sh
@@ -72,6 +72,19 @@ test_expect_success 'pushing to local repo' '
compare_refs localclone HEAD server HEAD
'
+# Generally, skip this test. It demonstrates a now-fixed race in
+# git-remote-testgit, but is too slow to leave in for general use.
+: test_expect_success 'racily pushing to local repo' '
+ test_when_finished "rm -rf server2 localclone2" &&
+ cp -a server server2 &&
+ git clone "testgit::${PWD}/server2" localclone2 &&
+ (cd localclone2 &&
+ echo content >>file &&
+ git commit -a -m three &&
+ GIT_REMOTE_TESTGIT_SLEEPY=2 git push) &&
+ compare_refs localclone2 HEAD server2 HEAD
+'
+
test_expect_success 'synch with changes from localclone' '
(cd clone &&
git pull)