def test_file_not_copied(tmpdir): tmpdir.join('old_file').write('contents here') f = AtomicFile(tmpdir.join('old_file').strpath, copy_existing=False) assert f.read() == '' f.close()
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_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_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_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 atomic_save(self, dst, buffer_size=16384): """Overrides werkzeug's original FileStorage save method to provide atomic file save.""" if type(dst) is str: # Create atomic file handle handle = AtomicFile(dst, 'wb') # Call original method self._save_original(handle, buffer_size) # Close AtomicFile handle, which will rename the file into place handle.close() else: # Don't change anything if we've been given a stream self._save_origin(dst, buffer_size)
def atomic_save(self, dst, buffer_size=16384): """Overrides werkzeug's original FileStorage save method to provide atomic file save.""" if type(dst) is str: # Create atomic file handle handle = AtomicFile(dst, 'wb') # Call original method self._save_original(handle, buffer_size) # Close AtomicFile handle, which will rename the file into place handle.close() else: # Don't change anything if we've been given a stream self._save_origin(dst, buffer_size)
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)
def test_file_copied(tmpdir): tmpdir.join('old_file').write('contents here') f = AtomicFile(tmpdir.join('old_file').strpath) assert f.read() == 'contents here' f.close()