[PATCH] util: add doctest to datestr()

Adrian Buehlmann adrian at cadifra.com
Fri Apr 8 12:46:29 EDT 2016


On 2016-04-08 18:23, Yuya Nishihara wrote:
> On Fri, 08 Apr 2016 17:58:16 +0200, Adrian Buehlmann wrote:
>> On 2016-04-08 16:51, Yuya Nishihara wrote:
>>> On Fri, 08 Apr 2016 11:29:20 +0200, Adrian Buehlmann wrote:  
>>>> # HG changeset patch
>>>> # User Adrian Buehlmann <adrian at cadifra.com>
>>>> # Date 1460042647 -7200
>>>> # Node ID e4855d9b93ae1c1413b3ab67e9e605b968c89fa9
>>>> # Parent  ea86cdcd9b50bf38c6b9dd7bbaa04b9c8cc0aefb
>>>> util: add doctest to datestr()
>>>>
>>>> The setlocale call is needed. If I leave it away, the active locale is -
>>>> surprisingly - *not* 'C' here.
>>>>
>>>> diff --git a/mercurial/util.py b/mercurial/util.py
>>>> --- a/mercurial/util.py
>>>> +++ b/mercurial/util.py
>>>> @@ -1576,7 +1576,22 @@
>>>>      """represent a (unixtime, offset) tuple as a localized time.
>>>>      unixtime is seconds since the epoch, and offset is the time zone's
>>>>      number of seconds away from UTC. if timezone is false, do not
>>>> -    append time zone to string."""
>>>> +    append time zone to string.
>>>> +
>>>> +    >>> import locale
>>>> +    >>> locale.setlocale(locale.LC_ALL, 'C')
>>>> +    'C'  
>>>
>>> Perhaps test-doctest.py should do that globally? I got test failure on
>>> Windows even without this patch.
>>>  
>>
>> ?
>>
>> I'll probably stop digging this. In my experiments, setlocale in
>> test-doctest.py had no influence on the locale used inside the scope of
>> individual doctests.
>>
>> Test passed here.
> 
> I thought setlocale() is per process and test-doctest.py won't spawn new
> process. But I didn't investigate it either.

To me, it looks like each doctest-block has a new locale-scope (per
function). Could be similar to the fact that each one has its own
globals. I might be wrong though.

No matter what I tried: the locale was correctly set only if I did set
it in the doctest block. Which is quite surprising.

>>>> +    >>> datestr((0, False))  
>>>
>>> "offset" is integer, not bool.
>>>   
>>
>> ... which apparently doesn't match the spec of the function ("if
>> timezone is false, do not append time zone to string.")
> 
> It appears that the doc is wrong. There was "timezone" flag at 04c17fc39c84.
> 


More information about the Mercurial-devel mailing list