コード例 #1
0
ファイル: test_ops.py プロジェクト: chutz/pkgcore
 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))
コード例 #2
0
ファイル: test_ops.py プロジェクト: chutz/pkgcore
 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
コード例 #3
0
    def assertTrigger(self,
                      touches,
                      ran,
                      dirs=['test-lib', 'test-lib2'],
                      hook='merge',
                      mode=const.INSTALL_MODE,
                      mkdirs=True,
                      same_mtime=False):

        # wipe whats there.
        for x in scan(self.dir).iterdirs():
            if x.location == self.dir:
                continue
            shutil.rmtree(x.location)
        for x in scan(self.dir).iterdirs(True):
            os.unlink(x.location)

        ensure_dirs(pjoin(self.dir, "etc"))
        with open(pjoin(self.dir, "etc/ld.so.conf"), "w") as f:
            f.write("\n".join('/' + x for x in dirs))
        # force directory mtime to 1s less.
        past = time.time() - 10.0
        if mkdirs:
            for x in dirs:
                ensure_dirs(pjoin(self.dir, x))
                os.utime(pjoin(self.dir, x), (past, past))

        self.reset_objects()
        self.engine.phase = 'pre_%s' % hook
        self.engine.mode = mode
        self.trigger(self.engine, {})
        self.assertFalse(self.trigger._passed_in_args)
        resets = set()
        for x in touches:
            fp = pjoin(self.dir, x.lstrip('/'))
            open(pjoin(fp), "w").close()
            if same_mtime:
                os.utime(fp, (past, past))
                resets.add(os.path.dirname(fp))

        for x in resets:
            os.utime(x, (past, past))

        self.engine.phase = 'post_%s' % hook
        self.trigger(self.engine, {})

        self.assertEqual([[getattr(x, 'offset', None) for x in y]
                          for y in self.trigger._passed_in_args], [[self.dir]])
コード例 #4
0
ファイル: test_triggers.py プロジェクト: veelai/pkgcore
    def assertTrigger(self, touches, ran, dirs=['test-lib', 'test-lib2'],
        hook='merge', mode=const.INSTALL_MODE, mkdirs=True, same_mtime=False):

        # wipe whats there.
        for x in scan(self.dir).iterdirs():
            if x.location == self.dir:
                continue
            shutil.rmtree(x.location)
        for x in scan(self.dir).iterdirs(True):
            os.unlink(x.location)

        ensure_dirs(pjoin(self.dir, "etc"))
        open(pjoin(self.dir, "etc/ld.so.conf"), "w").write(
            "\n".join('/' + x for x in dirs))
        # force directory mtime to 1s less.
        past = time.time() - 10.0
        if mkdirs:
            for x in dirs:
                ensure_dirs(pjoin(self.dir, x))
                os.utime(pjoin(self.dir, x), (past, past))

        self.reset_objects()
        self.engine.phase = 'pre_%s' % hook
        self.engine.mode = mode
        self.trigger(self.engine, {})
        self.assertFalse(self.trigger._passed_in_args)
        resets = set()
        for x in touches:
            fp = pjoin(self.dir, x.lstrip('/'))
            open(pjoin(fp), "w")
            if same_mtime:
                os.utime(fp, (past, past))
                resets.add(os.path.dirname(fp))

        for x in resets:
            os.utime(x, (past, past))

        self.engine.phase = 'post_%s' % hook
        self.trigger(self.engine, {})

        self.assertEqual([[getattr(x, 'offset', None) for x in y]
            for y in self.trigger._passed_in_args],
            [[self.dir]])
コード例 #5
0
 def test__get_livefs_intersect_cset(self):
     old_cset = self.simple_cset.insert_offset(self.dir)
     # have to add it; scan adds the root node
     old_cset.add(fsDir(self.dir))
     os.mkdir(pjoin(self.dir, "usr"))
     open(pjoin(self.dir, "usr", "dar"), 'w').close()
     open(pjoin(self.dir, 'foon'), 'w').close()
     # note that this *is* a sym in the cset; adding this specific
     # check so that if the code differs, the test breaks, and the tests
     # get updated (additionally, folks may not be aware of the potential)
     open(pjoin(self.dir, 'broken-symlink'), 'w').close()
     engine = fake_engine(csets={'test': old_cset})
     existent = livefs.scan(self.dir)
     generated = self.run_cset('_get_livefs_intersect_cset', engine, 'test')
     self.assertEqual(generated, existent)
コード例 #6
0
ファイル: test_engine.py プロジェクト: chutz/pkgcore
 def test__get_livefs_intersect_cset(self):
     old_cset = self.simple_cset.insert_offset(self.dir)
     # have to add it; scan adds the root node
     old_cset.add(fsDir(self.dir))
     os.mkdir(pjoin(self.dir, "usr"))
     open(pjoin(self.dir, "usr", "dar"), 'w').close()
     open(pjoin(self.dir, 'foon'), 'w').close()
     # note that this *is* a sym in the cset; adding this specific
     # check so that if the code differs, the test breaks, and the tests
     # get updated (additionally, folks may not be aware of the potential)
     open(pjoin(self.dir, 'broken-symlink'), 'w').close()
     engine = fake_engine(csets={'test':old_cset})
     existent = livefs.scan(self.dir)
     generated = self.run_cset('_get_livefs_intersect_cset', engine,
         'test')
     self.assertEqual(generated, existent)
コード例 #7
0
ファイル: test_ops.py プロジェクト: chutz/pkgcore
 def test_exact_removal(self):
     img, cset = self.generic_unmerge_bits(self.entries_norm1)
     self.assertTrue(ops.unmerge_contents(cset, offset=img))
     self.assertFalse(livefs.scan(img, offset=img))
コード例 #8
0
ファイル: test_ops.py プロジェクト: chutz/pkgcore
 def generic_unmerge_bits(self, entries, img="img"):
     img = self.gen_dir(img)
     self.generate_tree(img, entries)
     cset = livefs.scan(img, offset=img)
     return img, cset
コード例 #9
0
 def scan_contents(self, location):
     return scan(location, offset=location, mutable=True)
コード例 #10
0
 def scan_contents(self, location):
     return scan(location, offset=location)