~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/sftp.py

Merge hpss-protocol2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
from bzrlib.osutils import pathjoin, fancy_rename, getcwd
51
51
from bzrlib.trace import mutter, warning
52
52
from bzrlib.transport import (
 
53
    local,
53
54
    register_urlparse_netloc_protocol,
54
55
    Server,
55
56
    split_url,
56
57
    ssh,
57
58
    Transport,
58
59
    )
59
 
from bzrlib.transport.local import LocalURLServer
60
60
 
61
61
try:
62
62
    import paramiko
1069
1069
        ssh_server.start_server(event, server)
1070
1070
        event.wait(5.0)
1071
1071
    
1072
 
    def setUp(self, vfs_server=None):
1073
 
        # XXX: TODO: make sftpserver back onto vfs_server rather than local disk.
1074
 
        assert vfs_server is None or isinstance(vfs_server, LocalURLServer), \
1075
 
            "SFTPServer currently assumes local transport, got %s" % vfs_server
 
1072
    def setUp(self, backing_server=None):
 
1073
        # XXX: TODO: make sftpserver back onto backing_server rather than local
 
1074
        # disk.
 
1075
        assert (backing_server is None or
 
1076
                isinstance(backing_server, local.LocalURLServer)), (
 
1077
            "backing_server should not be %r, because this can only serve the "
 
1078
            "local current working directory." % (backing_server,))
1076
1079
        self._original_vendor = ssh._ssh_vendor_manager._cached_ssh_vendor
1077
1080
        ssh._ssh_vendor_manager._cached_ssh_vendor = self._vendor
1078
1081
        if sys.platform == 'win32':
1152
1155
            else:
1153
1156
                raise
1154
1157
        except Exception, e:
1155
 
            import sys; sys.stderr.write('\nEXCEPTION %r\n\n' % e.__class__)
 
1158
            # This typically seems to happen during interpreter shutdown, so
 
1159
            # most of the useful ways to report this error are won't work.
 
1160
            # Writing the exception type, and then the text of the exception,
 
1161
            # seems to be the best we can do.
 
1162
            import sys
 
1163
            sys.stderr.write('\nEXCEPTION %r: ' % (e.__class__,))
 
1164
            sys.stderr.write('%s\n\n' % (e,))
1156
1165
        server.finish_subsystem()
1157
1166
 
1158
1167
 
1177
1186
 
1178
1187
 
1179
1188
class SFTPSiblingAbsoluteServer(SFTPAbsoluteServer):
1180
 
    """A test servere for sftp transports, using absolute urls to non-home."""
1181
 
 
1182
 
    def setUp(self):
 
1189
    """A test server for sftp transports where only absolute paths will work.
 
1190
 
 
1191
    It does this by serving from a deeply-nested directory that doesn't exist.
 
1192
    """
 
1193
 
 
1194
    def setUp(self, backing_server=None):
1183
1195
        self._server_homedir = '/dev/noone/runs/tests/here'
1184
 
        super(SFTPSiblingAbsoluteServer, self).setUp()
 
1196
        super(SFTPSiblingAbsoluteServer, self).setUp(backing_server)
1185
1197
 
1186
1198
 
1187
1199
def _sftp_connect(host, port, username, password):