##// END OF EJS Templates
revlog: subclass the new `repository.iverifyproblem` Protocol class...
revlog: subclass the new `repository.iverifyproblem` Protocol class This is the same transformation as 3a90a6fd710d did for dirstate, but the CamelCase naming was already cleaned up here. We shouldn't have to explicitly subclass, but I'm doing so to test the interplay of regular attributes and the `attrs` class. Also, PyCharm has a nifty feature that puts a jump point in the gutter to navigate back and forth between the base class and subclasses (and override functions and base class functions) when there's an explicit subclassing. Additionally, PyCharm will immediately flag signature mismatches without a 40m pytype run.

File last commit:

r46273:a736ab68 default
r53365:4ef6dbc2 default
Show More
test-sparse-import.t
184 lines | 3.6 KiB | text/troff | Tads3Lexer
/ tests / test-sparse-import.t
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 test sparse
$ hg init myrepo
$ cd myrepo
$ cat >> $HGRCPATH <<EOF
> [extensions]
> sparse=
> purge=
> strip=
> rebase=
> EOF
$ echo a > index.html
$ echo x > data.py
$ echo z > readme.txt
$ cat > base.sparse <<EOF
> [include]
> *.sparse
> EOF
$ hg ci -Aqm 'initial'
$ cat > webpage.sparse <<EOF
> %include base.sparse
> [include]
> *.html
> EOF
$ hg ci -Aqm 'initial'
Import a rules file against a 'blank' sparse profile
$ cat > $TESTTMP/rules_to_import <<EOF
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Joerg Sonnenberger
tests: deal with "ls" vs "ls -A" difference on 2BSD derived systems...
r45218 $ ls -A
.hg
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 data.py
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
$ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Joerg Sonnenberger
tests: deal with "ls" vs "ls -A" difference on 2BSD derived systems...
r45218 $ ls -A
.hg
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 base.sparse
data.py
webpage.sparse
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
Start against an existing profile; rules *already active* should be ignored
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --enable-profile webpage.sparse
$ hg debugsparse --include *.py
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.html
> *.txt
> [exclude]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Joerg Sonnenberger
tests: deal with "ls" vs "ls -A" difference on 2BSD derived systems...
r45218 $ ls -A
.hg
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 base.sparse
index.html
readme.txt
webpage.sparse
$ cat .hg/sparse
%include webpage.sparse
[include]
*.py
*.txt
[exclude]
*.py
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
Same tests, with -Tjson enabled to output summaries
$ cat > $TESTTMP/rules_to_import <<EOF
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 [
{
"exclude_rules_added": 0,
"files_added": 0,
"files_conflicting": 0,
"files_dropped": 4,
"include_rules_added": 1,
"profiles_added": 0
}
]
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
$ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 [
{
"exclude_rules_added": 0,
"files_added": 0,
"files_conflicting": 0,
"files_dropped": 2,
"include_rules_added": 1,
"profiles_added": 1
}
]
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --reset
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ rm .hg/sparse
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --enable-profile webpage.sparse
$ hg debugsparse --include *.py
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ cat > $TESTTMP/rules_to_import <<EOF
> %include base.sparse
> [include]
> *.html
> *.txt
> [exclude]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import -Tjson
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 [
{
"exclude_rules_added": 1,
"files_added": 1,
"files_conflicting": 0,
"files_dropped": 1,
"include_rules_added": 1,
"profiles_added": 0
}
]
If importing results in no new rules being added, no refresh should take place!
$ cat > $TESTTMP/trap_sparse_refresh.py <<EOF
Gregory Szorc
sparse: move working directory refreshing into core...
r33324 > from mercurial import error, sparse
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 > def extsetup(ui):
Gregory Szorc
sparse: move working directory refreshing into core...
r33324 > def abort_refresh(*args, **kwargs):
Martin von Zweigbergk
errors: stop passing non-strings to Abort's constructor...
r46273 > raise error.Abort(b'sparse._refresh called!')
Gregory Szorc
sparse: move working directory refreshing into core...
r33324 > sparse.refreshwdir = abort_refresh
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 > EOF
$ cat >> $HGRCPATH <<EOF
> [extensions]
> trap_sparse_refresh=$TESTTMP/trap_sparse_refresh.py
> EOF
$ cat > $TESTTMP/rules_to_import <<EOF
> [include]
> *.py
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289
If an exception is raised during refresh, restore the existing rules again.
$ cat > $TESTTMP/rules_to_import <<EOF
> [exclude]
> *.html
> EOF
Gregory Szorc
sparse: rename command to debugsparse...
r33293 $ hg debugsparse --import-rules $TESTTMP/rules_to_import
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 abort: sparse._refresh called!
[255]
$ cat .hg/sparse
%include webpage.sparse
[include]
*.py
*.txt
[exclude]
*.py