##// END OF EJS Templates
copies: clean up _related logic...
copies: clean up _related logic The limit parameter was never actually used, since the only way the 4th case could be reached was if f1r and f2r converged. The new code makes this clear, and additionally reduces the conditional block to just 3 cases.

File last commit:

r33324:33d0859c default
r37410:a4f02a17 default
Show More
test-sparse-import.t
181 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
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ ls
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
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ ls
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
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 $ ls
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):
Gregory Szorc
sparse: vendor Facebook-developed extension...
r33289 > raise error.Abort('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