[Python-checkins] cpython: #11754: test contents of string module attributes.

r.david.murray python-checkins at python.org
Tue Apr 14 02:08:41 CEST 2015


https://hg.python.org/cpython/rev/e1457e9f340f
changeset:   95623:e1457e9f340f
user:        R David Murray <rdmurray at bitdance.com>
date:        Mon Apr 13 20:04:29 2015 -0400
summary:
  #11754: test contents of string module attributes.

As noted in the comment, while the order of the items in the attributes is not
technically guaranteed, after all this time there is almost certainly user
code out there that relies on it, so we might as well test for it.

Patch by Chalmer Lowe.

files:
  Lib/test/test_string.py |  22 +++++++++++++---------
  Misc/ACKS               |   1 +
  2 files changed, 14 insertions(+), 9 deletions(-)


diff --git a/Lib/test/test_string.py b/Lib/test/test_string.py
--- a/Lib/test/test_string.py
+++ b/Lib/test/test_string.py
@@ -4,15 +4,19 @@
 class ModuleTest(unittest.TestCase):
 
     def test_attrs(self):
-        string.whitespace
-        string.ascii_lowercase
-        string.ascii_uppercase
-        string.ascii_letters
-        string.digits
-        string.hexdigits
-        string.octdigits
-        string.punctuation
-        string.printable
+        # While the exact order of the items in these attributes is not
+        # technically part of the "language spec", in practice there is almost
+        # certainly user code that depends on the order, so de-facto it *is*
+        # part of the spec.
+        self.assertEqual(string.whitespace, ' \t\n\r\x0b\x0c')
+        self.assertEqual(string.ascii_lowercase, 'abcdefghijklmnopqrstuvwxyz')
+        self.assertEqual(string.ascii_uppercase, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
+        self.assertEqual(string.ascii_letters, string.ascii_lowercase + string.ascii_uppercase)
+        self.assertEqual(string.digits, '0123456789')
+        self.assertEqual(string.hexdigits, string.digits + 'abcdefABCDEF')
+        self.assertEqual(string.octdigits, '01234567')
+        self.assertEqual(string.punctuation, '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~')
+        self.assertEqual(string.printable, string.digits + string.ascii_lowercase + string.ascii_uppercase + string.punctuation + string.whitespace)
 
     def test_capwords(self):
         self.assertEqual(string.capwords('abc def ghi'), 'Abc Def Ghi')
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -850,6 +850,7 @@
 Tom Loredo
 Justin Love
 Ned Jackson Lovely
+Chalmer Lowe
 Jason Lowe
 Tony Lownds
 Ray Loyzaga

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list