/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/stub_sftp.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import os
23
23
import paramiko
24
24
import socket
25
 
try:
26
 
    import socketserver
27
 
except ImportError:
28
 
    import SocketServer as socketserver
 
25
import SocketServer
29
26
import sys
30
27
import time
31
28
 
32
 
from .. import (
 
29
from bzrlib import (
33
30
    osutils,
34
31
    trace,
35
32
    urlutils,
36
33
    )
37
 
from ..transport import (
 
34
from bzrlib.transport import (
38
35
    ssh,
39
36
    )
40
 
from . import test_server
 
37
from bzrlib.tests import test_server
41
38
 
42
39
 
43
40
class StubServer(paramiko.ServerInterface):
62
59
        try:
63
60
            return paramiko.SFTPAttributes.from_stat(
64
61
                os.fstat(self.readfile.fileno()))
65
 
        except OSError as e:
 
62
        except OSError, e:
66
63
            return paramiko.SFTPServer.convert_errno(e.errno)
67
64
 
68
65
    def chattr(self, attr):
71
68
        trace.mutter('Changing permissions on %s to %s', self.filename, attr)
72
69
        try:
73
70
            paramiko.SFTPServer.set_file_attr(self.filename, attr)
74
 
        except OSError as e:
 
71
        except OSError, e:
75
72
            return paramiko.SFTPServer.convert_errno(e.errno)
76
73
 
77
74
 
128
125
    def chattr(self, path, attr):
129
126
        try:
130
127
            paramiko.SFTPServer.set_file_attr(path, attr)
131
 
        except OSError as e:
 
128
        except OSError, e:
132
129
            return paramiko.SFTPServer.convert_errno(e.errno)
133
130
        return paramiko.SFTP_OK
134
131
 
149
146
                attr.filename = fname
150
147
                out.append(attr)
151
148
            return out
152
 
        except OSError as e:
 
149
        except OSError, e:
153
150
            return paramiko.SFTPServer.convert_errno(e.errno)
154
151
 
155
152
    def stat(self, path):
156
153
        path = self._realpath(path)
157
154
        try:
158
155
            return paramiko.SFTPAttributes.from_stat(os.stat(path))
159
 
        except OSError as e:
 
156
        except OSError, e:
160
157
            return paramiko.SFTPServer.convert_errno(e.errno)
161
158
 
162
159
    def lstat(self, path):
163
160
        path = self._realpath(path)
164
161
        try:
165
162
            return paramiko.SFTPAttributes.from_stat(os.lstat(path))
166
 
        except OSError as e:
 
163
        except OSError, e:
167
164
            return paramiko.SFTPServer.convert_errno(e.errno)
168
165
 
169
166
    def open(self, path, flags, attr):
175
172
            else:
176
173
                # os.open() defaults to 0777 which is
177
174
                # an odd default mode for files
178
 
                fd = os.open(path, flags, 0o666)
179
 
        except OSError as e:
 
175
                fd = os.open(path, flags, 0666)
 
176
        except OSError, e:
180
177
            return paramiko.SFTPServer.convert_errno(e.errno)
181
178
 
182
179
        if (flags & os.O_CREAT) and (attr is not None):
191
188
            fstr = 'rb'
192
189
        try:
193
190
            f = os.fdopen(fd, fstr)
194
 
        except (IOError, OSError) as e:
 
191
        except (IOError, OSError), e:
195
192
            return paramiko.SFTPServer.convert_errno(e.errno)
196
193
        fobj = StubSFTPHandle()
197
194
        fobj.filename = path
203
200
        path = self._realpath(path)
204
201
        try:
205
202
            os.remove(path)
206
 
        except OSError as e:
 
203
        except OSError, e:
207
204
            return paramiko.SFTPServer.convert_errno(e.errno)
208
205
        return paramiko.SFTP_OK
209
206
 
212
209
        newpath = self._realpath(newpath)
213
210
        try:
214
211
            os.rename(oldpath, newpath)
215
 
        except OSError as e:
 
212
        except OSError, e:
216
213
            return paramiko.SFTPServer.convert_errno(e.errno)
217
214
        return paramiko.SFTP_OK
218
215
 
228
225
            if attr is not None:
229
226
                attr._flags &= ~attr.FLAG_PERMISSIONS
230
227
                paramiko.SFTPServer.set_file_attr(path, attr)
231
 
        except OSError as e:
 
228
        except OSError, e:
232
229
            return paramiko.SFTPServer.convert_errno(e.errno)
233
230
        return paramiko.SFTP_OK
234
231
 
236
233
        path = self._realpath(path)
237
234
        try:
238
235
            os.rmdir(path)
239
 
        except OSError as e:
 
236
        except OSError, e:
240
237
            return paramiko.SFTPServer.convert_errno(e.errno)
241
238
        return paramiko.SFTP_OK
242
239
 
340
337
        return bytes_sent
341
338
 
342
339
 
343
 
class TestingSFTPConnectionHandler(socketserver.BaseRequestHandler):
 
340
class TestingSFTPConnectionHandler(SocketServer.BaseRequestHandler):
344
341
 
345
342
    def setup(self):
346
343
        self.wrap_for_latency()
348
345
        ptrans = paramiko.Transport(self.request)
349
346
        self.paramiko_transport = ptrans
350
347
        # Set it to a channel under 'bzr' so that we get debug info
351
 
        ptrans.set_log_channel('brz.paramiko.transport')
 
348
        ptrans.set_log_channel('bzr.paramiko.transport')
352
349
        ptrans.add_server_key(tcs.get_host_key())
353
350
        ptrans.set_subsystem_handler('sftp', paramiko.SFTPServer,
354
351
                                     StubSFTPServer, root=tcs._root,
384
381
            def get_transport(self):
385
382
                return self
386
383
            def get_log_channel(self):
387
 
                return 'brz.paramiko'
 
384
                return 'bzr.paramiko'
388
385
            def get_name(self):
389
386
                return '1'
390
387
            def get_hexdump(self):
401
398
        try:
402
399
            sftp_server.start_subsystem(
403
400
                'sftp', None, ssh.SocketAsChannelAdapter(self.request))
404
 
        except socket.error as e:
 
401
        except socket.error, e:
405
402
            if (len(e.args) > 0) and (e.args[0] == errno.EPIPE):
406
403
                # it's okay for the client to disconnect abruptly
407
404
                # (bug in paramiko 1.6: it should absorb this exception)
408
405
                pass
409
406
            else:
410
407
                raise
411
 
        except Exception as e:
 
408
        except Exception, e:
412
409
            # This typically seems to happen during interpreter shutdown, so
413
410
            # most of the useful ways to report this error won't work.
414
411
            # Writing the exception type, and then the text of the exception,
484
481
                'the local current working directory.' % (backing_server,))
485
482
        self._original_vendor = ssh._ssh_vendor_manager._cached_ssh_vendor
486
483
        ssh._ssh_vendor_manager._cached_ssh_vendor = self._vendor
487
 
        self._homedir = osutils.getcwd()
488
484
        if sys.platform == 'win32':
 
485
            # Win32 needs to use the UNICODE api
 
486
            self._homedir = os.getcwdu()
489
487
            # Normalize the path or it will be wrongly escaped
490
488
            self._homedir = osutils.normpath(self._homedir)
491
489
        else:
492
 
            self._homedir = self._homedir
 
490
            # But unix SFTP servers should just deal in bytestreams
 
491
            self._homedir = os.getcwd()
493
492
        if self._server_homedir is None:
494
493
            self._server_homedir = self._homedir
495
494
        self._root = '/'
504
503
            ssh._ssh_vendor_manager._cached_ssh_vendor = self._original_vendor
505
504
 
506
505
    def get_bogus_url(self):
507
 
        """See breezy.transport.Server.get_bogus_url."""
 
506
        """See bzrlib.transport.Server.get_bogus_url."""
508
507
        # this is chosen to try to prevent trouble with proxies, weird dns, etc
509
508
        # we bind a random socket, so that we get a guaranteed unused port
510
509
        # we just never listen on that port
517
516
    """A test server for sftp transports, using absolute urls and ssh."""
518
517
 
519
518
    def get_url(self):
520
 
        """See breezy.transport.Server.get_url."""
 
519
        """See bzrlib.transport.Server.get_url."""
521
520
        homedir = self._homedir
522
521
        if sys.platform != 'win32':
523
522
            # Remove the initial '/' on all platforms but win32
541
540
    """A test server for sftp transports, using absolute urls."""
542
541
 
543
542
    def get_url(self):
544
 
        """See breezy.transport.Server.get_url."""
 
543
        """See bzrlib.transport.Server.get_url."""
545
544
        homedir = self._homedir
546
545
        if sys.platform != 'win32':
547
546
            # Remove the initial '/' on all platforms but win32
553
552
    """A test server for sftp transports, using homedir relative urls."""
554
553
 
555
554
    def get_url(self):
556
 
        """See breezy.transport.Server.get_url."""
 
555
        """See bzrlib.transport.Server.get_url."""
557
556
        return self._get_sftp_url("%7E/")
558
557
 
559
558