diff --git a/setup.py b/setup.py index 6207ad09b..4c12fbfcc 100644 --- a/setup.py +++ b/setup.py @@ -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", diff --git a/src/_pytest/terminal.py b/src/_pytest/terminal.py index 9fbae49c4..53083961d 100644 --- a/src/_pytest/terminal.py +++ b/src/_pytest/terminal.py @@ -412,11 +412,7 @@ class TerminalReporter(object): if last_item: self._write_progress_information_filling_space() else: - try: - w = self._tw.width_of_current_line - except AttributeError: - # py < 1.6.0 - w = self._tw.chars_on_current_line + 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() @@ -435,14 +431,19 @@ class TerminalReporter(object): def _write_progress_information_filling_space(self): msg = self._get_progress_information_message() - try: - w = self._tw.width_of_current_line - except AttributeError: - # py < 1.6.0 - w = self._tw.chars_on_current_line + 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: self.write("collecting ... ", bold=True)