From 3c6ac0bab8bfaf1f1bb79a8b6a7a36533666908c Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Tue, 23 Sep 2014 19:45:59 +0700 Subject: [PATCH] Consolidated some text utils into the utils_tests test package. --- tests/text/__init__.py | 0 tests/text/tests.py | 105 ----------------------------- tests/utils_tests/test_encoding.py | 19 +++++- tests/utils_tests/test_http.py | 32 +++++++++ tests/utils_tests/test_text.py | 46 +++++++++++++ 5 files changed, 95 insertions(+), 107 deletions(-) delete mode 100644 tests/text/__init__.py delete mode 100644 tests/text/tests.py diff --git a/tests/text/__init__.py b/tests/text/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/text/tests.py b/tests/text/tests.py deleted file mode 100644 index 9ac6414b21..0000000000 --- a/tests/text/tests.py +++ /dev/null @@ -1,105 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.test import TestCase -from django.utils.encoding import iri_to_uri, force_text -from django.utils.functional import lazy -from django.utils.http import (cookie_date, http_date, - urlquote, urlquote_plus, urlunquote, urlunquote_plus) -from django.utils import six -from django.utils.text import get_text_list, smart_split -from django.utils.translation import override - -lazystr = lazy(force_text, six.text_type) - - -class TextTests(TestCase): - """ - Tests for stuff in django.utils.text and other text munging util functions. - """ - - def test_get_text_list(self): - self.assertEqual(get_text_list(['a', 'b', 'c', 'd']), 'a, b, c or d') - self.assertEqual(get_text_list(['a', 'b', 'c'], 'and'), 'a, b and c') - self.assertEqual(get_text_list(['a', 'b'], 'and'), 'a and b') - self.assertEqual(get_text_list(['a']), 'a') - self.assertEqual(get_text_list([]), '') - with override('ar'): - self.assertEqual(get_text_list(['a', 'b', 'c']), "a، b أو c") - - def test_smart_split(self): - - testdata = [ - ('This is "a person" test.', - ['This', 'is', '"a person"', 'test.']), - ('This is "a person\'s" test.', - ['This', 'is', '"a person\'s"', 'test.']), - ('This is "a person\\"s" test.', - ['This', 'is', '"a person\\"s"', 'test.']), - ('"a \'one', - ['"a', "'one"]), - ('all friends\' tests', - ['all', 'friends\'', 'tests']), - ('url search_page words="something else"', - ['url', 'search_page', 'words="something else"']), - ("url search_page words='something else'", - ['url', 'search_page', "words='something else'"]), - ('url search_page words "something else"', - ['url', 'search_page', 'words', '"something else"']), - ('url search_page words-"something else"', - ['url', 'search_page', 'words-"something else"']), - ('url search_page words=hello', - ['url', 'search_page', 'words=hello']), - ('url search_page words="something else', - ['url', 'search_page', 'words="something', 'else']), - ("cut:','|cut:' '", - ["cut:','|cut:' '"]), - (lazystr("a b c d"), # Test for #20231 - ['a', 'b', 'c', 'd']), - ] - for test, expected in testdata: - self.assertEqual(list(smart_split(test)), expected) - - def test_urlquote(self): - self.assertEqual(urlquote('Paris & Orl\xe9ans'), - 'Paris%20%26%20Orl%C3%A9ans') - self.assertEqual(urlquote('Paris & Orl\xe9ans', safe="&"), - 'Paris%20&%20Orl%C3%A9ans') - self.assertEqual( - urlunquote('Paris%20%26%20Orl%C3%A9ans'), - 'Paris & Orl\xe9ans') - self.assertEqual( - urlunquote('Paris%20&%20Orl%C3%A9ans'), - 'Paris & Orl\xe9ans') - self.assertEqual(urlquote_plus('Paris & Orl\xe9ans'), - 'Paris+%26+Orl%C3%A9ans') - self.assertEqual(urlquote_plus('Paris & Orl\xe9ans', safe="&"), - 'Paris+&+Orl%C3%A9ans') - self.assertEqual( - urlunquote_plus('Paris+%26+Orl%C3%A9ans'), - 'Paris & Orl\xe9ans') - self.assertEqual( - urlunquote_plus('Paris+&+Orl%C3%A9ans'), - 'Paris & Orl\xe9ans') - - def test_cookie_date(self): - t = 1167616461.0 - self.assertEqual(cookie_date(t), 'Mon, 01-Jan-2007 01:54:21 GMT') - - def test_http_date(self): - t = 1167616461.0 - self.assertEqual(http_date(t), 'Mon, 01 Jan 2007 01:54:21 GMT') - - def test_iri_to_uri(self): - self.assertEqual(iri_to_uri('red%09ros\xe9#red'), - 'red%09ros%C3%A9#red') - - self.assertEqual(iri_to_uri('/blog/for/J\xfcrgen M\xfcnster/'), - '/blog/for/J%C3%BCrgen%20M%C3%BCnster/') - - self.assertEqual(iri_to_uri('locations/%s' % urlquote_plus('Paris & Orl\xe9ans')), - 'locations/Paris+%26+Orl%C3%A9ans') - - def test_iri_to_uri_idempotent(self): - self.assertEqual(iri_to_uri(iri_to_uri('red%09ros\xe9#red')), - 'red%09ros%C3%A9#red') diff --git a/tests/utils_tests/test_encoding.py b/tests/utils_tests/test_encoding.py index a91f5965db..526fb709ce 100644 --- a/tests/utils_tests/test_encoding.py +++ b/tests/utils_tests/test_encoding.py @@ -5,8 +5,9 @@ import unittest import datetime from django.utils import six -from django.utils.encoding import (force_bytes, force_text, filepath_to_uri, - python_2_unicode_compatible) +from django.utils.encoding import (filepath_to_uri, force_bytes, + force_text, iri_to_uri, python_2_unicode_compatible) +from django.utils.http import urlquote_plus class TestEncodingUtils(unittest.TestCase): @@ -45,6 +46,20 @@ class TestEncodingUtils(unittest.TestCase): self.assertEqual(filepath_to_uri('upload\\чубака.mp4'.encode('utf-8')), 'upload/%D1%87%D1%83%D0%B1%D0%B0%D0%BA%D0%B0.mp4') + def test_iri_to_uri(self): + self.assertEqual(iri_to_uri('red%09ros\xe9#red'), + 'red%09ros%C3%A9#red') + + self.assertEqual(iri_to_uri('/blog/for/J\xfcrgen M\xfcnster/'), + '/blog/for/J%C3%BCrgen%20M%C3%BCnster/') + + self.assertEqual(iri_to_uri('locations/%s' % urlquote_plus('Paris & Orl\xe9ans')), + 'locations/Paris+%26+Orl%C3%A9ans') + + def test_iri_to_uri_idempotent(self): + self.assertEqual(iri_to_uri(iri_to_uri('red%09ros\xe9#red')), + 'red%09ros%C3%A9#red') + @unittest.skipIf(six.PY3, "tests a class not defining __str__ under Python 2") def test_decorated_class_without_str(self): with self.assertRaises(ValueError): diff --git a/tests/utils_tests/test_http.py b/tests/utils_tests/test_http.py index db24d1c9f2..c54c15a95d 100644 --- a/tests/utils_tests/test_http.py +++ b/tests/utils_tests/test_http.py @@ -1,3 +1,5 @@ +from __future__ import unicode_literals + from datetime import datetime import sys import unittest @@ -125,6 +127,28 @@ class TestUtilsHttp(unittest.TestCase): decoded = http.urlsafe_base64_decode(encoded) self.assertEqual(bytestring, decoded) + def test_urlquote(self): + self.assertEqual(http.urlquote('Paris & Orl\xe9ans'), + 'Paris%20%26%20Orl%C3%A9ans') + self.assertEqual(http.urlquote('Paris & Orl\xe9ans', safe="&"), + 'Paris%20&%20Orl%C3%A9ans') + self.assertEqual( + http.urlunquote('Paris%20%26%20Orl%C3%A9ans'), + 'Paris & Orl\xe9ans') + self.assertEqual( + http.urlunquote('Paris%20&%20Orl%C3%A9ans'), + 'Paris & Orl\xe9ans') + self.assertEqual(http.urlquote_plus('Paris & Orl\xe9ans'), + 'Paris+%26+Orl%C3%A9ans') + self.assertEqual(http.urlquote_plus('Paris & Orl\xe9ans', safe="&"), + 'Paris+&+Orl%C3%A9ans') + self.assertEqual( + http.urlunquote_plus('Paris+%26+Orl%C3%A9ans'), + 'Paris & Orl\xe9ans') + self.assertEqual( + http.urlunquote_plus('Paris+&+Orl%C3%A9ans'), + 'Paris & Orl\xe9ans') + class ETagProcessingTests(unittest.TestCase): def test_parsing(self): @@ -137,6 +161,14 @@ class ETagProcessingTests(unittest.TestCase): class HttpDateProcessingTests(unittest.TestCase): + def test_http_date(self): + t = 1167616461.0 + self.assertEqual(http.http_date(t), 'Mon, 01 Jan 2007 01:54:21 GMT') + + def test_cookie_date(self): + t = 1167616461.0 + self.assertEqual(http.cookie_date(t), 'Mon, 01-Jan-2007 01:54:21 GMT') + def test_parsing_rfc1123(self): parsed = http.parse_http_date('Sun, 06 Nov 1994 08:49:37 GMT') self.assertEqual(datetime.utcfromtimestamp(parsed), diff --git a/tests/utils_tests/test_text.py b/tests/utils_tests/test_text.py index 4015556bae..4ef30314cf 100644 --- a/tests/utils_tests/test_text.py +++ b/tests/utils_tests/test_text.py @@ -7,12 +7,58 @@ import warnings from django.test import SimpleTestCase from django.utils import six, text from django.utils.deprecation import RemovedInDjango19Warning +from django.utils.encoding import force_text +from django.utils.functional import lazy +from django.utils.translation import override + +lazystr = lazy(force_text, six.text_type) IS_WIDE_BUILD = (len('\U0001F4A9') == 1) class TestUtilsText(SimpleTestCase): + def test_get_text_list(self): + self.assertEqual(text.get_text_list(['a', 'b', 'c', 'd']), 'a, b, c or d') + self.assertEqual(text.get_text_list(['a', 'b', 'c'], 'and'), 'a, b and c') + self.assertEqual(text.get_text_list(['a', 'b'], 'and'), 'a and b') + self.assertEqual(text.get_text_list(['a']), 'a') + self.assertEqual(text.get_text_list([]), '') + with override('ar'): + self.assertEqual(text.get_text_list(['a', 'b', 'c']), "a، b أو c") + + def test_smart_split(self): + testdata = [ + ('This is "a person" test.', + ['This', 'is', '"a person"', 'test.']), + ('This is "a person\'s" test.', + ['This', 'is', '"a person\'s"', 'test.']), + ('This is "a person\\"s" test.', + ['This', 'is', '"a person\\"s"', 'test.']), + ('"a \'one', + ['"a', "'one"]), + ('all friends\' tests', + ['all', 'friends\'', 'tests']), + ('url search_page words="something else"', + ['url', 'search_page', 'words="something else"']), + ("url search_page words='something else'", + ['url', 'search_page', "words='something else'"]), + ('url search_page words "something else"', + ['url', 'search_page', 'words', '"something else"']), + ('url search_page words-"something else"', + ['url', 'search_page', 'words-"something else"']), + ('url search_page words=hello', + ['url', 'search_page', 'words=hello']), + ('url search_page words="something else', + ['url', 'search_page', 'words="something', 'else']), + ("cut:','|cut:' '", + ["cut:','|cut:' '"]), + (lazystr("a b c d"), # Test for #20231 + ['a', 'b', 'c', 'd']), + ] + for test, expected in testdata: + self.assertEqual(list(text.smart_split(test)), expected) + def test_truncate_chars(self): truncator = text.Truncator( 'The quick brown fox jumped over the lazy dog.'