def test_file_creation(tmpdir):
    fn = str(tmpdir.join('test'))
    f = AtomicFile(fn)
    f.write('this is a test')
    f.close()

    with open(fn) as f:
        assert f.read() == 'this is a test'
def test_file_moved_only_after_close(tmpdir):
    fn = str(tmpdir.join('test'))
    f = AtomicFile(fn)
    f.write('this is a test')

    assert os.path.exists(fn) == False
    f.close()
    assert os.path.exists(fn)
def test_tmp_file_created_in_same_dir(tmpdir):
    fn = str(tmpdir.join('blkajdf'))
    assert len(tmpdir.listdir()) == 0

    f = AtomicFile(fn)
    f.write('nothing')

    assert len(tmpdir.listdir())
    assert tmpdir.listdir()[0].fnmatch('.blkajdf*')
    f.close()
示例#4
0
文件: test.py 项目: spoof/atomicfile
 def test_close(self):
     af = AtomicFile(self.filename)
     af.write('test\n')
     af.close()
     try:
         af.write('test again\n')
         self.fail('ValueError not raised')
     except ValueError:
         pass
     finally:
         os.remove(self.filename)
示例#5
0
文件: test.py 项目: spoof/atomicfile
 def test_write(self):
     create_test_file(self.filename)
     af = AtomicFile(self.filename)
     expected = "this is written by AtomicFile.\n"
     af.write(expected)
     af.close()
     result = open(self.filename, 'r').read()
     try:
         self.assertEqual(result, expected)
     finally:
         os.remove(self.filename)
示例#6
0
 def test_close(self):
     af = AtomicFile(self.filename)
     af.write(b"test\n")
     af.close()
     try:
         af.write(b"test again\n")
         self.fail('ValueError not raised')
     except ValueError:
         pass
     finally:
         os.remove(self.filename)
示例#7
0
    def test_permissions(self):
        expected_mode = 0o741
        create_test_file(self.filename, mode=expected_mode)

        af = AtomicFile(self.filename)
        af.write(b"I don't really care of the content.\n")
        af.close()

        st_mode = os.lstat(self.filename).st_mode & 0o777
        try:
            self.assertEqual(st_mode, expected_mode)
        finally:
            os.remove(self.filename)
def test_abort(tmpdir):
    fn = str(tmpdir.join('test'))

    f = AtomicFile(fn)
    f.write('test')
    f.abort()
    assert len(tmpdir.listdir()) == 0

    f = AtomicFile(fn)
    f.write('test')
    del f

    assert len(tmpdir.listdir()) == 0

    tmpdir.join('test').write('test file is this')

    f = AtomicFile(fn)
    f.write('this is something else')
    f.abort()

    assert tmpdir.join('test').read() == 'test file is this'

    f = AtomicFile(fn)
    f.write('this is something else')
    del f

    assert tmpdir.join('test').read() == 'test file is this'
示例#9
0
    def test_write(self):
        create_test_file(self.filename)
        af = AtomicFile(self.filename)
        expected = b"this is written by AtomicFile.\n"
        af.write(expected)
        af.close()

        f = open(self.filename, "rb")
        result = f.read()
        f.close()
        try:
            self.assertEqual(result, expected)
        finally:
            os.remove(self.filename)
示例#10
0
    def test_encoding(self):
        data = u"Unicode Capit\xe1n is written by AtomicFile.\n"
        encoding = "utf-8"
        af = AtomicFile(self.filename, "wb", encoding=encoding)
        af.write(data)
        af.close()

        f = codecs.open(self.filename, "rb", encoding=encoding)
        decoded_result = f.read()
        f.close()
        f = open(self.filename, "rb")
        raw_result = f.read()
        f.close()

        try:
            self.assertEqual(data, decoded_result)
            self.assertEqual(data.encode(encoding), raw_result)
        finally:
            os.remove(self.filename)