Exemplo n.º 1
0
 def test_rsync_same_popen_twice(self, config, mysetup, hookrecorder):
     source, dest = mysetup.source, mysetup.dest
     hm = NodeManager(config, ["popen//chdir=%s" %dest] * 2)
     hm.makegateways()
     source.ensure("dir1", "dir2", "hello")
     hm.rsync(source)
     call = hookrecorder.popcall("pytest_xdist_rsyncstart")
     assert call.source == source
     assert len(call.gateways) == 1
     assert call.gateways[0] in hm.group
     call = hookrecorder.popcall("pytest_xdist_rsyncfinish")
Exemplo n.º 2
0
 def test_optimise_popen(self, testdir, mysetup):
     source, dest = mysetup.source, mysetup.dest
     specs = ["popen"] * 3
     source.join("conftest.py").write("rsyncdirs = ['a']")
     source.ensure('a', dir=1)
     config = testdir.parseconfig(source)
     nodemanager = NodeManager(config, specs)
     nodemanager.makegateways()
     nodemanager.rsync_roots()
     for gwspec in nodemanager.specs:
         assert gwspec._samefilesystem()
         assert not gwspec.chdir
Exemplo n.º 3
0
 def test_rsync_roots_no_roots(self, testdir, mysetup):
     mysetup.source.ensure("dir1", "file1").write("hello")
     config = testdir.parseconfig(mysetup.source)
     nodemanager = NodeManager(config, ["popen//chdir=%s" % mysetup.dest])
     # assert nodemanager.config.topdir == source == config.topdir
     nodemanager.makegateways()
     nodemanager.rsync_roots()
     p, = nodemanager.gwmanager.multi_exec(
         "import os ; channel.send(os.getcwd())").receive_each()
     p = py.path.local(p)
     py.builtin.print_("remote curdir", p)
     assert p == mysetup.dest.join(config.topdir.basename)
     assert p.join("dir1").check()
     assert p.join("dir1", "file1").check()
Exemplo n.º 4
0
 def test_rsync_roots_no_roots(self, testdir, mysetup):
     mysetup.source.ensure("dir1", "file1").write("hello")
     config = testdir.parseconfig(mysetup.source)
     nodemanager = NodeManager(config, ["popen//chdir=%s" % mysetup.dest])
     # assert nodemanager.config.topdir == source == config.topdir
     nodemanager.makegateways()
     nodemanager.rsync_roots()
     p, = nodemanager.gwmanager.multi_exec(
         "import os ; channel.send(os.getcwd())").receive_each()
     p = py.path.local(p)
     py.builtin.print_("remote curdir", p)
     assert p == mysetup.dest.join(config.topdir.basename)
     assert p.join("dir1").check()
     assert p.join("dir1", "file1").check()
Exemplo n.º 5
0
 def test_rsync_popen_with_path(self, config, mysetup):
     source, dest = mysetup.source, mysetup.dest
     hm = NodeManager(config, ["popen//chdir=%s" %dest] * 1)
     hm.makegateways()
     source.ensure("dir1", "dir2", "hello")
     l = []
     hm.rsync(source, notify=lambda *args: l.append(args))
     assert len(l) == 1
     assert l[0] == ("rsyncrootready", hm.group['gw0'].spec, source)
     hm.teardown_nodes()
     dest = dest.join(source.basename)
     assert dest.join("dir1").check()
     assert dest.join("dir1", "dir2").check()
     assert dest.join("dir1", "dir2", 'hello').check()
Exemplo n.º 6
0
    def test_popen_makegateway_events(self, config, hookrecorder, _pytest):
        hm = NodeManager(config, ["popen"] * 2)
        hm.makegateways()
        call = hookrecorder.popcall("pytest_xdist_setupnodes")
        assert len(call.specs) == 2

        call = hookrecorder.popcall("pytest_xdist_newgateway")
        assert call.gateway.spec == execnet.XSpec("popen")
        assert call.gateway.id == "gw0"
        call = hookrecorder.popcall("pytest_xdist_newgateway")
        assert call.gateway.id == "gw1"
        assert len(hm.group) == 2
        hm.teardown_nodes()
        assert not len(hm.group)
Exemplo n.º 7
0
 def test_init_rsync_roots(self, testdir, mysetup):
     source, dest = mysetup.source, mysetup.dest
     dir2 = source.ensure("dir1", "dir2", dir=1)
     source.ensure("dir1", "somefile", dir=1)
     dir2.ensure("hello")
     source.ensure("bogusdir", "file")
     source.join("tox.ini").write(py.std.textwrap.dedent("""
         [pytest]
         rsyncdirs=dir1/dir2
     """))
     config = testdir.parseconfig(source)
     nodemanager = NodeManager(config, ["popen//chdir=%s" % dest])
     nodemanager.makegateways()
     nodemanager.rsync_roots()
     assert dest.join("dir2").check()
     assert not dest.join("dir1").check()
     assert not dest.join("bogus").check()
Exemplo n.º 8
0
 def test_popens_rsync(self, config, mysetup):
     source = mysetup.source
     hm = NodeManager(config, ["popen"] * 2)
     hm.makegateways()
     assert len(hm.group) == 2
     for gw in hm.group:
         class pseudoexec:
             args = []
             def __init__(self, *args):
                 self.args.extend(args)
             def waitclose(self):
                 pass
         gw.remote_exec = pseudoexec
     l = []
     hm.rsync(source, notify=lambda *args: l.append(args))
     assert not l
     hm.teardown_nodes()
     assert not len(hm.group)
     assert "sys.path.insert" in gw.remote_exec.args[0]
Exemplo n.º 9
0
 def test_popen_rsync_subdir(self, testdir, mysetup):
     source, dest = mysetup.source, mysetup.dest
     dir1 = mysetup.source.mkdir("dir1")
     dir2 = dir1.mkdir("dir2")
     dir2.ensure("hello")
     for rsyncroot in (dir1, source):
         dest.remove()
         nodemanager = NodeManager(testdir.parseconfig(
             "--tx", "popen//chdir=%s" % dest,
             "--rsyncdir", rsyncroot,
             source,
         ))
         nodemanager.makegateways()
         nodemanager.rsync_roots()
         if rsyncroot == source:
             dest = dest.join("source")
         assert dest.join("dir1").check()
         assert dest.join("dir1", "dir2").check()
         assert dest.join("dir1", "dir2", 'hello').check()
         nodemanager.teardown_nodes()