changing-files: rework the way we store changed files in side-data
We need to store new data so this is a good opportunity to rework this fully.
1) We directly store the list of affected file in the side data:
* This avoid having to fetch and parse the `files` list in the revision in
addition to the sidedata. Making the data more self sufficient.
* This work around situation where that `files` field contains wrong
information, and open the way to other bug fixing (eg:
issue6219)
* The format (fixed initial index, sorted files) allow for fast lookup of
filename within the structure.
* This unify the storage of affected files and copies sources and destination,
limiting the number filename stored redundantly.
* This prepare for the fact we should drop the `files` as soon as we do any
change affecting the revision schema.
* This rely on compression to avoid a significant increase of the changelog.d.
More testing on this will be done before we freeze the final format.
2) We can store additional data:
* The new "merged" field,
* A future "salvaged" set recording files that might have been deleted but have
were still present in the final result.
Differential Revision: https://phab.mercurial-scm.org/D9090
from __future__ import absolute_import, print_function
import os
import sys
import unittest
def main(modulename):
'''run the tests found in module, printing nothing when all tests pass'''
module = sys.modules[modulename]
suite = unittest.defaultTestLoader.loadTestsFromModule(module)
results = unittest.TestResult()
suite.run(results)
if results.errors or results.failures:
for tc, exc in results.errors:
print('ERROR:', tc)
print()
sys.stdout.write(exc)
for tc, exc in results.failures:
print('FAIL:', tc)
print()
sys.stdout.write(exc)
sys.exit(1)
if os.environ.get('SILENT_BE_NOISY'):
main = unittest.main