[PATCH 5 of 5] py3: work around bytes/unicode divergence in parsedate()

Yuya Nishihara yuya at tcha.org
Wed Sep 27 12:34:42 UTC 2017


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1506508061 -32400
#      Wed Sep 27 19:27:41 2017 +0900
# Node ID 3908ba8ca01db2bbb6104946cb1e86e514ea4b8d
# Parent  b75831c83770a3ce9d9c84112cec6c6807563db1
py3: work around bytes/unicode divergence in parsedate()

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -2006,12 +2006,12 @@ def parsedate(date, formats=None, bias=N
     The date may be a "unixtime offset" string or in one of the specified
     formats. If the date already is a (unixtime, offset) tuple, it is returned.
 
-    >>> parsedate(b' today ') == parsedate(\
-                                  datetime.date.today().strftime('%b %d'))
+    >>> parsedate(b' today ') == parsedate(
+    ...     datetime.date.today().strftime('%b %d').encode('ascii'))
     True
-    >>> parsedate(b'yesterday ') == parsedate((datetime.date.today() -\
-                                               datetime.timedelta(days=1)\
-                                              ).strftime('%b %d'))
+    >>> parsedate(b'yesterday ') == parsedate(
+    ...     (datetime.date.today() - datetime.timedelta(days=1)
+    ...      ).strftime('%b %d').encode('ascii'))
     True
     >>> now, tz = makedate()
     >>> strnow, strtz = parsedate(b'now')
@@ -2033,10 +2033,12 @@ def parsedate(date, formats=None, bias=N
     if date == 'now' or date == _('now'):
         return makedate()
     if date == 'today' or date == _('today'):
-        date = datetime.date.today().strftime('%b %d')
+        date = datetime.date.today().strftime(r'%b %d')
+        date = encoding.strtolocal(date)
     elif date == 'yesterday' or date == _('yesterday'):
         date = (datetime.date.today() -
-                datetime.timedelta(days=1)).strftime('%b %d')
+                datetime.timedelta(days=1)).strftime(r'%b %d')
+        date = encoding.strtolocal(date)
 
     try:
         when, offset = map(int, date.split(' '))
diff --git a/tests/test-doctest.py b/tests/test-doctest.py
--- a/tests/test-doctest.py
+++ b/tests/test-doctest.py
@@ -69,7 +69,7 @@ testmod('mercurial.templatefilters')
 testmod('mercurial.templater')
 testmod('mercurial.ui')
 testmod('mercurial.url')
-testmod('mercurial.util', py3=False)  # py3: multiple bytes/unicode issues
+testmod('mercurial.util')
 testmod('mercurial.util', testtarget='platform')
 testmod('hgext.convert.convcmd')
 testmod('hgext.convert.cvsps')



More information about the Mercurial-devel mailing list