~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/ftp/__init__.py

Support Unicode paths for ftp transport (encoded as utf8).

* bzrlib/transport/ftp/__init__.py:
(FtpTransport._remote_path): Remove the work around, we send and
receive utf8 paths.

* bzrlib/tests/per_transport.py:
(TransportTests.test_unicode_paths): Check that the *server* can
support Unicode paths).

* bzrlib/tests/ftp_server/pyftpdlib_based.py:
(BzrConformingFS.ftp2fs): Added to decode utf8 received paths.

* bzrlib/tests/ftp_server/medusa_based.py:
(FTPTestServer): Declare that medusa can't support Unicode paths
in an had-hoc way.

* bzrlib/osutils.py:
(fancy_rename): Ensure all paths are unicode.

Show diffs side-by-side

added added

removed removed

Lines of Context:
205
205
        #raise TransportError(msg='Error for path: %s' % (path,), orig_error=e)
206
206
        raise
207
207
 
208
 
    def _remote_path(self, relpath):
209
 
        # XXX: It seems that ftplib does not handle Unicode paths
210
 
        # at the same time, medusa won't handle utf8 paths So if
211
 
        # we .encode(utf8) here (see ConnectedTransport
212
 
        # implementation), then we get a Server failure.  while
213
 
        # if we use str(), we get a UnicodeError, and the test
214
 
        # suite just skips testing UnicodePaths.
215
 
        relative = str(urlutils.unescape(relpath))
216
 
        remote_path = self._combine_paths(self._path, relative)
217
 
        return remote_path
218
 
 
219
208
    def has(self, relpath):
220
209
        """Does the target location exist?"""
221
210
        # FIXME jam 20060516 We *do* ask about directories in the test suite