From e8f583244acd61d7ba43d0f98c06d57c25977039 Mon Sep 17 00:00:00 2001 From: Alexander Belopolsky Date: Fri, 15 Oct 2010 16:28:20 +0000 Subject: Issue #9308: Removed redundant coding cookies. Added tests for importing encoded modules that do not depend on specific stdlib modules being encoded in a certain way. --- Doc/conf.py | 1 - Lib/inspect.py | 1 - Lib/pydoc.py | 1 - Lib/test/encoded_modules/__init__.py | 23 +++++++++++++++++++ Lib/test/encoded_modules/module_iso_8859_1.py | 5 +++++ Lib/test/encoded_modules/module_koi8_r.py | 3 +++ Lib/test/test_csv.py | 1 - Lib/test/test_doctest2.py | 1 - Lib/test/test_imp.py | 32 +++++++++++++++++++-------- Lib/test/test_pep3131.py | 1 - Lib/test/test_sys.py | 1 - Lib/test/test_winreg.py | 1 - Makefile.pre.in | 2 +- Misc/NEWS | 3 +++ Tools/ccbench/ccbench.py | 1 - Tools/i18n/msgfmt.py | 3 +-- 16 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 Lib/test/encoded_modules/__init__.py create mode 100644 Lib/test/encoded_modules/module_iso_8859_1.py create mode 100644 Lib/test/encoded_modules/module_koi8_r.py diff --git a/Doc/conf.py b/Doc/conf.py index 0f8e606..d12cb17 100644 --- a/Doc/conf.py +++ b/Doc/conf.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # # Python documentation build configuration file # diff --git a/Lib/inspect.py b/Lib/inspect.py index 3596014..35bc263 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -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 diff --git a/Lib/pydoc.py b/Lib/pydoc.py index acee7b7..5e54468 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -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 index 0000000..ec43252 --- /dev/null +++ b/Lib/test/encoded_modules/__init__.py @@ -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 index 0000000..8f4a15c --- /dev/null +++ b/Lib/test/encoded_modules/module_iso_8859_1.py @@ -0,0 +1,5 @@ +# test iso-8859-1 encoding +# -*- encoding: iso-8859-1 -*- +test = ("Les hommes ont oubli cette vrit, " + "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 index 0000000..9b23a5a --- /dev/null +++ b/Lib/test/encoded_modules/module_koi8_r.py @@ -0,0 +1,3 @@ +# test koi8-r encoding +# -*- encoding: koi8-r -*- +test = " ." diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index ca67ac6..97800af 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright (C) 2001,2002 Python Software Foundation # csv package unit tests diff --git a/Lib/test/test_doctest2.py b/Lib/test/test_doctest2.py index 8500ed5..347a143 100644 --- a/Lib/test/test_doctest2.py +++ b/Lib/test/test_doctest2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- """A module to test whether doctest recognizes some 2.2 features, like static and class methods. diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py index c71a4c7..b291ded 100644 --- a/Lib/test/test_imp.py +++ b/Lib/test/test_imp.py @@ -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) diff --git a/Lib/test/test_pep3131.py b/Lib/test/test_pep3131.py index e4c2d03..fba1297 100644 --- a/Lib/test/test_pep3131.py +++ b/Lib/test/test_pep3131.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- import unittest from test import support diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 8c3a1db..6203061 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1,4 +1,3 @@ -# -*- coding: iso-8859-1 -*- import unittest, test.support import sys, io, os import struct diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py index 4757038..b4524db 100644 --- a/Lib/test/test_winreg.py +++ b/Lib/test/test_winreg.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Test the windows specific win32reg module. # Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey diff --git a/Makefile.pre.in b/Makefile.pre.in index 4dc0fbd..905318e 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -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 \ diff --git a/Misc/NEWS b/Misc/NEWS index 6f3d36f..7d3ffc6 100644 --- 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. diff --git a/Tools/ccbench/ccbench.py b/Tools/ccbench/ccbench.py index 4979dcb..569ec21 100644 --- a/Tools/ccbench/ccbench.py +++ b/Tools/ccbench/ccbench.py @@ -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 diff --git a/Tools/i18n/msgfmt.py b/Tools/i18n/msgfmt.py index c4b3c1a..a554442 100755 --- a/Tools/i18n/msgfmt.py +++ b/Tools/i18n/msgfmt.py @@ -1,6 +1,5 @@ #! /usr/bin/env python3 -# -*- coding: iso-8859-1 -*- -# Written by Martin v. Lwis +# Written by Martin v. Löwis """Generate binary message catalog from textual translation description. -- cgit v0.12