From 4f5d0a6600a22d32236663c8b23e6757f48b1663 Mon Sep 17 00:00:00 2001 From: Tomaz Solc Date: Wed, 21 Sep 2011 17:54:59 +0200 Subject: Always return a string object on Python 2.x Before this patch, unidecode() returned a unicode object on Python 2.x if the input was a unicode object that contained ASCII characters. Behaviour on Python 3.x remains unchanged. --- tests/basic_2.py | 12 ++++++++---- tests/basic_3.py | 12 ++++++++---- unidecode/__init__.py | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/basic_2.py b/tests/basic_2.py index 778643e..4e07fa1 100644 --- a/tests/basic_2.py +++ b/tests/basic_2.py @@ -115,8 +115,10 @@ class TestUnidecode(unittest.TestCase): ''), ] - for input, output in TESTS: - self.failUnlessEqual(unidecode(input), output) + for input, correct_output in TESTS: + test_output = unidecode(input) + self.failUnlessEqual(test_output, correct_output) + self.failUnless(isinstance(test_output, str)) @unittest.skipIf(sys.maxunicode < 0x10000, "narrow build") def test_specific_wide(self): @@ -131,8 +133,10 @@ class TestUnidecode(unittest.TestCase): 'km/h'), ] - for input, output in TESTS: - self.failUnlessEqual(unidecode(input), output) + for input, correct_output in TESTS: + test_output = unidecode(input) + self.failUnlessEqual(test_output, correct_output) + self.failUnless(isinstance(test_output, str)) if __name__ == "__main__": unittest.main() diff --git a/tests/basic_3.py b/tests/basic_3.py index b6092a9..97d0553 100644 --- a/tests/basic_3.py +++ b/tests/basic_3.py @@ -101,8 +101,10 @@ class TestUnidecode(unittest.TestCase): ''), ] - for instr, output in TESTS: - self.failUnlessEqual(unidecode(instr), output) + for instr, correct_output in TESTS: + test_output = unidecode(instr) + self.failUnlessEqual(test_output, correct_output) + self.failUnless(isinstance(test_output, str)) @unittest.skipIf(sys.maxunicode < 0x10000, "narrow build") def test_specific_wide(self): @@ -117,5 +119,7 @@ class TestUnidecode(unittest.TestCase): 'km/h'), ] - for instr, output in TESTS: - self.failUnlessEqual(unidecode(instr), output) + for instr, correct_output in TESTS: + test_output = unidecode(instr) + self.failUnlessEqual(test_output, correct_output) + self.failUnless(isinstance(test_output, str)) diff --git a/unidecode/__init__.py b/unidecode/__init__.py index 1b04539..4a08bf0 100644 --- a/unidecode/__init__.py +++ b/unidecode/__init__.py @@ -28,7 +28,7 @@ def unidecode(string): codepoint = ord(char) if codepoint < 0x80: # Basic ASCII - retval.append(char) + retval.append(str(char)) continue if codepoint > 0xeffff: -- cgit v1.2.1