def test_file_purger(self): existing = os.path.join(self.tmpdir, 'existing') extra = os.path.join(self.tmpdir, 'extra') empty_dir = os.path.join(self.tmpdir, 'dir') with open(existing, 'a'): pass with open(extra, 'a'): pass os.mkdir(empty_dir) with open(os.path.join(empty_dir, 'foo'), 'a'): pass self.assertTrue(os.path.exists(existing)) self.assertTrue(os.path.exists(extra)) purger = FilePurger() purger.add('existing') result = purger.purge(self.tmpdir) self.assertEqual(result.removed_files, set(self.tmppath(p) for p in ('extra', 'dir/foo'))) self.assertEqual(result.removed_files_count, 2) self.assertEqual(result.removed_directories_count, 1) self.assertTrue(os.path.exists(existing)) self.assertFalse(os.path.exists(extra)) self.assertFalse(os.path.exists(empty_dir))
def test_file_purger(self): existing = os.path.join(self.tmpdir, 'existing') extra = os.path.join(self.tmpdir, 'extra') empty_dir = os.path.join(self.tmpdir, 'dir') with open(existing, 'a'): pass with open(extra, 'a'): pass os.mkdir(empty_dir) with open(os.path.join(empty_dir, 'foo'), 'a'): pass self.assertTrue(os.path.exists(existing)) self.assertTrue(os.path.exists(extra)) purger = FilePurger() purger.add('existing') result = purger.purge(self.tmpdir) self.assertEqual(result.removed_files_count, 2) self.assertEqual(result.removed_directories_count, 1) self.assertTrue(os.path.exists(existing)) self.assertFalse(os.path.exists(extra)) self.assertFalse(os.path.exists(empty_dir))
def _write_manifests(self, dest, manifests): man_dir = os.path.join(self.environment.topobjdir, "_build_manifests", dest) # We have a purger for the manifests themselves to ensure legacy # manifests are deleted. purger = FilePurger() for k, manifest in manifests.items(): purger.add(k) with self._write_file(os.path.join(man_dir, k)) as fh: manifest.write(fileobj=fh) purger.purge(man_dir)
def _write_manifests(self, dest, manifests): man_dir = os.path.join(self.environment.topobjdir, "_build_manifests", dest) # We have a purger for the manifests themselves to ensure legacy # manifests are deleted. purger = FilePurger() for k, manifest in manifests.items(): purger.add(k) fh = FileAvoidWrite(os.path.join(man_dir, k)) manifest.write(fileobj=fh) self._update_from_avoid_write(fh.close()) purger.purge(man_dir)
def _write_purge_manifests(self): # We write out a "manifest" file for each directory that is to be # purged. # # Ideally we have as few manifests as possible - ideally only 1. This # will likely require all build metadata to be in emitted objects. # We're not quite there yet, so we maintain multiple manifests. man_dir = os.path.join(self.environment.topobjdir, '_build_manifests', 'purge') # We have a purger for the manifests themselves to ensure we don't over # purge if we delete a purge manifest. purger = FilePurger() for k, manifest in self._purge_manifests.items(): purger.add(k) fh = FileAvoidWrite(os.path.join(man_dir, k)) manifest.write(fileobj=fh) self._update_from_avoid_write(fh.close()) purger.purge(man_dir)
def _write_manifests(self, dest, manifests): man_dir = os.path.join(self.environment.topobjdir, '_build_manifests', dest) # We have a purger for the manifests themselves to ensure legacy # manifests are deleted. purger = FilePurger() for k, manifest in manifests.items(): purger.add(k) with self._write_file(os.path.join(man_dir, k)) as fh: manifest.write(fileobj=fh) purger.purge(man_dir)
def _write_manifests(self, dest, manifests): man_dir = os.path.join(self.environment.topobjdir, '_build_manifests', dest) # We have a purger for the manifests themselves to ensure legacy # manifests are deleted. purger = FilePurger() for k, manifest in manifests.items(): purger.add(k) fh = FileAvoidWrite(os.path.join(man_dir, k)) manifest.write(fileobj=fh) self._update_from_avoid_write(fh.close()) purger.purge(man_dir)