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()
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)
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)
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)
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'
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)
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)