Merge pull request #3911 from wimglenn/i18n_width
improve line width estimate
This commit is contained in:
commit
8d8e68cf90
|
@ -0,0 +1 @@
|
||||||
|
Terminal writer now takes into account unicode character width when writing out progress.
|
2
setup.py
2
setup.py
|
@ -59,7 +59,7 @@ def get_environment_marker_support_level():
|
||||||
def main():
|
def main():
|
||||||
extras_require = {}
|
extras_require = {}
|
||||||
install_requires = [
|
install_requires = [
|
||||||
"py>=1.5.0",
|
"py>=1.5.0", # if py gets upgrade to >=1.6, remove _width_of_current_line in terminal.py
|
||||||
"six>=1.10.0",
|
"six>=1.10.0",
|
||||||
"setuptools",
|
"setuptools",
|
||||||
"attrs>=17.4.0",
|
"attrs>=17.4.0",
|
||||||
|
|
|
@ -412,10 +412,8 @@ class TerminalReporter(object):
|
||||||
if last_item:
|
if last_item:
|
||||||
self._write_progress_information_filling_space()
|
self._write_progress_information_filling_space()
|
||||||
else:
|
else:
|
||||||
past_edge = (
|
w = self._width_of_current_line
|
||||||
self._tw.chars_on_current_line + self._PROGRESS_LENGTH + 1
|
past_edge = w + self._PROGRESS_LENGTH + 1 >= self._screen_width
|
||||||
>= self._screen_width
|
|
||||||
)
|
|
||||||
if past_edge:
|
if past_edge:
|
||||||
msg = self._get_progress_information_message()
|
msg = self._get_progress_information_message()
|
||||||
self._tw.write(msg + "\n", cyan=True)
|
self._tw.write(msg + "\n", cyan=True)
|
||||||
|
@ -433,10 +431,18 @@ class TerminalReporter(object):
|
||||||
|
|
||||||
def _write_progress_information_filling_space(self):
|
def _write_progress_information_filling_space(self):
|
||||||
msg = self._get_progress_information_message()
|
msg = self._get_progress_information_message()
|
||||||
fill = " " * (
|
w = self._width_of_current_line
|
||||||
self._tw.fullwidth - self._tw.chars_on_current_line - len(msg) - 1
|
fill = self._tw.fullwidth - w - 1
|
||||||
)
|
self.write(msg.rjust(fill), cyan=True)
|
||||||
self.write(fill + msg, cyan=True)
|
|
||||||
|
@property
|
||||||
|
def _width_of_current_line(self):
|
||||||
|
"""Return the width of current line, using the superior implementation of py-1.6 when available"""
|
||||||
|
try:
|
||||||
|
return self._tw.width_of_current_line
|
||||||
|
except AttributeError:
|
||||||
|
# py < 1.6.0
|
||||||
|
return self._tw.chars_on_current_line
|
||||||
|
|
||||||
def pytest_collection(self):
|
def pytest_collection(self):
|
||||||
if not self.isatty and self.config.option.verbose >= 1:
|
if not self.isatty and self.config.option.verbose >= 1:
|
||||||
|
|
Loading…
Reference in New Issue