bpo-31920: Fixed handling directories as arguments in the ``pygettext`` script. (GH-6259)
Based on patch by Oleg Krasnikov.
(cherry picked from commit c93938b5be
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
2d01ac5917
commit
e0dbc57e11
|
@ -6,7 +6,7 @@ import textwrap
|
|||
|
||||
from test.support.script_helper import assert_python_ok
|
||||
from test.test_tools import skip_if_missing, toolsdir
|
||||
from test.support import temp_cwd
|
||||
from test.support import temp_cwd, temp_dir
|
||||
|
||||
|
||||
skip_if_missing()
|
||||
|
@ -158,3 +158,27 @@ class Test_pygettext(unittest.TestCase):
|
|||
"""doc"""
|
||||
'''))
|
||||
self.assertIn('doc', msgids)
|
||||
|
||||
def test_files_list(self):
|
||||
"""Make sure the directories are inspected for source files
|
||||
bpo-31920
|
||||
"""
|
||||
text1 = 'Text to translate1'
|
||||
text2 = 'Text to translate2'
|
||||
text3 = 'Text to ignore'
|
||||
with temp_cwd(None), temp_dir(None) as sdir:
|
||||
os.mkdir(os.path.join(sdir, 'pypkg'))
|
||||
with open(os.path.join(sdir, 'pypkg', 'pymod.py'), 'w') as sfile:
|
||||
sfile.write(f'_({text1!r})')
|
||||
os.mkdir(os.path.join(sdir, 'pkg.py'))
|
||||
with open(os.path.join(sdir, 'pkg.py', 'pymod2.py'), 'w') as sfile:
|
||||
sfile.write(f'_({text2!r})')
|
||||
os.mkdir(os.path.join(sdir, 'CVS'))
|
||||
with open(os.path.join(sdir, 'CVS', 'pymod3.py'), 'w') as sfile:
|
||||
sfile.write(f'_({text3!r})')
|
||||
assert_python_ok(self.script, sdir)
|
||||
with open('messages.pot') as fp:
|
||||
data = fp.read()
|
||||
self.assertIn(f'msgid "{text1}"', data)
|
||||
self.assertIn(f'msgid "{text2}"', data)
|
||||
self.assertNotIn(text3, data)
|
||||
|
|
|
@ -835,6 +835,7 @@ Maksim Kozyarchuk
|
|||
Stefan Krah
|
||||
Rolf Krahl
|
||||
Bob Kras
|
||||
Oleg Krasnikov
|
||||
Sebastian Kreft
|
||||
Holger Krekel
|
||||
Michael Kremer
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fixed handling directories as arguments in the ``pygettext`` script. Based
|
||||
on patch by Oleg Krasnikov.
|
|
@ -259,24 +259,6 @@ def containsAny(str, set):
|
|||
return 1 in [c in str for c in set]
|
||||
|
||||
|
||||
def _visit_pyfiles(list, dirname, names):
|
||||
"""Helper for getFilesForName()."""
|
||||
# get extension for python source files
|
||||
if '_py_ext' not in globals():
|
||||
global _py_ext
|
||||
_py_ext = importlib.machinery.SOURCE_SUFFIXES[0]
|
||||
|
||||
# don't recurse into CVS directories
|
||||
if 'CVS' in names:
|
||||
names.remove('CVS')
|
||||
|
||||
# add all *.py files to list
|
||||
list.extend(
|
||||
[os.path.join(dirname, file) for file in names
|
||||
if os.path.splitext(file)[1] == _py_ext]
|
||||
)
|
||||
|
||||
|
||||
def getFilesForName(name):
|
||||
"""Get a list of module files for a filename, a module or package name,
|
||||
or a directory.
|
||||
|
@ -302,7 +284,17 @@ def getFilesForName(name):
|
|||
if os.path.isdir(name):
|
||||
# find all python files in directory
|
||||
list = []
|
||||
os.walk(name, _visit_pyfiles, list)
|
||||
# get extension for python source files
|
||||
_py_ext = importlib.machinery.SOURCE_SUFFIXES[0]
|
||||
for root, dirs, files in os.walk(name):
|
||||
# don't recurse into CVS directories
|
||||
if 'CVS' in dirs:
|
||||
dirs.remove('CVS')
|
||||
# add all *.py files to list
|
||||
list.extend(
|
||||
[os.path.join(root, file) for file in files
|
||||
if os.path.splitext(file)[1] == _py_ext]
|
||||
)
|
||||
return list
|
||||
elif os.path.exists(name):
|
||||
# a single file
|
||||
|
|
Loading…
Reference in New Issue