From 644bb08752c5d4b7631761053f811322e1371652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Thu, 15 Oct 2020 08:54:10 +0100 Subject: [PATCH 1/2] Bump setuptools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- .pre-commit-config.yaml | 2 +- docs/changelog/1982.bugfix.rst | 1 + src/virtualenv/seed/wheels/embed/__init__.py | 12 ++++++------ ...whl => setuptools-50.3.1-py3-none-any.whl} | Bin 785131 -> 785190 bytes 4 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 docs/changelog/1982.bugfix.rst rename src/virtualenv/seed/wheels/embed/{setuptools-50.3.0-py3-none-any.whl => setuptools-50.3.1-py3-none-any.whl} (94%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 091a32c89..184d3b4b4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,7 +16,7 @@ repos: hooks: - id: pyupgrade - repo: https://github.com/PyCQA/isort - rev: 5.6.3 + rev: 5.6.4 hooks: - id: isort - repo: https://github.com/ambv/black diff --git a/docs/changelog/1982.bugfix.rst b/docs/changelog/1982.bugfix.rst new file mode 100644 index 000000000..c0843f8b7 --- /dev/null +++ b/docs/changelog/1982.bugfix.rst @@ -0,0 +1 @@ +Bump embeded setuptools from ``50.3.0`` to ``50.3.1`` - by :user:`gaborbernat`. diff --git a/src/virtualenv/seed/wheels/embed/__init__.py b/src/virtualenv/seed/wheels/embed/__init__.py index 509f915a3..f153e0397 100644 --- a/src/virtualenv/seed/wheels/embed/__init__.py +++ b/src/virtualenv/seed/wheels/embed/__init__.py @@ -7,32 +7,32 @@ BUNDLE_SUPPORT = { "3.10": { "pip": "pip-20.2.3-py2.py3-none-any.whl", - "setuptools": "setuptools-50.3.0-py3-none-any.whl", + "setuptools": "setuptools-50.3.1-py3-none-any.whl", "wheel": "wheel-0.35.1-py2.py3-none-any.whl", }, "3.9": { "pip": "pip-20.2.3-py2.py3-none-any.whl", - "setuptools": "setuptools-50.3.0-py3-none-any.whl", + "setuptools": "setuptools-50.3.1-py3-none-any.whl", "wheel": "wheel-0.35.1-py2.py3-none-any.whl", }, "3.8": { "pip": "pip-20.2.3-py2.py3-none-any.whl", - "setuptools": "setuptools-50.3.0-py3-none-any.whl", + "setuptools": "setuptools-50.3.1-py3-none-any.whl", "wheel": "wheel-0.35.1-py2.py3-none-any.whl", }, "3.7": { "pip": "pip-20.2.3-py2.py3-none-any.whl", - "setuptools": "setuptools-50.3.0-py3-none-any.whl", + "setuptools": "setuptools-50.3.1-py3-none-any.whl", "wheel": "wheel-0.35.1-py2.py3-none-any.whl", }, "3.6": { "pip": "pip-20.2.3-py2.py3-none-any.whl", - "setuptools": "setuptools-50.3.0-py3-none-any.whl", + "setuptools": "setuptools-50.3.1-py3-none-any.whl", "wheel": "wheel-0.35.1-py2.py3-none-any.whl", }, "3.5": { "pip": "pip-20.2.3-py2.py3-none-any.whl", - "setuptools": "setuptools-50.3.0-py3-none-any.whl", + "setuptools": "setuptools-50.3.1-py3-none-any.whl", "wheel": "wheel-0.35.1-py2.py3-none-any.whl", }, "3.4": { diff --git a/src/virtualenv/seed/wheels/embed/setuptools-50.3.0-py3-none-any.whl b/src/virtualenv/seed/wheels/embed/setuptools-50.3.1-py3-none-any.whl similarity index 94% rename from src/virtualenv/seed/wheels/embed/setuptools-50.3.0-py3-none-any.whl rename to src/virtualenv/seed/wheels/embed/setuptools-50.3.1-py3-none-any.whl index af9f66f155f1e4689eeb59eedf126af7a089a5d5..7b67c2ca274dbb4221fa7d1b50e6c7fc16d87502 100644 GIT binary patch delta 22293 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 From 58b7edc6eda1634f1e2c226ded0cb60ecb634a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Thu, 15 Oct 2020 10:41:01 +0100 Subject: [PATCH 2/2] Fix Windows subprocess calls with cwd are broken MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- docs/changelog/1982.bugfix.rst | 2 +- docs/changelog/1983.bugfix.rst | 1 + .../util/subprocess/_win_subprocess.py | 12 ++++++++---- tests/unit/test_util.py | 17 +++++++++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 docs/changelog/1983.bugfix.rst diff --git a/docs/changelog/1982.bugfix.rst b/docs/changelog/1982.bugfix.rst index c0843f8b7..09f05b8d3 100644 --- a/docs/changelog/1982.bugfix.rst +++ b/docs/changelog/1982.bugfix.rst @@ -1 +1 @@ -Bump embeded setuptools from ``50.3.0`` to ``50.3.1`` - by :user:`gaborbernat`. +Bump embedded setuptools from ``50.3.0`` to ``50.3.1`` - by :user:`gaborbernat`. diff --git a/docs/changelog/1983.bugfix.rst b/docs/changelog/1983.bugfix.rst new file mode 100644 index 000000000..32a973f9b --- /dev/null +++ b/docs/changelog/1983.bugfix.rst @@ -0,0 +1 @@ +After importing virtualenv passing cwd to a subprocess calls breaks with ``invalid directory`` - by :user:`gaborbernat`. diff --git a/src/virtualenv/util/subprocess/_win_subprocess.py b/src/virtualenv/util/subprocess/_win_subprocess.py index 33c77e312..4c4c5d029 100644 --- a/src/virtualenv/util/subprocess/_win_subprocess.py +++ b/src/virtualenv/util/subprocess/_win_subprocess.py @@ -7,7 +7,7 @@ import platform import subprocess from ctypes import Structure, WinError, byref, c_char_p, c_void_p, c_wchar, c_wchar_p, sizeof, windll -from ctypes.wintypes import BOOL, BYTE, DWORD, HANDLE, LPVOID, LPWSTR, WORD +from ctypes.wintypes import BOOL, BYTE, DWORD, HANDLE, LPCWSTR, LPVOID, LPWSTR, WORD import _subprocess @@ -63,8 +63,8 @@ def __int__(self): CreateProcessW = windll.kernel32.CreateProcessW CreateProcessW.argtypes = [ - LPCTSTR, LPTSTR, LPSECURITY_ATTRIBUTES, - LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCTSTR, + LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, + LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION, ] CreateProcessW.restype = BOOL @@ -107,13 +107,17 @@ def CreateProcess( wenv = (c_wchar * len(env))() wenv.value = env + wcwd = None + if cwd is not None: + wcwd = unicode(cwd) + pi = PROCESS_INFORMATION() creation_flags |= CREATE_UNICODE_ENVIRONMENT if CreateProcessW( executable, args, None, None, inherit_handles, creation_flags, - wenv, cwd, byref(si), byref(pi), + wenv, wcwd, byref(si), byref(pi), ): return ( DUMMY_HANDLE(pi.hProcess), DUMMY_HANDLE(pi.hThread), diff --git a/tests/unit/test_util.py b/tests/unit/test_util.py index 351d52862..ca3f31f18 100644 --- a/tests/unit/test_util.py +++ b/tests/unit/test_util.py @@ -1,5 +1,11 @@ from __future__ import absolute_import, unicode_literals +import subprocess +import sys + +import pytest + +from virtualenv.info import IS_WIN, PY2 from virtualenv.util.subprocess import run_cmd @@ -8,3 +14,14 @@ def test_run_fail(tmp_path): assert err assert not out assert code + + +@pytest.mark.skipif(not (PY2 and IS_WIN), reason="subprocess patch only applied on Windows python2") +def test_windows_py2_cwd_works(tmp_path): + cwd = str(tmp_path) + result = subprocess.check_output( + [sys.executable, "-c", "import os; print(os.getcwd())"], + cwd=cwd, + universal_newlines=True, + ) + assert result == "{}\n".format(cwd)