[svn r57758] unify test support, remove basetest.py
--HG-- branch : trunk
This commit is contained in:
parent
14cfc8d342
commit
7518dcabc2
|
@ -1,32 +0,0 @@
|
||||||
|
|
||||||
""" Support module for running tests
|
|
||||||
"""
|
|
||||||
|
|
||||||
import py
|
|
||||||
from py.__.test.testing.setupdata import getexamplefile
|
|
||||||
|
|
||||||
class DirSetup(object):
|
|
||||||
def setup_method(self, method):
|
|
||||||
name = "%s.%s" %(self.__class__.__name__, method.func_name)
|
|
||||||
self.tmpdir = py.test.ensuretemp(name)
|
|
||||||
self.source = self.tmpdir.ensure("source", dir=1)
|
|
||||||
self.dest = self.tmpdir.join("dest")
|
|
||||||
|
|
||||||
|
|
||||||
class BasicRsessionTest(object):
|
|
||||||
def setup_class(cls):
|
|
||||||
path = getexamplefile("test_funcexamples.py")
|
|
||||||
cls.config = py.test.config._reparse([path.dirpath()])
|
|
||||||
cls.modulecol = cls.config.getfsnode(path)
|
|
||||||
|
|
||||||
def setup_method(self, method):
|
|
||||||
self.session = self.config.initsession()
|
|
||||||
|
|
||||||
def getfunc(self, name):
|
|
||||||
funcname = "test_func" + name
|
|
||||||
col = self.modulecol.join(funcname)
|
|
||||||
assert col is not None, funcname
|
|
||||||
return col
|
|
||||||
|
|
||||||
def getdocexample(self):
|
|
||||||
return getexamplefile("docexample.txt")
|
|
|
@ -6,7 +6,6 @@ import py
|
||||||
from py.__.test import event
|
from py.__.test import event
|
||||||
from py.__.test.dsession.dsession import DSession
|
from py.__.test.dsession.dsession import DSession
|
||||||
from py.__.test.dsession.hostmanage import HostManager, Host
|
from py.__.test.dsession.hostmanage import HostManager, Host
|
||||||
from basetest import BasicRsessionTest, DirSetup
|
|
||||||
from py.__.test.testing import suptest
|
from py.__.test.testing import suptest
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,18 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import py
|
import py
|
||||||
from basetest import DirSetup
|
from py.__.test.testing import suptest
|
||||||
from py.__.test.dsession.hostmanage import HostRSync, Host, HostManager, gethosts
|
from py.__.test.dsession.hostmanage import HostRSync, Host, HostManager, gethosts
|
||||||
from py.__.test.dsession.hostmanage import sethomedir, gethomedir, getpath_relto_home
|
from py.__.test.dsession.hostmanage import sethomedir, gethomedir, getpath_relto_home
|
||||||
from py.__.test import event
|
from py.__.test import event
|
||||||
|
|
||||||
class TestHost(DirSetup):
|
class TmpWithSourceDest(suptest.FileCreation):
|
||||||
|
def setup_method(self, method):
|
||||||
|
super(TmpWithSourceDest, self).setup_method(method)
|
||||||
|
self.source = self.tmpdir.mkdir("source")
|
||||||
|
self.dest = self.tmpdir.mkdir("dest")
|
||||||
|
|
||||||
|
class TestHost(suptest.FileCreation):
|
||||||
def _gethostinfo(self, relpath=""):
|
def _gethostinfo(self, relpath=""):
|
||||||
exampledir = self.tmpdir.join("gethostinfo")
|
exampledir = self.tmpdir.join("gethostinfo")
|
||||||
if relpath:
|
if relpath:
|
||||||
|
@ -119,7 +125,7 @@ class TestHost(DirSetup):
|
||||||
res = channel.receive()
|
res = channel.receive()
|
||||||
assert res == host.gw_remotepath
|
assert res == host.gw_remotepath
|
||||||
|
|
||||||
class TestSyncing(DirSetup):
|
class TestSyncing(TmpWithSourceDest):
|
||||||
def _gethostinfo(self):
|
def _gethostinfo(self):
|
||||||
hostinfo = Host("localhost:%s" % self.dest)
|
hostinfo = Host("localhost:%s" % self.dest)
|
||||||
return hostinfo
|
return hostinfo
|
||||||
|
@ -181,7 +187,7 @@ class TestSyncing(DirSetup):
|
||||||
res2 = rsync.add_target_host(h2)
|
res2 = rsync.add_target_host(h2)
|
||||||
assert not res2
|
assert not res2
|
||||||
|
|
||||||
class TestHostManager(DirSetup):
|
class TestHostManager(TmpWithSourceDest):
|
||||||
def gethostmanager(self, dist_hosts, dist_rsync_roots=None):
|
def gethostmanager(self, dist_hosts, dist_rsync_roots=None):
|
||||||
l = ["dist_hosts = %r" % dist_hosts]
|
l = ["dist_hosts = %r" % dist_hosts]
|
||||||
if dist_rsync_roots:
|
if dist_rsync_roots:
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
import py
|
import py
|
||||||
from py.__.test.dsession.masterslave import MasterNode
|
from py.__.test.dsession.masterslave import MasterNode
|
||||||
from py.__.test.dsession.hostmanage import Host
|
from py.__.test.dsession.hostmanage import Host
|
||||||
from basetest import BasicRsessionTest
|
|
||||||
from py.__.test import event
|
from py.__.test import event
|
||||||
|
from py.__.test.testing import suptest
|
||||||
|
|
||||||
class TestMasterSlaveConnection(BasicRsessionTest):
|
class TestMasterSlaveConnection(suptest.InlineCollection):
|
||||||
def getevent(self, eventtype=event.ItemTestReport, timeout=2.0):
|
def getevent(self, eventtype=event.ItemTestReport, timeout=2.0):
|
||||||
events = []
|
events = []
|
||||||
while 1:
|
while 1:
|
||||||
|
@ -23,15 +23,30 @@ class TestMasterSlaveConnection(BasicRsessionTest):
|
||||||
|
|
||||||
def setup_method(self, method):
|
def setup_method(self, method):
|
||||||
super(TestMasterSlaveConnection, self).setup_method(method)
|
super(TestMasterSlaveConnection, self).setup_method(method)
|
||||||
|
self.makepyfile(__init__="")
|
||||||
|
self.config = self.parseconfig(self.tmpdir)
|
||||||
self.queue = py.std.Queue.Queue()
|
self.queue = py.std.Queue.Queue()
|
||||||
self.host = Host("localhost")
|
self.host = Host("localhost")
|
||||||
self.host.initgateway()
|
self.host.initgateway()
|
||||||
self.node = MasterNode(self.host, self.session.config,
|
self.node = MasterNode(self.host, self.config, self.queue.put)
|
||||||
self.queue.put)
|
|
||||||
assert not self.node.channel.isclosed()
|
assert not self.node.channel.isclosed()
|
||||||
|
|
||||||
|
def getitem(self, source):
|
||||||
|
kw = {"test_" + self.tmpdir.basename: py.code.Source(source).strip()}
|
||||||
|
path = self.makepyfile(**kw)
|
||||||
|
fscol = self.config.getfsnode(path)
|
||||||
|
return fscol.collect_by_name("test_func")
|
||||||
|
|
||||||
|
def getitems(self, source):
|
||||||
|
kw = {"test_" + self.tmpdir.basename: py.code.Source(source).strip()}
|
||||||
|
path = self.makepyfile(**kw)
|
||||||
|
fscol = self.config.getfsnode(path)
|
||||||
|
return fscol.collect()
|
||||||
|
|
||||||
def teardown_method(self, method):
|
def teardown_method(self, method):
|
||||||
print "at teardown:", self.node.channel
|
print "at teardown:", self.node.channel
|
||||||
|
#if not self.node.channel.isclosed():
|
||||||
|
# self.node.shutdown()
|
||||||
self.host.gw.exit()
|
self.host.gw.exit()
|
||||||
|
|
||||||
def test_crash_invalid_item(self):
|
def test_crash_invalid_item(self):
|
||||||
|
@ -43,7 +58,11 @@ class TestMasterSlaveConnection(BasicRsessionTest):
|
||||||
def test_crash_killed(self):
|
def test_crash_killed(self):
|
||||||
if not hasattr(py.std.os, 'kill'):
|
if not hasattr(py.std.os, 'kill'):
|
||||||
py.test.skip("no os.kill")
|
py.test.skip("no os.kill")
|
||||||
item = self.getfunc("kill15")
|
item = self.getitem("""
|
||||||
|
def test_func():
|
||||||
|
import os
|
||||||
|
os.kill(os.getpid(), 15)
|
||||||
|
""")
|
||||||
self.node.send(item)
|
self.node.send(item)
|
||||||
ev = self.getevent(event.HostDown)
|
ev = self.getevent(event.HostDown)
|
||||||
assert ev.host == self.host
|
assert ev.host == self.host
|
||||||
|
@ -59,15 +78,15 @@ class TestMasterSlaveConnection(BasicRsessionTest):
|
||||||
"self.getevent(event.HostDown, timeout=0.01)")
|
"self.getevent(event.HostDown, timeout=0.01)")
|
||||||
|
|
||||||
def test_send_on_closed_channel(self):
|
def test_send_on_closed_channel(self):
|
||||||
item = self.getfunc("passed")
|
item = self.getitem("def test_func(): pass")
|
||||||
self.node.channel.close()
|
self.node.channel.close()
|
||||||
py.test.raises(IOError, "self.node.send(item)")
|
py.test.raises(IOError, "self.node.send(item)")
|
||||||
#ev = self.getevent(event.InternalException)
|
#ev = self.getevent(event.InternalException)
|
||||||
#assert ev.excinfo.errisinstance(IOError)
|
#assert ev.excinfo.errisinstance(IOError)
|
||||||
|
|
||||||
def test_send_one(self):
|
def test_send_one(self):
|
||||||
item = self.getfunc("passed")
|
item = self.getitem("def test_func(): pass")
|
||||||
self.node.send(self.getfunc("passed"))
|
self.node.send(item)
|
||||||
ev = self.getevent()
|
ev = self.getevent()
|
||||||
assert ev.passed
|
assert ev.passed
|
||||||
assert ev.colitem == item
|
assert ev.colitem == item
|
||||||
|
@ -75,16 +94,22 @@ class TestMasterSlaveConnection(BasicRsessionTest):
|
||||||
#assert event.item is not item
|
#assert event.item is not item
|
||||||
|
|
||||||
def test_send_some(self):
|
def test_send_some(self):
|
||||||
|
items = self.getitems("""
|
||||||
|
def test_pass():
|
||||||
|
pass
|
||||||
|
def test_fail():
|
||||||
|
assert 0
|
||||||
|
def test_skip():
|
||||||
|
import py
|
||||||
|
py.test.skip("x")
|
||||||
|
""")
|
||||||
|
for item in items:
|
||||||
|
self.node.send(item)
|
||||||
for outcome in "passed failed skipped".split():
|
for outcome in "passed failed skipped".split():
|
||||||
self.node.send(self.getfunc(outcome))
|
|
||||||
ev = self.getevent()
|
ev = self.getevent()
|
||||||
assert getattr(ev, outcome)
|
assert getattr(ev, outcome)
|
||||||
|
|
||||||
def test_send_list(self):
|
self.node.sendlist(items)
|
||||||
l = []
|
|
||||||
for outcome in "passed failed skipped".split():
|
|
||||||
l.append(self.getfunc(outcome))
|
|
||||||
self.node.sendlist(l)
|
|
||||||
for outcome in "passed failed skipped".split():
|
for outcome in "passed failed skipped".split():
|
||||||
ev = self.getevent()
|
ev = self.getevent()
|
||||||
assert getattr(ev, outcome)
|
assert getattr(ev, outcome)
|
||||||
|
|
Loading…
Reference in New Issue