def testDeleteWithError(self): ids = Ids(self.tmp_path / "test.ids") try: for i in range(10): ids.add('id:{}'.format(i)) deleteIds = DeleteIds(Bucket(id='test')) def delete(anUpload): if anUpload.id == 'id:7': raise ValueError('fout') observer = CallTrace( methods=dict(delete=delete, deleteIdentifier=ids.remove, flushIds=lambda **kwargs: ids.reopen())) deleteIds.addObserver(observer) self.assertRaises(ValueError, lambda: deleteIds.delete(ids)) self.assertEqual(['id:7', 'id:8', 'id:9'], readIds(join(self.tempdir, 'test.ids'))) self.assertEqual( 8, len([m for m in observer.calledMethodNames() if m == 'delete'])) finally: ids.close()
def testNoIdsNoFile(self): myidsPath = self.tmp_path / 'my.ids' ids = Ids(myidsPath) ids.add('some:id') ids.close() self.assertTrue(myidsPath.is_file()) ids.remove('some:id') ids.close() self.assertFalse(myidsPath.is_file())
def testEscaping(self): idsPath = self.tmp_path / 'pruebo.ids' ids = Ids(idsPath) try: ids.add("needs_\n_escape") self.assertEqual('needs_%0A_escape\n', idsPath.read_text()) self.assertEqual(['needs_\n_escape'], ids.getIds()) ids.reopen() self.assertEqual('needs_%0A_escape\n', idsPath.read_text()) self.assertEqual(['needs_\n_escape'], ids.getIds()) ids.reopen() self.assertEqual(['needs_\n_escape'], ids.getIds()) finally: ids.close()
def _Ids(path): _ids = Ids(path) try: yield _ids finally: _ids.close()