summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernat Gabor <bgabor8@bloomberg.net>2020-08-24 07:25:15 +0100
committerBernat Gabor <bgabor8@bloomberg.net>2020-08-24 08:05:06 +0100
commit380c2b5e757fbdc3aa36f30198a19c27507de126 (patch)
treeb78a33ed9ca5d79156ee9ca26e4384663ea5e31e
parent6c098d8daa3ed2b34723b62eef9411bded6460b0 (diff)
downloadvirtualenv-fix/1818.tar.gz
Avoid showing new windows on Windowsfix/1818
Signed-off-by: Bernat Gabor <bgabor8@bloomberg.net>
-rw-r--r--docs/changelog/1928.bugfix.rst1
-rw-r--r--src/virtualenv/seed/wheels/periodic_update.py4
-rw-r--r--src/virtualenv/util/subprocess/__init__.py4
-rw-r--r--tests/unit/seed/wheels/test_periodic_update.py4
4 files changed, 7 insertions, 6 deletions
diff --git a/docs/changelog/1928.bugfix.rst b/docs/changelog/1928.bugfix.rst
new file mode 100644
index 0000000..36a849c
--- /dev/null
+++ b/docs/changelog/1928.bugfix.rst
@@ -0,0 +1 @@
+Avoid spawning new windows when doing seed package upgrades in the background on Windows - by :user:`gaborbernat`.
diff --git a/src/virtualenv/seed/wheels/periodic_update.py b/src/virtualenv/seed/wheels/periodic_update.py
index 4a8e8bc..b68248c 100644
--- a/src/virtualenv/seed/wheels/periodic_update.py
+++ b/src/virtualenv/seed/wheels/periodic_update.py
@@ -22,7 +22,7 @@ from six.moves.urllib.request import urlopen
from virtualenv.app_data import AppDataDiskFolder
from virtualenv.info import PY2
from virtualenv.util.path import Path
-from virtualenv.util.subprocess import DETACHED_PROCESS, Popen
+from virtualenv.util.subprocess import CREATE_NO_WINDOW, Popen
from ..wheels.embed import BUNDLE_SUPPORT
from ..wheels.util import Wheel
@@ -186,7 +186,7 @@ def trigger_update(distribution, for_py_version, wheel, search_dirs, app_data, p
pipe = None if debug else subprocess.PIPE
kwargs = {"stdout": pipe, "stderr": pipe}
if not debug and sys.platform == "win32":
- kwargs["creationflags"] = DETACHED_PROCESS
+ kwargs["creationflags"] = CREATE_NO_WINDOW
process = Popen(cmd, **kwargs)
logging.info(
"triggered periodic upgrade of %s%s (for python %s) via background process having PID %d",
diff --git a/src/virtualenv/util/subprocess/__init__.py b/src/virtualenv/util/subprocess/__init__.py
index 22006da..bbb12a9 100644
--- a/src/virtualenv/util/subprocess/__init__.py
+++ b/src/virtualenv/util/subprocess/__init__.py
@@ -13,7 +13,7 @@ else:
Popen = subprocess.Popen
-DETACHED_PROCESS = 0x00000008
+CREATE_NO_WINDOW = 0x80000000
def run_cmd(cmd):
@@ -32,5 +32,5 @@ __all__ = (
"subprocess",
"Popen",
"run_cmd",
- "DETACHED_PROCESS",
+ "CREATE_NO_WINDOW",
)
diff --git a/tests/unit/seed/wheels/test_periodic_update.py b/tests/unit/seed/wheels/test_periodic_update.py
index fab1876..458e8e5 100644
--- a/tests/unit/seed/wheels/test_periodic_update.py
+++ b/tests/unit/seed/wheels/test_periodic_update.py
@@ -29,7 +29,7 @@ from virtualenv.seed.wheels.periodic_update import (
trigger_update,
)
from virtualenv.util.path import Path
-from virtualenv.util.subprocess import DETACHED_PROCESS
+from virtualenv.util.subprocess import CREATE_NO_WINDOW
@pytest.fixture(autouse=True)
@@ -224,7 +224,7 @@ def test_trigger_update_no_debug(for_py_version, session_app_data, tmp_path, moc
assert args == ([sys.executable, "-c", cmd],)
expected = {"stdout": subprocess.PIPE, "stderr": subprocess.PIPE}
if sys.platform == "win32":
- expected["creationflags"] = DETACHED_PROCESS
+ expected["creationflags"] = CREATE_NO_WINDOW
assert kwargs == expected
assert process.communicate.call_count == 0