sapling/eden/scm/tests/test-ui-config.py
Jun Wu 6266e2cad6 tests: improve test reliability for parsing dates
Summary:
We have seen issues parsing '0' as date somehow passes on OSX, and parsing
'Apr 2018' fails on Windows with GitBash. Let's workaround the tests while
I'm going to find better fixes.

Reviewed By: xavierd

Differential Revision: D19353054

fbshipit-source-id: c0302071964191b97eea6572ffd985f831db6791
2020-01-10 15:46:17 -08:00

126 lines
4.4 KiB
Python

from __future__ import absolute_import, print_function
from edenscm.mercurial import dispatch, error, ui as uimod
testui = uimod.ui.load()
# 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.
testui.setconfig("devel", "warn-config-unknown", False, "test")
testui.setconfig("devel", "all-warnings", False, "test")
parsed = dispatch._parseconfig(
testui,
[
"values.string=string value",
"values.bool1=true",
"values.bool2=false",
"values.boolinvalid=foo",
"values.int1=42",
"values.int2=-42",
"values.intinvalid=foo",
"lists.list1=foo",
"lists.list2=foo bar baz",
"lists.list3=alice, bob",
"lists.list4=foo bar baz alice, bob",
'lists.list5=abc d"ef"g "hij def"',
'lists.list6="hello world", "how are you?"',
'lists.list7=Do"Not"Separate',
'lists.list8="Do"Separate',
'lists.list9="Do\\"NotSeparate"',
'lists.list10=string "with extraneous" quotation mark"',
"lists.list11=x, y",
'lists.list12="x", "y"',
'lists.list13=""" key = "x", "y" """',
"lists.list14=,,,, ",
'lists.list15=" just with starting quotation',
'lists.list16="longer quotation" with "no ending quotation',
'lists.list17=this is \\" "not a quotation mark"',
"lists.list18=\n \n\nding\ndong",
"date.epoch=0 0",
"date.birth=2005-04-19T00:00:00",
"date.invalid=invalid",
],
)
print(repr(testui.configitems("values")))
print(repr(testui.configitems("lists")))
print("---")
print(repr(testui.config("values", "string")))
print(repr(testui.config("values", "bool1")))
print(repr(testui.config("values", "bool2")))
print(repr(testui.config("values", "unknown")))
print("---")
try:
print(repr(testui.configbool("values", "string")))
except error.ConfigError as inst:
print(inst)
print(repr(testui.configbool("values", "bool1")))
print(repr(testui.configbool("values", "bool2")))
print(repr(testui.configbool("values", "bool2", True)))
print(repr(testui.configbool("values", "unknown")))
print(repr(testui.configbool("values", "unknown", True)))
print("---")
print(repr(testui.configint("values", "int1")))
print(repr(testui.configint("values", "int2")))
print("---")
print(repr(testui.configlist("lists", "list1")))
print(repr(testui.configlist("lists", "list2")))
print(repr(testui.configlist("lists", "list3")))
print(repr(testui.configlist("lists", "list4")))
print(repr(testui.configlist("lists", "list4", ["foo"])))
print(repr(testui.configlist("lists", "list5")))
print(repr(testui.configlist("lists", "list6")))
print(repr(testui.configlist("lists", "list7")))
print(repr(testui.configlist("lists", "list8")))
print(repr(testui.configlist("lists", "list9")))
print(repr(testui.configlist("lists", "list10")))
print(repr(testui.configlist("lists", "list11")))
print(repr(testui.configlist("lists", "list12")))
print(repr(testui.configlist("lists", "list13")))
print(repr(testui.configlist("lists", "list14")))
print(repr(testui.configlist("lists", "list15")))
print(repr(testui.configlist("lists", "list16")))
print(repr(testui.configlist("lists", "list17")))
print(repr(testui.configlist("lists", "list18")))
print(repr(testui.configlist("lists", "unknown")))
print(repr(testui.configlist("lists", "unknown", "")))
print(repr(testui.configlist("lists", "unknown", "foo")))
print(repr(testui.configlist("lists", "unknown", ["foo"])))
print(repr(testui.configlist("lists", "unknown", "foo bar")))
print(repr(testui.configlist("lists", "unknown", "foo, bar")))
print(repr(testui.configlist("lists", "unknown", ["foo bar"])))
print(repr(testui.configlist("lists", "unknown", ["foo", "bar"])))
print("---")
print(repr(testui.configdate("date", "epoch")))
print(repr(testui.configdate("date", "birth")))
print(repr(testui.config("values", "String")))
def function():
pass
# values that aren't strings should work
testui.setconfig("hook", "commit", function)
print(function == testui.config("hook", "commit"))
# invalid values
try:
testui.configbool("values", "boolinvalid")
except error.ConfigError:
print("boolinvalid")
try:
testui.configint("values", "intinvalid")
except error.ConfigError:
print("intinvalid")
try:
testui.configdate("date", "invalid")
except error.ConfigError:
print("dateinvalid")