sapling/tests/test-fb-hgext-treemanifest-noflat.t
Jun Wu 584656dff3 codemod: join the auto-formatter party
Summary:
Turned on the auto formatter. Ran `arc lint --apply-patches --take BLACK **/*.py`.
Then run `arc lint` again so some other autofixers like spellchecker etc. looked
at the code base. Manually accept the changes whenever they make sense, or use
a workaround (ex. changing "dict()" to "dict constructor") where autofix is false
positive. Disabled linters on files that are hard (i18n/polib.py) to fix, or less
interesting to fix (hgsubversion tests), or cannot be fixed without breaking
OSS build (FBPYTHON4).

Conflicted linters (test-check-module-imports.t, part of test-check-code.t,
test-check-pyflakes.t) are removed or disabled.

Duplicated linters (test-check-pyflakes.t, test-check-pylint.t) are removed.

An issue of the auto-formatter is lines are no longer guarnateed to be <= 80
chars. But that seems less important comparing with the benefit auto-formatter
provides.

As we're here, also remove test-check-py3-compat.t, as it is currently broken
if `PYTHON3=/bin/python3` is set.

Reviewed By: wez, phillco, simpkins, pkaush, singhsrb

Differential Revision: D8173629

fbshipit-source-id: 90e248ae0c5e6eaadbe25520a6ee42d32005621b
2018-05-25 22:17:29 -07:00

82 lines
2.3 KiB
Perl

$ . "$TESTDIR/library.sh"
This file tests that normal mercurial operations almost never read the flat manifests
$ cat >> $TESTTMP/flatcheck.py <<EOF
> import sys, traceback
> from mercurial import extensions, manifest
> def uisetup(ui):
> extensions.wrapfunction(manifest.manifestrevlog, 'revision', readmf)
> def readmf(orig, self, nodeorrev, **kwargs):
> if nodeorrev != -1:
> print >> sys.stderr, 'read flat manifest'
> stack = traceback.extract_stack()
> print >> sys.stderr, ''.join(traceback.format_list(stack[-3:-2]))
> return orig(self, nodeorrev, **kwargs)
> EOF
$ hg init master
$ hg clone -q ssh://user@dummy/master client
- Add a bunch of files so the manifest is large enough to use deltas
$ cd master
$ echo a >> a
$ echo a >> b
$ echo a >> c
$ echo a >> d
$ echo a >> e
$ echo a >> f
$ echo a >> g
$ echo a >> h
$ hg commit -Aqm 'add a-f'
$ echo a >> a
$ hg commit -Aqm 'modify a'
$ cd ../client
$ cat >> .hg/hgrc <<EOF
> [extensions]
> fastmanifest=
> flatcheck=$TESTTMP/flatcheck.py
> treemanifest=
>
> [remotefilelog]
> usefastdatapack=True
> reponame=master
>
> [fastmanifest]
> usetree=True
> usecache=False
>
> [treemanifest]
> autocreatetrees=True
> EOF
# Test there is one flat read is expected on the first pull, since
# manifest.revdiff cannot hit the fast path since the first manifest is not a delta.
$ hg pull -q -r 0
read flat manifest
File "*/mercurial/revlog.py", line *, in revdiff (glob)
self.revision(rev* (glob)
# Test that no flat manifests are read during pull and update
$ hg pull -q -r 1
$ hg up 0
8 files updated, 0 files merged, 0 files removed, 0 files unresolved
# Test only one flat read is expected on each commit, to get the p1 fulltext to
# produce the delta.
$ echo a >> b && hg commit -Aqm 'modify b'
read flat manifest
File "*/fastmanifest/implementation.py", line *, in add (glob)
p1text = origself.revision(p1)
# Test that rebase access the flat text only once, for the final commit
$ hg rebase -d 1 -r 2
read flat manifest
File "*/fastmanifest/implementation.py", line *, in add (glob)
p1text = origself.revision(p1)
rebasing 2:667a26a14261 "modify b" (tip)
saved backup bundle to $TESTTMP/client/.hg/strip-backup/667a26a14261-d769c687-rebase.hg (glob)