Mercurial > hg
view tests/test-symlink-os-yes-fs-no.py @ 40418:89703e6151e7 stable
profiling: revert the default mode back to 'cpu' on Windows
On Windows, os.times() only returns user and system times. Real elapsed time is
0. That results in no actual times reported, an end wall time of 0.000000, and
seemingly randomly sorted stack frames. This at least provides test stability
in test-profile.t.
I kind of think that `default=pycompat.iswindows and 'cpu' or 'real'` would be a
better way to set the default in configitems, but I didn't see any other
examples of this, and thought maybe there's a reason for that. That might allow
plugging the value into the help text automatically- the documented default
wasn't updated in db0dba2d157d.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Wed, 24 Oct 2018 22:24:10 -0400 |
parents | 630429dcc397 |
children | 2372284d9457 |
line wrap: on
line source
from __future__ import absolute_import import os import sys import time from mercurial import ( commands, hg, pycompat, ui as uimod, util, ) TESTDIR = os.environ["TESTDIR"] BUNDLEPATH = os.path.join(TESTDIR, 'bundles', 'test-no-symlinks.hg') # only makes sense to test on os which supports symlinks if not getattr(os, "symlink", False): sys.exit(80) # SKIPPED_STATUS defined in run-tests.py u = uimod.ui.load() # hide outer repo hg.peer(u, {}, b'.', create=True) # unbundle with symlink support hg.peer(u, {}, b'test0', create=True) repo = hg.repository(u, b'test0') commands.unbundle(u, repo, pycompat.fsencode(BUNDLEPATH), update=True) # wait a bit, or the status call wont update the dirstate time.sleep(1) commands.status(u, repo) # now disable symlink support -- this is what os.symlink would do on a # non-symlink file system def symlink_failure(src, dst): raise OSError(1, "Operation not permitted") os.symlink = symlink_failure def islink_failure(path): return False os.path.islink = islink_failure # dereference links as if a Samba server has exported this to a # Windows client for f in b'test0/a.lnk', b'test0/d/b.lnk': os.unlink(f) fp = open(f, 'wb') fp.write(util.readfile(f[:-4])) fp.close() # reload repository u = uimod.ui.load() repo = hg.repository(u, b'test0') commands.status(u, repo) # try unbundling a repo which contains symlinks u = uimod.ui.load() repo = hg.repository(u, b'test1', create=True) commands.unbundle(u, repo, pycompat.fsencode(BUNDLEPATH), update=True)