From cc5ef891397427a7a7817a574453a11e754cc3aa Mon Sep 17 00:00:00 2001 From: bendikro Date: Tue, 1 Jan 2013 17:15:00 +0000 Subject: [PATCH] Fix #2241 : Can't add any torrent files with GUI running This fixes a bug in commit 60f196ff933, adds a test and removes unneeded ignore when encoding unicode to utf8. --- deluge/common.py | 8 ++++--- deluge/tests/test_ui_common.py | 30 +++++++++++++++++++++++++ deluge/tests/unicode_filenames.torrent | Bin 0 -> 34298 bytes 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 deluge/tests/test_ui_common.py create mode 100644 deluge/tests/unicode_filenames.torrent diff --git a/deluge/common.py b/deluge/common.py index b68c1c776..1116572c1 100644 --- a/deluge/common.py +++ b/deluge/common.py @@ -659,20 +659,22 @@ def decode_string(s, encoding="utf8"): pass return u'' -def utf8_encoded(s): +def utf8_encoded(s, encoding="utf8"): """ Returns a utf8 encoded string of s :param s: (unicode) string to (re-)encode :type s: basestring + :keyword encoding: the encoding to use in the decoding + :type encoding: string :returns: a utf8 encoded string of s :rtype: str """ if isinstance(s, str): - s = decode_string(s).encode("utf8") + s = decode_string(s, encoding).encode("utf8") elif isinstance(s, unicode): - s = s.encode("utf8", "ignore") + s = s.encode("utf8") return s class VersionSplit(object): diff --git a/deluge/tests/test_ui_common.py b/deluge/tests/test_ui_common.py new file mode 100644 index 000000000..14d58e7b4 --- /dev/null +++ b/deluge/tests/test_ui_common.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +from twisted.trial import unittest +import os +from deluge.ui.common import TorrentInfo + +class UICommonTestCase(unittest.TestCase): + def setUp(self): + pass + + def tearDown(self): + pass + + def test_utf8_encoded_paths(self): + filename = os.path.join(os.path.dirname(__file__), "test.torrent") + ti = TorrentInfo(filename) + self.assertTrue(ti.files_tree.has_key("azcvsupdater_2.6.2.jar")) + + def test_utf8_encoded_paths2(self): + filename = os.path.join(os.path.dirname(__file__), "unicode_filenames.torrent") + ti = TorrentInfo(filename) + + files = ti.files_tree["unicode_filenames"] + self.assertTrue(files.has_key("\xe3\x83\x86\xe3\x82\xaf\xe3\x82\xb9\xe3\x83\xbb\xe3\x83" + "\x86\xe3\x82\xaf\xe3\x82\xb5\xe3\x83\xb3.mkv")) + self.assertTrue(files.has_key("\xd0\x9c\xd0\xb8\xd1\x85\xd0\xb0\xd0\xb8\xd0\xbb \xd0\x93" + "\xd0\xbe\xd1\x80\xd0\xb1\xd0\xb0\xd1\x87\xd1\x91\xd0\xb2.mkv")) + self.assertTrue(files.has_key("Alisher ibn G'iyosiddin Navoiy.mkv")) + self.assertTrue(files.has_key("Ascii title.mkv")) + self.assertTrue(files.has_key("\xe0\xa6\xb8\xe0\xa7\x81\xe0\xa6\x95\xe0\xa7\x81\xe0\xa6" + "\xae\xe0\xa6\xbe\xe0\xa6\xb0 \xe0\xa6\xb0\xe0\xa6\xbe\xe0\xa7\x9f.mkv")) diff --git a/deluge/tests/unicode_filenames.torrent b/deluge/tests/unicode_filenames.torrent new file mode 100644 index 0000000000000000000000000000000000000000..e34f055dfb68bb2e92cd5a8ca47e0f73759ac1b5 GIT binary patch literal 34298 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