Skip to content

Commit

Permalink
display - remove extra new line after warning message (ansible#65199)
Browse files Browse the repository at this point in the history
Add unit tests for display
  • Loading branch information
samdoran authored Jan 24, 2020
1 parent 85b5f89 commit 8e195ad
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 2 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/warnings-remove-extra-newline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bugfixes:
- display - remove extra new line after warnings (https://github.com/ansible/ansible/pull/65199)
5 changes: 3 additions & 2 deletions lib/ansible/utils/display.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,15 +151,16 @@ def display(self, msg, color=None, stderr=False, screen_only=False, log_only=Fal
"""

nocolor = msg
if color:
msg = stringc(msg, color)

if not log_only:
if not msg.endswith(u'\n') and newline:
msg2 = msg + u'\n'
else:
msg2 = msg

if color:
msg2 = stringc(msg2, color)

msg2 = to_bytes(msg2, encoding=self._output_encoding(stderr=stderr))
if sys.version_info >= (3,):
# Convert back to text string on python3
Expand Down
20 changes: 20 additions & 0 deletions test/units/utils/display/test_display.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2020 Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function
__metaclass__ = type


from ansible.utils.display import Display


def test_display_basic_message(capsys, mocker):
# Disable logging
mocker.patch('ansible.utils.display.logger', return_value=None)

d = Display()
d.display(u'Some displayed message')
out, err = capsys.readouterr()
assert out == 'Some displayed message\n'
assert err == ''
42 changes: 42 additions & 0 deletions test/units/utils/display/test_warning.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2020 Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function
__metaclass__ = type

import pytest

from ansible.utils.display import Display


@pytest.fixture
def warning_message():
warning_message = 'bad things will happen'
expected_warning_message = '[WARNING]: {0}\n'.format(warning_message)
return warning_message, expected_warning_message


def test_warning(capsys, mocker, warning_message):
warning_message, expected_warning_message = warning_message

mocker.patch('ansible.utils.color.ANSIBLE_COLOR', True)
mocker.patch('ansible.utils.color.parsecolor', return_value=u'1;35') # value for 'bright purple'

d = Display()
d.warning(warning_message)
out, err = capsys.readouterr()
assert d._warns == {expected_warning_message: 1}
assert err == '\x1b[1;35m{0}\x1b[0m\n\x1b[1;35m\x1b[0m'.format(expected_warning_message.rstrip('\n'))


def test_warning_no_color(capsys, mocker, warning_message):
warning_message, expected_warning_message = warning_message

mocker.patch('ansible.utils.color.ANSIBLE_COLOR', False)

d = Display()
d.warning(warning_message)
out, err = capsys.readouterr()
assert d._warns == {expected_warning_message: 1}
assert err == expected_warning_message

0 comments on commit 8e195ad

Please sign in to comment.