mirror of
https://github.com/python/cpython.git
synced 2026-04-13 23:31:02 +00:00
[3.13] gh-145990: sort --help-env first section by name (others and xoptions already sorted) (GH-146003)
* sort `--help-env` sections by environment variable name Only needed in the first section, in 3.13 the second section was already sorted. * regression test for --help-env & --help-xoptions sort order Manual backport of GH-145997
This commit is contained in:
parent
8469402083
commit
102cd61763
3 changed files with 31 additions and 18 deletions
|
|
@ -3,6 +3,7 @@
|
|||
# See test_cmd_line_script.py for testing of script execution
|
||||
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
|
|
@ -54,11 +55,22 @@ def test_help(self):
|
|||
def test_help_env(self):
|
||||
out = self.verify_valid_flag('--help-env')
|
||||
self.assertIn(b'PYTHONHOME', out)
|
||||
# Env vars in each section should be sorted alphabetically
|
||||
# (ignoring underscores so PYTHON_FOO and PYTHONFOO intermix naturally)
|
||||
sort_key = lambda name: name.replace(b'_', b'').lower()
|
||||
sections = out.split(b'These variables have equivalent')
|
||||
for section in sections:
|
||||
envvars = re.findall(rb'^(PYTHON\w+)', section, re.MULTILINE)
|
||||
self.assertEqual(envvars, sorted(envvars, key=sort_key),
|
||||
"env vars should be sorted alphabetically")
|
||||
|
||||
@support.cpython_only
|
||||
def test_help_xoptions(self):
|
||||
out = self.verify_valid_flag('--help-xoptions')
|
||||
self.assertIn(b'-X dev', out)
|
||||
options = re.findall(rb'^-X (\w+)', out, re.MULTILINE)
|
||||
self.assertEqual(options, sorted(options),
|
||||
"options should be sorted alphabetically")
|
||||
|
||||
@support.cpython_only
|
||||
def test_help_all(self):
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
``python --help-env`` sections are now sorted by environment variable name.
|
||||
|
|
@ -238,32 +238,32 @@ The following implementation-specific options are available:\n\
|
|||
/* Envvars that don't have equivalent command-line options are listed first */
|
||||
static const char usage_envvars[] =
|
||||
"Environment variables that change behavior:\n"
|
||||
"PYTHONSTARTUP : file executed on interactive startup (no default)\n"
|
||||
"PYTHONPATH : '%lc'-separated list of directories prefixed to the\n"
|
||||
" default module search path. The result is sys.path.\n"
|
||||
"PYTHONHOME : alternate <prefix> directory (or <prefix>%lc<exec_prefix>).\n"
|
||||
" The default module search path uses %s.\n"
|
||||
"PYTHONPLATLIBDIR: override sys.platlibdir\n"
|
||||
"PYTHONBREAKPOINT: if this variable is set to 0, it disables the default\n"
|
||||
" debugger. It can be set to the callable of your debugger of\n"
|
||||
" choice.\n"
|
||||
"PYTHONCASEOK : ignore case in 'import' statements (Windows)\n"
|
||||
"PYTHONIOENCODING: encoding[:errors] used for stdin/stdout/stderr\n"
|
||||
"PYTHONHASHSEED : if this variable is set to 'random', a random value is used\n"
|
||||
" to seed the hashes of str and bytes objects. It can also be\n"
|
||||
" set to an integer in the range [0,4294967295] to get hash\n"
|
||||
" values with a predictable seed.\n"
|
||||
"PYTHONMALLOC : set the Python memory allocators and/or install debug hooks\n"
|
||||
" on Python memory allocators. Use PYTHONMALLOC=debug to\n"
|
||||
" install debug hooks.\n"
|
||||
"PYTHONCOERCECLOCALE: if this variable is set to 0, it disables the locale\n"
|
||||
" coercion behavior. Use PYTHONCOERCECLOCALE=warn to request\n"
|
||||
" display of locale coercion and locale compatibility warnings\n"
|
||||
" on stderr.\n"
|
||||
"PYTHONBREAKPOINT: if this variable is set to 0, it disables the default\n"
|
||||
" debugger. It can be set to the callable of your debugger of\n"
|
||||
" choice.\n"
|
||||
"PYTHON_COLORS : if this variable is set to 1, the interpreter will colorize\n"
|
||||
" various kinds of output. Setting it to 0 deactivates\n"
|
||||
" this behavior.\n"
|
||||
"PYTHONHASHSEED : if this variable is set to 'random', a random value is used\n"
|
||||
" to seed the hashes of str and bytes objects. It can also be\n"
|
||||
" set to an integer in the range [0,4294967295] to get hash\n"
|
||||
" values with a predictable seed.\n"
|
||||
"PYTHON_HISTORY : the location of a .python_history file.\n"
|
||||
"PYTHONHOME : alternate <prefix> directory (or <prefix>%lc<exec_prefix>).\n"
|
||||
" The default module search path uses %s.\n"
|
||||
"PYTHONIOENCODING: encoding[:errors] used for stdin/stdout/stderr\n"
|
||||
"PYTHONMALLOC : set the Python memory allocators and/or install debug hooks\n"
|
||||
" on Python memory allocators. Use PYTHONMALLOC=debug to\n"
|
||||
" install debug hooks.\n"
|
||||
"PYTHONPATH : '%lc'-separated list of directories prefixed to the\n"
|
||||
" default module search path. The result is sys.path.\n"
|
||||
"PYTHONPLATLIBDIR: override sys.platlibdir\n"
|
||||
"PYTHONSTARTUP : file executed on interactive startup (no default)\n"
|
||||
"\n"
|
||||
"These variables have equivalent command-line options (see --help for details):\n"
|
||||
"PYTHON_CPU_COUNT: override the return value of os.cpu_count() (-X cpu_count)\n"
|
||||
|
|
@ -2407,7 +2407,7 @@ config_usage(int error, const wchar_t* program)
|
|||
static void
|
||||
config_envvars_usage(void)
|
||||
{
|
||||
printf(usage_envvars, (wint_t)DELIM, (wint_t)DELIM, PYTHONHOMEHELP);
|
||||
printf(usage_envvars, (wint_t)DELIM, PYTHONHOMEHELP, (wint_t)DELIM);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue