diff options
author | Calum Lind <calumlind@gmail.com> | 2018-10-22 14:38:47 +0100 |
---|---|---|
committer | Calum Lind <calumlind@gmail.com> | 2018-10-22 21:58:06 +0100 |
commit | e6c61c3f8ccae700da1b88e9f1b4dfde1b53ae7f (patch) | |
tree | 36885492e5bf9b1a9cb590bef068e218ab70f138 /deluge/tests/test_torrent.py | |
parent | b834e33568facc7c1402c98965b83f690f4d045c (diff) | |
download | deluge-e6c61c3f8ccae700da1b88e9f1b4dfde1b53ae7f.tar.gz deluge-e6c61c3f8ccae700da1b88e9f1b4dfde1b53ae7f.tar.bz2 deluge-e6c61c3f8ccae700da1b88e9f1b4dfde1b53ae7f.zip |
[Core] Fix potential renaming unicode folders issue
- Found an issue while fixing `get_name` where `handle.rename_file`
would raise a UnicodeDecodeError with non-ascii on Python 2. The
fix is to catch this and pass unicode string to method instead.
- Add a test `test_rename_unicode` to verify no errors are generated.
- Updated test to use core.session instead of creating another one.
Diffstat (limited to 'deluge/tests/test_torrent.py')
-rw-r--r-- | deluge/tests/test_torrent.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/deluge/tests/test_torrent.py b/deluge/tests/test_torrent.py index 747aa33ea..ef5ecba1f 100644 --- a/deluge/tests/test_torrent.py +++ b/deluge/tests/test_torrent.py @@ -13,7 +13,7 @@ from base64 import b64encode import mock from twisted.internet import reactor -from twisted.internet.task import deferLater +from twisted.internet.task import defer, deferLater from twisted.trial import unittest import deluge.component as component @@ -24,7 +24,7 @@ from deluge.common import utf8_encode_structure, windows_check from deluge.core.core import Core from deluge.core.rpcserver import RPCServer from deluge.core.torrent import Torrent -from deluge.core.torrentmanager import TorrentState +from deluge.core.torrentmanager import TorrentManager, TorrentState from .basetest import BaseTestCase @@ -44,7 +44,7 @@ class TorrentTestCase(BaseTestCase): self.rpcserver = RPCServer(listen=False) self.core = Core() self.core.config.config['lsd'] = False - self.session = lt.session() + self.session = self.core.session self.torrent = None return component.start() @@ -304,3 +304,17 @@ class TorrentTestCase(BaseTestCase): handle = self.session.add_torrent(atp) self.torrent = Torrent(handle, {}) self.assertEqual(self.torrent.get_name(), 'সুকুমার রায়.mkv') + + def test_rename_unicode(self): + """Test renaming file/folders with unicode filenames.""" + atp = self.get_torrent_atp('unicode_filenames.torrent') + handle = self.session.add_torrent(atp) + self.torrent = Torrent(handle, {}) + # Ignore TorrentManager method call + TorrentManager.save_resume_data = mock.MagicMock + + result = self.torrent.rename_folder('unicode_filenames', 'Горбачёв') + self.assertIsInstance(result, defer.DeferredList) + + result = self.torrent.rename_files([[0, 'new_рбачёв']]) + self.assertIsNone(result) |