test-hgrc.t
318 lines
| 8.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-hgrc.t
Mads Kiilerich
|
r12640 | Use hgrc within $TESTTMP | ||
$ HGRCPATH=`pwd`/hgrc | ||||
$ export HGRCPATH | ||||
Gregory Szorc
|
r37453 | hide outer repo | ||
$ hg init | ||||
Matt Mackall
|
r15372 | Use an alternate var for scribbling on hgrc to keep check-code from | ||
complaining about the important settings we may be overwriting: | ||||
$ HGRC=`pwd`/hgrc | ||||
$ export HGRC | ||||
Mads Kiilerich
|
r12640 | Basic syntax error | ||
Matt Mackall
|
r15372 | $ echo "invalid" > $HGRC | ||
Matt Mackall
|
r12366 | $ hg version | ||
Martin von Zweigbergk
|
r46506 | config error at $TESTTMP/hgrc:1: invalid | ||
Matt Mackall
|
r12366 | [255] | ||
Matt Mackall
|
r15372 | $ echo "" > $HGRC | ||
Brodie Rao
|
r12014 | |||
Martin Geisler
|
r12399 | Issue1199: Can't use '%' in hgrc (eg url encoded username) | ||
Brodie Rao
|
r12014 | |||
$ hg init "foo%bar" | ||||
$ hg clone "foo%bar" foobar | ||||
updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd foobar | ||||
Matt Mackall
|
r12366 | $ cat .hg/hgrc | ||
timeless
|
r29978 | # example repository config (see 'hg help config' for more info) | ||
Jordi Gutiérrez Hermoso
|
r22837 | [paths] | ||
Matt Harbison
|
r35394 | default = $TESTTMP/foo%bar | ||
Jordi Gutiérrez Hermoso
|
r22837 | |||
# path aliases to other clones of this repo in URLs or filesystem paths | ||||
timeless
|
r29978 | # (see 'hg help config.paths' for more info) | ||
Jordi Gutiérrez Hermoso
|
r22837 | # | ||
Rishabh Madan
|
r31064 | # default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork | ||
# my-fork = ssh://jdoe@example.net/hg/jdoes-fork | ||||
# my-clone = /home/jdoe/jdoes-clone | ||||
Jordi Gutiérrez Hermoso
|
r22837 | |||
[ui] | ||||
# name and email (local to this repository, optional), e.g. | ||||
Augie Fackler
|
r22380 | # username = Jane Doe <jdoe@example.com> | ||
Matt Mackall
|
r12366 | $ hg paths | ||
Matt Harbison
|
r35394 | default = $TESTTMP/foo%bar | ||
Matt Mackall
|
r12366 | $ hg showconfig | ||
Matt Harbison
|
r35394 | bundle.mainreporoot=$TESTTMP/foobar | ||
paths.default=$TESTTMP/foo%bar | ||||
Brodie Rao
|
r12014 | $ cd .. | ||
Denis Laxalde
|
r43570 | Check %include | ||
$ echo '[section]' > $TESTTMP/included | ||||
$ echo 'option = value' >> $TESTTMP/included | ||||
$ echo '%include $TESTTMP/included' >> $HGRC | ||||
$ hg showconfig section | ||||
section.option=value | ||||
Joerg Sonnenberger
|
r45217 | #if unix-permissions no-root | ||
Denis Laxalde
|
r43570 | $ chmod u-r $TESTTMP/included | ||
$ hg showconfig section | ||||
Arseniy Alekseyev
|
r51215 | config error at $TESTTMP/hgrc:2: cannot include $TESTTMP/included ($EACCES$*) (glob) | ||
Denis Laxalde
|
r43570 | [255] | ||
Denis Laxalde
|
r43573 | #endif | ||
Denis Laxalde
|
r43570 | |||
Brodie Rao
|
r12014 | issue1829: wrong indentation | ||
Matt Mackall
|
r15372 | $ echo '[foo]' > $HGRC | ||
$ echo ' x = y' >> $HGRC | ||||
Matt Mackall
|
r12366 | $ hg version | ||
Martin von Zweigbergk
|
r46506 | config error at $TESTTMP/hgrc:2: unexpected leading whitespace: x = y | ||
Matt Mackall
|
r12366 | [255] | ||
Brodie Rao
|
r12014 | |||
Gregory Szorc
|
r49734 | $ "$PYTHON" -c "print('[foo]\nbar = a\n b\n c \n de\n fg \nbaz = bif cb \n')" \ | ||
Matt Mackall
|
r15372 | > > $HGRC | ||
Brodie Rao
|
r12014 | $ hg showconfig foo | ||
foo.bar=a\nb\nc\nde\nfg | ||||
foo.baz=bif cb | ||||
$ FAKEPATH=/path/to/nowhere | ||||
$ export FAKEPATH | ||||
Matt Mackall
|
r15372 | $ echo '%include $FAKEPATH/no-such-file' > $HGRC | ||
Matt Mackall
|
r12366 | $ hg version | ||
Matt Mackall
|
r14491 | Mercurial Distributed SCM (version *) (glob) | ||
Matt Mackall
|
r26421 | (see https://mercurial-scm.org for more information) | ||
Matt Mackall
|
r14489 | |||
Raphaël Gomès
|
r47575 | Copyright (C) 2005-* Olivia Mackall and others (glob) | ||
Matt Mackall
|
r14489 | This is free software; see the source for copying conditions. There is NO | ||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||||
Brodie Rao
|
r12014 | $ unset FAKEPATH | ||
Idan Kamara
|
r14992 | make sure global options given on the cmdline take precedence | ||
Idan Kamara
|
r14748 | |||
$ hg showconfig --config ui.verbose=True --quiet | ||||
Mads Kiilerich
|
r17015 | bundle.mainreporoot=$TESTTMP | ||
Idan Kamara
|
r14992 | ui.verbose=False | ||
ui.debug=False | ||||
Idan Kamara
|
r14748 | ui.quiet=True | ||
Idan Kamara
|
r14992 | $ touch foobar/untracked | ||
$ cat >> foobar/.hg/hgrc <<EOF | ||||
> [ui] | ||||
> verbose=True | ||||
> EOF | ||||
$ hg -R foobar st -q | ||||
Brodie Rao
|
r12014 | username expansion | ||
$ olduser=$HGUSER | ||||
$ unset HGUSER | ||||
$ FAKEUSER='John Doe' | ||||
$ export FAKEUSER | ||||
Matt Mackall
|
r15372 | $ echo '[ui]' > $HGRC | ||
$ echo 'username = $FAKEUSER' >> $HGRC | ||||
Brodie Rao
|
r12014 | |||
$ hg init usertest | ||||
$ cd usertest | ||||
$ touch bar | ||||
$ hg commit --addremove --quiet -m "added bar" | ||||
$ hg log --template "{author}\n" | ||||
John Doe | ||||
$ cd .. | ||||
Nicolas Dumazet
|
r12109 | $ hg showconfig | ||
Mads Kiilerich
|
r17015 | bundle.mainreporoot=$TESTTMP | ||
Brodie Rao
|
r12014 | ui.username=$FAKEUSER | ||
$ unset FAKEUSER | ||||
$ HGUSER=$olduser | ||||
$ export HGUSER | ||||
Brodie Rao
|
r12697 | showconfig with multiple arguments | ||
Matt Mackall
|
r15372 | $ echo "[alias]" > $HGRC | ||
$ echo "log = log -g" >> $HGRC | ||||
$ echo "[defaults]" >> $HGRC | ||||
$ echo "identify = -n" >> $HGRC | ||||
Brodie Rao
|
r12697 | $ hg showconfig alias defaults | ||
alias.log=log -g | ||||
defaults.identify=-n | ||||
Yuya Nishihara
|
r36434 | $ hg showconfig alias alias | ||
alias.log=log -g | ||||
$ hg showconfig alias.log alias.log | ||||
Yuya Nishihara
|
r36435 | alias.log=log -g | ||
Brodie Rao
|
r12697 | $ hg showconfig alias defaults.identify | ||
Yuya Nishihara
|
r36435 | alias.log=log -g | ||
defaults.identify=-n | ||||
Brodie Rao
|
r12697 | $ hg showconfig alias.log defaults.identify | ||
Yuya Nishihara
|
r36435 | alias.log=log -g | ||
defaults.identify=-n | ||||
Brodie Rao
|
r12697 | |||
Brodie Rao
|
r12014 | HGPLAIN | ||
Matt Mackall
|
r15372 | $ echo "[ui]" > $HGRC | ||
$ echo "debug=true" >> $HGRC | ||||
$ echo "fallbackencoding=ASCII" >> $HGRC | ||||
$ echo "quiet=true" >> $HGRC | ||||
$ echo "slash=true" >> $HGRC | ||||
$ echo "traceback=true" >> $HGRC | ||||
$ echo "verbose=true" >> $HGRC | ||||
$ echo "style=~/.hgstyle" >> $HGRC | ||||
$ echo "logtemplate={node}" >> $HGRC | ||||
$ echo "[defaults]" >> $HGRC | ||||
$ echo "identify=-n" >> $HGRC | ||||
$ echo "[alias]" >> $HGRC | ||||
$ echo "log=log -g" >> $HGRC | ||||
Brodie Rao
|
r12014 | |||
customized hgrc | ||||
Matt Mackall
|
r12366 | $ hg showconfig | ||
Mads Kiilerich
|
r12640 | read config from: $TESTTMP/hgrc | ||
$TESTTMP/hgrc:13: alias.log=log -g | ||||
Mads Kiilerich
|
r20788 | repo: bundle.mainreporoot=$TESTTMP | ||
Mads Kiilerich
|
r12640 | $TESTTMP/hgrc:11: defaults.identify=-n | ||
$TESTTMP/hgrc:2: ui.debug=true | ||||
$TESTTMP/hgrc:3: ui.fallbackencoding=ASCII | ||||
$TESTTMP/hgrc:4: ui.quiet=true | ||||
$TESTTMP/hgrc:5: ui.slash=true | ||||
$TESTTMP/hgrc:6: ui.traceback=true | ||||
$TESTTMP/hgrc:7: ui.verbose=true | ||||
$TESTTMP/hgrc:8: ui.style=~/.hgstyle | ||||
$TESTTMP/hgrc:9: ui.logtemplate={node} | ||||
Brodie Rao
|
r12014 | |||
plain hgrc | ||||
$ HGPLAIN=; export HGPLAIN | ||||
Matt Mackall
|
r12366 | $ hg showconfig --config ui.traceback=True --debug | ||
Mads Kiilerich
|
r12640 | read config from: $TESTTMP/hgrc | ||
Mads Kiilerich
|
r20788 | repo: bundle.mainreporoot=$TESTTMP | ||
--config: ui.traceback=True | ||||
--verbose: ui.verbose=False | ||||
--debug: ui.debug=True | ||||
--quiet: ui.quiet=False | ||||
Brodie Rao
|
r13849 | |||
Jun Wu
|
r31686 | with environment variables | ||
$ PAGER=p1 EDITOR=e1 VISUAL=e2 hg showconfig --debug | ||||
read config from: $TESTTMP/hgrc | ||||
repo: bundle.mainreporoot=$TESTTMP | ||||
$PAGER: pager.pager=p1 | ||||
$VISUAL: ui.editor=e2 | ||||
--verbose: ui.verbose=False | ||||
--debug: ui.debug=True | ||||
--quiet: ui.quiet=False | ||||
Brodie Rao
|
r13849 | plain mode with exceptions | ||
$ cat > plain.py <<EOF | ||||
Yuya Nishihara
|
r28611 | > from mercurial import commands, extensions | ||
> def _config(orig, ui, repo, *values, **opts): | ||||
Pulkit Goyal
|
r38084 | > ui.write(b'plain: %r\n' % ui.plain()) | ||
Yuya Nishihara
|
r28611 | > return orig(ui, repo, *values, **opts) | ||
Brodie Rao
|
r13849 | > def uisetup(ui): | ||
Pulkit Goyal
|
r38084 | > extensions.wrapcommand(commands.table, b'config', _config) | ||
Brodie Rao
|
r13849 | > EOF | ||
Matt Mackall
|
r15372 | $ echo "[extensions]" >> $HGRC | ||
$ echo "plain=./plain.py" >> $HGRC | ||||
Brodie Rao
|
r13849 | $ HGPLAINEXCEPT=; export HGPLAINEXCEPT | ||
$ hg showconfig --config ui.traceback=True --debug | ||||
"Yann E. MORIN"
|
r14372 | plain: True | ||
Brodie Rao
|
r13849 | read config from: $TESTTMP/hgrc | ||
Mads Kiilerich
|
r20788 | repo: bundle.mainreporoot=$TESTTMP | ||
Brodie Rao
|
r13849 | $TESTTMP/hgrc:15: extensions.plain=./plain.py | ||
Mads Kiilerich
|
r20788 | --config: ui.traceback=True | ||
--verbose: ui.verbose=False | ||||
--debug: ui.debug=True | ||||
--quiet: ui.quiet=False | ||||
Brodie Rao
|
r13849 | $ unset HGPLAIN | ||
$ hg showconfig --config ui.traceback=True --debug | ||||
"Yann E. MORIN"
|
r14372 | plain: True | ||
Brodie Rao
|
r13849 | read config from: $TESTTMP/hgrc | ||
Mads Kiilerich
|
r20788 | repo: bundle.mainreporoot=$TESTTMP | ||
Brodie Rao
|
r13849 | $TESTTMP/hgrc:15: extensions.plain=./plain.py | ||
Mads Kiilerich
|
r20788 | --config: ui.traceback=True | ||
--verbose: ui.verbose=False | ||||
--debug: ui.debug=True | ||||
--quiet: ui.quiet=False | ||||
Brodie Rao
|
r13849 | $ HGPLAINEXCEPT=i18n; export HGPLAINEXCEPT | ||
$ hg showconfig --config ui.traceback=True --debug | ||||
"Yann E. MORIN"
|
r14372 | plain: True | ||
Brodie Rao
|
r13849 | read config from: $TESTTMP/hgrc | ||
Mads Kiilerich
|
r20788 | repo: bundle.mainreporoot=$TESTTMP | ||
Brodie Rao
|
r13849 | $TESTTMP/hgrc:15: extensions.plain=./plain.py | ||
Mads Kiilerich
|
r20788 | --config: ui.traceback=True | ||
--verbose: ui.verbose=False | ||||
--debug: ui.debug=True | ||||
--quiet: ui.quiet=False | ||||
Mads Kiilerich
|
r20789 | |||
source of paths is not mangled | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [paths] | ||||
> foo = bar | ||||
> EOF | ||||
Martin von Zweigbergk
|
r47837 | $ hg showconfig --source paths | ||
Mads Kiilerich
|
r20789 | plain: True | ||
r48046 | $TESTTMP/hgrc:17: paths.foo=bar | |||
r44583 | ||||
Test we can skip the user configuration | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [paths] | ||||
> elephant = babar | ||||
> EOF | ||||
$ hg path | ||||
elephant = $TESTTMP/babar | ||||
foo = $TESTTMP/bar | ||||
$ HGRCSKIPREPO=1 hg path | ||||
foo = $TESTTMP/bar | ||||
r44728 | $ cat >> .hg/hgrc <<EOF | |||
> [broken | ||||
> EOF | ||||
$ hg path | ||||
Martin von Zweigbergk
|
r46506 | config error at $TESTTMP/.hg/hgrc:3: [broken | ||
r44728 | [255] | |||
$ HGRCSKIPREPO=1 hg path | ||||
foo = $TESTTMP/bar | ||||
r44729 | Check that hgweb respect HGRCSKIPREPO=1 | |||
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
Martin von Zweigbergk
|
r46506 | config error at $TESTTMP/.hg/hgrc:3: [broken | ||
r44729 | [255] | |||
$ test -f hg.pid && (cat hg.pid >> $DAEMON_PIDS) | ||||
[1] | ||||
$ killdaemons.py | ||||
$ test -f access.log && cat access.log | ||||
[1] | ||||
$ test -f errors.log && cat errors.log | ||||
[1] | ||||
$ HGRCSKIPREPO=1 hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ killdaemons.py | ||||
$ cat access.log | ||||
$ cat errors.log | ||||
r44730 | ||||
Check that zeroconf respect HGRCSKIPREPO=1 | ||||
$ hg paths --config extensions.zeroconf= | ||||
Martin von Zweigbergk
|
r46506 | config error at $TESTTMP/.hg/hgrc:3: [broken | ||
r44730 | [255] | |||
r48660 | ||||
XXX-PYOXIDIZER Pyoxidizer build have trouble with zeroconf for unclear reason, | ||||
we accept the bad output for now as this is the last thing in the way of | ||||
testing the pyoxidizer build. | ||||
Matt Harbison
|
r50729 | #if no-pyoxidizer-in-filesystem | ||
r44730 | $ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf= | |||
foo = $TESTTMP/bar | ||||
r48660 | #else | |||
$ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf= | ||||
abort: An invalid argument was supplied (known-bad-output !) | ||||
[255] | ||||
#endif | ||||