diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-09-15 19:41:14 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-09-15 19:41:14 -0700 |
commit | cc440f13b4a26e5ec454e2ef8f9861af897ffba4 (patch) | |
tree | 50f5195d269bf1239202b3e62d1c27350324bd43 | |
parent | 32684ef519daea00ce8eefe48fe15893a5a886bf (diff) | |
download | portage-cc440f13b4a26e5ec454e2ef8f9861af897ffba4.tar.gz portage-cc440f13b4a26e5ec454e2ef8f9861af897ffba4.tar.bz2 portage-cc440f13b4a26e5ec454e2ef8f9861af897ffba4.zip |
Add tests for DependencyArg __str__ and __unicode__ methods.
-rw-r--r-- | pym/portage/tests/unicode/__init__.py | 2 | ||||
-rw-r--r-- | pym/portage/tests/unicode/__test__ | 0 | ||||
-rw-r--r-- | pym/portage/tests/unicode/test_string_format.py | 51 |
3 files changed, 53 insertions, 0 deletions
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 --- /dev/null +++ b/pym/portage/tests/unicode/__test__ 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) |