bpo-45582: Fix getpath_isxfile() and test_embed on Windows (GH-29930)

This commit is contained in:
neonene 2021-12-07 02:25:19 +09:00 committed by GitHub
parent 612e59b53f
commit af1db4eb55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View file

@ -575,7 +575,7 @@ def _get_expected_config(self):
return configs
def get_expected_config(self, expected_preconfig, expected,
env, api, modify_path_cb=None):
env, api, modify_path_cb=None, cwd=None):
configs = self._get_expected_config()
pre_config = configs['pre_config']
@ -618,6 +618,14 @@ def get_expected_config(self, expected_preconfig, expected,
expected['base_executable'] = default_executable
if expected['program_name'] is self.GET_DEFAULT_CONFIG:
expected['program_name'] = './_testembed'
if MS_WINDOWS:
# follow the calculation in getpath.py
tmpname = expected['program_name'] + '.exe'
if cwd:
tmpname = os.path.join(cwd, tmpname)
if os.path.isfile(tmpname):
expected['program_name'] += '.exe'
del tmpname
config = configs['config']
for key, value in expected.items():
@ -711,7 +719,7 @@ def check_all_configs(self, testname, expected_config=None,
self.get_expected_config(expected_preconfig,
expected_config,
env,
api, modify_path_cb)
api, modify_path_cb, cwd)
out, err = self.run_embedded_interpreter(testname,
env=env, cwd=cwd)

View file

@ -230,7 +230,7 @@ getpath_isxfile(PyObject *Py_UNUSED(self), PyObject *args)
DWORD attr = GetFileAttributesW(path);
r = (attr != INVALID_FILE_ATTRIBUTES) &&
!(attr & FILE_ATTRIBUTE_DIRECTORY) &&
SUCCEEDED(PathCchFindExtension(path, cchPath, &ext)) &&
SUCCEEDED(PathCchFindExtension(path, cchPath + 1, &ext)) &&
(CompareStringOrdinal(ext, -1, L".exe", -1, 1 /* ignore case */) == CSTR_EQUAL)
? Py_True : Py_False;
#else