master: t5800-remote-helpers.sh hangs on test "pulling from remote remote"
- From
Stefano Lattarini <stefano.lattarini@gmail.com>
- Date
- Apr 14, 2012, 09:01 UTC
- Message-ID
- <4F893CD8.5020700@gmail.com>
The test 't5800-remote-helpers.sh' hangs on my Linux desktop (where I have installed a custom simple-minded firewall based on iptables). This does not happen on remote systems I use for testing, so I guess the problem lies with my machine. Still, having the test to hang is unnecessarily harsh and user-unfriendly IMHO, and it would be better to detect the situation and SKIP or FAIL the affected test cases instead.
For reference, here is the output of the test 't5800-remote-helpers.sh' run with the '-v' option:
-*-*-
Initialized empty Git repository in /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/.git/
expecting success:
git init --bare server/.git &&
git clone server public &&
(cd public &&
echo content >file &&
git add file &&
git commit -m one &&
git push origin master)Initialized empty Git repository in /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server/.git/ Cloning into 'public'... warning: You appear to have cloned an empty repository. done. [master (root-commit) 9a7aa46] one Author: A U Thor <author@example.com> 1 file changed, 1 insertion(+) create mode 100644 file Counting objects: 3, done. Unpacking objects: 100% (3/3), done. Writing objects: 100% (3/3), 219 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server * [new branch] master -> master ok 1 - setup repository
expecting success:
git clone "testgit::${PWD}/server" localclone &&
test_cmp public/file localclone/fileCloning into 'localclone'... ok 2 - cloning from local repo
expecting success:
git clone "testgit::file://${PWD}/server" clone &&
test_cmp public/file clone/fileCloning into 'clone'... ok 3 - cloning from remote repo
expecting success:
(cd public &&
echo content >>file &&
git commit -a -m two &&
git push)[master 0eb255a] two Author: A U Thor <author@example.com> 1 file changed, 1 insertion(+) Counting objects: 5, done. Unpacking objects: 100% (3/3), done. Writing objects: 100% (3/3), 252 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server 9a7aa46..0eb255a master -> master ok 4 - create new commit on remote
expecting success:
(cd localclone && git pull) &&
test_cmp public/file localclone/file>From testgit::/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server
9a7aa46..0eb255a master -> origin/master Updating 9a7aa46..0eb255a Fast-forward file | 1 + 1 file changed, 1 insertion(+) ok 5 - pulling from local repo
expecting success:
(cd clone && git pull) &&
test_cmp public/file clone/file>From testgit::file:///devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server
9a7aa46..0eb255a master -> origin/master Updating 9a7aa46..0eb255a Fast-forward file | 1 + 1 file changed, 1 insertion(+) ok 6 - pulling from remote remote
expecting success:
(cd localclone &&
echo content >>file &&
git commit -a -m three &&
git push) &&
compare_refs localclone HEAD server HEAD[master 30d4cae] three Author: A U Thor <author@example.com> 1 file changed, 1 insertion(+)
-*-*-
At this point, the test hangs, and I have to manually kill it with a SIGINT, the result being:
-*-*-
Traceback (most recent call last):
File "/devel/stefano/src/git/git-remote-testgit", line 265, in <module>
sys.exit(main(sys.argv))
File "/devel/stefano/src/git/git-remote-testgit", line 262, in main
more = read_one_line(repo)
File "/devel/stefano/src/git/git-remote-testgit", line 227, in read_one_line
func(repo, cmdline)
File "/devel/stefano/src/git/git-remote-testgit", line 175, in do_export
changed = repo.importer.do_import(repo.gitdir)
File "/home/stefano/src/git/t/../git_remote_helpers/build/lib/git_remote_helpers/git/importer.py", line 54, in do_import
check_call(args)
File "/home/stefano/src/git/t/../git_remote_helpers/build/lib/git_remote_helpers/util.py", line 169, in check_call
retcode = call(*popenargs, **kwargs)
File "/home/stefano/src/git/t/../git_remote_helpers/build/lib/git_remote_helpers/util.py", line 155, in call
return subprocess.Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 1291, in wait
pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
File "/usr/lib/python2.7/subprocess.py", line 478, in _eintr_retry_call
return func(*args)
KeyboardInterrupt
FATAL: Unexpected exit with code 0-*-*-
If I run ps(1) in another terminal before interrupting the hung test, the following command sticks out as a possible culprit:
git-fast-import --quiet --export-marks=/devel/stefano/src/git/t/trash \ directory.t5800-remote-helpers/localclone/.git/info/fast-import/\ c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks \ --import-marks=/devel/stefano/src/git/t/'trash directory.t5800-remote-helpers'/\ localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/\ git.marks
-*-*-
Other possibly relevant information:
$ hg --version | head -1 Mercurial Distributed SCM (version 1.8.3) $ python --version
$ python --version Python 2.7.2+
$ /bin/sh --version | head -1 GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
$ git describe v1.7.10-167-gf245c01