[svn r37494] the start of factoring out common and unified

host handling within py.test

--HG--
branch : trunk
This commit is contained in:
hpk 2007-01-28 18:53:43 +01:00
parent cfc0ca32f3
commit df3448c6f9
2 changed files with 93 additions and 0 deletions

37
py/test/host.py Normal file
View File

@ -0,0 +1,37 @@
class InvalidHostSpec(ValueError):
pass
def parsehostspec(spec):
parts = spec.split(":", 2)
if len(parts) < 2:
raise InvalidHostSpec(spec)
type = parts.pop(0)
if type == 'ssh':
sshaddress = parts.pop(0)
basedir = parts and ":".join(parts) or ''
return SpecSSH(sshaddress, basedir)
elif type == 'socket':
host = parts.pop(0)
if not parts:
raise InvalidHostSpec(spec)
remainder = parts.pop(0)
parts = remainder.split(":", 1)
port = int(parts.pop(0))
basedir = parts and ":".join(parts) or ''
return SpecSocket(host, port, basedir)
else:
raise InvalidHostSpec(spec)
class SpecSSH(object):
def __init__(self, sshaddress, basedir):
self.sshaddress = sshaddress
self.basedir = basedir
self.host = sshaddress.split('@', 1)[-1]
class SpecSocket(object):
def __init__(self, host, port, basedir):
self.host = host
self.port = port
self.basedir = basedir

View File

@ -0,0 +1,56 @@
"""
Testing Host setup and rsyncing operations.
"""
import py
from py.__.test.host import parsehostspec
def test_parse_hostspec_ssh():
hostspec = parsehostspec("ssh:xyz@domain.net:directory")
assert hostspec.host == "domain.net"
assert hostspec.basedir == "directory"
assert hostspec.sshaddress == "xyz@domain.net"
hostspec = parsehostspec("ssh:xyz@domain.net:direc:tory")
assert hostspec.host == "domain.net"
assert hostspec.basedir == "direc:tory"
assert hostspec.sshaddress == "xyz@domain.net"
hostspec = parsehostspec("ssh:xyz@domain.net")
assert hostspec.host == "domain.net"
assert hostspec.basedir == ""
assert hostspec.sshaddress == "xyz@domain.net"
hostspec = parsehostspec("ssh:domain.net:directory")
assert hostspec.host == "domain.net"
assert hostspec.basedir == "directory"
assert hostspec.sshaddress == "domain.net"
hostspec = parsehostspec("ssh:domain.net:/tmp/hello")
assert hostspec.host == "domain.net"
assert hostspec.basedir == "/tmp/hello"
assert hostspec.sshaddress == "domain.net"
def test_parse_hostspec_socket():
hostspec = parsehostspec("socket:domain.net:1234:directory")
assert hostspec.host == "domain.net"
assert hostspec.port == 1234
assert hostspec.basedir == "directory"
hostspec = parsehostspec("socket:domain.net:1234")
assert hostspec.host == "domain.net"
assert hostspec.port == 1234
assert hostspec.basedir == ""
def test_parse_hostspec_error():
py.test.raises(ValueError, """
parsehostspec('alksd:qweqwe')
""")
py.test.raises(ValueError, """
parsehostspec('ssh')
""")
py.test.raises(ValueError, """
parsehostspec('socket:qweqwe')
""")