tests/test-atomictempfile.py
author Pulkit Goyal <7895pulkit@gmail.com>
Mon, 16 May 2016 04:28:22 +0530
changeset 29194 3bea82dd4c4e
parent 29188 f00f1de16454
child 29201 a109bf7e0dc2
permissions -rw-r--r--
py3: make tests/test-atomictempfile.py use absolute_import

from __future__ import absolute_import

import glob
import os
import unittest

from mercurial import (
    util,
)
atomictempfile = util.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(b'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(b'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__':
    import silenttestrunner
    silenttestrunner.main(__name__)