Mercurial > hg
changeset 46870:41d43d12c2c4
tests: restore the ability to run `black` on Windows
The hghave test for black silently stopped working with the change in
08fd76a553c9. This was the output of what it was hitting when run in the test
environment:
Traceback (most recent call last):\r (esc)
File "c:\\users\\matt\\appdata\\local\\programs\\python\\python39\\lib\\runpy.py", line 197, in _run_module_as_main\r (esc)
return _run_code(code, main_globals, None,\r (esc)
File "c:\\users\\matt\\appdata\\local\\programs\\python\\python39\\lib\\runpy.py", line 87, in _run_code\r (esc)
exec(code, run_globals)\r (esc)
File "c:\\Users\\Matt\\AppData\\Roaming\\Python\\Python39\\Scripts\\black.exe\\__main__.py", line 4, in <module>\r (esc)
File "C:\\Users\\Matt\\AppData\\Roaming\\Python\\Python39\\site-packages\\black\\__init__.py", line 70, in <module>\r (esc)
CACHE_DIR = Path(user_cache_dir("black", version=__version__))\r (esc)
File "C:\\Users\\Matt\\AppData\\Roaming\\Python\\Python39\\site-packages\\appdirs.py", line 293, in user_cache_dir\r (esc)
path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA"))\r (esc)
File "C:\\Users\\Matt\\AppData\\Roaming\\Python\\Python39\\site-packages\\appdirs.py", line 481, in _get_win_folder_with_pywin32\r (esc)
dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0)\r (esc)
pywintypes.com_error: (-2147024893, '$ENOTDIR$.', None, None)\r (esc)
[1]
Differential Revision: https://phab.mercurial-scm.org/D10310
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 05 Apr 2021 12:44:33 -0400 |
parents | ed286d150aa8 |
children | 887f89b100ac |
files | tests/hghave.py tests/run-tests.py tests/test-check-format.t |
diffstat | 3 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/hghave.py Sat Apr 03 21:15:45 2021 -0400 +++ b/tests/hghave.py Mon Apr 05 12:44:33 2021 -0400 @@ -140,9 +140,22 @@ """Return the match object if cmd executes successfully and its output is matched by the supplied regular expression. """ + + # Tests on Windows have to fake USERPROFILE to point to the test area so + # that `~` is properly expanded on py3.8+. However, some tools like black + # make calls that need the real USERPROFILE in order to run `foo --version`. + env = os.environ + if os.name == 'nt': + env = os.environ.copy() + env['USERPROFILE'] = env['REALUSERPROFILE'] + r = re.compile(regexp) p = subprocess.Popen( - cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT + cmd, + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + env=env, ) s = p.communicate()[0] ret = p.returncode
--- a/tests/run-tests.py Sat Apr 03 21:15:45 2021 -0400 +++ b/tests/run-tests.py Mon Apr 05 12:44:33 2021 -0400 @@ -1371,6 +1371,7 @@ env['TESTNAME'] = self.name env['HOME'] = _bytes2sys(self._testtmp) if os.name == 'nt': + env['REALUSERPROFILE'] = env['USERPROFILE'] # py3.8+ ignores HOME: https://bugs.python.org/issue36264 env['USERPROFILE'] = env['HOME'] formated_timeout = _bytes2sys(b"%d" % default_defaults['timeout'][1])
--- a/tests/test-check-format.t Sat Apr 03 21:15:45 2021 -0400 +++ b/tests/test-check-format.t Mon Apr 05 12:44:33 2021 -0400 @@ -1,5 +1,11 @@ #require black test-repo +Black needs the real USERPROFILE in order to run on Windows +#if msys + $ USERPROFILE="$REALUSERPROFILE" + $ export USERPROFILE +#endif + $ cd $RUNTESTDIR/.. $ black --check --diff `hg files 'set:(**.py + grep("^#!.*python")) - mercurial/thirdparty/**'`