view tests/test-ui-color.py @ 34686:0d1b8be8d8a8

build: for the bootstrap phase of a deb/rpm build pure-py mercurial is enough When bootstrapping a deb/rpm build, packagelib.sh starts performing a local build for the sole purpose of parsing the output of "hg version". Then it "hg archive"s the source code, and builds everything again. For that initial step, we are perfectly good in using a pure python mercurial, without compiling the c modules (base85, bdiff, zstdlib, ...). On my personal system, this cuts down 22 seconds for a package build (the bootstrapping build goes from ~30 to ~8 seconds).
author muxator <a.mux@inwind.it>
date Fri, 13 Oct 2017 22:42:17 +0200
parents b4cb86ab4c71
children 236596a67a54
line wrap: on
line source

from __future__ import absolute_import, print_function

import os
from mercurial import (
    dispatch,
    ui as uimod,
)

# ensure errors aren't buffered
testui = uimod.ui()
testui.pushbuffer()
testui.write(('buffered\n'))
testui.warn(('warning\n'))
testui.write_err('error\n')
print(repr(testui.popbuffer()))

# test dispatch.dispatch with the same ui object
hgrc = open(os.environ["HGRCPATH"], 'w')
hgrc.write('[extensions]\n')
hgrc.write('color=\n')
hgrc.close()

ui_ = uimod.ui.load()
ui_.setconfig('ui', 'formatted', 'True')

# we're not interested in the output, so write that to devnull
ui_.fout = open(os.devnull, 'w')

# call some arbitrary command just so we go through
# color's wrapped _runcommand twice.
def runcmd():
    dispatch.dispatch(dispatch.request(['version', '-q'], ui_))

runcmd()
print("colored? %s" % (ui_._colormode is not None))
runcmd()
print("colored? %s" % (ui_._colormode is not None))