Mercurial > public > mercurial-scm > hg-stable
diff tests/simplestorerepo.py @ 47918:2174f54aab18
store: return just one filename in walk functions
Various walk functions return `(revlog_type, decoded, encoded)` where
decoded could be None. But no-one cares about `encoded` and expects
`unencoded` to be present, except verify (because this can only happen
with old repo formats).
Simplify all this by either failing outright if a decoding a filename
fails (instead of almost certainly failing with a type error due to
treating None as a bytes), or skipping the filename but providing in
an out argument for hg verify.
Differential Revision: https://phab.mercurial-scm.org/D11248
author | Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> |
---|---|
date | Mon, 02 Aug 2021 08:05:13 -0400 |
parents | d55b71393907 |
children | 6000f5b25c9b |
line wrap: on
line diff
--- a/tests/simplestorerepo.py Sun Aug 01 10:57:21 2021 -0400 +++ b/tests/simplestorerepo.py Mon Aug 02 08:05:13 2021 -0400 @@ -665,20 +665,24 @@ class simplestore(store.encodedstore): - def datafiles(self): + def datafiles(self, undecodable=None): for x in super(simplestore, self).datafiles(): yield x # Supplement with non-revlog files. extrafiles = self._walk('data', True, filefilter=issimplestorefile) - for unencoded, encoded, size in extrafiles: + for f1, size in extrafiles: try: - unencoded = store.decodefilename(unencoded) + f2 = store.decodefilename(f1) except KeyError: - unencoded = None + if undecodable is None: + raise error.StorageError(b'undecodable revlog name %s' % f1) + else: + undecodable.append(f1) + continue - yield unencoded, encoded, size + yield f2, size def reposetup(ui, repo):