Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-bad-pull @ 2734:07026da25ed8
hbisect.py: don't rely on __del__ to write the current state.
This is yet another page of the "Thou shalt not do too much inside
__del__ methods" book, in the "demandload and __del__ don't go well
together" chapter.
The bisect extension is broken in 0.9.1:
$ hg bisect init
$ hg bisect bad
Fatal Python error: Interpreter not initialized (version mismatch?)
Aborted
(yes, I tripled checked my instalation to make sure the problem is not
there)
It's been broken since revision fe1689273f84 moved the import of the
binascii module into a demandload.
(In details: the first time that "hg bisect bad" (or good) is called,
there are still no revisions saved in .hg/bisect/*, so bisect.__init__
doesn't call hg.bin on anything. So, when we reach __del__, the
binascii module still hasn't been imported and we get that "nice"
message above.)
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Fri, 28 Jul 2006 21:20:41 -0300 |
parents | d22d730c96ed |
children | 7012c889e8f2 |
line wrap: on
line source
#!/bin/sh hg clone http://localhost:20059/ copy echo $? ls copy 2>/dev/null || echo copy: No such file or directory cat > dumb.py <<EOF import BaseHTTPServer, SimpleHTTPServer, signal def run(server_class=BaseHTTPServer.HTTPServer, handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): server_address = ('localhost', 20059) httpd = server_class(server_address, handler_class) httpd.serve_forever() signal.signal(signal.SIGTERM, lambda x: sys.exit(0)) run() EOF python dumb.py 2>/dev/null & echo $! >> $DAEMON_PIDS http_proxy= hg clone http://localhost:20059/foo copy2 2>&1 | \ sed -e 's/404.*/404/' -e 's/Date:.*/Date:/' echo $? kill $!