view tests/test-atomictempfile.py @ 14667:8f12dac18d13

sslutil: make messages for Python without certificate handling more helpful We now explain why there is no certificate to verify and do not give hints about cacerts when they can't be used anyway.
author Mads Kiilerich <mads@kiilerich.com>
date Sat, 18 Jun 2011 01:08:54 +0200
parents d764463b433e
children 774da7121fc9
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.rename()

    assert os.path.isfile('foo')
    assert basename not in glob.glob('.foo-*')
    print 'OK'

# close() removes the temp file but does not make the write
# permanent -- essentially discards your work (WTF?!)
def test2_close():
    if os.path.exists('foo'):
        os.remove('foo')
    file = atomictempfile('foo')
    (dir, basename) = os.path.split(file._tempname)

    file.write('yo\n')
    file.close()

    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_close()
    test3_oops()