tests/test-atomictempfile.py
author Pierre-Yves David <pierre-yves.david@fb.com>
Tue, 29 Sep 2015 14:41:40 -0700
changeset 26424 60825fbe2be1
parent 18666 fb9d1c2805ff
child 29188 f00f1de16454
permissions -rw-r--r--
writebundle: add a compression argument for the bundle2 case Bundle2 compression is more complex than the bundle1 one. Therefore it is handled by the bundler itself. Moreover, on-disk bundle2 will probably have a large number of flavors so simply adding a new "format" for it does not seems the way to go. This will be used in the next changeset to compress bundle2 strip backup.

import os
import glob
import unittest
import silenttestrunner

from mercurial.util import atomictempfile

class testatomictempfile(unittest.TestCase):
    def test1_simple(self):
        if os.path.exists('foo'):
            os.remove('foo')
        file = atomictempfile('foo')
        (dir, basename) = os.path.split(file._tempname)
        self.assertFalse(os.path.isfile('foo'))
        self.assertTrue(basename in glob.glob('.foo-*'))

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

        self.assertTrue(os.path.isfile('foo'))
        self.assertTrue(basename not in glob.glob('.foo-*'))

    # discard() removes the temp file without making the write permanent
    def test2_discard(self):
        if os.path.exists('foo'):
            os.remove('foo')
        file = atomictempfile('foo')
        (dir, basename) = os.path.split(file._tempname)

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

        self.assertFalse(os.path.isfile('foo'))
        self.assertTrue(basename not in os.listdir('.'))

    # if a programmer screws up and passes bad args to atomictempfile, they
    # get a plain ordinary TypeError, not infinite recursion
    def test3_oops(self):
        self.assertRaises(TypeError, atomictempfile)

if __name__ == '__main__':
    silenttestrunner.main(__name__)