view tests/test-doctest.py @ 31499:31d2ddfd338c

color: sync text attributes and buffered text output on Windows (issue5508) I originally noticed that log output wasn't being colored after 3a4c0905f357, but there were other complications too. With a bunch of untracked files, only the first 1K of characters were colored pink, and the rest were normal white. A single modified file at the top would also be colored pink. Line buffering and full buffering are treated as the same thing in Windows [1], meaning the stream is either buffered or not. I can't find any explicit documentation to say stdout is unbuffered by default when attached to a console (but some internet postings indicated that is the case[2]). Therefore, it seems that explicit flushes are better than just not reopening stdout. NB: pager is now on by default, and needs to be disabled to see any color on Windows. [1] https://msdn.microsoft.com/en-us/library/86cebhfs(v=vs.140).aspx [2] https://sourceforge.net/p/mingw/mailman/message/27121137/
author Matt Harbison <matt_harbison@yahoo.com>
date Sun, 19 Mar 2017 12:44:45 -0400
parents a7c687c35119
children 43d6ef658874
line wrap: on
line source

# this is hack to make sure no escape characters are inserted into the output

from __future__ import absolute_import

import doctest
import os
import sys

ispy3 = (sys.version_info[0] >= 3)

if 'TERM' in os.environ:
    del os.environ['TERM']

# TODO: migrate doctests to py3 and enable them on both versions
def testmod(name, optionflags=0, testtarget=None, py2=True, py3=False):
    if not (not ispy3 and py2 or ispy3 and py3):
        return
    __import__(name)
    mod = sys.modules[name]
    if testtarget is not None:
        mod = getattr(mod, testtarget)
    doctest.testmod(mod, optionflags=optionflags)

testmod('mercurial.changegroup')
testmod('mercurial.changelog')
testmod('mercurial.config')
testmod('mercurial.dagparser', optionflags=doctest.NORMALIZE_WHITESPACE)
testmod('mercurial.dispatch')
testmod('mercurial.encoding')
testmod('mercurial.formatter')
testmod('mercurial.hg')
testmod('mercurial.hgweb.hgwebdir_mod')
testmod('mercurial.match')
testmod('mercurial.minirst')
testmod('mercurial.patch')
testmod('mercurial.pathutil')
testmod('mercurial.parser')
testmod('mercurial.pycompat', py3=True)
testmod('mercurial.revsetlang')
testmod('mercurial.smartset')
testmod('mercurial.store')
testmod('mercurial.subrepo')
testmod('mercurial.templatefilters')
testmod('mercurial.templater')
testmod('mercurial.ui')
testmod('mercurial.url')
testmod('mercurial.util')
testmod('mercurial.util', testtarget='platform')
testmod('hgext.convert.convcmd')
testmod('hgext.convert.cvsps')
testmod('hgext.convert.filemap')
testmod('hgext.convert.p4')
testmod('hgext.convert.subversion')
testmod('hgext.mq')