Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/ui.py @ 32496:bb18728ea617
util: raise ParseError when parsing dates (BC)
a7dce526c462 refactored util.parsedate in order to raise ValueError instead
of Abort for using with ui.configwith. It causes several problems, putting
arbitrary bytes in ValueError can cause issues with Python 3. Moreover, we
added a function to convert ValueError exceptions back to Abort.
A better approach would be to make parsedate raises ParseError, removing
the convert function and update configwith to also catch ParseError.
The side-effect is that error message when giving an invalid date in CLI
change from:
abort: invalid date: 'foo bar'
to:
hg: parse error: invalid date: 'foo bar'
I'm not sure if it's an acceptable change, I found personally the error
message more clear but more verbose too.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Wed, 24 May 2017 17:50:17 +0200 |
parents | 0ed730f3301c |
children | 012e0da5b759 |
comparison
equal
deleted
inserted
replaced
32495:2b5953a49f14 | 32496:bb18728ea617 |
---|---|
520 v = self.config(section, name, None, untrusted) | 520 v = self.config(section, name, None, untrusted) |
521 if v is None: | 521 if v is None: |
522 return default | 522 return default |
523 try: | 523 try: |
524 return convert(v) | 524 return convert(v) |
525 except ValueError: | 525 except (ValueError, error.ParseError): |
526 if desc is None: | 526 if desc is None: |
527 desc = convert.__name__ | 527 desc = convert.__name__ |
528 raise error.ConfigError(_("%s.%s is not a valid %s ('%s')") | 528 raise error.ConfigError(_("%s.%s is not a valid %s ('%s')") |
529 % (section, name, desc, v)) | 529 % (section, name, desc, v)) |
530 | 530 |
605 >>> u.setconfig(s, 'date', '0 0') | 605 >>> u.setconfig(s, 'date', '0 0') |
606 >>> u.configdate(s, 'date') | 606 >>> u.configdate(s, 'date') |
607 (0, 0) | 607 (0, 0) |
608 """ | 608 """ |
609 if self.config(section, name, default, untrusted): | 609 if self.config(section, name, default, untrusted): |
610 return self.configwith(util.rawparsedate, section, name, default, | 610 return self.configwith(util.parsedate, section, name, default, |
611 'date', untrusted) | 611 'date', untrusted) |
612 return default | 612 return default |
613 | 613 |
614 def hasconfig(self, section, name, untrusted=False): | 614 def hasconfig(self, section, name, untrusted=False): |
615 return self._data(untrusted).hasitem(section, name) | 615 return self._data(untrusted).hasitem(section, name) |