##// END OF EJS Templates
py3: handle keyword arguments correctly in hgext/patchbomb.py...
py3: handle keyword arguments correctly in hgext/patchbomb.py The keys of keyword arguments must be str on Python 3 which is unicode. This patch make sure we pass keyword arguments with keys are str everywhere in this file and access the keys depending on whether they are bytes or str. This patch uses pycompat.{byteskwargs|strkwargs} and somewhere it also added r'' to prevent transformer from adding a b'' over there. Differential Revision: https://phab.mercurial-scm.org/D974

File last commit:

r33324:33d0859c default
r35035:71e63fe6 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