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()
예제 #5
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)
예제 #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
파일: 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)
예제 #8
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
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)
예제 #12
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)
예제 #13
0
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()