# HG changeset patch # User Boris Feld # Date 1495547090 -7200 # Node ID 0ed730f3301c9721cd738d22e506343a8ffe11cb # Parent 91a2ec8e7fa06be9800f6c5c505b4e0305fb7424 ui: fix ui.configdate for invalid dates a7dce526c462 introduced util._parsedate with the aim to be used in ui.configdate but ui.configdate was using util.parsedate instead. It have the impact of raising an AbortError in case of an invalid date instead of a ConfigError exception. Fix ui.configdate to use the right function and add a test for invalid dates. Thanks to Yuya for the catch! diff -r 91a2ec8e7fa0 -r 0ed730f3301c mercurial/ui.py --- a/mercurial/ui.py Fri Apr 28 00:01:22 2017 +0900 +++ b/mercurial/ui.py Tue May 23 15:44:50 2017 +0200 @@ -607,7 +607,7 @@ (0, 0) """ if self.config(section, name, default, untrusted): - return self.configwith(util.parsedate, section, name, default, + return self.configwith(util.rawparsedate, section, name, default, 'date', untrusted) return default diff -r 91a2ec8e7fa0 -r 0ed730f3301c tests/test-ui-config.py --- a/tests/test-ui-config.py Fri Apr 28 00:01:22 2017 +0900 +++ b/tests/test-ui-config.py Tue May 23 15:44:50 2017 +0200 @@ -32,6 +32,9 @@ '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=0' ]) print(repr(testui.configitems('values'))) @@ -82,6 +85,9 @@ 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'))) @@ -101,3 +107,7 @@ testui.configint('values', 'intinvalid') except error.ConfigError: print('intinvalid') +try: + testui.configdate('date', 'invalid') +except error.ConfigError: + print('dateinvalid') diff -r 91a2ec8e7fa0 -r 0ed730f3301c tests/test-ui-config.py.out --- a/tests/test-ui-config.py.out Fri Apr 28 00:01:22 2017 +0900 +++ b/tests/test-ui-config.py.out Tue May 23 15:44:50 2017 +0200 @@ -43,7 +43,11 @@ ['foo', 'bar'] ['foo bar'] ['foo', 'bar'] +--- +(0, 0) +(1113868800, 0) None True boolinvalid intinvalid +dateinvalid