def test_create_new(self): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") fileUtils.atomic_symlink(target, link) self.assertEqual(os.readlink(link), target) self.assertFalse(os.path.exists(link + ".tmp"))
def test_atomic_symlink_create_new(): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") fileUtils.atomic_symlink(target, link) assert os.readlink(link) == target assert not os.path.exists(link + ".tmp")
def test_atomic_symlink_error_isdir(): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") os.mkdir(link) with pytest.raises(OSError): fileUtils.atomic_symlink(target, link)
def test_atomic_symlink_error_isfile(): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") with open(link, 'w') as f: f.write('data') with pytest.raises(OSError): fileUtils.atomic_symlink(target, link)
def test_replace_stale_temporary_link(self): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") tmp_link = link + ".tmp" fileUtils.atomic_symlink("stale", tmp_link) fileUtils.atomic_symlink(target, link) self.assertEqual(os.readlink(link), target) self.assertFalse(os.path.exists(tmp_link))
def test_atomic_symlink_replace_stale_temporary(): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") tmp_link = link + ".tmp" fileUtils.atomic_symlink("stale", tmp_link) fileUtils.atomic_symlink(target, link) assert os.readlink(link) == target assert not os.path.exists(tmp_link)
def test_keep_current(self): with namedTemporaryDir() as tmpdir: target = os.path.join(tmpdir, "target") link = os.path.join(tmpdir, "link") fileUtils.atomic_symlink(target, link) current = os.lstat(link) fileUtils.atomic_symlink(target, link) new = os.lstat(link) self.assertEqual(current, new) self.assertFalse(os.path.exists(link + ".tmp"))