Mercurial > hg
view tests/test-atomictempfile.py @ 18604:a1141f04e368
manifest: use a size 3 LRU cache to store parsed manifests
Previously, the manifest cache would store the last manifest parsed. We could
run into situations with operations like update where we would try parsing the
manifest for a revision r1, then r2, then r1 again. This increases the cache
size to 3 to avoid that bit of performance fragility.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Sat, 09 Feb 2013 15:43:02 +0000 |
parents | 774da7121fc9 |
children | fb9d1c2805ff |
line wrap: on
line source
import os import glob from mercurial.util import atomictempfile # basic usage def test1_simple(): if os.path.exists('foo'): os.remove('foo') file = atomictempfile('foo') (dir, basename) = os.path.split(file._tempname) assert not os.path.isfile('foo') assert basename in glob.glob('.foo-*') file.write('argh\n') file.close() assert os.path.isfile('foo') assert basename not in glob.glob('.foo-*') print 'OK' # discard() removes the temp file without making the write permanent def test2_discard(): if os.path.exists('foo'): os.remove('foo') file = atomictempfile('foo') (dir, basename) = os.path.split(file._tempname) file.write('yo\n') file.discard() assert not os.path.isfile('foo') assert basename not in os.listdir('.') print 'OK' # if a programmer screws up and passes bad args to atomictempfile, they # get a plain ordinary TypeError, not infinite recursion def test3_oops(): try: file = atomictempfile() except TypeError: print "OK" else: print "expected TypeError" if __name__ == '__main__': test1_simple() test2_discard() test3_oops()