From cc440f13b4a26e5ec454e2ef8f9861af897ffba4 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 15 Sep 2010 19:41:14 -0700 Subject: Add tests for DependencyArg __str__ and __unicode__ methods. --- pym/portage/tests/unicode/__init__.py | 2 + pym/portage/tests/unicode/__test__ | 0 pym/portage/tests/unicode/test_string_format.py | 51 +++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 pym/portage/tests/unicode/__init__.py create mode 100644 pym/portage/tests/unicode/__test__ create mode 100644 pym/portage/tests/unicode/test_string_format.py diff --git a/pym/portage/tests/unicode/__init__.py b/pym/portage/tests/unicode/__init__.py new file mode 100644 index 000000000..21a391aee --- /dev/null +++ b/pym/portage/tests/unicode/__init__.py @@ -0,0 +1,2 @@ +# Copyright 2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 diff --git a/pym/portage/tests/unicode/__test__ b/pym/portage/tests/unicode/__test__ new file mode 100644 index 000000000..e69de29bb diff --git a/pym/portage/tests/unicode/test_string_format.py b/pym/portage/tests/unicode/test_string_format.py new file mode 100644 index 000000000..95ef9cb12 --- /dev/null +++ b/pym/portage/tests/unicode/test_string_format.py @@ -0,0 +1,51 @@ +# Copyright 2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +import sys + +from portage import _encodings, _unicode_decode +from portage.tests import TestCase +from _emerge.DependencyArg import DependencyArg + +STR_IS_UNICODE = sys.hexversion >= 0x3000000 + +class StringFormatTestCase(TestCase): + """ + Test that string formatting works correctly in the current interpretter, + which may be either python2 or python3. + """ + + # In order to get some unicode test strings in a way that works in + # both python2 and python3, write them here as byte strings and + # decode them before use. This assumes _encodings['content'] is + # utf_8. + + unicode_strings = ( + b'\xE2\x80\x98', + b'\xE2\x80\x99', + ) + + def testDependencyArg(self): + + self.assertEqual(_encodings['content'], 'utf_8') + + for arg_bytes in self.unicode_strings: + arg_unicode = _unicode_decode(arg_bytes, encoding=_encodings['content']) + dependency_arg = DependencyArg(arg=arg_unicode) + + # Force unicode format string so that __unicode__() is + # called in python2. + formatted_str = _unicode_decode("%s") % (dependency_arg,) + self.assertEqual(formatted_str, arg_unicode) + + if STR_IS_UNICODE: + + # Test the __str__ method which returns unicode in python3 + formatted_str = "%s" % (dependency_arg,) + self.assertEqual(formatted_str, arg_unicode) + + else: + + # Test the __str__ method which returns encoded bytes in python2 + formatted_bytes = "%s" % (dependency_arg,) + self.assertEqual(formatted_bytes, arg_bytes) -- cgit v1.2.3-1-g7c22