Skip to content

Commit

Permalink
Merge pull request #3911 from wimglenn/i18n_width
Browse files Browse the repository at this point in the history
improve line width estimate
  • Loading branch information
nicoddemus authored Sep 1, 2018
2 parents 019e33e + 19fa01b commit 8d8e68c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
1 change: 1 addition & 0 deletions changelog/3911.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Terminal writer now takes into account unicode character width when writing out progress.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def get_environment_marker_support_level():
def main():
extras_require = {}
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",
"setuptools",
"attrs>=17.4.0",
Expand Down
22 changes: 14 additions & 8 deletions src/_pytest/terminal.py
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,8 @@ def pytest_runtest_logfinish(self, nodeid):
if last_item:
self._write_progress_information_filling_space()
else:
past_edge = (
self._tw.chars_on_current_line + self._PROGRESS_LENGTH + 1
>= self._screen_width
)
w = self._width_of_current_line
past_edge = w + self._PROGRESS_LENGTH + 1 >= self._screen_width
if past_edge:
msg = self._get_progress_information_message()
self._tw.write(msg + "\n", cyan=True)
Expand All @@ -433,10 +431,18 @@ def _get_progress_information_message(self):

def _write_progress_information_filling_space(self):
msg = self._get_progress_information_message()
fill = " " * (
self._tw.fullwidth - self._tw.chars_on_current_line - len(msg) - 1
)
self.write(fill + msg, cyan=True)
w = self._width_of_current_line
fill = self._tw.fullwidth - w - 1
self.write(msg.rjust(fill), 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):
if not self.isatty and self.config.option.verbose >= 1:
Expand Down

0 comments on commit 8d8e68c

Please sign in to comment.