##// END OF EJS Templates
formatter: fix handling of None value in templater mapping...
formatter: fix handling of None value in templater mapping For historical reasons, None in mapping dict means there's no such keyword, and falls back to b"". That's fine in log templates where mapping item is generally a callable returning a value (which may be None,) but the formatter directly puts an "evaluated" value in the mapping. So the None value has to be lifted to wrappedvalue(None) to avoid confusion in the template engine.

File last commit:

r43645:7e20b705 stable
r43645:7e20b705 stable
Show More
test-config.t
392 lines | 7.8 KiB | text/troff | Tads3Lexer
FUJIWARA Katsunori
tests: rename from test-config-case.t to test-config.t for centralization...
r19086 hide outer repo
$ hg init
Pierre-Yves David
test-config: add tests for invalid syntax...
r22275 Invalid syntax: no value
$ cat > .hg/hgrc << EOF
> novaluekey
> EOF
$ hg showconfig
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 hg: parse error at $TESTTMP/.hg/hgrc:1: novaluekey
Pierre-Yves David
test-config: add tests for invalid syntax...
r22275 [255]
Invalid syntax: no key
$ cat > .hg/hgrc << EOF
> =nokeyvalue
> EOF
$ hg showconfig
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 hg: parse error at $TESTTMP/.hg/hgrc:1: =nokeyvalue
Pierre-Yves David
test-config: add tests for invalid syntax...
r22275 [255]
Razvan Cojocaru
config: highlight parse error caused by leading spaces (issue3214)...
r22276 Test hint about invalid syntax from leading white space
$ cat > .hg/hgrc << EOF
> key=value
> EOF
$ hg showconfig
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 hg: parse error at $TESTTMP/.hg/hgrc:1: key=value
Razvan Cojocaru
config: highlight parse error caused by leading spaces (issue3214)...
r22276 unexpected leading whitespace
[255]
$ cat > .hg/hgrc << EOF
> [section]
> key=value
> EOF
$ hg showconfig
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 hg: parse error at $TESTTMP/.hg/hgrc:1: [section]
Razvan Cojocaru
config: highlight parse error caused by leading spaces (issue3214)...
r22276 unexpected leading whitespace
[255]
Pierre-Yves David
test-config: add tests for invalid syntax...
r22275 Reset hgrc
$ echo > .hg/hgrc
FUJIWARA Katsunori
tests: rename from test-config-case.t to test-config.t for centralization...
r19086 Test case sensitive configuration
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [Section]
> KeY = Case Sensitive
> key = lower case
> EOF
FUJIWARA Katsunori
tests: rename from test-config-case.t to test-config.t for centralization...
r19086
$ hg showconfig Section
Section.KeY=Case Sensitive
Section.key=lower case
Mathias De Maré
config: add template support...
r29950 $ hg showconfig Section -Tjson
[
{
Navaneeth Suresh
config: fix fm.data() handling of defaultvalue...
r42934 "defaultvalue": null,
Mathias De Maré
config: add template support...
r29950 "name": "Section.KeY",
Jun Wu
runtests: set web.ipv6 if we use IPv6...
r30986 "source": "*.hgrc:*", (glob)
Mathias De Maré
config: add template support...
r29950 "value": "Case Sensitive"
},
{
Navaneeth Suresh
config: fix fm.data() handling of defaultvalue...
r42934 "defaultvalue": null,
Mathias De Maré
config: add template support...
r29950 "name": "Section.key",
Jun Wu
runtests: set web.ipv6 if we use IPv6...
r30986 "source": "*.hgrc:*", (glob)
Mathias De Maré
config: add template support...
r29950 "value": "lower case"
}
]
$ hg showconfig Section.KeY -Tjson
[
{
Navaneeth Suresh
config: remove pycompat.bytestr() for defaultvalue...
r42933 "defaultvalue": null,
Mathias De Maré
config: add template support...
r29950 "name": "Section.KeY",
Jun Wu
runtests: set web.ipv6 if we use IPv6...
r30986 "source": "*.hgrc:*", (glob)
Mathias De Maré
config: add template support...
r29950 "value": "Case Sensitive"
}
]
$ hg showconfig -Tjson | tail -7
{
Navaneeth Suresh
config: fix fm.data() handling of defaultvalue...
r42934 "defaultvalue": null,
Mathias De Maré
config: add template support...
r29950 "name": "*", (glob)
"source": "*", (glob)
"value": "*" (glob)
}
]
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
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
formatter: fix handling of None value in templater mapping...
r43645 {"defaultvalue": null}
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
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
config: add support for defaultvalue of list of printable elements
r43644 "defaultvalue": [],
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
r43643 "name": "commands.show.aliasprefix",
"source": "--config",
"value": ""
}
]
$ hg config --config commands.show.aliasprefix= commands -T'json(defaultvalue)'
[
Yuya Nishihara
config: add support for defaultvalue of list of printable elements
r43644 {"defaultvalue": []}
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
r43643 ]
$ hg config --config commands.show.aliasprefix= commands -T'{defaultvalue}\n'
nonempty list
$ hg config --config progress.format= progress -Tjson
[
{
Yuya Nishihara
config: add support for defaultvalue of list of printable elements
r43644 "defaultvalue": ["topic", "bar", "number", "estimate"],
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
r43643 "name": "progress.format",
"source": "--config",
"value": ""
}
]
$ hg config --config progress.format= progress -T'json(defaultvalue)'
[
Yuya Nishihara
config: add support for defaultvalue of list of printable elements
r43644 {"defaultvalue": ["topic", "bar", "number", "estimate"]}
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
r43643 ]
$ hg config --config progress.format= progress -T'{defaultvalue}\n'
Yuya Nishihara
config: add support for defaultvalue of list of printable elements
r43644 topic bar number estimate
Yuya Nishihara
config: fix -Tjson to not crash due to unsupported defaultvalue types...
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
ui: do not translate empty configsource() to 'none' (API)...
r30618 Test empty config source:
$ cat <<EOF > emptysource.py
> def reposetup(ui, repo):
Yuya Nishihara
py3: byte-stringify test-config.t and test-config-env.py
r36748 > ui.setconfig(b'empty', b'source', b'value')
Yuya Nishihara
ui: do not translate empty configsource() to 'none' (API)...
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
config: remove pycompat.bytestr() for defaultvalue...
r42933 "defaultvalue": null,
Yuya Nishihara
ui: do not translate empty configsource() to 'none' (API)...
r30618 "name": "empty.source",
"source": "",
"value": "value"
}
]
$ cp .hg/hgrc.orig .hg/hgrc
FUJIWARA Katsunori
config: discard "%unset" values defined in the other files read in previously...
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
config: exit non zero on non-existent config option (issue4247)...
r22316
Test exit code when no config matches
$ hg config Section.idontexist
[1]
Gregory Szorc
ui: don't fixup [paths] sub-options...
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
chg: deduplicate error handling of ui.system()...
r31108
edit failure
$ HGEDITOR=false hg config --edit
abort: edit failed: false exited with status 1
[255]
Jun Wu
rcutil: let environ override system configs (BC)...
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
configitems: add alias support in config...
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
config: read configs from directories in lexicographical order...
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