From 1ca9dacbfe529282ac286a3a61542167e5d6bc65 Mon Sep 17 00:00:00 2001 From: hkm Date: Sun, 15 Dec 2019 21:47:57 +0300 Subject: [PATCH] Added test case for non ASCII & non UTF8 encoding Windows-1251 in test_pycode section --- sphinx/pycode/__init__.py | 2 +- tests/roots/test-pycode/cp_1251_coded.py | 4 ++++ tests/test_pycode.py | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 tests/roots/test-pycode/cp_1251_coded.py diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py index 2a3b7763c..483eed432 100644 --- a/sphinx/pycode/__init__.py +++ b/sphinx/pycode/__init__.py @@ -67,7 +67,7 @@ class ModuleAnalyzer: if source is not None: obj = cls.for_string(source, modname, filename if filename is not None else '') elif filename is not None: - obj = cls.for_file(source, modname) + obj = cls.for_file(filename, modname) except PycodeError as err: cls.cache['module', modname] = err raise diff --git a/tests/roots/test-pycode/cp_1251_coded.py b/tests/roots/test-pycode/cp_1251_coded.py new file mode 100644 index 000000000..43d98f354 --- /dev/null +++ b/tests/roots/test-pycode/cp_1251_coded.py @@ -0,0 +1,4 @@ +#!python +# -*- coding: windows-1251 -*- + +X="Õ" #:It MUST look like X="Õ" \ No newline at end of file diff --git a/tests/test_pycode.py b/tests/test_pycode.py index abe8ab58b..cdae7d6be 100644 --- a/tests/test_pycode.py +++ b/tests/test_pycode.py @@ -31,13 +31,19 @@ def test_ModuleAnalyzer_for_file(): assert analyzer.encoding is None -def test_ModuleAnalyzer_for_module(): +def test_ModuleAnalyzer_for_module(rootdir): analyzer = ModuleAnalyzer.for_module('sphinx') assert analyzer.modname == 'sphinx' assert analyzer.srcname in (SPHINX_MODULE_PATH, os.path.abspath(SPHINX_MODULE_PATH)) # source should be loaded via native loader, so don`t know file enconding assert analyzer.encoding == None + path = rootdir / 'test-pycode' + sys.path.insert(0, path) + analyzer = ModuleAnalyzer.for_module('cp_1251_coded') + docs = analyzer.find_attr_docs() + sys.path.pop(0) + assert docs == {('', 'X'): ['It MUST look like X="\u0425"', '']} def test_ModuleAnalyzer_for_file_in_egg(rootdir):