test-ui-config.py
129 lines
| 4.7 KiB
| text/x-python
|
PythonLexer
/ tests / test-ui-config.py
Pulkit Goyal
|
r28681 | from __future__ import absolute_import, print_function | ||
Pulkit Goyal
|
r28680 | from mercurial import ( | ||
dispatch, | ||||
error, | ||||
Augie Fackler
|
r37956 | pycompat, | ||
Yuya Nishihara
|
r28776 | ui as uimod, | ||
Pulkit Goyal
|
r28680 | ) | ||
Augie Fackler
|
r37956 | from mercurial.utils import ( | ||
stringutil, | ||||
) | ||||
Martin Geisler
|
r8449 | |||
Yuya Nishihara
|
r30559 | testui = uimod.ui.load() | ||
Boris Feld
|
r34859 | |||
# disable the configuration registration warning | ||||
# | ||||
# the purpose of this test is to check the old behavior, not to validate the | ||||
# behavior from registered item. so we silent warning related to unregisted | ||||
# config. | ||||
Pulkit Goyal
|
r37537 | testui.setconfig(b'devel', b'warn-config-unknown', False, b'test') | ||
testui.setconfig(b'devel', b'all-warnings', False, b'test') | ||||
Boris Feld
|
r34859 | |||
Martin Geisler
|
r8449 | parsed = dispatch._parseconfig(testui, [ | ||
Pulkit Goyal
|
r37537 | b'values.string=string value', | ||
b'values.bool1=true', | ||||
b'values.bool2=false', | ||||
b'values.boolinvalid=foo', | ||||
b'values.int1=42', | ||||
b'values.int2=-42', | ||||
b'values.intinvalid=foo', | ||||
b'lists.list1=foo', | ||||
b'lists.list2=foo bar baz', | ||||
b'lists.list3=alice, bob', | ||||
b'lists.list4=foo bar baz alice, bob', | ||||
b'lists.list5=abc d"ef"g "hij def"', | ||||
b'lists.list6="hello world", "how are you?"', | ||||
b'lists.list7=Do"Not"Separate', | ||||
b'lists.list8="Do"Separate', | ||||
b'lists.list9="Do\\"NotSeparate"', | ||||
b'lists.list10=string "with extraneous" quotation mark"', | ||||
b'lists.list11=x, y', | ||||
b'lists.list12="x", "y"', | ||||
b'lists.list13=""" key = "x", "y" """', | ||||
b'lists.list14=,,,, ', | ||||
b'lists.list15=" just with starting quotation', | ||||
b'lists.list16="longer quotation" with "no ending quotation', | ||||
b'lists.list17=this is \\" "not a quotation mark"', | ||||
b'lists.list18=\n \n\nding\ndong', | ||||
b'date.epoch=0 0', | ||||
b'date.birth=2005-04-19T00:00:00', | ||||
b'date.invalid=0' | ||||
Sune Foldager
|
r14171 | ]) | ||
Martin Geisler
|
r8449 | |||
Augie Fackler
|
r37956 | def pprint(obj): | ||
return stringutil.pprint(obj, bprefix=False).decode('ascii') | ||||
print(pprint(testui.configitems(b'values'))) | ||||
print(pprint(testui.configitems(b'lists'))) | ||||
Pulkit Goyal
|
r28681 | print("---") | ||
Augie Fackler
|
r37956 | print(pprint(testui.config(b'values', b'string'))) | ||
print(pprint(testui.config(b'values', b'bool1'))) | ||||
print(pprint(testui.config(b'values', b'bool2'))) | ||||
print(pprint(testui.config(b'values', b'unknown'))) | ||||
Pulkit Goyal
|
r28681 | print("---") | ||
Martin Geisler
|
r8449 | try: | ||
Augie Fackler
|
r37956 | print(pprint(testui.configbool(b'values', b'string'))) | ||
Gregory Szorc
|
r25660 | except error.ConfigError as inst: | ||
Augie Fackler
|
r37956 | print(pprint(pycompat.bytestr(inst))) | ||
print(pprint(testui.configbool(b'values', b'bool1'))) | ||||
print(pprint(testui.configbool(b'values', b'bool2'))) | ||||
print(pprint(testui.configbool(b'values', b'bool2', True))) | ||||
print(pprint(testui.configbool(b'values', b'unknown'))) | ||||
print(pprint(testui.configbool(b'values', b'unknown', True))) | ||||
Pulkit Goyal
|
r28681 | print("---") | ||
Augie Fackler
|
r37956 | print(pprint(testui.configint(b'values', b'int1'))) | ||
print(pprint(testui.configint(b'values', b'int2'))) | ||||
Pulkit Goyal
|
r28681 | print("---") | ||
Augie Fackler
|
r37956 | print(pprint(testui.configlist(b'lists', b'list1'))) | ||
print(pprint(testui.configlist(b'lists', b'list2'))) | ||||
print(pprint(testui.configlist(b'lists', b'list3'))) | ||||
print(pprint(testui.configlist(b'lists', b'list4'))) | ||||
print(pprint(testui.configlist(b'lists', b'list4', [b'foo']))) | ||||
print(pprint(testui.configlist(b'lists', b'list5'))) | ||||
print(pprint(testui.configlist(b'lists', b'list6'))) | ||||
print(pprint(testui.configlist(b'lists', b'list7'))) | ||||
print(pprint(testui.configlist(b'lists', b'list8'))) | ||||
print(pprint(testui.configlist(b'lists', b'list9'))) | ||||
print(pprint(testui.configlist(b'lists', b'list10'))) | ||||
print(pprint(testui.configlist(b'lists', b'list11'))) | ||||
print(pprint(testui.configlist(b'lists', b'list12'))) | ||||
print(pprint(testui.configlist(b'lists', b'list13'))) | ||||
print(pprint(testui.configlist(b'lists', b'list14'))) | ||||
print(pprint(testui.configlist(b'lists', b'list15'))) | ||||
print(pprint(testui.configlist(b'lists', b'list16'))) | ||||
print(pprint(testui.configlist(b'lists', b'list17'))) | ||||
print(pprint(testui.configlist(b'lists', b'list18'))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown'))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', b''))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', b'foo'))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', [b'foo']))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', b'foo bar'))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', b'foo, bar'))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', [b'foo bar']))) | ||||
print(pprint(testui.configlist(b'lists', b'unknown', [b'foo', b'bar']))) | ||||
Boris Feld
|
r32449 | print("---") | ||
Augie Fackler
|
r37956 | print(pprint(testui.configdate(b'date', b'epoch'))) | ||
print(pprint(testui.configdate(b'date', b'birth'))) | ||||
Martin Geisler
|
r8449 | |||
Augie Fackler
|
r37956 | print(pprint(testui.config(b'values', b'String'))) | ||
Martin Geisler
|
r8449 | |||
def function(): | ||||
pass | ||||
# values that aren't strings should work | ||||
Pulkit Goyal
|
r37537 | testui.setconfig(b'hook', b'commit', function) | ||
print(function == testui.config(b'hook', b'commit')) | ||||
Sune Foldager
|
r14171 | |||
# invalid values | ||||
try: | ||||
Pulkit Goyal
|
r37537 | testui.configbool(b'values', b'boolinvalid') | ||
Sune Foldager
|
r14171 | except error.ConfigError: | ||
Pulkit Goyal
|
r28681 | print('boolinvalid') | ||
Sune Foldager
|
r14171 | try: | ||
Pulkit Goyal
|
r37537 | testui.configint(b'values', b'intinvalid') | ||
Sune Foldager
|
r14171 | except error.ConfigError: | ||
Pulkit Goyal
|
r28681 | print('intinvalid') | ||
Boris Feld
|
r32449 | try: | ||
Pulkit Goyal
|
r37537 | testui.configdate(b'date', b'invalid') | ||
Boris Feld
|
r32449 | except error.ConfigError: | ||
print('dateinvalid') | ||||