test-config.t
392 lines
| 7.8 KiB
| text/troff
|
Tads3Lexer
/ tests / test-config.t
FUJIWARA Katsunori
|
r19086 | hide outer repo | ||
$ hg init | ||||
Pierre-Yves David
|
r22275 | Invalid syntax: no value | ||
$ cat > .hg/hgrc << EOF | ||||
> novaluekey | ||||
> EOF | ||||
$ hg showconfig | ||||
Matt Harbison
|
r35394 | hg: parse error at $TESTTMP/.hg/hgrc:1: novaluekey | ||
Pierre-Yves David
|
r22275 | [255] | ||
Invalid syntax: no key | ||||
$ cat > .hg/hgrc << EOF | ||||
> =nokeyvalue | ||||
> EOF | ||||
$ hg showconfig | ||||
Matt Harbison
|
r35394 | hg: parse error at $TESTTMP/.hg/hgrc:1: =nokeyvalue | ||
Pierre-Yves David
|
r22275 | [255] | ||
Razvan Cojocaru
|
r22276 | Test hint about invalid syntax from leading white space | ||
$ cat > .hg/hgrc << EOF | ||||
> key=value | ||||
> EOF | ||||
$ hg showconfig | ||||
Matt Harbison
|
r35394 | hg: parse error at $TESTTMP/.hg/hgrc:1: key=value | ||
Razvan Cojocaru
|
r22276 | unexpected leading whitespace | ||
[255] | ||||
$ cat > .hg/hgrc << EOF | ||||
> [section] | ||||
> key=value | ||||
> EOF | ||||
$ hg showconfig | ||||
Matt Harbison
|
r35394 | hg: parse error at $TESTTMP/.hg/hgrc:1: [section] | ||
Razvan Cojocaru
|
r22276 | unexpected leading whitespace | ||
[255] | ||||
Pierre-Yves David
|
r22275 | Reset hgrc | ||
$ echo > .hg/hgrc | ||||
FUJIWARA Katsunori
|
r19086 | Test case sensitive configuration | ||
Yuya Nishihara
|
r23172 | $ cat <<EOF >> $HGRCPATH | ||
> [Section] | ||||
> KeY = Case Sensitive | ||||
> key = lower case | ||||
> EOF | ||||
FUJIWARA Katsunori
|
r19086 | |||
$ hg showconfig Section | ||||
Section.KeY=Case Sensitive | ||||
Section.key=lower case | ||||
Mathias De Maré
|
r29950 | $ hg showconfig Section -Tjson | ||
[ | ||||
{ | ||||
Navaneeth Suresh
|
r42934 | "defaultvalue": null, | ||
Mathias De Maré
|
r29950 | "name": "Section.KeY", | ||
Jun Wu
|
r30986 | "source": "*.hgrc:*", (glob) | ||
Mathias De Maré
|
r29950 | "value": "Case Sensitive" | ||
}, | ||||
{ | ||||
Navaneeth Suresh
|
r42934 | "defaultvalue": null, | ||
Mathias De Maré
|
r29950 | "name": "Section.key", | ||
Jun Wu
|
r30986 | "source": "*.hgrc:*", (glob) | ||
Mathias De Maré
|
r29950 | "value": "lower case" | ||
} | ||||
] | ||||
$ hg showconfig Section.KeY -Tjson | ||||
[ | ||||
{ | ||||
Navaneeth Suresh
|
r42933 | "defaultvalue": null, | ||
Mathias De Maré
|
r29950 | "name": "Section.KeY", | ||
Jun Wu
|
r30986 | "source": "*.hgrc:*", (glob) | ||
Mathias De Maré
|
r29950 | "value": "Case Sensitive" | ||
} | ||||
] | ||||
$ hg showconfig -Tjson | tail -7 | ||||
{ | ||||
Navaneeth Suresh
|
r42934 | "defaultvalue": null, | ||
Mathias De Maré
|
r29950 | "name": "*", (glob) | ||
"source": "*", (glob) | ||||
"value": "*" (glob) | ||||
} | ||||
] | ||||
Yuya Nishihara
|
r43643 | Test config default of various types: | ||
{"defaultvalue": ""} for -T'json(defaultvalue)' looks weird, but that's | ||||
how the templater works. Unknown keywords are evaluated to "". | ||||
dynamicdefault | ||||
$ hg config --config alias.foo= alias -Tjson | ||||
[ | ||||
{ | ||||
"name": "alias.foo", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config alias.foo= alias -T'json(defaultvalue)' | ||||
[ | ||||
{"defaultvalue": ""} | ||||
] | ||||
$ hg config --config alias.foo= alias -T'{defaultvalue}\n' | ||||
null | ||||
$ hg config --config auth.cookiefile= auth -Tjson | ||||
[ | ||||
{ | ||||
"defaultvalue": null, | ||||
"name": "auth.cookiefile", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config auth.cookiefile= auth -T'json(defaultvalue)' | ||||
[ | ||||
Yuya Nishihara
|
r43645 | {"defaultvalue": null} | ||
Yuya Nishihara
|
r43643 | ] | ||
$ hg config --config auth.cookiefile= auth -T'{defaultvalue}\n' | ||||
false | ||||
$ hg config --config commands.commit.post-status= commands -Tjson | ||||
[ | ||||
{ | ||||
"defaultvalue": false, | ||||
"name": "commands.commit.post-status", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config commands.commit.post-status= commands -T'json(defaultvalue)' | ||||
[ | ||||
{"defaultvalue": false} | ||||
] | ||||
$ hg config --config commands.commit.post-status= commands -T'{defaultvalue}\n' | ||||
False | ||||
true | ||||
$ hg config --config format.dotencode= format -Tjson | ||||
[ | ||||
{ | ||||
"defaultvalue": true, | ||||
"name": "format.dotencode", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config format.dotencode= format -T'json(defaultvalue)' | ||||
[ | ||||
{"defaultvalue": true} | ||||
] | ||||
$ hg config --config format.dotencode= format -T'{defaultvalue}\n' | ||||
True | ||||
bytes | ||||
$ hg config --config commands.resolve.mark-check= commands -Tjson | ||||
[ | ||||
{ | ||||
"defaultvalue": "none", | ||||
"name": "commands.resolve.mark-check", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config commands.resolve.mark-check= commands -T'json(defaultvalue)' | ||||
[ | ||||
{"defaultvalue": "none"} | ||||
] | ||||
$ hg config --config commands.resolve.mark-check= commands -T'{defaultvalue}\n' | ||||
none | ||||
empty list | ||||
$ hg config --config commands.show.aliasprefix= commands -Tjson | ||||
[ | ||||
{ | ||||
Yuya Nishihara
|
r43644 | "defaultvalue": [], | ||
Yuya Nishihara
|
r43643 | "name": "commands.show.aliasprefix", | ||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config commands.show.aliasprefix= commands -T'json(defaultvalue)' | ||||
[ | ||||
Yuya Nishihara
|
r43644 | {"defaultvalue": []} | ||
Yuya Nishihara
|
r43643 | ] | ||
$ hg config --config commands.show.aliasprefix= commands -T'{defaultvalue}\n' | ||||
nonempty list | ||||
$ hg config --config progress.format= progress -Tjson | ||||
[ | ||||
{ | ||||
Yuya Nishihara
|
r43644 | "defaultvalue": ["topic", "bar", "number", "estimate"], | ||
Yuya Nishihara
|
r43643 | "name": "progress.format", | ||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config progress.format= progress -T'json(defaultvalue)' | ||||
[ | ||||
Yuya Nishihara
|
r43644 | {"defaultvalue": ["topic", "bar", "number", "estimate"]} | ||
Yuya Nishihara
|
r43643 | ] | ||
$ hg config --config progress.format= progress -T'{defaultvalue}\n' | ||||
Yuya Nishihara
|
r43644 | topic bar number estimate | ||
Yuya Nishihara
|
r43643 | |||
int | ||||
$ hg config --config profiling.freq= profiling -Tjson | ||||
[ | ||||
{ | ||||
"defaultvalue": 1000, | ||||
"name": "profiling.freq", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config profiling.freq= profiling -T'json(defaultvalue)' | ||||
[ | ||||
{"defaultvalue": 1000} | ||||
] | ||||
$ hg config --config profiling.freq= profiling -T'{defaultvalue}\n' | ||||
1000 | ||||
float | ||||
$ hg config --config profiling.showmax= profiling -Tjson | ||||
[ | ||||
{ | ||||
"defaultvalue": 0.999, | ||||
"name": "profiling.showmax", | ||||
"source": "--config", | ||||
"value": "" | ||||
} | ||||
] | ||||
$ hg config --config profiling.showmax= profiling -T'json(defaultvalue)' | ||||
[ | ||||
{"defaultvalue": 0.999} | ||||
] | ||||
$ hg config --config profiling.showmax= profiling -T'{defaultvalue}\n' | ||||
0.999 | ||||
Yuya Nishihara
|
r30618 | Test empty config source: | ||
$ cat <<EOF > emptysource.py | ||||
> def reposetup(ui, repo): | ||||
Yuya Nishihara
|
r36748 | > ui.setconfig(b'empty', b'source', b'value') | ||
Yuya Nishihara
|
r30618 | > EOF | ||
$ cp .hg/hgrc .hg/hgrc.orig | ||||
$ cat <<EOF >> .hg/hgrc | ||||
> [extensions] | ||||
> emptysource = `pwd`/emptysource.py | ||||
> EOF | ||||
$ hg config --debug empty.source | ||||
read config from: * (glob) | ||||
none: value | ||||
$ hg config empty.source -Tjson | ||||
[ | ||||
{ | ||||
Navaneeth Suresh
|
r42933 | "defaultvalue": null, | ||
Yuya Nishihara
|
r30618 | "name": "empty.source", | ||
"source": "", | ||||
"value": "value" | ||||
} | ||||
] | ||||
$ cp .hg/hgrc.orig .hg/hgrc | ||||
FUJIWARA Katsunori
|
r19087 | Test "%unset" | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [unsettest] | ||||
> local-hgrcpath = should be unset (HGRCPATH) | ||||
> %unset local-hgrcpath | ||||
> | ||||
> global = should be unset (HGRCPATH) | ||||
> | ||||
> both = should be unset (HGRCPATH) | ||||
> | ||||
> set-after-unset = should be unset (HGRCPATH) | ||||
> EOF | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [unsettest] | ||||
> local-hgrc = should be unset (.hg/hgrc) | ||||
> %unset local-hgrc | ||||
> | ||||
> %unset global | ||||
> | ||||
> both = should be unset (.hg/hgrc) | ||||
> %unset both | ||||
> | ||||
> set-after-unset = should be unset (.hg/hgrc) | ||||
> %unset set-after-unset | ||||
> set-after-unset = should be set (.hg/hgrc) | ||||
> EOF | ||||
$ hg showconfig unsettest | ||||
unsettest.set-after-unset=should be set (.hg/hgrc) | ||||
Aaron Kushner
|
r22316 | |||
Test exit code when no config matches | ||||
$ hg config Section.idontexist | ||||
[1] | ||||
Gregory Szorc
|
r29412 | |||
sub-options in [paths] aren't expanded | ||||
$ cat > .hg/hgrc << EOF | ||||
> [paths] | ||||
> foo = ~/foo | ||||
> foo:suboption = ~/foo | ||||
> EOF | ||||
$ hg showconfig paths | ||||
paths.foo:suboption=~/foo | ||||
paths.foo=$TESTTMP/foo | ||||
Yuya Nishihara
|
r31108 | |||
edit failure | ||||
$ HGEDITOR=false hg config --edit | ||||
abort: edit failed: false exited with status 1 | ||||
[255] | ||||
Jun Wu
|
r31685 | |||
config affected by environment variables | ||||
$ EDITOR=e1 VISUAL=e2 hg config --debug | grep 'ui\.editor' | ||||
$VISUAL: ui.editor=e2 | ||||
$ VISUAL=e2 hg config --debug --config ui.editor=e3 | grep 'ui\.editor' | ||||
--config: ui.editor=e3 | ||||
$ PAGER=p1 hg config --debug | grep 'pager\.pager' | ||||
$PAGER: pager.pager=p1 | ||||
$ PAGER=p1 hg config --debug --config pager.pager=p2 | grep 'pager\.pager' | ||||
--config: pager.pager=p2 | ||||
David Demelier
|
r33329 | |||
verify that aliases are evaluated as well | ||||
$ hg init aliastest | ||||
$ cd aliastest | ||||
$ cat > .hg/hgrc << EOF | ||||
> [ui] | ||||
> user = repo user | ||||
> EOF | ||||
$ touch index | ||||
$ unset HGUSER | ||||
$ hg ci -Am test | ||||
adding index | ||||
$ hg log --template '{author}\n' | ||||
repo user | ||||
$ cd .. | ||||
alias has lower priority | ||||
$ hg init aliaspriority | ||||
$ cd aliaspriority | ||||
$ cat > .hg/hgrc << EOF | ||||
> [ui] | ||||
> user = alias user | ||||
> username = repo user | ||||
> EOF | ||||
$ touch index | ||||
$ unset HGUSER | ||||
$ hg ci -Am test | ||||
adding index | ||||
$ hg log --template '{author}\n' | ||||
repo user | ||||
$ cd .. | ||||
Martin von Zweigbergk
|
r42262 | |||
configs should be read in lexicographical order | ||||
$ mkdir configs | ||||
$ for i in `$TESTDIR/seq.py 10 99`; do | ||||
> printf "[section]\nkey=$i" > configs/$i.rc | ||||
> done | ||||
$ HGRCPATH=configs hg config section.key | ||||
99 | ||||