]> granicus.if.org Git - python/commitdiff
Issue #9308: Removed redundant coding cookies. Added tests for
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>
Fri, 15 Oct 2010 16:28:20 +0000 (16:28 +0000)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>
Fri, 15 Oct 2010 16:28:20 +0000 (16:28 +0000)
importing encoded modules that do not depend on specific stdlib
modules being encoded in a certain way.

16 files changed:
Doc/conf.py
Lib/inspect.py
Lib/pydoc.py
Lib/test/encoded_modules/__init__.py [new file with mode: 0644]
Lib/test/encoded_modules/module_iso_8859_1.py [new file with mode: 0644]
Lib/test/encoded_modules/module_koi8_r.py [new file with mode: 0644]
Lib/test/test_csv.py
Lib/test/test_doctest2.py
Lib/test/test_imp.py
Lib/test/test_pep3131.py
Lib/test/test_sys.py
Lib/test/test_winreg.py
Makefile.pre.in
Misc/NEWS
Tools/ccbench/ccbench.py
Tools/i18n/msgfmt.py

index 0f8e606d26b7fee2f9e4bdec15e72b338fe5f350..d12cb173e4d2c51c5379bdd3091d3ef87197484a 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 #
 # Python documentation build configuration file
 #
index 3596014cc2141472c43109c203d9f7ec4ddfb3af..35bc263cad70813b7e14fe0eaa364df0d81dfd05 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: iso-8859-1 -*-
 """Get useful information from live Python objects.
 
 This module encapsulates the interface provided by the internal special
index acee7b770c5ee650e0597ac86b26f380bc5c3a2e..5e54468f4e86775db58f1e8e93474931a6ebea09 100755 (executable)
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-# -*- coding: latin-1 -*-
 """Generate Python documentation in HTML or text for interactive use.
 
 In the Python interpreter, do "from pydoc import help" to provide online
diff --git a/Lib/test/encoded_modules/__init__.py b/Lib/test/encoded_modules/__init__.py
new file mode 100644 (file)
index 0000000..ec43252
--- /dev/null
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+
+# This is a package that contains a number of modules that are used to
+# test import from the source files that have different encodings.
+# This file (the __init__ module of the package), is encoded in utf-8
+# and contains a list of strings from various unicode planes that are
+# encoded differently to compare them to the same strings encoded
+# differently in submodules.  The following list, test_strings,
+# contains a list of tuples. The first element of each tuple is the
+# suffix that should be prepended with 'module_' to arrive at the
+# encoded submodule name, the second item is the encoding and the last
+# is the test string.  The same string is assigned to the variable
+# named 'test' inside the submodule.  If the decoding of modules works
+# correctly, from module_xyz import test should result in the same
+# string as listed below in the 'xyz' entry.
+
+# module, encoding, test string
+test_strings = (
+    ('iso_8859_1', 'iso-8859-1', "Les hommes ont oublié cette vérité, "
+     "dit le renard. Mais tu ne dois pas l'oublier. Tu deviens "
+     "responsable pour toujours de ce que tu as apprivoisé."),
+    ('koi8_r', 'koi8-r', "Познание бесконечности требует бесконечного времени.")
+)
diff --git a/Lib/test/encoded_modules/module_iso_8859_1.py b/Lib/test/encoded_modules/module_iso_8859_1.py
new file mode 100644 (file)
index 0000000..8f4a15c
--- /dev/null
@@ -0,0 +1,5 @@
+# test iso-8859-1 encoding
+# -*- encoding: iso-8859-1 -*-
+test = ("Les hommes ont oublié cette vérité, "
+        "dit le renard. Mais tu ne dois pas l'oublier. Tu deviens "
+        "responsable pour toujours de ce que tu as apprivoisé.")
diff --git a/Lib/test/encoded_modules/module_koi8_r.py b/Lib/test/encoded_modules/module_koi8_r.py
new file mode 100644 (file)
index 0000000..9b23a5a
--- /dev/null
@@ -0,0 +1,3 @@
+# test koi8-r encoding
+# -*- encoding: koi8-r  -*-
+test = "ðÏÚÎÁÎÉÅ ÂÅÓËÏÎÅÞÎÏÓÔÉ ÔÒÅÂÕÅÔ ÂÅÓËÏÎÅÞÎÏÇÏ ×ÒÅÍÅÎÉ."
index ca67ac6ee0f63e5cdfb2b753d9a05bfcedc6ffe8..97800afa693a1bb2aa5c217766db37fae8aa0579 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # Copyright (C) 2001,2002 Python Software Foundation
 # csv package unit tests
 
index 8500ed557859ae9826bab3943029daa18083d7c1..347a143641071d87e45a63b42297960617ba2986 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 """A module to test whether doctest recognizes some 2.2 features,
 like static and class methods.
 
index c71a4c755346a0766e1d2f319621c78f2660e717..b291dedd79db8fdcd83835593e1fc35ca31a7792 100644 (file)
@@ -5,7 +5,7 @@ import shutil
 import sys
 import unittest
 from test import support
-
+import importlib
 
 class LockTests(unittest.TestCase):
 
@@ -42,18 +42,32 @@ class LockTests(unittest.TestCase):
                             "RuntimeError")
 
 class ImportTests(unittest.TestCase):
+    def setUp(self):
+        mod = importlib.import_module('test.encoded_modules')
+        self.test_strings = mod.test_strings
+        self.test_path = mod.__path__
+
+    def test_import_encoded_module(self):
+        for modname, encoding, teststr in self.test_strings:
+            mod = importlib.import_module('test.encoded_modules.'
+                                          'module_' + modname)
+            self.assertEqual(teststr, mod.test)
 
     def test_find_module_encoding(self):
-        fd = imp.find_module("pydoc")[0]
-        self.assertEqual(fd.encoding, "iso-8859-1")
+        for mod, encoding, _ in self.test_strings:
+            fd = imp.find_module('module_' + mod, self.test_path)[0]
+            self.assertEqual(fd.encoding, encoding)
 
     def test_issue1267(self):
-        fp, filename, info  = imp.find_module("pydoc")
-        self.assertNotEqual(fp, None)
-        self.assertEqual(fp.encoding, "iso-8859-1")
-        self.assertEqual(fp.tell(), 0)
-        self.assertEqual(fp.readline(), '#!/usr/bin/env python3\n')
-        fp.close()
+        for mod, encoding, _ in self.test_strings:
+            fp, filename, info  = imp.find_module('module_' + mod,
+                                                  self.test_path)
+            self.assertNotEqual(fp, None)
+            self.assertEqual(fp.encoding, encoding)
+            self.assertEqual(fp.tell(), 0)
+            self.assertEqual(fp.readline(), '# test %s encoding\n'
+                             % encoding)
+            fp.close()
 
         fp, filename, info = imp.find_module("tokenize")
         self.assertNotEqual(fp, None)
index e4c2d031e20ac4f7da694e7a3d4941fa24773e19..fba1297d3c868e4b0d4ea05841d394e8d695a073 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 import unittest
 from test import support
 
index 8c3a1dbc74b1cacaf9f7e6482d1091785392a75c..62030611fb7d0cec1c4e0a68604f2aee19c0b5be 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: iso-8859-1 -*-
 import unittest, test.support
 import sys, io, os
 import struct
index 47570389d968bc92e740a66d94ab854345235ec6..b4524db8fbc5f44b0a71cdda8e073d737c698e3f 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # Test the windows specific win32reg module.
 # Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey
 
index 4dc0fbde917790a28be6c1b878197d2cf4c84338..905318e3feecbe77273626af4e2468eb4a0c0e79 100644 (file)
@@ -872,7 +872,7 @@ XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
 LIBSUBDIRS=    tkinter tkinter/test tkinter/test/test_tkinter \
                 tkinter/test/test_ttk site-packages test \
                test/decimaltestdata test/xmltestdata \
-               test/tracedmodules \
+               test/tracedmodules test/encoded_modules \
                concurrent encodings \
                email email/mime email/test email/test/data \
                html json json/tests http dbm xmlrpc \
index 6f3d36f3f4dc90a0826e854f2895b0f5095f2eb8..7d3ffc68ac451377eba6b20c5f0427054e1e966e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -403,6 +403,9 @@ Tools/Demos
 Tests
 -----
 
+- Issue #9308: Added tests for importing encoded modules that do not
+  depend on specific stdlib modules being encoded in a certain way.
+
 - Issue #1051: Add a script (Lib/test/make_ssl_certs.py) to generate the custom
   certificate and private key files used by SSL-related certs.
 
index 4979dcb389ec2fe4f6c02d7c6d53634954de1696..569ec217e4286880e527aa68e8fe33af12a98f61 100644 (file)
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # This file should be kept compatible with both Python 2.6 and Python >= 3.0.
 
 from __future__ import division
index c4b3c1a416d8d6d665c004e5c11200e439a8964a..a5544424e2437c4c64e08643ba8dd732e2198b5e 100755 (executable)
@@ -1,6 +1,5 @@
 #! /usr/bin/env python3
-# -*- coding: iso-8859-1 -*-
-# Written by Martin v. Löwis <loewis@informatik.hu-berlin.de>
+# Written by Martin v. Löwis <loewis@informatik.hu-berlin.de>
 
 """Generate binary message catalog from textual translation description.