From 9e28a561010c9880e1c5cb64838a9de774861f5b Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Wed, 17 Sep 2014 23:42:33 +0100 Subject: [PATCH] Fix rsync Since this now gets called multiple times per gateway we need to ensure an rsync happens for each combination of (spec, root) otherwise only the first root for a gateway will be rsynced. --- xdist/slavemanage.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/xdist/slavemanage.py b/xdist/slavemanage.py index 871ead7..0ba0d4e 100644 --- a/xdist/slavemanage.py +++ b/xdist/slavemanage.py @@ -110,8 +110,6 @@ class NodeManager(object): def rsync(self, gateway, source, notify=None, verbose=False, ignores=None): """Perform rsync to remote hosts for node.""" - # XXX Probably want to keep a list of rsynced specs to avoid - # duplicate rsyncs. # XXX This changes the calling behaviour of # pytest_xdist_rsyncstart and pytest_xdist_rsyncfinish to # be called once per rsync target. @@ -124,13 +122,13 @@ class NodeManager(object): import sys ; sys.path.insert(0, %r) """ % os.path.dirname(str(source))).waitclose() return - if spec in self._rsynced_specs: + if (spec, source) in self._rsynced_specs: return def finished(): if notify: notify("rsyncrootready", spec, source) rsync.add_target_host(gateway, finished=finished) - self._rsynced_specs.add(spec) + self._rsynced_specs.add((spec, source)) self.config.hook.pytest_xdist_rsyncstart( source=source, gateways=[gateway],