On Mon, 15 May 2017 00:08:31 -0400, Matt Harbison wrote: > # HG changeset patch > # User Matt Harbison <matt_harbi...@yahoo.com> > # Date 1494808413 14400 > # Sun May 14 20:33:33 2017 -0400 > # Node ID 809709930080937b6b56e5cad285798f29a10280 > # Parent 024271e90987e5794dab6eb00844467065fae7e4 > killdaemons: use posixfile to avoid intermittent unlink errors on Windows > > This is the aforementioned fix for the occasional cleanup error with #serve > enabled. There are a handful of tests that neglect to kill the daemons they > spawned, and this code is doing a last ditch reap of them. The test that got > flagged was non-deterministic, and I've seen up to 3 fail in the same run. > > The problem with trying to import the mercurial module is that while it is > available for running the individual *.t files, it is not in sys.path for > run-tests.py itself. I couldn't think of any other way to make this work, and > not affect sys.path for the indiviual tests. (The main source tree _is_ in > PYTHONPATH when this is imported from run-tests.py.) > > diff --git a/tests/killdaemons.py b/tests/killdaemons.py > --- a/tests/killdaemons.py > +++ b/tests/killdaemons.py > @@ -7,6 +7,16 @@ > import sys > import time > > +# PYTHONPATH contains the hg source tree when invoked from ./run-tests, but > +# sys.path does not, and importing mercurial fails. The first import works > from > +# the .t files without editing the path. > +try: > + from mercurial.util import posixfile > +except ImportError: > + srctree = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) > + sys.path.insert(1, srctree) > + from mercurial.util import posixfile
sys.path is global. I slightly prefer moving this hack to run-tests.py if it's okay for run-tests.py to depend on Mercurial modules. _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel