##// END OF EJS Templates
config: test priority involving the command line...
config: test priority involving the command line Differential Revision: https://phab.mercurial-scm.org/D9917

File last commit:

r47150:82177584 default
r47150:82177584 default
Show More
test-config.t
439 lines | 8.9 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
Martin von Zweigbergk
errors: raise ConfigError on failure to parse config file...
r46506 config error at $TESTTMP/.hg/hgrc:1: novaluekey
[30]
Pierre-Yves David
test-config: add tests for invalid syntax...
r22275
Invalid syntax: no key
$ cat > .hg/hgrc << EOF
> =nokeyvalue
> EOF
$ hg showconfig
Martin von Zweigbergk
errors: raise ConfigError on failure to parse config file...
r46506 config error at $TESTTMP/.hg/hgrc:1: =nokeyvalue
[30]
Pierre-Yves David
test-config: add tests for invalid syntax...
r22275
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
Martin von Zweigbergk
errors: raise ConfigError on failure to parse config file...
r46506 config error at $TESTTMP/.hg/hgrc:1: unexpected leading whitespace: key=value
[30]
Razvan Cojocaru
config: highlight parse error caused by leading spaces (issue3214)...
r22276
$ cat > .hg/hgrc << EOF
> [section]
> key=value
> EOF
$ hg showconfig
Martin von Zweigbergk
errors: raise ConfigError on failure to parse config file...
r46506 config error at $TESTTMP/.hg/hgrc:1: unexpected leading whitespace: [section]
[30]
Razvan Cojocaru
config: highlight parse error caused by leading spaces (issue3214)...
r22276
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
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
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
config: add a test for priority when includes are involved...
r47148
Configuration priority
======================
setup necessary file
$ cat > file-A.rc << EOF
> [config-test]
> basic = value-A
config: test priority involving include...
r47149 > pre-include= value-A
> %include ./included.rc
> post-include= value-A
config: add a test for priority when includes are involved...
r47148 > EOF
$ cat > file-B.rc << EOF
> [config-test]
> basic = value-B
> EOF
config: test priority involving include...
r47149
$ cat > included.rc << EOF
> [config-test]
> pre-include= value-included
> post-include= value-included
> EOF
config: add a test for priority when includes are involved...
r47148 Simple order checking
---------------------
If file B is read after file A, value from B overwrite value from A.
$ HGRCPATH="file-A.rc:file-B.rc" hg config config-test.basic
value-B
config: test priority involving include...
r47149
Ordering from include
---------------------
value from an include overwrite value defined before the include, but not the one defined after the include
$ HGRCPATH="file-A.rc" hg config config-test.pre-include
value-included
$ HGRCPATH="file-A.rc" hg config config-test.post-include
value-A
config: test priority involving the command line...
r47150
command line override
---------------------
$ HGRCPATH="file-A.rc:file-B.rc" hg config config-test.basic --config config-test.basic=value-CLI
value-CLI