[svn r37494] the start of factoring out common and unified
host handling within py.test --HG-- branch : trunk
This commit is contained in:
parent
cfc0ca32f3
commit
df3448c6f9
|
@ -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
|
||||||
|
|
|
@ -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')
|
||||||
|
""")
|
Loading…
Reference in New Issue