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
#require no-windows
$ . "$TESTDIR/remotefilelog-library.sh"
$ hg init master
$ cd master
$ cat >> .hg/hgrc <<EOF
> [remotefilelog]
> server=True
> EOF
$ echo x > x
$ hg commit -qAm x
$ cd ..
$ hgcloneshallow ssh://user@dummy/master shallow -q
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob)
$ cd shallow
$ cat >> $TESTTMP/get_file_linknode.py <<EOF
> from mercurial import node, registrar, scmutil
> cmdtable = {}
> command = registrar.command(cmdtable)
> @command(b'debug-file-linknode', [(b'r', b'rev', b'.', b'rev')], b'hg debug-file-linknode FILE')
> def debug_file_linknode(ui, repo, file, **opts):
> rflctx = scmutil.revsingle(repo.unfiltered(), opts['rev']).filectx(file)
> ui.status(b'%s\n' % node.hex(rflctx.ancestormap()[rflctx._filenode][2]))
> EOF
$ cat >> .hg/hgrc <<EOF
> [ui]
> interactive=1
> [extensions]
> strip=
> get_file_linknode=$TESTTMP/get_file_linknode.py
> [experimental]
> evolution=createmarkers,allowunstable
> EOF
$ echo a > a
$ hg commit -qAm msg1
$ hg commit --amend 're:^$' -m msg2
$ hg commit --amend 're:^$' -m msg3
$ hg --hidden log -G -T '{rev} {node|short}'
@ 3 df91f74b871e
|
| x 2 70494d7ec5ef
|/
| x 1 1e423846dde0
|/
o 0 b292c1e3311f
$ hg debug-file-linknode -r 70494d a
df91f74b871e064c89afa1fe9e2f66afa2c125df
$ hg --hidden strip -r 1 3
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/df91f74b871e-c94d67be-backup.hg
$ hg --hidden log -G -T '{rev} {node|short}'
o 1 70494d7ec5ef
|
@ 0 b292c1e3311f
Demonstrate that the linknode points to a commit that is actually in the repo
after the strip operation. Otherwise remotefilelog has to search every commit in
the repository looking for a valid linkrev every time it's queried, such as
during push.
$ hg debug-file-linknode -r 70494d a
70494d7ec5ef6cd3cd6939a9fd2812f9956bf553