gh-126084: Fix venvwlauncher.exe to run pythonw.exe (GH-126088)

This commit is contained in:
Christian Ullrich 2024-10-29 20:52:52 +01:00 committed by GitHub
parent 9effa0ff06
commit 802d405ff1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 1 deletions

View File

@ -872,6 +872,27 @@ class BasicTest(BaseTest):
else: else:
self.assertFalse(same_path(path1, path2)) self.assertFalse(same_path(path1, path2))
# gh-126084: venvwlauncher should run pythonw, not python
@requireVenvCreate
@unittest.skipUnless(os.name == 'nt', 'only relevant on Windows')
def test_venvwlauncher(self):
"""
Test that the GUI launcher runs the GUI python.
"""
rmtree(self.env_dir)
venv.create(self.env_dir)
exename = self.exe
# Retain the debug suffix if present
if "python" in exename and not "pythonw" in exename:
exename = exename.replace("python", "pythonw")
envpyw = os.path.join(self.env_dir, self.bindir, exename)
try:
subprocess.check_call([envpyw, "-c", "import sys; "
"assert sys._base_executable.endswith('%s')" % exename])
except subprocess.CalledProcessError:
self.fail("venvwlauncher.exe did not run %s" % exename)
@requireVenvCreate @requireVenvCreate
class EnsurePipTest(BaseTest): class EnsurePipTest(BaseTest):
"""Test venv module installation of pip.""" """Test venv module installation of pip."""

View File

@ -0,0 +1,2 @@
Fix venvwlauncher to launch pythonw instead of python so no extra console
window is created.

View File

@ -92,7 +92,7 @@
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<PreprocessorDefinitions>EXENAME=L"$(PyExeName)$(PyDebugExt).exe";_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>EXENAME=L"$(PyWExeName)$(PyDebugExt).exe";_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile> </ClCompile>
<ResourceCompile> <ResourceCompile>