def test_sym_over_dir(self): path = pjoin(self.dir, "sym") fp = pjoin(self.dir, "trg") os.mkdir(path) # test sym over a directory. f = fs.fsSymlink(path, fp, mode=0644, mtime=0, uid=os.getuid(), gid=os.getgid()) cset = contents.contentsSet([f]) self.assertRaises(ops.FailedCopy, ops.merge_contents, cset) self.assertTrue(fs.isdir(livefs.gen_obj(path))) os.mkdir(fp) ops.merge_contents(cset)
def test_callback(self): for attr in dir(self): if not attr.startswith('entries') or 'fail' in attr: continue e = getattr(self, attr) if not isinstance(e, dict): continue src, dest, cset = self.generic_merge_bits(e) new_cset = contents.contentsSet(contents.offset_rewriter(dest, cset)) s = set(new_cset) ops.merge_contents(cset, offset=dest, callback=s.remove) self.assertFalse(s)
def test_dangling_symlink(self): src = self.gen_dir("src") self.generate_tree(src, {"dir":["dir"]}) cset = livefs.scan(src, offset=src) dest = self.gen_dir("dest") os.symlink(pjoin(dest, "dest"), pjoin(dest, "dir")) self.assertTrue(ops.merge_contents(cset, offset=dest)) self.assertEqual(cset, livefs.scan(src, offset=dest))
def generic_merge_bits(self, entries): src = self.gen_dir("src") self.generate_tree(src, entries) cset = livefs.scan(src, offset=src) dest = self.gen_dir("dest") self.assertTrue(ops.merge_contents(cset, offset=dest)) self.assertEqual(livefs.scan(src, offset=src), livefs.scan(dest, offset=dest)) return src, dest, cset
def test_exact_overwrite(self): src, dest, cset = self.generic_merge_bits(self.entries_norm1) self.assertTrue(ops.merge_contents(cset, offset=dest))