summaryrefslogtreecommitdiffstats
path: root/deluge/tests/test_torrent.py
diff options
context:
space:
mode:
authorCalum Lind <calumlind@gmail.com>2018-10-22 14:38:47 +0100
committerCalum Lind <calumlind@gmail.com>2018-10-22 21:58:06 +0100
commite6c61c3f8ccae700da1b88e9f1b4dfde1b53ae7f (patch)
tree36885492e5bf9b1a9cb590bef068e218ab70f138 /deluge/tests/test_torrent.py
parentb834e33568facc7c1402c98965b83f690f4d045c (diff)
downloaddeluge-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.py20
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)